Implantar trabalhos de pipeline existentes em pontos de extremidade em lote
APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
Os pontos de extremidade em lote permitem implantar componentes de pipeline, fornecendo uma maneira conveniente de operacionalizar pipelines no Aprendizado de Máquina do Azure. Os pontos de extremidade em lote aceitam componentes de pipeline para implantação. No entanto, se você já tiver um trabalho de pipeline executado com êxito, o Aprendizado de Máquina do Azure poderá aceitar esse trabalho como entrada para seu ponto de extremidade em lote e criar o componente de pipeline automaticamente para você. Neste artigo, você aprenderá a usar seu trabalho de pipeline existente como entrada para implantação em lote.
Ficará a saber como:
- Executar e criar o trabalho de pipeline que você deseja implantar
- Criar uma implantação em lote a partir do trabalho existente
- Testar a implementação
Sobre este exemplo
Neste exemplo, vamos implantar um pipeline que consiste em um trabalho de comando simples que imprime "hello world!". Em vez de registrar o componente de pipeline antes da implantação, indicamos um trabalho de pipeline existente para usar na implantação. O Aprendizado de Máquina do Azure criará o componente de pipeline automaticamente e o implantará como uma implantação de componente de pipeline de ponto de extremidade em lote.
O exemplo neste artigo é baseado em exemplos de código contidos no repositório azureml-examples . Para executar os comandos localmente sem ter que copiar ou colar YAML e outros arquivos, use os seguintes comandos para clonar o repositório e vá para a pasta para sua linguagem de codificação:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Os arquivos para este exemplo estão em:
cd endpoints/batch/deploy-pipelines/hello-batch
Pré-requisitos
Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
Uma área de trabalho do Azure Machine Learning. Para criar um espaço de trabalho, consulte Gerenciar espaços de trabalho do Azure Machine Learning.
As seguintes permissões no espaço de trabalho do Azure Machine Learning:
- Para criar ou gerenciar pontos de extremidade e implantações em lote: use um Proprietário, Colaborador ou função personalizada que tenha recebido as
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
permissões. - Para criar implantações do Azure Resource Manager no grupo de recursos do espaço de trabalho: use um Proprietário, Colaborador ou função personalizada à qual tenha sido atribuída a
Microsoft.Resources/deployments/write
permissão no grupo de recursos em que o espaço de trabalho está implantado.
- Para criar ou gerenciar pontos de extremidade e implantações em lote: use um Proprietário, Colaborador ou função personalizada que tenha recebido as
A CLI do Azure Machine Learning ou o SDK do Azure Machine Learning para Python:
Execute o seguinte comando para instalar a CLI do Azure e a extensão para o
ml
Azure Machine Learning:az extension add -n ml
As implantações de componentes de pipeline para pontos de extremidade em lote são introduzidas na versão 2.7 da
ml
extensão para a CLI do Azure. Use oaz extension update --name ml
comando para obter a versão mais recente.
Ligar à sua área de trabalho
O espaço de trabalho é o recurso de nível superior para o Azure Machine Learning. Ele fornece um local centralizado para trabalhar com todos os artefatos que você cria quando usa o Azure Machine Learning. Nesta seção, você se conecta ao espaço de trabalho onde executa suas tarefas de implantação.
No comando a seguir, insira sua ID de assinatura, nome do espaço de trabalho, nome do grupo de recursos e local:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Execute o trabalho de pipeline que você deseja implantar
Nesta seção, começamos executando um trabalho de pipeline:
O arquivo a seguir pipeline-job.yml
contém a configuração para o trabalho de pipeline:
pipeline-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.
compute: batch-cluster
component: hello-component/hello.yml
Crie o trabalho de pipeline:
JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)
Criar um ponto de extremidade em lote
Antes de implantarmos o trabalho de pipeline, precisamos implantar um ponto de extremidade em lote para hospedar a implantação.
Forneça um nome para o ponto de extremidade. O nome de um ponto de extremidade em lote precisa ser exclusivo em cada região, pois o nome é usado para construir o URI de invocação. Para garantir a exclusividade, acrescente quaisquer caracteres à direita ao nome especificado no código a seguir.
ENDPOINT_NAME="hello-batch"
Configure o ponto de extremidade:
O
endpoint.yml
arquivo contém a configuração do ponto de extremidade.endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: hello-batch description: A hello world endpoint for component deployments. auth_mode: aad_token
Crie o ponto de extremidade:
az ml batch-endpoint create --name $ENDPOINT_NAME -f endpoint.yml
Consulte o URI do ponto de extremidade:
az ml batch-endpoint show --name $ENDPOINT_NAME
Implantar o trabalho de pipeline
Para implantar o componente de pipeline, precisamos criar uma implantação em lote a partir do trabalho existente.
Precisamos dizer ao Azure Machine Learning o nome do trabalho que queremos implantar. No nosso caso, esse trabalho é indicado na seguinte variável:
echo $JOB_NAME
Configure a implantação.
O
deployment-from-job.yml
arquivo contém a configuração da implantação. Observe como usamos a chavejob_definition
em vez de indicar que essa implantação é criada a partir de um trabalho decomponent
pipeline:deployment-from-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-from-job endpoint_name: hello-pipeline-batch type: pipeline job_definition: azureml:job_name_placeholder settings: continue_on_step_failure: false default_compute: batch-cluster
Gorjeta
Essa configuração pressupõe que você tenha um cluster de computação chamado
batch-cluster
. Você pode substituir esse valor pelo nome do cluster.Crie a implantação:
Execute o código a seguir para criar uma implantação em lote no ponto de extremidade em lote e defini-la como a implantação padrão.
az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
Gorjeta
Observe o uso de
--set job_definition=azureml:$JOB_NAME
. Como os nomes de trabalho são exclusivos, o comando--set
é usado aqui para alterar o nome do trabalho quando você o executa em seu espaço de trabalho.Sua implantação está pronta para uso.
Testar a implementação
Depois que a implantação é criada, ela está pronta para receber trabalhos. Você pode invocar a implantação padrão da seguinte maneira:
JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)
Você pode monitorar o progresso do show e transmitir os logs usando:
az ml job stream -n $JOB_NAME
Clean up resources (Limpar recursos)
Quando terminar, exclua os recursos associados do espaço de trabalho:
Execute o código a seguir para excluir o ponto de extremidade em lote e sua implantação subjacente. --yes
é utilizado para confirmar a eliminação.
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes