Executar um pipeline com a CLI (v2)

Concluído

Os pipelines no Azure Machine Learning permitem que você crie fluxos de trabalho para combinar tarefas de aprendizado de máquina.

Com base no trabalho da equipe de ciência de dados, você criou componentes que consistem em scripts Python usados para tarefas de aprendizado de máquina. Para realmente preparar dados para treinar um novo modelo, você deseja combinar os componentes em um pipeline. O pipeline cobrirá todas as tarefas essenciais para passar de dados brutos para um modelo treinado.

Você criará o pipeline usando a CLI do Azure Machine Learning (v2).

Criar um pipeline

Sempre que quiser executar um script no Azure Machine Learning, você pode enviar um trabalho usando a CLI (v2).

Em vez de usar um script grande, você divide o script em várias partes, cada uma representando uma tarefa no fluxo de trabalho de aprendizado de máquina. Para cada script, um componente é criado. Você pode combinar os componentes em uma determinada ordem para criar um pipeline.

Semelhante a quando você executa um script grande, você pode executar um pipeline baseado em componente como um trabalho no Aprendizado de Máquina do Azure. Para especificar o que você deseja executar com seu pipeline, crie um arquivo YAML, que inclui:

  • O que executar: Os componentes.
  • Como executá-lo: Quaisquer entradas ou saídas que os componentes possam esperar.
  • Onde executá-lo: O cálculo necessário para executar o código.

Nota

Você pode especificar a computação e o ambiente no trabalho de pipeline e componente. A computação e o ambiente especificados no pipeline serão o padrão. A computação e o ambiente especificados nos detalhes do componente são opcionais e substituirão o padrão para esse componente individual.

Imagine que você está usando componentes para criar um pipeline que treinará um modelo para prever se um cliente irá churn ou não. Para o trabalho de pipeline, o YAML pode se parecer com o exemplo a seguir:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: churn-pipeline-example

# <inputs_and_outputs>
inputs:
  pipeline_job_input: 
    dataset: azureml:customer-churn-data:1
    mode: download

outputs: 
  pipeline_job_cleaned_data:
    mode: upload
  pipeline_job_normalized_data:
    mode: upload
  pipeline_job_trained_model:
    mode: upload
# </inputs_and_outputs>

# <jobs>
compute: azureml:aml-cluster
settings:
  datastore: azureml:workspaceblobstore

jobs:
  fix-missing-job:
    type: component
    component: file:./fix-missing-data.yml
    inputs:
      input_data: ${{inputs.pipeline_job_input}}
    outputs:
      output_data: ${{outputs.pipeline_job_cleaned_data}}

  normalize-data-job:
    type: component
    component: file:./normalize-data.yml
    inputs:
      input_data: ${{jobs.fix-missing-job.outputs.output_data}}
    outputs:
      output_data: ${{outputs.pipeline_job_normalized_data}}

  train-model-job:
    type: component
    component: file:./train-decision-tree.yml
    inputs:
      training_data: ${{jobs.normalize-data-job.outputs.output_data}}
    outputs:
      model_output: ${{outputs.pipeline_job_trained_model}}
# </jobs>

O pipeline consiste em três componentes e, portanto, três etapas no fluxo de trabalho de aprendizado de máquina:

  • Corrigir dados ausentes
  • Normalizar os dados
  • Treinar um modelo de árvore de decisão

Nota

Os scripts para os componentes não estão incluídos aqui. Você criará componentes e um pipeline no exercício. Os scripts e arquivos YAML são armazenados no repositório GitHub vinculado no exercício deste módulo.

Entradas e saídas

<inputs_and_outputs> Na seção do arquivo YAML, você pode encontrar a entrada para o primeiro componente. No exemplo, a entrada é a primeira versão do conjunto de dados registrado do espaço de trabalho do Azure Machine Learning chamado customer-churn-data.

<inputs_and_outputs> Na seção, você também descobrirá que as saídas de cada componente serão carregadas em um armazenamento de dados.

Em , você verá que o armazenamento de dados está definido para usar o workspaceblobstore, <jobs> que é onde todas as saídas serão armazenadas. Para cada entrada ou saída, você pode decidir se deseja montar os dados ou carregar/baixar os dados para o destino de computação.

Tarefas

Ao executar um pipeline como um trabalho, você descobrirá que cada componente é executado como um trabalho (filho) do pipeline. <jobs> Na seção , você lista quais componentes devem ser executados como parte do pipeline.

Para cada trabalho de componente, você precisa consultar a definição YAML do componente que deseja executar. Você também precisa especificar as entradas e saídas para cada componente individual.

Você pode fazer referência a qualquer uma das entradas e saídas do pipeline usando o prefixo inputs. or outputs. . Por exemplo, o primeiro componente a corrigir dados ausentes (fix-missing-job) refere-se às entradas e saídas do pipeline:

inputs:
      input_data: ${{inputs.pipeline_job_input}}
outputs:
      output_data: ${{outputs.pipeline_job_cleaned_data}}

Se você quiser usar uma saída de um trabalho de componente anterior como a entrada de um novo trabalho de componente, use o prefixo jobs. . Por exemplo, o último componente a treinar o modelo (), refere-se à saída do componente anterior, que normaliza os dados (train-model-jobnormalize-data-job):

inputs:
      training_data: ${{jobs.normalize-data-job.outputs.output_data}}

Gorjeta

Para obter uma visão geral completa da sintaxe YAML ao criar um trabalho de pipeline, consulte a documentação de referência.

Depois de ter o arquivo YAML do trabalho de pipeline, você pode executar o pipeline usando o seguinte comando:

az ml job create --file ./job.yml

Para revisar o trabalho de pipeline e os trabalhos filho para cada um dos componentes do pipeline, você pode navegar até o estúdio de Aprendizado de Máquina do Azure.