APLICA-SE A:
Azure CLI ml extension v2 (atual)
Python SDK azure-ai-ml v2 (atual)
Neste artigo, irá aprender a implantar o seu modelo num ponto de acesso online para inferência em tempo real. Você começa implantando um modelo em sua máquina local para depurar quaisquer erros. Em seguida, você implanta e testa o modelo no Azure, exibe os logs de implantação e monitora o contrato de nível de serviço (SLA). No final deste artigo, terás um endpoint HTTPS/REST escalável que pode ser utilizado para inferência em tempo real.
Pontos finais online são utilizados para inferência em tempo real. Existem dois tipos de endpoints online: endpoints online gerenciados e endpoints online do Kubernetes. Para obter mais informações sobre as diferenças, consulte Pontos de extremidade online gerenciados vs. Pontos de extremidade online do Kubernetes.
Os pontos finais online geridos ajudam a implementar os modelos de aprendizagem automática de forma pronta a usar. Os endpoints online geridos funcionam com máquinas CPU e GPU avançadas no Azure de forma escalável e totalmente gerida. Os endpoints on-line gerenciados cuidam de servir, dimensionar, proteger e monitorar seus modelos. Essa assistência libera você da sobrecarga de configurar e gerenciar a infraestrutura subjacente.
O exemplo principal neste artigo usa pontos de extremidade online gerenciados para implantação. Para usar o Kubernetes em vez disso, consulte as notas neste documento que estão alinhadas com a discussão do endpoint online gerenciado.
Pré-requisitos
APLICA-SE A:
Azure CLI ml extension v2 (atual)
A CLI do Azure e a ml extensão para a CLI do Azure, instaladas e configuradas. Para obter mais informações, consulte Instalar e configurar a CLI (v2).
Um shell Bash ou um shell compatível, por exemplo, um shell em um sistema Linux ou Subsistema Windows para Linux. Os exemplos da CLI do Azure neste artigo pressupõem que você use esse tipo de shell.
Uma área de trabalho do Azure Machine Learning. Para obter instruções sobre como criar um espaço de trabalho, consulte Configurar.
O controle de acesso baseado em função do Azure (Azure RBAC) é usado para conceder acesso a operações no Azure Machine Learning. Para executar as etapas neste artigo, a sua conta de utilizador deve ter a função de Proprietário ou Colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada deve permitir Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Se tu usares o estúdio do Azure Machine Learning para criar e gerir endpoints ou implementações online, precisas da permissão Microsoft.Resources/deployments/write extra do proprietário do grupo de recursos. Para obter mais informações, consulte Gerenciar o acesso aos espaços de trabalho do Azure Machine Learning.
(Opcional) Para implantar localmente, você deve instalar o Docker Engine em seu computador local. É altamente recomendável essa opção, que facilita a depuração de problemas.
APLICA-SE A:
Python SDK azure-ai-ml v2 (atual)
Uma área de trabalho do Azure Machine Learning. Para conhecer as etapas de criação de um espaço de trabalho, consulte Criar o espaço de trabalho.
O SDK do Azure Machine Learning para Python v2. Para instalar o SDK, use o seguinte comando:
pip install azure-ai-ml azure-identity
Para atualizar uma instalação existente do SDK para a versão mais recente, use o seguinte comando:
pip install --upgrade azure-ai-ml azure-identity
Para obter mais informações, consulte Biblioteca de cliente do Pacote do Azure Machine Learning para Python.
O RBAC do Azure é usado para conceder acesso a operações no Azure Machine Learning. Para executar as etapas neste artigo, a sua conta de utilizador deve ter a função de Proprietário ou Colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada deve permitir Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Para obter mais informações, consulte Gerenciar o acesso aos espaços de trabalho do Azure Machine Learning.
(Opcional) Para implantar localmente, você deve instalar o Docker Engine em seu computador local. É altamente recomendável essa opção, que facilita a depuração de problemas.
Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
- Um espaço de trabalho do Azure Machine Learning e uma instância de computação. Se você não tiver esses recursos, consulte Criar recursos necessários para começar.
- O RBAC do Azure é usado para conceder acesso a operações no Azure Machine Learning. Para executar as etapas neste artigo, a sua conta de utilizador deve ter a função de Proprietário ou Colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada deve permitir
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Para obter mais informações, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.
A CLI do Azure e a extensão da CLI para aprendizado de máquina são usadas nessas etapas, mas não são o foco principal. Eles são usados mais como utilitários para passar modelos para o Azure e verificar o status das implantações de modelos.
A CLI do Azure e a ml extensão para a CLI do Azure, instaladas e configuradas. Para obter mais informações, consulte Instalar e configurar a CLI (v2).
Um shell Bash ou um shell compatível, por exemplo, um shell em um sistema Linux ou Subsistema Windows para Linux. Os exemplos da CLI do Azure neste artigo pressupõem que você use esse tipo de shell.
Uma área de trabalho do Azure Machine Learning. Para obter instruções sobre como criar um espaço de trabalho, consulte Configurar.
- O RBAC do Azure é usado para conceder acesso a operações no Azure Machine Learning. Para executar as etapas neste artigo, a sua conta de utilizador deve ter a função de Proprietário ou Colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada deve permitir
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Para obter mais informações, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.
Verifique se você tem cota de máquina virtual (VM) suficiente alocada para implantação. O Azure Machine Learning reserva 20% dos seus recursos de computação para executar atualizações em algumas versões de VM. Por exemplo, se você solicitar 10 instâncias em uma implantação, deverá ter uma cota de 12 para cada número de núcleos para a versão da VM. A falha na contabilização dos recursos de computação extras resulta em um erro. Algumas versões de VM estão isentas da reserva de cota extra. Para obter mais informações sobre alocação de cota, consulte Alocação de cota de máquina virtual para implantação.
Como alternativa, você pode usar a cota do pool de cotas compartilhadas do Azure Machine Learning por um tempo limitado. O Azure Machine Learning fornece um pool de cotas compartilhadas a partir do qual os usuários em várias regiões podem acessar a cota para executar testes por um tempo limitado, dependendo da disponibilidade.
Quando você usa o estúdio do Azure para implantar modelos Llama-2, Phi, Nemotron, Mistral, Dolly e Deci-DeciLM do catálogo de modelos para um endpoint online gerido, o Aprendizado de Máquina do Azure permite que você aceda ao seu pool de cotas partilhadas por um tempo limitado para poder realizar testes. Para obter mais informações sobre o pool de cotas compartilhadas, consulte Cota compartilhada do Azure Machine Learning.
Prepare o seu sistema
Definir variáveis de ambiente
Se você ainda não definiu os padrões para a CLI do Azure, salve suas configurações padrão. Para evitar passar os valores da sua assinatura, espaço de trabalho e grupo de recursos várias vezes, execute este código:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Clone o repositório de exemplos
Para acompanhar este artigo, primeiro clone o repositório azureml-examples e, em seguida, altere para o diretório azureml-examples/cli do repositório:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli
Use --depth 1 para clonar apenas a confirmação mais recente para o repositório, o que reduz o tempo para concluir a operação.
Os comandos neste tutorial estão nos arquivos deploy-local-endpoint.sh e deploy-managed-online-endpoint.sh no diretório cli . Os arquivos de configuração do YAML estão no subdiretório endpoints/online/managed/sample/ .
Nota
Os arquivos de configuração YAML para pontos de extremidade online do Kubernetes estão no subdiretório endpoints/online/kubernetes/ .
Clone o repositório de exemplos
Para executar os exemplos de treinamento, primeiro clone o repositório azureml-examples e, em seguida, altere para o diretório azureml-examples/sdk/python/endpoints/online/managed directory:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Use --depth 1 para clonar apenas a confirmação mais recente para o repositório, o que reduz o tempo para concluir a operação.
As informações neste artigo são baseadas no notebook online-endpoints-simple-deployment.ipynb. Contém o mesmo conteúdo que este artigo, embora a ordem dos códigos seja ligeiramente diferente.
Conectar-se ao espaço de trabalho do Azure Machine Learning
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 Aprendizado de Máquina do Azure. Nesta seção, você se conecta ao espaço de trabalho no qual executa tarefas de implantação. Para acompanhar, abra seu bloco de anotações online-endpoints-simple-deployment.ipynb .
Importe as bibliotecas necessárias:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Nota
Se utilizar o ponto de extremidade online do Kubernetes, importe a classe KubernetesOnlineEndpoint e a KubernetesOnlineDeployment da biblioteca azure.ai.ml.entities.
Configure os detalhes do espaço de trabalho e obtenha um identificador para o espaço de trabalho.
Para se conectar a um espaço de trabalho, você precisa destes parâmetros de identificador: uma assinatura, um grupo de recursos e um nome do espaço de trabalho. Você utiliza esses detalhes em MLClient de azure.ai.ml para obter um identificador para o espaço de trabalho necessário do Azure Machine Learning. Este exemplo usa a autenticação padrão do Azure.
# enter details of your Azure Machine Learning workspace
subscription_id = "<subscription ID>"
resource_group = "<resource group>"
workspace = "<workspace name>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Se você tiver o Git instalado em sua máquina local, poderá seguir as instruções para clonar o repositório de exemplos. Caso contrário, siga as instruções para baixar arquivos do repositório de exemplos.
Clone o repositório de exemplos
Para acompanhar este artigo, primeiro clone o repositório azureml-examples e, em seguida, mude para o diretório azureml-examples/cli/endpoints/online/model-1.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Use --depth 1 para clonar apenas a confirmação mais recente para o repositório, o que reduz o tempo para concluir a operação.
Baixar arquivos do repositório de exemplos
Se você clonou o repositório de exemplos, sua máquina local já tem cópias dos arquivos para este exemplo, e você pode pular para a próxima seção. Se você não clonou o repositório, baixe-o para sua máquina local.
- Vá para o repositório de exemplos (azureml-examples).
- Vá para o botão <> Código na página e, em seguida, no separador Local, selecione Transferir ZIP.
- Localize a pasta /cli/endpoints/online/model-1/model e o arquivo /cli/endpoints/online/model-1/onlinescoring/score.py.
Definir variáveis de ambiente
Defina as seguintes variáveis de ambiente para que você possa usá-las nos exemplos deste artigo. Substitua os valores pela sua ID de assinatura do Azure, a região do Azure onde seu espaço de trabalho está localizado, o grupo de recursos que contém o espaço de trabalho e o nome do espaço de trabalho:
export SUBSCRIPTION_ID="<subscription ID>"
export LOCATION="<your region>"
export RESOURCE_GROUP="<resource group>"
export WORKSPACE="<workspace name>"
Alguns exemplos de modelo exigem que você carregue arquivos no Armazenamento de Blobs do Azure para seu espaço de trabalho. As etapas a seguir consultam o espaço de trabalho e armazenam essas informações em variáveis de ambiente usadas nos exemplos:
Obtenha um token de acesso:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
Defina a versão da API REST:
API_VERSION="2022-05-01"
Obtenha as informações de armazenamento:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
Clone o repositório de exemplos
Para acompanhar este artigo, primeiro clone o repositório azureml-examples e, em seguida, altere para o diretório azureml-examples :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Use --depth 1 para clonar apenas a confirmação mais recente para o repositório, o que reduz o tempo para concluir a operação.
Definir o ponto de extremidade
Para definir um ponto de extremidade online, especifique o nome do ponto de extremidade e o modo de autenticação. Para obter mais informações sobre pontos de extremidade online gerenciados, consulte Pontos de extremidade online.
Definir um nome de ponto de extremidade
Para definir o nome do ponto de extremidade, execute o seguinte comando. Substitua <YOUR_ENDPOINT_NAME> por um nome exclusivo na região do Azure. Para obter mais informações sobre as regras de nomenclatura, consulte Limites de pontos finais.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
O trecho a seguir mostra o arquivo endpoints/online/managed/sample/endpoint.yml :
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
A referência para o formato YAML do ponto de extremidade é descrita na tabela a seguir. Para saber como definir esses atributos, consulte a referência YAML do ponto de extremidade online. Para obter informações sobre limites relacionados a pontos de extremidade gerenciados, consulte Pontos de extremidade online e pontos de extremidade em lote do Azure Machine Learning.
| Chave |
Descrição |
$schema |
(Opcional) O esquema YAML. Para ver todas as opções disponíveis no arquivo YAML, você pode exibir o esquema no trecho de código anterior em um navegador. |
name |
O nome do ponto de extremidade. |
auth_mode |
Use key para autenticação baseada em chave. Use aml_token para autenticação baseada em token do Azure Machine Learning. Use aad_token para autenticação baseada em token do Microsoft Entra (pré-visualização). Para obter mais informações sobre autenticação, consulte Autenticar clientes para pontos de extremidade online. |
Primeiro, defina o nome do ponto de extremidade online e, em seguida, configure o ponto de extremidade.
Substitua <YOUR_ENDPOINT_NAME> por um nome exclusivo na região do Azure ou use o método de exemplo para definir um nome aleatório. Certifique-se de excluir o método que você não usa. Para obter mais informações sobre as regras de nomenclatura, consulte Limites de pontos finais.
# method 1: define an endpoint name
endpoint_name = "<YOUR_ENDPOINT_NAME>"
# method 2: example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
O código anterior usa key para autenticação baseada em chave. Para usar a autenticação baseada em token do Azure Machine Learning, use aml_token. Para usar a autenticação baseada em token do Microsoft Entra (visualização), use aad_token. Para obter mais informações sobre autenticação, consulte Autenticar clientes para pontos de extremidade online.
Ao implantar no Azure a partir do estúdio, cria-se um endpoint e uma implantação para adicionar a este. Nesse momento, será solicitado que forneça nomes para o endpoint e a configuração.
Definir um nome de ponto de extremidade
Para definir o nome do ponto final, execute o seguinte comando para gerar um nome aleatório. Ele deve ser exclusivo na região do Azure. Para obter mais informações sobre as regras de nomenclatura, consulte Limites de pontos finais.
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
Para definir o ponto de extremidade e a implantação, este artigo usa os modelos do Azure Resource Manager (modelos ARM) online-endpoint.json e online-endpoint-deployment.json. Para usar os modelos para definir um ponto de extremidade e implementação online, consulte a seção Implantar no Azure.
Definir a implantação
Uma implantação é um conjunto de recursos necessários para hospedar o modelo que faz a inferência real. Neste exemplo, você implanta um scikit-learn modelo que faz regressão e usa um script de pontuação score.py para executar o modelo em uma solicitação de entrada específica.
Para saber mais sobre os principais atributos de uma implantação, consulte Implantações online.
Sua configuração de implantação usa o local do modelo que você deseja implantar.
O trecho a seguir mostra o arquivo endpoints/online/managed/sample/blue-deployment.yml , com todas as entradas necessárias para configurar uma implantação:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yaml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
O arquivo blue-deployment.yml especifica os seguintes atributos de implantação:
-
model: Especifica as propriedades do modelo embutidas usando o path parâmetro (de onde carregar arquivos). A CLI carrega automaticamente os arquivos de modelo e registra o modelo com um nome gerado automaticamente.
-
environment: Usa definições embutidas que incluem de onde carregar arquivos. A CLI carrega automaticamente o arquivo conda.yaml e registra o ambiente. Mais tarde, para criar o ambiente, a implantação usa o parâmetro image para a imagem base. Neste exemplo, é mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. As conda_file dependências são instaladas sobre a imagem base.
-
code_configuration: Carrega os arquivos locais, como a fonte Python para o modelo de pontuação, do ambiente de desenvolvimento durante a implantação.
Para obter mais informações sobre o esquema YAML, consulte a referência YAML do ponto de extremidade online.
Nota
Para usar endpoints do Kubernetes em vez de endpoints online geridos como um destino de computação:
- Crie e anexe seu cluster Kubernetes como um destino de computação ao seu espaço de trabalho do Azure Machine Learning usando o estúdio do Azure Machine Learning.
- Use o endpoint YAML para direcionar o Kubernetes em vez do endpoint gerenciado YAML. Você precisa editar o YAML para alterar o valor de
compute para o nome do seu destino de computação registrado. Você pode usar este deployment.yaml que tem outras propriedades que se aplicam a uma implantação do Kubernetes.
Todos os comandos usados neste artigo para endpoints online gerenciados também se aplicam aos endpoints do Kubernetes, exceto aos seguintes recursos que não se aplicam aos endpoints do Kubernetes:
Use o código a seguir para configurar uma implantação:
model = Model(path="../model-1/model/sklearn_regression_model.pkl")
env = Environment(
conda_file="../model-1/environment/conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
-
Model: Especifica as propriedades do modelo embutidas usando o path parâmetro (de onde carregar arquivos). O SDK carrega automaticamente os arquivos de modelo e registra o modelo com um nome gerado automaticamente.
-
Environment: Usa definições embutidas que incluem de onde carregar arquivos. O SDK carrega automaticamente o arquivo conda.yaml e registra o ambiente. Mais tarde, para criar o ambiente, a implantação usa o parâmetro image para a imagem base. Neste exemplo, é mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. As conda_file dependências são instaladas sobre a imagem base.
-
CodeConfiguration: Carrega os arquivos locais, como a fonte Python para o modelo de pontuação, do ambiente de desenvolvimento durante a implantação.
Para obter mais informações sobre a definição de implantação online, consulte Classe OnlineDeployment.
Ao implementar no Azure, cria-se um ponto de extremidade e faz-se uma implantação para o adicionar. Nesse momento, será solicitado que forneça nomes para o endpoint e a configuração.
Entenda o script de pontuação
O formato do script de pontuação para endpoints online é o mesmo usado na versão anterior da CLI e no Python SDK.
O script de pontuação especificado em code_configuration.scoring_script deve ter uma init() função e uma run() função.
O script de pontuação deve ter uma init() função e uma run() função.
O script de pontuação deve ter uma init() função e uma run() função.
O script de pontuação deve ter uma init() função e uma run() função. Este artigo usa o arquivo score.py.
Ao usar um modelo para implantação, você deve primeiro carregar o arquivo de pontuação no Armazenamento de Blobs e, em seguida, registrá-lo:
O código a seguir usa o comando az storage blob upload-batch da CLI do Azure para carregar o arquivo de pontuação:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
O código a seguir usa um modelo para registrar o código:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
Este exemplo usa o arquivo score.py do repositório que você clonou ou baixou anteriormente:
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
A init() função é chamada quando o contêiner é inicializado ou iniciado. A inicialização normalmente ocorre logo após a implantação ser criada ou atualizada. A init função é o local para escrever lógica para operações de inicialização global, como armazenar em cache o modelo na memória (como mostrado neste arquivo score.py ).
A run() função é chamada sempre que o ponto de extremidade é invocado. Ele executa a pontuação e a previsão reais. Nesse arquivo score.py , a run() função extrai dados de uma entrada JSON, chama o método do modelo predict() scikit-learn e retorna o resultado da previsão.
Implementar e depurar localmente utilizando um endpoint local
É altamente recomendável testar o seu endpoint localmente para validar e depurar o código e a configuração antes de implementar no Azure. A CLI do Azure e o SDK do Python dão suporte a pontos de extremidade locais e implantações locais, mas o Azure Machine Learning studio e os templates ARM não.
Para implantar localmente, o Docker Engine deve estar instalado e em execução. O motor do Docker normalmente inicia quando o computador é iniciado. Se isso não acontecer, você poderá solucionar problemas do Docker Engine.
Você pode usar o pacote Python do servidor HTTP de inferência do Azure Machine Learning para depurar seu script de pontuação localmente sem o Docker Engine. A depuração com o servidor de inferência ajuda você a depurar o script de pontuação antes de implantar em pontos de extremidade locais para que você possa depurar sem ser afetado pelas configurações do contêiner de implantação.
Para obter mais informações sobre como depurar um ponto de extremidade online localmente antes de fazer a implementação no Azure, consulte Depuração de ponto de extremidade online.
Implantar o modelo localmente
Primeiro, crie um ponto de extremidade. Opcionalmente, para um ponto de extremidade local, você pode ignorar esta etapa. Você pode criar a implantação diretamente (próxima etapa), que, por sua vez, cria os metadados necessários. A implantação de modelos localmente é útil para fins de desenvolvimento e teste.
az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
ml_client.online_endpoints.begin_create_or_update(endpoint, local=True)
O estúdio não suporta endpoints locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
O modelo não suporta pontos de extremidade locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
Agora, crie uma implantação nomeada blue sob o ponto de extremidade.
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
O --local flag direciona a CLI para implantar o ponto de extremidade no ambiente Docker.
ml_client.online_deployments.begin_create_or_update(
deployment=blue_deployment, local=True
)
O local=True indicador direciona o SDK para implantar o ponto de extremidade no ambiente Docker.
O estúdio não suporta endpoints locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
O modelo não suporta pontos de extremidade locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
Verifique se a implantação local foi bem-sucedida
Verifique o status da implantação para ver se o modelo foi implantado sem erros:
az ml online-endpoint show -n $ENDPOINT_NAME --local
A saída deve ser semelhante ao seguinte JSON. O provisioning_state parâmetro é Succeeded.
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
ml_client.online_endpoints.get(name=endpoint_name, local=True)
O método retorna ManagedOnlineEndpoint a entidade. O provisioning_state parâmetro é Succeeded.
ManagedOnlineEndpoint({'public_network_access': None, 'provisioning_state': 'Succeeded', 'scoring_uri': 'http://localhost:49158/score', 'swagger_uri': None, 'name': 'endpt-10061534497697', 'description': 'this is a sample endpoint', 'tags': {}, 'properties': {}, 'id': None, 'Resource__source_path': None, 'base_path': '/path/to/your/working/directory', 'creation_context': None, 'serialize': <msrest.serialization.Serializer object at 0x7ffb781bccd0>, 'auth_mode': 'key', 'location': 'local', 'identity': None, 'traffic': {}, 'mirror_traffic': {}, 'kind': None})
O estúdio não suporta endpoints locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
O modelo não suporta pontos de extremidade locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
A tabela a seguir contém os valores possíveis para provisioning_state:
| valor |
Descrição |
Creating |
O recurso está sendo criado. |
Updating |
O recurso está sendo atualizado. |
Deleting |
O recurso está sendo excluído. |
Succeeded |
A operação de criação ou atualização foi bem-sucedida. |
Failed |
A operação de criação, atualização ou exclusão falhou. |
Invoque o ponto de extremidade local para pontuar dados usando seu modelo
Invoque o ponto de extremidade para pontuar o modelo usando o invoke comando e passando parâmetros de consulta armazenados em um arquivo JSON:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Se você quiser usar um cliente REST (como curl), você deve ter o URI de pontuação. Para obter o URI de pontuação, execute az ml online-endpoint show --local -n $ENDPOINT_NAME. Nos dados retornados, localize o scoring_uri atributo.
Invoque o ponto de extremidade para pontuar o modelo usando o invoke comando e passando parâmetros de consulta armazenados em um arquivo JSON.
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
request_file="../model-1/sample-request.json",
local=True,
)
Se você quiser usar um cliente REST (como curl), você deve ter o URI de pontuação. Para obter o URI de pontuação, execute o código a seguir. Nos dados retornados, localize o scoring_uri atributo.
endpoint = ml_client.online_endpoints.get(endpoint_name, local=True)
scoring_uri = endpoint.scoring_uri
O estúdio não suporta endpoints locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
O modelo não suporta pontos de extremidade locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
Revise os logs para obter a saída da operação de invocação
No exemplo score.py arquivo, o run() método registra alguma saída para o console.
Você pode exibir essa saída usando o get-logs comando:
az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME
Você pode exibir essa saída usando o get_logs método:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, local=True, lines=50
)
O estúdio não suporta endpoints locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
O modelo não suporta pontos de extremidade locais. Para conhecer etapas para testar o endpoint localmente, consulte as abas do Azure CLI ou Python.
Implantar seu ponto de extremidade online no Azure
Em seguida, implante o seu endpoint online no Azure. Como prática recomendada para produção, recomendamos que você registre o modelo e o ambiente usados em sua implantação.
Registe o seu modelo e ambiente
Recomendamos que você registre seu modelo e ambiente antes da implantação no Azure para que possa especificar seus nomes registrados e versões durante a implantação. Depois de registrar seus ativos, você pode reutilizá-los sem a necessidade de carregá-los toda vez que criar implantações. Esta prática aumenta a reprodutibilidade e a rastreabilidade.
Ao contrário da implantação no Azure, a implantação local não oferece suporte ao uso de modelos e ambientes registrados. Em vez disso, a implantação local usa arquivos de modelo locais e usa ambientes apenas com arquivos locais.
Para implantação no Azure, você pode usar ativos locais ou registrados (modelos e ambientes). Nesta seção do artigo, a implantação no Azure usa ativos registrados, mas você tem a opção de usar ativos locais. Para obter um exemplo de uma configuração de implantação que carrega arquivos locais para usar na implantação local, consulte Configurar uma implantação.
Para registrar o modelo e o ambiente, use o formulário model: azureml:my-model:1 ou environment: azureml:my-env:1.
Para o registro, você pode extrair as definições de YAML de model e environment em arquivos YAML separados na pasta endpoints/online/managed/sample e usar os comandos az ml model create e az ml environment create. Para saber mais sobre esses comandos, execute az ml model create -h e az ml environment create -h.
Crie uma definição YAML para o modelo. Nomeie o arquivo model.yml:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: my-model
path: ../../model-1/model/
Registe o modelo:
az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
Crie uma definição de YAML para o ambiente. Nomeie o arquivo environment.yml:
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: my-env
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
conda_file: ../../model-1/environment/conda.yaml
Registe o ambiente:
az ml environment create -n my-env -v 1 -f endpoints/online/managed/sample/environment.yml
Para obter mais informações sobre como registrar seu modelo como um ativo, consulte Registrar um modelo usando a CLI do Azure ou o SDK do Python. Para obter mais informações sobre como criar um ambiente, consulte Criar um ambiente personalizado.
Registe um modelo:
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Registe o ambiente:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Para saber como registrar seu modelo como um ativo para que você possa especificar seu nome registrado e sua versão durante a implantação, consulte Registrar um modelo usando a CLI do Azure ou o SDK do Python.
Para obter mais informações sobre como criar um ambiente, consulte Criar um ambiente personalizado.
Registar o modelo
Um registro de modelo é uma entidade lógica no espaço de trabalho que pode conter um único arquivo de modelo ou um diretório de vários arquivos. Como melhor prática para a produção, registre o modelo e o ambiente. Antes de criar o ponto de extremidade e a implantação neste artigo, registe a pasta modelo que contém o modelo.
Para registar o modelo de exemplo, siga estes passos:
Vá para o estúdio do Azure Machine Learning.
No painel esquerdo, selecione a página Modelos .
Selecione Registrar e, em seguida, escolha De arquivos locais.
Selecione Tipo não especificado para o Tipo de modelo.
Selecione Procurar e escolha Procurar pasta.
Selecione a pasta \azureml-examples\cli\endpoints\online\model-1\model na cópia local do repositório que você clonou ou baixou anteriormente. Quando lhe for pedido, selecione Carregar e aguarde até que o carregamento termine.
Selecione Avançar.
Insira um nome amigável para o modelo. As etapas neste artigo pressupõem que o modelo é chamado model-1.
Selecione Avançar e, em seguida, selecione Registrar para concluir o registro.
Para obter mais informações sobre como trabalhar com modelos registrados, consulte Trabalhar com modelos registrados.
Criar e registrar o ambiente
No painel esquerdo, selecione a página Ambientes .
Selecione a guia Ambientes personalizados e, em seguida, escolha Criar.
Na página Configurações , insira um nome, como my-env para o ambiente.
Em Selecionar fonte do ambiente, escolha Usar imagem Docker existente com fonte Conda opcional.
Selecione Avançar para ir para a página Personalizar .
Copie o conteúdo do arquivo \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml do repositório clonado ou baixado anteriormente.
Cole o conteúdo na caixa de texto.
Selecione Avançar até chegar à página Criar e, em seguida, selecione Criar.
Para obter mais informações sobre como criar um ambiente no estúdio, consulte Criar um ambiente.
Para registrar o modelo usando um modelo, você deve primeiro carregar o arquivo de modelo para o Armazenamento de Blob. O exemplo a seguir usa o az storage blob upload-batch comando para carregar um arquivo para o armazenamento padrão do seu espaço de trabalho:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
Depois de carregar o arquivo, use o modelo para criar um registro de modelo. No exemplo a seguir, o modelUri parâmetro contém o caminho para o modelo:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Parte do ambiente é um arquivo conda que especifica as dependências do modelo necessárias para hospedar o modelo. O exemplo a seguir demonstra como ler o conteúdo do arquivo conda em variáveis de ambiente:
CONDA_FILE=$(cat cli/endpoints/online/model-1/environment/conda.yaml)
O exemplo a seguir demonstra como usar o modelo para registrar o ambiente. O conteúdo do arquivo conda da etapa anterior é passado para o modelo usando o condaFile parâmetro:
ENV_VERSION=$RANDOM
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/environment-version.json \
--parameters \
workspaceName=$WORKSPACE \
environmentAssetName=sklearn-env \
environmentAssetVersion=$ENV_VERSION \
dockerImage=mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1 \
condaFile="$CONDA_FILE"
Importante
Ao definir um ambiente personalizado para sua implantação, certifique-se de que o azureml-inference-server-http pacote esteja incluído no arquivo conda. Este pacote é essencial para que o servidor de inferência funcione corretamente. Se você não estiver familiarizado com como criar seu próprio ambiente personalizado, use um de nossos ambientes com curadoria, como minimal-py-inference (para modelos personalizados que não usam mlflow) ou mlflow-py-inference (para modelos que usam mlflow). Você pode encontrar esses ambientes selecionados na guia Ambientes da sua instância do estúdio Azure Machine Learning.
Sua configuração de implantação usa o modelo registrado que você deseja implantar e seu ambiente registrado.
Use os ativos registrados (modelo e ambiente) em sua definição de implantação. O fragmento a seguir mostra o arquivo endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml, com todos os dados de entrada necessários para configurar uma implementação.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1
Para configurar uma implantação, use o modelo e o ambiente registrados:
model = "azureml:my-model:1"
env = "azureml:my-env:1"
blue_deployment_with_registered_assets = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
Ao implantar a partir do estúdio, cria-se um ponto final e uma implantação para o adicionar. Nesse momento, será solicitado a introduzir nomes para o endpoint e a implementação.
Usar diferentes tipos de instância de CPU e GPU e imagens
Você pode especificar os tipos de instância de CPU ou GPU e imagens em sua definição de implantação para implantação local e implantação no Azure.
A sua definição de implantação no arquivo blue-deployment-with-registered-assets.yml usou uma instância de tipo Standard_DS3_v2 de uso geral e a imagem do Docker mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest sem GPU. Para computação GPU, escolha uma versão do tipo de computação GPU e uma imagem GPU Docker.
Para tipos de instância de GPU e de uso geral suportados, consulte Lista de SKU de endpoints online gerenciados. Para obter uma lista de imagens base de CPU e GPU do Azure Machine Learning, consulte Imagens base do Azure Machine Learning.
Você pode especificar os tipos e imagens de instância de CPU ou GPU em sua configuração de implantação para implantação local e implantação no Azure.
Anteriormente, você configurou uma implantação que usava uma instância de propósito geral Standard_DS3_v2 e uma imagem Docker mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest não-GPU. Para computação GPU, escolha uma versão do tipo de computação GPU e uma imagem GPU Docker.
Para tipos de instância de GPU e de uso geral suportados, consulte Lista de SKU de endpoints online gerenciados. Para obter uma lista de imagens base de CPU e GPU do Azure Machine Learning, consulte Imagens base do Azure Machine Learning.
A prévia do registro do ambiente especifica uma imagem Docker mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 sem GPU ao passar o valor para o modelo environment-version.json usando o parâmetro dockerImage. Para uma computação de GPU, forneça um valor para uma imagem do GPU Docker para o modelo (use o dockerImage parâmetro) e forneça uma versão de tipo de computação de GPU para o online-endpoint-deployment.json modelo (use o skuName parâmetro).
Para tipos de instância de GPU e de uso geral suportados, consulte Lista de SKU de endpoints online gerenciados. Para obter uma lista de imagens base de CPU e GPU do Azure Machine Learning, consulte Imagens base do Azure Machine Learning.
Em seguida, implante o seu endpoint online no Azure.
Implementar no Azure
Crie o ponto de extremidade na nuvem do Azure:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Crie a implantação nomeada blue sob o ponto de extremidade:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
A criação da implantação pode levar até 15 minutos, dependendo se o ambiente subjacente ou a imagem está sendo criada pela primeira vez. As implantações subsequentes que usam o mesmo ambiente são processadas mais rapidamente.
Se preferir não bloquear o console da CLI, você pode adicionar o sinalizador --no-wait ao comando. No entanto, essa opção interrompe a exibição interativa do status da implantação.
O --all-traffic flag no código az ml online-deployment create usado para criar a implementação aloca 100% do tráfego do endpoint para a implementação azul recentemente criada. O uso desse sinalizador é útil para fins de desenvolvimento e teste, mas para produção, convém rotear o tráfego para a nova implantação por meio de um comando explícito. Por exemplo, use az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".
Crie o ponto de extremidade:
Usando o endpoint parâmetro que você definiu anteriormente e o MLClient parâmetro que você criou anteriormente, agora você pode criar o ponto de extremidade no espaço de trabalho. Este comando inicia a criação do ponto de extremidade e retorna uma resposta de confirmação enquanto a criação do ponto de extremidade continua.
ml_client.online_endpoints.begin_create_or_update(endpoint)
Crie a implantação:
Usando o blue_deployment_with_registered_assets parâmetro que você definiu anteriormente e o MLClient parâmetro que você criou anteriormente, agora você pode criar a implantação no espaço de trabalho. Este comando inicia a criação da implantação e retorna uma resposta de confirmação enquanto a criação da implantação continua.
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Se preferir não bloquear o console do Python, você pode adicionar o sinalizador no_wait=True aos parâmetros. No entanto, essa opção interrompe a exibição interativa do status da implantação.
# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint)
Criar um endpoint online gerenciado e implantação
Use o estúdio para criar um endpoint online gerenciado diretamente em seu navegador. Ao criar um ponto de extremidade online gerenciado no estúdio, você deve definir uma implantação inicial. Não é possível criar um endpoint online gerido vazio.
Uma maneira de criar um endpoint online gerenciado no estúdio é a partir da página Modelos . Esse método também fornece uma maneira fácil de adicionar um modelo a uma implantação online gerenciada existente. Para implantar o modelo nomeado model-1 que você registrou anteriormente na seção Registrar seu modelo e ambiente :
Vá para o estúdio do Azure Machine Learning.
No painel esquerdo, selecione a página Modelos .
Selecione o modelo chamado model-1.
Selecione Implantar>endpoint em tempo real.
Esta ação abre uma janela onde pode especificar detalhes sobre o seu endpoint.
Introduza um nome de endpoint único na região do Azure. Para obter mais informações sobre as regras de nomenclatura, consulte Limites de pontos finais.
Manter a seleção padrão: Gerenciado para o tipo de computação.
Mantenha a seleção padrão: autenticação baseada em chave para o tipo de autenticação. Para obter mais informações sobre autenticação, consulte Autenticar clientes para pontos de extremidade online.
Selecione Avançar até chegar à página Implantação . Alterne o diagnóstico do Application Insights para Habilitado para que você possa exibir gráficos das atividades do seu endpoint no estúdio mais tarde e analisar métricas e logs usando o Application Insights.
Selecione Avançar para ir para a página Código + ambiente . Selecione as seguintes opções:
-
Selecione um script de pontuação para inferência: Procure e selecione o arquivo \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py do repositório clonado ou baixado anteriormente.
-
Seção Selecionar ambiente : Selecione Ambientes personalizados e, em seguida, selecione o ambiente my-env:1 que você criou anteriormente.
Selecione Avançar e aceite os padrões até que você seja solicitado a criar a implantação.
Revise suas configurações de implantação e selecione Criar.
Como alternativa, você pode criar um ponto de extremidade online gerenciado na página Pontos de extremidade no estúdio.
Vá para o estúdio do Azure Machine Learning.
No painel à esquerda, selecione a página Pontos de extremidade.
Selecione + Criar.
Esta ação abre uma janela para o utilizador selecionar o modelo e especificar pormenores sobre o endpoint e a implementação. Insira as configurações para seu ponto de extremidade e implantação, conforme descrito anteriormente, e selecione Criar para criar a implantação.
Use o modelo para criar um ponto de extremidade online:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint.json \
--parameters \
workspaceName=$WORKSPACE \
onlineEndpointName=$ENDPOINT_NAME \
identityType=SystemAssigned \
authMode=AMLToken \
location=$LOCATION
Implante o modelo no ponto de extremidade depois que o ponto de extremidade for criado:
resourceScope="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices"
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint-deployment.json \
--parameters \
workspaceName=$WORKSPACE \
location=$LOCATION \
onlineEndpointName=$ENDPOINT_NAME \
onlineDeploymentName=blue \
codeId="$resourceScope/workspaces/$WORKSPACE/codes/score-sklearn/versions/1" \
scoringScript=score.py \
environmentId="$resourceScope/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION" \
model="$resourceScope/workspaces/$WORKSPACE/models/sklearn/versions/1" \
endpointComputeType=Managed \
skuName=Standard_F2s_v2 \
skuCapacity=1
Para depurar erros em sua implantação, consulte Solução de problemas de implantações de ponto de extremidade online.
Verificar o estado do ponto de extremidade online
Use o comando show para exibir informações no provisioning_state para o endpoint e implantação:
az ml online-endpoint show -n $ENDPOINT_NAME
Liste todos os pontos de extremidade no espaço de trabalho num formato de tabela usando o comando list:
az ml online-endpoint list --output table
Verifique o status do ponto de extremidade para ver se o modelo foi implantado sem erros:
ml_client.online_endpoints.get(name=endpoint_name)
Liste todos os endpoints no espaço de trabalho num formato de tabela usando o método list:
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
O método retorna uma lista (iterador) de ManagedOnlineEndpoint entidades.
Você pode obter mais informações especificando mais parâmetros. Por exemplo, apresente a lista de endpoints como uma tabela.
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Exibir endpoints online gerenciados
Você pode visualizar todos os seus endpoints online gerenciados na página Endpoints . Vá para a página Detalhes do ponto de extremidade para encontrar informações críticas, como o URI do ponto de extremidade, status, ferramentas de teste, monitores de atividade, logs de implantação e código de consumo de exemplo.
No painel esquerdo, selecione Pontos de extremidade para ver uma lista de todos os pontos de extremidade no espaço de trabalho.
(Opcional) Crie um filtro em Tipo de computação para mostrar apenas os tipos de computação gerenciados .
Selecione um nome de ponto de extremidade para exibir a página Detalhes do ponto de extremidade.
Os modelos são úteis para implantar recursos, mas você não pode usá-los para listar, mostrar ou invocar recursos. Use a CLI do Azure, o SDK do Python ou o estúdio para executar essas operações. O código a seguir usa a CLI do Azure.
Use o comando show para exibir informações no parâmetro provisioning_state para o ponto de extremidade e a implementação.
az ml online-endpoint show -n $ENDPOINT_NAME
Liste todos os pontos de extremidade no espaço de trabalho num formato de tabela usando o comando list:
az ml online-endpoint list --output table
Verificar o estado da implantação online
Verifique os logs para ver se o modelo foi implantado sem erros.
Para ver a saída de log de um contêiner, use o seguinte comando da CLI:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Por padrão, os logs são extraídos do contêiner do servidor de inferência. Para ver os logs do contentor do inicializador de armazenamento, adicione o --container storage-initializer indicador. Para obter mais informações sobre registos de implementação, consulte Obter registos de contentor.
Você pode exibir a saída do log usando o get_logs método:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
Por padrão, os logs são extraídos do contêiner do servidor de inferência. Para ver os logs do contêiner do inicializador de armazenamento, adicione a container_type="storage-initializer" opção. Para obter mais informações sobre registos de implementação, consulte Obter registos de contentor.
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50, container_type="storage-initializer"
)
Para exibir a saída do log, selecione a guia Logs na página do ponto de extremidade. Se tiver várias implementações no seu endpoint, use a lista suspensa para selecionar a implementação com o log que pretende ver.
Por padrão, os logs são extraídos do servidor de inferência. Para ver os logs do contêiner do inicializador de armazenamento, use a CLI do Azure ou o SDK do Python (consulte cada guia para obter detalhes). Os logs do contêiner do inicializador de armazenamento fornecem informações sobre se o código e os dados do modelo foram baixados com êxito para o contêiner. Para obter mais informações sobre registos de implementação, consulte Obter registos de contentor.
Os modelos são úteis para implantar recursos, mas você não pode usá-los para listar, mostrar ou invocar recursos. Use a CLI do Azure, o SDK do Python ou o estúdio para executar essas operações. O código a seguir usa a CLI do Azure.
Para ver a saída de log de um contêiner, use o seguinte comando da CLI:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Por padrão, os logs são extraídos do contêiner do servidor de inferência. Para ver os logs do contentor do inicializador de armazenamento, adicione o --container storage-initializer indicador. Para obter mais informações sobre registos de implementação, consulte Obter registos de contentor.
Invoque o ponto de extremidade para pontuar dados usando seu modelo
Utilize o comando invoke ou um cliente REST à sua escolha para chamar o endpoint e avaliar alguns dados.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Obtenha a chave usada para autenticar no ponto de extremidade:
Você pode controlar quais entidades de segurança do Microsoft Entra podem obter a chave de autenticação atribuindo-as a uma função personalizada que permite Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action e Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Para obter mais informações sobre como gerenciar a autorização para espaços de trabalho, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Use curl para avaliar dados.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Observe que você usa show comandos e get-credentials para obter as credenciais de autenticação. Observe também que você usa o --query sinalizador para filtrar apenas os atributos necessários. Para saber mais sobre o --query indicador, consulte Consultar a saída do comando CLI do Azure.
Para ver os logs de invocação, execute get-logs novamente.
Usando o MLClient parâmetro que você criou anteriormente, você obtém um identificador para o ponto de extremidade. Em seguida, você pode invocar o ponto de extremidade usando o invoke comando com os seguintes parâmetros:
-
endpoint_name: Nome do ponto de extremidade.
-
request_file: Arquivo com dados de solicitação.
-
deployment_name: Nome da implantação específica a ser testada num endpoint.
Envie uma solicitação de exemplo usando um arquivo JSON .
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Para testar a sua implementação online gerida, utilize o separador Teste na página de detalhes do endpoint. Insira a entrada de amostra e visualize os resultados.
Selecione a guia Teste na página de detalhes do ponto de extremidade.
Utilize a lista suspensa para selecionar a implantação que pretende testar.
Insira a entrada de amostra.
Selecione Testar.
Os modelos são úteis para implantar recursos, mas você não pode usá-los para listar, mostrar ou invocar recursos. Use a CLI do Azure, o SDK do Python ou o estúdio para executar essas operações. O código a seguir usa a CLI do Azure.
Utilize o comando invoke ou um cliente REST à sua escolha para chamar o endpoint e avaliar alguns dados.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
(Opcional) Atualizar a implantação
Se você quiser atualizar o código, modelo ou ambiente, atualize o arquivo YAML. Em seguida, execute o az ml online-endpoint update comando.
Se você atualizar a contagem de instâncias (para dimensionar sua implantação) junto com outras configurações de modelo (como código, modelo ou ambiente) em um único update comando, a operação de dimensionamento será executada primeiro. As outras atualizações são aplicadas em seguida. É uma boa prática executar essas operações separadamente em um ambiente de produção.
Para entender como update funciona:
Abra o arquivo online/model-1/onlinescoring/score.py.
Altere a última linha da função: Depois de init(), adicione logging.info("Init complete").
Guarde o ficheiro.
Execute este comando:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
A atualização usando YAML é declarativa. Ou seja, as alterações no YAML são refletidas nos recursos subjacentes do Resource Manager (endpoints e deployments). Uma abordagem declarativa facilita o GitOps: todas as alterações em endpoints e implantações (até instance_countmesmo) passam pelo YAML.
Você pode usar parâmetros de atualização genéricos, como o --set parâmetro, com o comando CLI update para substituir atributos em seu YAML ou para definir atributos específicos sem passá-los no arquivo YAML. O uso --set para atributos únicos é especialmente valioso em cenários de desenvolvimento e teste. Por exemplo, para aumentar o valor instance_count da primeira implantação, pode usar a opção --set instance_count=2. No entanto, como o YAML não é atualizado, essa técnica não facilita o GitOps.
Especificar o arquivo YAML não é obrigatório. Por exemplo, se você quiser testar diferentes configurações de simultaneidade para uma implantação específica, poderá tentar algo como az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Essa abordagem mantém toda a configuração existente, mas atualiza apenas os parâmetros especificados.
Dado que modificou a função init(), que é executada quando o ponto de extremidade é criado ou atualizado, a mensagem Updated successfully surge nos registos. Recupere os logs executando:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
O update comando também funciona com implantações locais. Use o mesmo az ml online-deployment update comando com o --local flag.
Se você quiser atualizar o código, modelo ou ambiente, atualize a configuração e, em seguida, execute o MLClientmétodo do online_deployments.begin_create_or_update para criar ou atualizar uma implantação.
Se você atualizar a contagem de instâncias (para dimensionar sua implantação) juntamente com outras configurações de modelo (como código, modelo ou ambiente) em um único begin_create_or_update método, a operação de dimensionamento será executada primeiro. Em seguida, as outras atualizações são aplicadas. É uma boa prática executar essas operações separadamente em um ambiente de produção.
Para entender como begin_create_or_update funciona:
Abra o arquivo online/model-1/onlinescoring/score.py.
Altere a última linha da função: Depois de init(), adicione logging.info("Init complete").
Guarde o ficheiro.
Execute o método:
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Dado que modificou a função init(), que é executada quando o ponto de extremidade é criado ou atualizado, a mensagem Updated successfully surge nos registos. Recupere os logs executando:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
O begin_create_or_update método também funciona com implantações locais. Use o mesmo método com o local=True sinalizador.
Atualmente, você pode fazer atualizações apenas para a contagem de instâncias de uma implantação. Use as instruções a seguir para dimensionar uma implantação individual para cima ou para baixo, ajustando o número de instâncias:
- Abra a página Detalhes do ponto de extremidade e localize o cartão para a implantação que você deseja atualizar.
- Selecione o ícone de edição (ícone de lápis) ao lado do nome da implantação.
- Atualize a contagem de instâncias associada à implantação. Escolha entre Padrão ou Utilização Alvo para tipo de escala de implantação.
- Se você selecionar Padrão, também poderá especificar um valor numérico para Contagem de instâncias.
- Se você selecionar Utilização de destino, poderá especificar valores a serem usados para parâmetros ao dimensionar automaticamente a implantação.
- Selecione Atualizar para terminar a atualização das contagens de instâncias para a sua implantação.
Atualmente, não há uma opção para atualizar a implantação usando um modelo ARM.
Nota
A atualização para a implantação nesta seção é um exemplo de uma atualização gradual no local.
- Para um ponto de extremidade online gerenciado, a implantação é atualizada para a nova configuração com 20% dos nós de cada vez. Ou seja, se a implantação tiver 10 nós, 2 nós de cada vez serão atualizados.
- Para um ponto de extremidade online do Kubernetes, o sistema cria iterativamente uma nova instância de implantação com a nova configuração e exclui a antiga.
- Para uso em produção, considere a implantação azul-verde, que oferece uma alternativa mais segura para atualizar um serviço Web.
O escalonamento automático executa a quantidade certa de recursos para processar a carga de trabalho na sua aplicação. Os pontos de extremidade online geridos oferecem suporte à escala automática através da integração com o recurso de escala automática do Azure Monitor. Para configurar o dimensionamento automático, consulte Pontos de extremidade online com dimensionamento automático.
(Opcional) Monitorar SLA usando o Azure Monitor
Para visualizar métricas e definir alertas com base no seu SLA, siga as etapas descritas em Monitorar endpoints online.
(Opcional) Integração com o Log Analytics
O get-logs comando para a CLI ou o get_logs método para o SDK fornece apenas as últimas centenas de linhas de logs de uma instância selecionada automaticamente. No entanto, o Log Analytics fornece uma maneira de armazenar e analisar logs de forma durável. Para obter mais informações sobre como usar logs, consulte Usar logs.
Excluir o ponto de extremidade e a implantação
Use o seguinte comando para excluir o ponto de extremidade e todas as suas implantações subjacentes:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Use o seguinte comando para excluir o ponto de extremidade e todas as suas implantações subjacentes:
ml_client.online_endpoints.begin_delete(name=endpoint_name)
Se não vais usar o ponto de extremidade e a implantação, apaga-os. Ao eliminar o endpoint, também elimina todas as suas implementações subjacentes.
- Vá para o estúdio do Azure Machine Learning.
- No painel à esquerda, selecione a página Pontos de extremidade.
- Selecione um ponto de extremidade.
- Selecione Excluir.
Como alternativa, pode excluir um ponto de extremidade online gerido diretamente selecionando o ícone Excluir na página de detalhes do ponto de extremidade.
Use o seguinte comando para excluir o ponto de extremidade e todas as suas implantações subjacentes:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Conteúdos relacionados