Como implantar pipelines com pontos de extremidade em lotes
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Você pode implantar componentes de pipeline, em um ponto de extremidade em lote, fornecendo uma maneira conveniente de operacionalizá-los no Azure Machine Learning. Neste artigo, você aprenderá a criar uma implantação em lote que contenha um pipeline simples. Você aprenderá a:
- Criar e registrar um componente de pipeline
- Criar um ponto de extremidade em lote e implantar um componente de pipeline
- Teste a implantação
Sobre este exemplo
Nesse exemplo, vamos implantar um componente de pipeline que consiste em um trabalho de comando simples que imprime "olá, mundo!". Esse é o cenário de implantação de pipeline mais simples, pois o componente não requer entradas ou saídas.
O exemplo neste artigo é baseado em exemplos de códigos contidos no repositório azureml-examples . Para executar os comandos localmente sem precisar copiar/colar o YAML e outros arquivos, primeiro clone o repositório e altere os diretórios para a pasta:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Os arquivos desse exemplo estão em:
cd endpoints/batch/deploy-pipelines/hello-batch
Acompanhar nos notebooks do Jupyter
Você pode acompanhar a versão do SDK do Python deste exemplo abrindo o notebook sdk-deploy-and-test.ipynb no repositório clonado.
Pré-requisitos
Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
Um workspace do Azure Machine Learning. Para criar um workspace, confira Gerenciar workspaces do Azure Machine Learning.
Certifique-se de que você tenha as seguintes permissões no espaço de trabalho do Machine Learning:
- Criar ou gerenciar implantações e pontos de extremidade em lote: use uma função de Proprietário, Colaborador ou Personalizada que permita
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
. - Crie implantações do Azure Resource Manager no grupo de recursos do espaço de trabalho: use uma função de Proprietário, Colaborador ou Personalizada que permita
Microsoft.Resources/deployments/write
no grupo de recursos onde o espaço de trabalho está implantado.
- Criar ou gerenciar implantações e pontos de extremidade em lote: use uma função de Proprietário, Colaborador ou Personalizada que permita
Instale o seguinte software para trabalhar com o Machine Learning:
Execute o seguinte comando para instalar a CLI do Azure e a extensão do Azure Machine Learning
ml
:az extension add -n ml
As implantações de componente de pipeline para pontos de extremidade do Lote são introduzidas na versão 2.7 da extensão
ml
da CLI do Azure. Use o comandoaz extension update --name ml
para obter a versão mais recente.
Conectar-se ao workspace
O workspace é o recurso de nível superior do Machine Learning. Ele fornece um local centralizado para trabalhar com todos os artefatos criados ao usar o Machine Learning. Nesta seção, você se conecta ao workspace em que executa as suas tarefas de implantação.
No comando a seguir, insira os valores para a sua ID de assinatura, workspace, local e grupo de recursos:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Criar o componente de pipeline
Os pontos de extremidade em lote podem implantar modelos ou componentes de pipeline. Os componentes de pipeline são reutilizáveis e você pode simplificar sua prática de MLOps usando registros compartilhados para mover esses componentes de um workspace para outro.
O componente de pipeline neste exemplo contém uma única etapa que imprime apenas uma mensagem "olá, mundo" nos logs. Ele não precisa de entradas ou saídas.
O arquivo hello-component/hello.yml
contém a configuração do componente de pipeline:
hello-component/hello.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
main_job:
type: command
component:
code: src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python hello.py
Registre o componente:
az ml component create -f hello-component/hello.yml
Criar um ponto de extremidade em lote
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 todos os caracteres à direita ao nome especificado no código a seguir.
ENDPOINT_NAME="hello-batch"
Configurar o ponto de extremidade:
O arquivo
endpoint.yml
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
Criar 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 componente de pipeline
Para implantar o componente de pipeline, precisamos criar uma implantação em lote. Uma implantação é um conjunto de recursos necessários para hospedar o ativo que faz o trabalho real.
Criar um cluster de cálculo. Os pontos de extremidade do lote e as implantações são executados em clusters de cálculo. Eles podem ser executados em qualquer cluster de cálculo do Azure Machine Learning que já exista no espaço de trabalho. Portanto, várias implantações em lotes podem compartilhar a mesma infraestrutura de computação. Neste exemplo, vamos trabalhar em um cluster de cálculo do Azure Machine Learning chamado
batch-cluster
. Vamos verificar se a computação existe no espaço de trabalho ou criá-la, caso não exista.az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
Configure a implantação:
O arquivo
deployment.yml
contém a configuração da implantação. Você pode verificar o esquema YAML do ponto de extremidade do lote completo para obter propriedades extras.deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-dpl endpoint_name: hello-pipeline-batch type: pipeline component: azureml:hello_batch@latest settings: default_compute: batch-cluster
Criar a implantação:
Execute o código a seguir para criar uma implantação em lote sob o ponto de extremidade de lote e defina-la como a implantação padrão.
az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
Dica
Observe o uso do sinalizador
--set-default
para indicar que essa nova implantação agora é a padrão.Sua implantação está pronta para uso.
Teste a implantação
Depois que a implantação for criada, ela estará 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)
Dica
Neste exemplo, o pipeline não tem entradas ou saídas. No entanto, se o componente de pipeline exigir alguns, eles poderão ser indicados no momento da invocação. Para saber mais sobre como indicar entradas e saídas, consulte Criar trabalhos e dados de entrada para pontos de extremidade em lote ou consulte o tutorial Como implantar um pipeline para executar a pontuação em lote com pré-processamento (versão prévia).
Monitore o progresso da exibição e transmita os logs usando:
az ml job stream -n $JOB_NAME
Limpar os recursos
Quando concluir, exclua os recursos associados do espaço de trabalho:
Execute o código a seguir para excluir o ponto de extremidade em lote e todas as implantações subjacentes. --yes
é usado para confirmar a exclusão.
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes
(Opcional) Exclua a computação, a menos que planeje reutilizar seu cluster de cálculo em implantações posteriores.
az ml compute delete -n batch-cluster
Próximas etapas
- Como implantar um pipeline de treinamento com pontos de extremidade em lotes)
- Como implantar um pipeline para executar a pontuação em lote com pré-processamento
- Criar pontos de extremidade em lote a partir de trabalhos de pipeline
- Criar trabalhos e dados de entrada para pontos de extremidade em lote
- Solução de problemas de pontos de extremidade em lote