Pipelines do Azure Machine Learning

Concluído

Como cientista de dados, você trabalhará principalmente com o Azure Machine Learning para treinar e gerenciar modelos. Após a experimentação, você deve converter seu trabalho em código Python de produção para permitir a automação com Pipelines do Azure (DevOps) ou Ações do GitHub.

Experiência no Azure Machine Learning

O Azure Machine Learning fornece um conjunto de funcionalidades que o ajudam a organizar o seu trabalho. Por exemplo, com o Azure Machine Learning você pode:

  • Registre conjuntos de dados para reutilizar facilmente os dados armazenados em um data lake.
  • Treine um modelo em instâncias de computação remotas ou clusters , dependendo de suas necessidades.
  • Acompanhe todos os seus scripts executados com experimentos para comparar facilmente seu trabalho.
  • Registre modelos treinados e implante um modelo para consumo em lote ou em tempo real.

A maior parte do seu trabalho como cientista de dados consistirá em experimentação: testar diferentes configurações para treinar um modelo e revisar métricas de desempenho para decidir qual modelo implantar na produção.

Supondo que você experimente em um notebook Jupyter (.ipynb arquivos), você desejará converter o experimento em código Python de produção por:

  • Remoção de todo o código não essencial.
  • Refatoração de código em funções.
  • Combinação de funções relacionadas em scripts Python (.py arquivos).
  • Criação de testes de unidade para cada script Python.
  • Crie um pipeline para agrupar scripts em um fluxo de trabalho que possa ser automatizado.

Quando seu código estiver pronto para produção, você poderá automatizar a execução de scripts com pipelines do Azure Machine Learning.

Criar pipelines do Azure Machine Learning

O conceito de pipeline é encontrado em várias ferramentas, muitas vezes fornecendo uma maneira de agrupar tarefas em uma determinada ordem. A principal vantagem de um pipeline é que você pode programá-lo ou acioná-lo para ser executado.

Um pipeline do Azure Machine Learning é criado no espaço de trabalho do Azure Machine Learning. Para criar um pipeline, você pode definir as etapas com scripts Python.

Opcionalmente, você pode criar um pipeline com componentes do Azure Machine Learning. Quando você cria um componente, o script será armazenado com metadados como o ambiente necessário no espaço de trabalho do Azure Machine Learning. Os componentes podem ser compartilhados e usados por qualquer pessoa dentro do mesmo espaço de trabalho, tornando mais fácil para outras pessoas criarem rapidamente novos pipelines, aproveitando seu trabalho.

Para criar um pipeline que possa ser usado para automação, é recomendável definir um trabalho de pipeline no YAML que pode ser acionado usando um comando CLI (v2).

O arquivo YAML que define o pipeline precisa especificar as seguintes informações:

  • O que executar: As etapas definidas como scripts ou componentes Python.
  • Como executá-lo: Quaisquer entradas ou saídas que as etapas possam esperar.
  • Onde executá-lo: a computação necessária para executar o código (geralmente um cluster de computação do Azure Machine Learning).

Por exemplo, um pipeline que usa dados brutos como entrada, os transforma e treina um modelo pode ser definido em um pipeline-job.yml arquivo:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:

  transform-job:
    type: command
      raw_data: 
          type: uri_folder 
          path: ./data
    outputs:
      transformed_data:
        mode: rw_mount
    code: src/transform
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python transform.py 
      --raw_data ${{inputs.raw_data}} 
      --transformed_data ${{outputs.transformed_data}}
  
  train-job:
    type: command
    inputs:
      training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
    outputs:
      model_output: 
        mode: rw_mount
      test_data: 
        mode: rw_mount
    code: src/train
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python train.py 
      --training_data ${{inputs.training_data}} 
      --test_data ${{outputs.test_data}} 
      --model_output ${{outputs.model_output}}

Para executar o pipeline no Azure Machine Learning, você usaria o seguinte comando da CLI:

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

Depois que o pipeline terminar de executar, você poderá revisar o pipeline e suas etapas executadas no espaço de trabalho do Azure Machine Learning.

Quando você converte suas cargas de trabalho de aprendizado de máquina em scripts Python e agrupa tarefas dentro de um pipeline, seu modelo estará pronto para produção. Definir o pipeline em um arquivo YAML permite automatizar o treinamento e o retreinamento acionando a execução do pipeline com CLI (v2). Você pode executar um comando CLI, referindo-se ao arquivo YAML de pipeline, a partir de Pipelines do Azure (DevOps) ou Ações do GitHub.