Compartilhar via


Implantar e pontuar um modelo de aprendizado de máquina usando um ponto de extremidade online

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Neste artigo, você aprenderá a implantar seu modelo em um ponto de extremidade online para uso em inferências em tempo real. Comece implantando um modelo em seu computador local para depurar qualquer erro. Em seguida, implante e teste o modelo no Azure, exiba os logs de implantação e monitore o SLA (contrato de nível de serviço). Ao final deste artigo, você tem um ponto de extremidade HTTPS/REST escalonável que pode ser usado para inferência em tempo real.

Os pontos de extremidade online são pontos de extremidade usados para inferência em tempo real. Há dois tipos de pontos de extremidade online: pontos de extremidade online gerenciados e pontos de extremidade online do Kubernetes. Para obter mais informações sobre as diferenças, consulte Pontos de extremidade online gerenciados versus pontos de extremidade online do Kubernetes.

Os pontos de extremidade online gerenciados ajudam a implantar seus modelo de machine learning de maneira pronta para uso. Os pontos de extremidade online gerenciados funcionam com computadores com CPU e GPU poderosas no Azure, de maneira escalonável e totalmente gerenciada. Pontos de extremidade online gerenciados cuidam da entrega, escala, proteção e monitoramento dos 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, confira as observações neste documento que estão alinhadas à discussão sobre os pontos de extremidade online gerenciados.

Pré-requisitos

APLICA-SE A:Extensão de ML da CLI do Azurev2 (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 do Windows para Linux. Os exemplos da CLI do Azure neste artigo pressupõem que você use esse tipo de shell.

  • Um Workspace do Azure Machine Learning. Para obter instruções para criar um workspace, consulte Configurar.

  • O RBAC (controle de acesso baseado em função) do Azure é usado para conceder acesso a operações no Azure Machine Learning. Para realizar as etapas deste artigo, sua conta de usuário deve ter a função Proprietário ou Colaborador atribuída para o workspace do Azure Machine Learning, ou uma função personalizada deve permitir Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Se você usar o estúdio do Azure Machine Learning para criar e gerenciar pontos de extremidade ou implantações online, precisará da permissão extra Microsoft.Resources/deployments/write do proprietário do grupo de recursos. Para obter mais informações, consulte Gerenciar acesso a workspaces do Azure Machine Learning.

  • (Opcional) Para implantar localmente, você deve instalar o Mecanismo do Docker em seu computador local. É altamente recomendável essa opção, o que facilita a depuração de problemas.

  • Verifique se você tem cota de VM (máquina virtual) suficiente alocada para implantação. O Azure Machine Learning reserva 20% de seus recursos de computação para executar atualizações em algumas versões da 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 ao considerar os recursos computacionais adicionais resulta em um erro. Algumas versões de VM são isentas da reserva de cota extra. Para obter mais informações sobre alocação de cotas, confira Alocação de cotas 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 compartilhado do qual os usuários em várias regiões podem acessar a cota para executar testes por um tempo limitado, dependendo da disponibilidade. Ao usar o estúdio para implantar os modelos Llama-2, Phi, Nemotron, Mistral, Dolly e Deci-DeciLM do catálogo de modelos em um ponto de extremidade online gerenciado, o Azure Machine Learning permite que você acesse seu pool de cotas compartilhadas por um curto período de tempo para que possa executar testes. Para obter mais informações sobre o pool de cotas compartilhado, confira Cota compartilhada do Azure Machine Learning.

Preparar seu sistema

Definir variáveis de ambiente

Se você ainda não definiu os padrões da CLI do Azure, salve as configurações padrão. Para evitar passar os valores para 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 no 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 da CLI . Os arquivos de configuração YAML estão no subdiretório endpoints/online/managed/sample/.

Observação

Os arquivos de configuração YAML para pontos de extremidade online do Kubernetes estão nos pontos de extremidade/online/kubernetes/ subdiretório.

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 os pontos de extremidade online gerenciados, confira 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 os limites do Ponto de Extremidade.

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Configurar o ponto de extremidade

O snippet 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 de ponto de extremidade YAML é descrita na tabela a seguir. Para saber como especificar esses atributos, consulte areferência do YAML para ponto de extremidade online . Para obter informações sobre os limites relacionados aos pontos de extremidade gerenciados, consulte pontos de extremidade online do Azure Machine Learning e pontos de extremidade em lote.

Chave Descrição
$schema (Opcional) O esquema YAML. Para ver todas as opções disponíveis no arquivo YAML, você pode visualizar o esquema no exemplo 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 chave do Azure Machine Learning.
Use aad_token para autenticação baseada em token do Microsoft Entra (versão prévia).
Para obter mais informações sobre autenticação, consulte Autenticar clientes para pontos de extremidade online.

Definir a implantação

Uma implantação é um conjunto de recursos necessários para hospedar o modelo que executa a inferência real. Para este 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, confira Implantações online.

Configurar uma implantação

Sua configuração de implantação usa o local do modelo que você deseja implantar.

O snippet 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. Posteriormente, para criar o ambiente, a implantação usará 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: Faz o upload dos arquivos locais, como o código-fonte Python para o modelo de pontuação, do ambiente de desenvolvimento durante a implantação.

Para saber mais sobre o esquema YAML, confira a referência YAML do ponto de extremidade online.

Observação

Para usar pontos de extremidade do Kubernetes em vez de pontos de extremidade online gerenciados como um destino de computação:

  1. Crie o cluster do Kubernetes e anexe-o como um destino de computação ao espaço de trabalho do Azure Machine Learning usando o Estúdio do Azure Machine Learning.
  2. Use o YAML do ponto de extremidade para segmentar o Kubernetes em vez do YAML do ponto de extremidade gerenciado. É necessário editar o YAML para alterar o valor de compute para o nome do destino de computação registrado. Você pode usar este arquivo deployment.yaml que contém outras propriedades aplicáveis a um deployment no Kubernetes.

Todos os comandos usados neste artigo para pontos de extremidade online gerenciados também se aplicam aos pontos de extremidade do Kubernetes, exceto pelos seguintes recursos que não se aplicam aos pontos de extremidade do Kubernetes:

Como funciona o script de pontuação

O formato do script de pontuação para pontos de extremidade online é o mesmo formato usado na versão anterior da CLI e no SDK do Python.

O script de pontuação especificado em code_configuration.scoring_script deve ter uma função init() e uma função run().

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 função init() é chamada quando o contêiner é inicializado ou iniciado. Normalmente, essa inicialização ocorre logo depois que a implantação é criada ou atualizada. A função init é o local para escrever a lógica das operações de inicialização global, como o armazenamento em cache do modelo na memória (conforme mostrado neste arquivo score.py).

A run() função é chamada sempre que o ponto de extremidade é invocado. Ele faz a pontuação e a previsão reais. Neste arquivo score.py, a função run() extrai dados de uma entrada JSON, chama o método predict() do modelo do scikit-learn e, em seguida, retorna o resultado da previsão.

Implantar e depurar localmente usando um ponto de extremidade local

É altamente recomendável que você execute um teste no seu endpoint localmente para validar e depurar seu código e configuração antes de publicar no Azure. A CLI do Azure e o SDK do Python dão suporte a implantações e pontos de extremidade locais, mas o Estúdio do Azure Machine Learning e os modelos do ARM não.

Para implantar localmente, o Mecanismo do Docker deve estar instalado e em execução. O Mecanismo do Docker normalmente é iniciado quando o computador é iniciado. Caso ele não seja, solucione o problema do Mecanismo do Docker.

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 Mecanismo do Docker. A depuração com o servidor de inferência ajuda a depurar o script de pontuação antes de implantá-lo em pontos de extremidade locais, para que você possa depurar sem ser afetado pelas configurações do contêiner de implantação.

Para mais informações sobre como depurar pontos de extremidade online localmente antes de implantá-los no Azure, confira 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 essa 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

Agora, crie a implantação chamada blue no ponto de extremidade.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

O sinalizador --local direciona a CLI para implantar o ponto de extremidade no ambiente do Docker.

Dica

Use o Visual Studio Code para testar e depurar os pontos de extremidade localmente. Para obter mais informações, confira Depurar pontos de extremidade online localmente no Visual Studio Code.

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 ter aparência similar 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": {}
}

