Azure Pipelines

Concluído

Uma opção para automatizar fluxos de trabalho é usar o Azure Pipelines, que faz parte do Azure DevOps Services. Com o Azure Pipelines, você pode criar, testar e implantar automaticamente seu código.

Em um projeto de machine learning, você pode usar o Azure Pipelines para criar qualquer ativo de workspace do Azure Machine Learning, como o próprio workspace, ativos de dados, clusters de computação ou trabalhos para executar os pipelines do Azure Machine Learning.

Observação

Para usar o Azure Pipelines com pipelines do Azure Machine Learning, você precisa conectar o Azure DevOps ao workspace do Azure Machine Learning por meio de uma conexão de serviço.

Você aprenderá a usar o Azure Pipelines para executar um pipeline do Azure Machine Learning.

Criar um pipeline do Azure

O Azure Pipelines ajuda você a automatizar seu trabalho executando etapas sempre que ocorrer um gatilho. Para usar o Azure Pipelines para automatizar as cargas de trabalho do machine learning, você vai disparar um pipeline do Azure Machine Learning com o Azure Pipelines.

Diagrama da hierarquia de pipelines.

  1. Dispare um pipeline do Azure. Normalmente, com uma alteração no repositório (solicitação de commit ou pull).
  2. Execute o Pipeline do Azure, um grupo de trabalhos que consiste em etapas.
  3. Uma etapa inicia um pipeline do Azure Machine Learning.
  4. O pipeline do Azure Machine Learning executa em scripts ou componentes do Azure Machine Learning.
  5. Um script ou componente representa uma tarefa de machine learning.

Para criar o Pipeline do Azure, defina as etapas que deseja incluir em um arquivo YAML. No arquivo YAML do Pipeline do Azure, você incluirá:

  • Gatilho: qual evento inicia o pipeline.
  • Fase: um grupo de trabalhos normalmente alinhados com diferentes ambientes de desenvolvimento (desenvolvimento/teste/produção).
  • Trabalho: um conjunto de etapas, que são executadas em um agente. Para cargas de trabalho de machine learning, você provavelmente usará um agente Ubuntu hospedado pela Microsoft.
  • Etapa: um script ou tarefa que você deseja executar. Por exemplo, um comando da CLI que inicia o pipeline do Azure Machine Learning (az ml job create).

Para executar um pipeline do Azure Machine Learning quando qualquer alteração no Repositório do Azure for feita, você poderá usar um arquivo YAML como este:

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

O trabalho no pipeline usa o aml-steps.yml para listar as etapas que devem ser executadas. Para executar um pipeline do Azure Machine Learning definido em pipeline-job.yml você pode usar a CLI (v2). Para executar o pipeline do Azure Machine Learning como uma etapa no Pipeline do Azure, você vai:

  1. Instalar a extensão do Azure Machine Learning para a CLI.
  2. Usar o comando az ml job create para executar o trabalho de pipeline no Azure Machine Learning.

O arquivo aml-steps.yml para a instalação e início do trabalho do Azure Machine Learning pode ter esta aparência:

parameters:
- name: serviceconnectionname
  default: ''

steps:
- checkout: self

- script: az extension add -n ml -y
  displayName: 'Install Azure ML CLI v2'

- task: AzureCLI@2
  inputs:
    azureSubscription: ${{ parameters.serviceconnectionname }}
    scriptType: bash
    scriptLocation: inlineScript
    workingDirectory: $(Build.SourcesDirectory)
    inlineScript: |
      cd src
      az ml job create --file aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
  displayName: 'Run Azure Machine Learning Pipeline'

Conforme mostrado no exemplo, você pode usar parâmetros em todas as definições de pipeline (como serviceconnectionname) para tornar os arquivos YAML mais reutilizáveis em outros projetos.

Executar um pipeline com o Azure DevOps

Depois de criar os arquivos YAML e armazená-los no Repositório do Azure, você pode configurar o Azure DevOps para executar o pipeline.

Captura de tela da configuração de pipeline no Azure DevOps.

  1. No Azure DevOps, navegue até a guia Pipelines e selecione Pipelines.
  2. Crie um Novo pipeline.
  3. Selecione Git do Azure Repos como a localização do código.
  4. Escolha o repositório que contém seu código.
  5. Selecione o arquivo YAML do Azure Pipelines existente.
  6. Escolha o caminho que aponta para o arquivo YAML que você criou para o Pipeline do Azure.
  7. Depois de examinar o pipeline, você pode Salvar e executar.

O pipeline é disparado por uma commit com a ramificação principal. Quando você configura o pipeline, o Azure Pipelines faz commit de uma alteração na ramificação principal, que dispara a primeira execução do pipeline. A qualquer momento após a configuração, você pode disparar o pipeline enviando commits por push para o repositório no Visual Studio Code ou no Azure Repos.

Captura de tela de um trabalho com falha no Azure Pipelines.

Ao selecionar um trabalho, você poderá exibir o processo dele. Cada etapa em um trabalho é exibida no painel de navegação à esquerda. A visão geral mostra quais etapas foram executadas com êxito e quais falharam. Todas as mensagens de erro em potencial serão exibidas na interface de linha de comando quando você selecionar essa etapa. Examinando a saída, você poderá solucionar o erro.

Quando uma tarefa dispara a execução de um pipeline do Azure Machine Learning, você também pode examinar a execução de pipeline no workspace do Azure Machine Learning para exibir todas as métricas ou erros que possam ser interessantes para você.