Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Azure DevOps Serviços | Azure DevOps Server 2022 - Azure DevOps Server 2019
Pode usar um pipeline Azure DevOps para automatizar o ciclo de vida do machine learning. Algumas das operações que pode automatizar são:
- Preparação de dados (extração, transformação, operações de carga).
- Treinar modelos de aprendizagem automática com escalabilidade horizontal e vertical sob demanda.
- Implementação de modelos de aprendizagem automática como serviços web públicos ou privados.
- Monitorização de modelos de aprendizagem automática implementados (como para análise de desempenho ou de desvios de dados).
Este artigo descreve como criar um pipeline do Azure que constrói e implementa um modelo de aprendizagem automática para o Azure Machine Learning.
Este tutorial utiliza o SDK Azure Machine Learning Python v2 e a extensão CLI do Azure ML v2.
Pré-requisitos
- Complete o tutorial de Criar recursos para começar para:
- Crie um espaço de trabalho.
- Crie um cluster de computação baseado na cloud para usar no treino do seu modelo.
- Python 3.10 ou posterior instalado para correr scripts Azure ML SDK v2 localmente.
- Instale a extensão Azure Machine Learning para Azure Pipelines. Pode instalar esta extensão no marketplace Visual Studio.
Passo 1: Obtenha o código
Faça um fork do seguinte repositório do GitHub:
https://github.com/azure/azureml-examples
Passo 2: Criar um projeto
Inicie sessão no Azure. Procure e selecione Azure DevOps organizações. Selecionar Ver as minhas organizações. Selecione a organização que pretende utilizar.
Dentro da organização escolhida, crie um projeto. Se não tiver nenhum projeto na sua organização, vê o ecrã Criar um projeto para começar . Caso contrário, selecione o botão Novo Projeto no canto superior direito do painel.
Passo 3: Criar uma ligação de serviço
Pode usar uma ligação de serviço existente.
Precisas de uma ligação ao Azure Resource Manager para autenticar com o portal Azure.
No Azure DevOps, selecione Project definições e depois selecione Ligações de serviço.
Selecione Criar ligação de serviço, selecione Azure Resource Manager e depois selecione Próximo.
Use os valores padrão para o tipo de Identidade e Credencial.
Crie a sua ligação ao serviço. Defina o seu nível de escopo, subscrição, grupo de recursos e nome da ligação preferido.
Passo 4: Criar um pipeline
Vai a Pipelines e depois seleciona Criar Pipeline.
Seleciona GitHub como localização do teu código-fonte.
Pode ser redirecionado para o GitHub para iniciar sessão. Se estiveres, insere as tuas credenciais no GitHub.
Quando vir a lista de repositórios, selecione o seu repositório.
Pode ser redirecionado para o GitHub para instalar a aplicação Azure Pipelines. Se estiveres, seleciona Aprovar e instalar.
Selecione o Starter pipeline. Atualizas o modelo de pipeline inicial.
Passo 5: Crie um pipeline YAML para submeter o trabalho do Azure Machine Learning
Elimine o pipeline inicial e substitua-o pelo seguinte código YAML. Neste pipeline, vocês:
- Use a tarefa da versão Python para configurar o Python 3.10 e instalar os requisitos do SDK.
- Use a tarefa Bash para executar scripts bash para o Azure Machine Learning SDK e CLI.
- Use a tarefa CLI do Azure para submeter um trabalho de Azure Machine Learning.
Selecione um dos separadores seguintes, dependendo se está a usar uma ligação de serviço do Azure Resource Manager ou uma ligação de serviço genérica. No pipeline YAML, substitui os valores das variáveis por valores que correspondam aos teus recursos.
- Usando uma conexão de serviço do Azure Resource Manager
- Utilização de uma ligação de serviço genérica
name: submit-azure-machine-learning-job
trigger:
- none
variables:
service-connection: 'machine-learning-connection' # replace with your service connection name
resource-group: 'machinelearning-rg' # replace with your resource group name
workspace: 'docs-ws' # replace with your workspace name
jobs:
- job: SubmitAzureMLJob
displayName: Submit AzureML Job
timeoutInMinutes: 300
pool:
vmImage: ubuntu-latest
steps:
- task: UsePythonVersion@0
displayName: Use Python >=3.10
inputs:
versionSpec: '>=3.10'
- bash: |
set -ex
az version
az extension add -n ml
displayName: 'Add AzureML Extension'
- task: AzureCLI@2
name: submit_azureml_job_task
displayName: Submit AzureML Job Task
inputs:
azureSubscription: $(service-connection)
workingDirectory: 'cli/jobs/pipelines-with-components/nyc_taxi_data_regression'
scriptLocation: inlineScript
scriptType: bash
inlineScript: |
# submit component job and get the run name
job_name=$(az ml job create --file single-job-pipeline.yml -g $(resource-group) -w $(workspace) --query name --output tsv)
# set output variable for next task
echo "##vso[task.setvariable variable=JOB_NAME;isOutput=true;]$job_name"
Passo 6: Espere que o trabalho de Azure Machine Learning seja concluído
No passo 5, adicionaste uma tarefa para submeter uma tarefa de Azure Machine Learning. Neste passo, adiciona outro trabalho que espera que o trabalho do Azure Machine Learning seja concluído.
Importante
Ambos os mecanismos de espera neste passo (a tarefa AzureMLJobWaitTask@1 no separador Azure Resource Manager e o registo InvokeRESTAPI@1 webhook no separador Genérico) dependem de o Azure Machine Learning enviar uma notificação RunTerminated de volta à Azure DevOps quando o trabalho terminar. Este caminho de notificação está atualmente a ser investigado e pode não ser concluído como esperado, fazendo com que o trabalho do servidor WaitFor* expire, em vez de refletir o estado do trabalho do Azure Machine Learning. Se encontrar este comportamento, verifique o estado de um trabalho de agente usando az ml job show --query status até que um estado terminal (Completed, Failed ou Canceled) seja retornado; saia da tarefa com um estado correspondente.
- Usando uma conexão de serviço do Azure Resource Manager
- Utilização de uma ligação de serviço genérica
Se estiveres a usar uma ligação de serviço do Resource Manager, podes usar a extensão Machine Learning. Pode procurar esta extensão no Marketplace de extensões do Azure DevOps ou ir diretamente à página da extensão. Instala a extensão Machine Learning.
Importante
Não instales a extensão Machine Learning (clássico). É uma extensão mais antiga que não oferece a mesma funcionalidade.
Na janela de revisão do Pipeline, adicione uma Tarefa de Servidor. Na parte de passos do trabalho, selecione Mostrar assistente e depois procure AzureML. Selecione a tarefa AzureML Job Wait e depois forneça as informações para a tarefa.
A tarefa tem quatro entradas: Service Connection, Azure Resource Group Name, AzureML Workspace Name e AzureML Job Name. Forneça estes inputs. O YAML resultante para estes passos é semelhante ao seguinte exemplo:
Nota
- A tarefa de espera de trabalhos do Azure Machine Learning executa-se num servidor de tarefas, que não utiliza recursos dispendiosos do conjunto de agentes e não incorre em custos adicionais. Os jobs de servidor (indicados por
pool: server) correm na mesma máquina do teu pipeline. Para mais informações, consulte empregos de servidor. - Uma tarefa de espera de trabalhos do Azure Machine Learning só pode esperar por um trabalho. Deves definir uma tarefa separada para cada trabalho que pretendes aguardar.
- A tarefa de espera de emprego do Azure Machine Learning pode esperar no máximo dois dias. Este limite é um limite rígido definido pelos pipelines do Azure DevOps.
- job: WaitForAzureMLJobCompletion
displayName: Wait for AzureML Job Completion
pool: server
timeoutInMinutes: 0
dependsOn: SubmitAzureMLJob
variables:
# Save the name of the azureMl job submitted in the previous step to a variable. It will be used as an input to the AzureML Job Wait task.
azureml_job_name_from_submit_job: $[ dependencies.SubmitAzureMLJob.outputs['submit_azureml_job_task.JOB_NAME'] ]
steps:
- task: AzureMLJobWaitTask@1
inputs:
serviceConnection: $(service-connection)
resourceGroupName: $(resource-group)
azureMLWorkspaceName: $(workspace)
azureMLJobName: $(azureml_job_name_from_submit_job)
Passo 7: Envie o pipeline e verifique a execução do pipeline
Selecione Guardar e executar. Quando o mecanismo de espera no Passo 6 funciona conforme projetado, o pipeline espera que o trabalho Azure Machine Learning seja concluído e termina a tarefa sob WaitForJobCompletion com o mesmo estatuto do trabalho Azure Machine Learning. Por exemplo:
Azure Machine Learning job
Succeeded== Azure DevOps Tarefa dentro deWaitForJobCompletionjobSucceededAzure Machine Learning job
Failed== Azure DevOps Tarefa dentro deWaitForJobCompletionjobFailedAzure Machine Learning job
Cancelled== Azure DevOps Tarefa dentro deWaitForJobCompletionjobCancelled
Nota
Devido ao problema referido no Passo 6, a tarefa WaitFor* pode falhar em vez de refletir o estado do trabalho do Azure Machine Learning. Use o Estúdio do Azure Machine Learning para confirmar o resultado real do trabalho até que o caminho de notificação seja restaurado.
Dica
Pode ver o trabalho completo de Azure Machine Learning em Estúdio do Azure Machine Learning.
Recursos de limpeza
Se não planeia continuar a usar o seu pipeline, elimine o seu projeto Azure DevOps. No portal Azure, elimine o seu grupo de recursos e a instância do Azure Machine Learning.