Pipelines do Azure Machine Learning
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 um código Python de produção para permitir a automação com o Azure Pipelines (DevOps) ou o GitHub Actions.
Experimentos no Azure Machine Learning
O Azure Machine Learning fornece um conjunto de recursos que ajudam você a organizar seu trabalho. Por exemplo, com o Azure Machine Learning você pode:
- Registrar conjuntos de dados para reutilizar facilmente os dados armazenados em um data lake.
- Treinar um modelo em instâncias de computação ou clusters remotos, de acordo com seus requisitos.
- Acompanhar todos os scripts executados com experimentos para comparar facilmente seu trabalho.
- Registrar modelos treinados e implantar 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 examinar métricas de desempenho para decidir qual modelo implantar na produção.
Supondo que você faça experimentos em um Jupyter Notebook (arquivos .ipynb
), converta o experimento em um código Python de produção realizando o seguinte:
- Remover todo o código não essencial.
- Refatorar o código em funções.
- Combinar funções relacionadas em scripts do Python (arquivos
.py
). - Criar testes de unidade para cada script do Python.
- Crie um pipeline para agrupar scripts em um fluxo de trabalho que pode ser automatizado.
Depois que o 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 um pipeline é encontrado em várias ferramentas, muitas vezes fornecendo uma forma de agrupar tarefas em uma determinada ordem. A principal vantagem de um pipeline é que você pode agendá-lo ou dispará-lo para ser executado.
Um pipeline do Azure Machine Learning é criado no workspace do Azure Machine Learning. Para criar um pipeline, você pode definir as etapas com os scripts do Python.
Opcionalmente, você pode criar um pipeline com os componentes do Azure Machine Learning. Quando você criar um componente, o script será armazenado com metadados como o ambiente necessário no workspace do Azure Machine Learning. Os componentes podem ser compartilhados e usados por qualquer pessoa dentro do mesmo workspace, tornando mais fácil para outras pessoas criarem rapidamente pipelines, baseando-se em seu trabalho.
Para criar um pipeline que pode ser usado para automação, é recomendável definir um trabalho de pipeline no YAML que pode ser disparado usando um comando da 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 do Python.
- Como executar: todas as entradas ou saídas que as etapas possam esperar.
- Onde executar: 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 arquivo pipeline-job.yml
:
$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 ser executado, você poderá examinar o pipeline e as etapas executadas dele no workspace do Azure Machine Learning.
Quando você converter suas cargas de trabalho de machine learning em scripts do Python e agrupar as tarefas em um pipeline, seu modelo estará pronto para produção. Definir o pipeline em um arquivo YAML permite automatizar o treinamento e o retreinamento disparando a execução de pipeline com a CLI (v2). Você pode executar um comando da CLI, que faz referência ao arquivo YAML do pipeline, no Azure Pipelines (DevOps) ou no GitHub Actions.