A tabela a seguir contém os possíveis valores 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 Falha na operação de criação, atualização ou exclusão.

Invocar o ponto de extremidade local para pontuar os dados usando o modelo

Invoque o ponto de extremidade para pontuar o modelo usando o comando invoke e passando os 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 a ondulação), deverá 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, encontre o atributo scoring_uri.

Examinar os logs em busca da saída da operação de invocação

No exemplo o arquivo score.py, o método run() registra uma saída no console.

Você pode visualizar essa saída usando o comando get-logs:

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Implantar o ponto de extremidade online no Azure

Depois, implante o ponto de extremidade online no Azure. Como prática recomendada para produção, recomendamos que você registre o modelo e o ambiente usados em sua implantação.

Registrar modelo e ambiente

Recomendamos que você registre seu modelo e ambiente antes da implantação no Azure, para que possa especificar seus nomes e versões registrados durante a implantação. Depois de registrar seus ativos, você pode reutilizá-los sem a necessidade de carregá-los sempre que criar implantações. Essa prática aumenta a reprodutibilidade e a rastreabilidade.

Ao contrário da implantação no Azure, a implantação local não dá suporte ao uso de modelos e ambientes registrados. Em vez disso, a implantação local usa arquivos de modelo locais e usa ambientes somente 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 a serem usados para implantação local, confira 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 registro, você pode extrair as definições 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.

  1. 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/
    
  2. Registre o modelo:

    az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
    
  3. Crie uma definição 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
    
  4. Registre 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.

Importante

Ao definir um ambiente personalizado para sua implantação, verifique se o azureml-inference-server-http pacote está incluído no arquivo conda. Esse 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 selecionados, 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 curados na guia Ambientes da sua instância do Azure Machine Learning Studio.

Configurar uma implantação que usa ativos registrados

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 trecho a seguir mostra o arquivo endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml, com todas as entradas obrigatórias para configurar uma implantaçã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

Usar diferentes imagens e tipos de instância de GPU e CPU

Você pode especificar os tipos de instância de CPU ou GPU e as imagens em sua definição de implantação, tanto para a implantação local quanto para a implantação no Azure.

Sua definição de implantação no arquivo blue-deployment-with-registered-assets.yml utilizou uma instância de uso geral do tipo Standard_DS3_v2 e uma imagem Docker que não utiliza GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Para computação com GPU, escolha uma versão de tipo de computação com GPU e uma imagem do Docker com GPU.

Para tipos de instância com suporte, de uso geral e com GPU, confira Lista de SKUs de pontos de extremidade online gerenciados. Para obter uma lista de imagens de base de GPU e CPU do Azure Machine Learning, confira Imagens de base do Azure Machine Learning.

Observação

Para usar o Kubernetes em vez de pontos de extremidade gerenciados como um destino de computação, consulte Introdução ao destino de computação do Kubernetes.

Depois, implante o ponto de extremidade online no Azure.

Implantar no Azure

  1. Crie o ponto de acesso na nuvem Azure.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Crie a implantação denominada blue no 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 ou imagem subjacente está sendo criado pela primeira vez. As implantações seguintes que usam o mesmo ambiente são processadas mais rapidamente.

    Se você preferir não bloquear o console da CLI, adicione o sinalizador --no-wait ao comando. No entanto, essa opção interrompe a exibição interativa do status da implantação.

    O sinalizador --all-traffic no código az ml online-deployment create usado para criar a implantação aloca 100% do tráfego do ponto de extremidade para a implantação azul recém-criada. Usar esse sinalizador é útil para fins de desenvolvimento e teste, mas, para produção, talvez você queira 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".

Para depurar erros em sua implantação, confira Solução de problemas de implantações de pontos de extremidade online.

Verificar o status do ponto de extremidade online

  1. Use o comando show para exibir informações em provisioning_state sobre o ponto de extremidade e a implantação:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Liste todos os pontos de extremidade no workspace em um formato de tabela usando o comando list:

    az ml online-endpoint list --output table
    

Verifique o status da implantação online

Verifique os logs para ver se o modelo foi implantado sem erro.

Para ver a saída de log do 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 contêiner do inicializador de armazenamento, adicione o sinalizador --container storage-initializer. Para obter mais informações sobre logs de implantação, consulte Obter logs de contêiner.

Invocar o ponto de extremidade para pontuar os dados usando o modelo

  1. Use o comando invoke ou um cliente REST de sua escolha para chamar o ponto de extremidade e obter alguns dados:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. 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 workspaces, consulte Gerenciar o acesso a um workspace do Azure Machine Learning.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. Use curl para pontuar 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 e get-credentials comandos 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 sinalizador --query, confira Consultar a saída de comando da CLI do Azure.

  4. Para ver os logs de invocação, execute get-logs novamente.

(Opcional) Atualizar a implantação

Se você quiser atualizar o código, o modelo ou o ambiente, atualize o arquivo YAML. Em seguida, execute o comando az ml online-endpoint update.

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 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:

  1. Abra o arquivo online/model-1/onlinescoring/score.py.

  2. Altere a última linha da função init(): depois de logging.info("Init complete"), adicione logging.info("Updated successfully").

  3. Salve o arquivo.

  4. 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 (pontos de extremidade e implantações). Uma abordagem declarativa facilita o GitOps:Todas as alterações em pontos de extremidade e implantações (até mesmo instance_count) passam pelo YAML.

    Você pode usar parâmetros de atualização genéricos, como o parâmetro --set, com o comando update da CLI para substituir atributos em seu YAML ou para definir atributos específicos sem passá-los no arquivo YAML. Use --set para atributos individuais é útil principalmente em cenários de desenvolvimento e teste. Por exemplo, para escalar verticalmente o valor instance_count da primeira implantação, você pode usar o sinalizador --set instance_count=2. No entanto, como o YAML não está 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.

  5. Como você modificou a init() função, que é executada quando o ponto de extremidade é criado ou atualizado, a mensagem Updated successfully é exibida nos logs. Recupere os logs executando:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

O comando update também funciona com implantações locais. Use o mesmo comando az ml online-deployment update com o sinalizador --local.

Observação

A atualização da implantação nesta seção é um exemplo de uma atualização contínua no local.

  • Para um ponto de extremidade online gerenciado, a implantação será atualizada para a nova configuração com 20% dos nós por vez. Ou seja, se a implantação tiver 10 nós, 2 nós por vez serão atualizados.
  • Para um ponto de extremidade online do Kubernetes, o sistema criará 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.

(Opcional) Configurar o dimensionamento automático

O dimensionamento automático executa automaticamente a quantidade certa de recursos para lidar com a carga em seu aplicativo. Os pontos de extremidade online gerenciados dão suporte ao dimensionamento automático por meio da integração com o recurso de escala automática do Azure Monitor. Para configurar o dimensionamento automático, consulte Pontos de extremidade online de dimensionamento automático.

(Opcional) Monitorar o SLA usando o Azure Monitor

Para ver as métricas e definir alertas com base no seu SLA, siga as etapas descritas em Monitorar pontos de extremidade online.

(Opcional) Fazer a integração com o Log Analytics

O get-logs comando da CLI ou do 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 oferece uma forma de armazenar e analisar logs de modo durável. Para obter mais informações sobre como usar logs, consulte Uso de logs.

Excluir o ponto de extremidade e a implantação

Utilize o seguinte comando para excluir o endpoint e todas as suas implantações associadas.

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait