Pontos de extremidade e implantações online para inferência em tempo real

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

O Azure Machine Learning permite que você faça inferências em tempo real sobre os dados usando modelos implantados em pontos de extremidade online. A inferência é o processo de aplicação de novos dados de entrada a um modelo de machine learning para gerar saídas. Embora essas saídas normalmente sejam chamadas de "previsões", a inferência pode ser usada para gerar saídas para outras tarefas de aprendizado de máquina, como classificação e clustering.

Pontos de Extremidade online

Os pontos de extremidade online implantam modelos em um servidor Web que pode retornar previsões sob o protocolo HTTP. Use os pontos de extremidade online para operacionalizar modelos para inferência em tempo real em solicitações síncronas de baixa latência. Recomendamos usá-los quando:

  • Você tem requisitos de baixa latência
  • Seu modelo pode responder à solicitação em um período de tempo relativamente curto
  • As entradas do modelo se encaixam no conteúdo HTTP da solicitação
  • Você precisa escalar verticalmente em termos de número de solicitações

Para definir um ponto de extremidade, especifique:

  • Nome do ponto de extremidade: esse nome deve ser exclusivo na região do Azure. Para obter mais informações sobre as regras de nomenclatura, confira Limites de pontos de extremidade.
  • Modo de autenticação: você pode escolher entre o modo de autenticação baseado em chave e o modo de autenticação baseado em token do Azure Machine Learning para o ponto de extremidade. Uma chave não expira, mas um token sim. Para obter mais informações sobre autenticação, confira Autenticação em um ponto de extremidade online.

O Azure Machine Learning fornece a conveniência de usar pontos de extremidade online gerenciados para implantar seus modelos de ML de maneira turnkey. Essa é a maneira recomendada de usar os pontos de extremidade online no Azure Machine Learning. Os pontos de extremidade online gerenciados funcionam com computadores com CPU e GPU poderosas no Azure, de maneira escalonável e totalmente gerenciada. Esses pontos de extremidade também se encarregam de servir, dimensionar, proteger e monitorar seus modelos, para liberar você da sobrecarga de configurar e gerenciar a infraestrutura subjacente. Para saber como implantar em um ponto de extremidade online gerenciado, confira Implantar um modelo de ML com um ponto de extremidade online.

Por que escolher pontos de extremidade online gerenciados em vez de ACI ou AKS (v1)?

O uso de pontos de extremidade online gerenciados é a maneira recomendada de usar pontos de extremidade online no Azure Machine Learning. A tabela a seguir realça os principais atributos dos pontos de extremidade online gerenciados em comparação com as soluções SDK/CLI v1 do Azure Machine Learning (ACI e AKS, v1).

Atributos Pontos de extremidade online gerenciados (v2) ACI ou AKS (v1)
Segurança/isolamento de rede Fácil controle de entrada/saída com alternância rápida Não há suporte para a rede virtual ou requer uma configuração manual complexa
Serviço gerenciado - Provisionamento/dimensionamento de computação totalmente gerenciado
- Configuração de rede para prevenção de exfiltração dos dados
- Atualização do sistema operacional do host, distribuição controlada de atualizações no local
- O dimensionamento é limitado na v1
- A configuração ou atualização da rede precisa ser gerenciada pelo usuário
Conceito de ponto de extremidade/implantação A distinção entre ponto de extremidade e implantação permite cenários complexos, como a implantação segura de modelos Nenhum conceito de ponto de extremidade
Diagnóstico e monitoramento - Depuração de ponto de extremidade local possível com o Docker e o Visual Studio Code
​ - Análise avançada de métricas e logs com gráfico/consulta para comparação entre implantações
- Detalhamento de custos até o nível de implantação
Depuração local difícil
Escalabilidade Dimensionamento ilimitado, elástico e automático - ACI não escalonável
- O AKS (v1) fornece suporte apenas à escala no cluster e requer configuração de escalabilidade
Preparação corporativa Link privado, chaves gerenciadas pelo cliente, Microsoft Entra ID, gerenciamento de cotas, integração de cobrança, SLA Sem suporte
Recursos avançados de ML - Coleta de dados do modelo
- Monitoramento de modelo
- Modelo champion-challenger, distribuição segura, espelhamento de tráfego
- Extensibilidade de IA responsável
Sem suporte

Como alternativa, se você preferir usar o Kubernetes para implantar seus modelos e atender aos pontos de extremidade e se sentir confortável com o gerenciamento dos requisitos de infraestrutura, poderá usar os pontos de extremidade online do Kubernetes. Esses pontos de extremidade permitem que você implante modelos e atenda a pontos de extremidade online no cluster do Kubernetes em qualquer lugar totalmente configurado e gerenciado, com CPUs ou GPUs.

Por que escolher pontos de extremidade online gerenciados em vez do AKS (v2)?

Os pontos de extremidade online gerenciados podem ajudar a simplificar seu processo de implantação e fornecer os seguintes benefícios em relação aos pontos de extremidade online do Kubernetes:

  • Infraestrutura gerenciada

    • Provisiona automaticamente a computação e hospeda o modelo (você só precisa especificar o tipo de VM e as configurações de escala)
    • Executa atualizações e patches automaticamente na imagem do sistema operacional do host subjacente
    • Executa automaticamente a recuperação do nó caso haja uma falha no sistema
  • Monitoramento e logs

    Screenshot showing Azure Monitor graph of endpoint latency.

  • Ver os custos

    Screenshot cost chart of an endpoint and deployment.

    Observação

    Os pontos de extremidade online gerenciados são baseados na computação do Azure Machine Learning. Ao usar um ponto de extremidade online gerenciado, você paga pelos encargos de computação e rede. Não há nenhum custo adicional. Para obter mais informações sobre preços, confira a Calculadora de preços do Azure.

    Se você usar uma rede virtual do Azure Machine Learning para proteger o tráfego de saída do ponto de extremidade online gerenciado, será cobrado pelo link privado do Azure e pelas regras de saída do FQDN usadas pela rede virtual gerenciada. Para obter mais informações, confira Preços da rede virtual gerenciada.

Pontos de extremidade online gerenciados versus pontos de extremidade online do Kubernetes

A tabela a seguir destaca as principais diferenças entre pontos de extremidade online gerenciados e pontos de extremidade online do Kubernetes.

Pontos de extremidade online gerenciados Pontos de extremidade online do Kubernetes (AKS, v2)
Usuários recomendados Usuários que querem uma implantação de modelo gerenciado e uma experiência de MLOps aprimorada Usuários que preferem o Kubernetes e podem gerenciar os requisitos de infraestrutura por conta própria
Provisionamento de nó Provisionamento, atualização e remoção de computação gerenciada Responsabilidade do usuário
Manutenção de nó Atualizações da imagem do SO do host gerenciado e fortalecimento da segurança Responsabilidade do usuário
Dimensionamento de cluster (colocação em escala) Dimensionamento automático e manual gerenciado, com suporte ao provisionamento de nós adicionais Dimensionamento manual e automático, com suporte à colocação em escala do número de réplicas dentro de limites fixos de cluster
Tipo de computação Gerenciado pelo serviço Cluster do Kubernetes gerenciados pelo cliente (Kubernetes)
Identidade gerenciada Com suporte Com suporte
Rede virtual (VNet) Com suporte por meio do isolamento de rede gerenciada Responsabilidade do usuário
Monitoramento e registro em log prontos para uso Equipados com Azure Monitor e Log Analytics (inclui as principais métricas e tabelas de log para pontos de extremidade e implantações) Responsabilidade do usuário
Registrar em log com o Application Insights (herdado) Com suporte Com suporte
Ver os custos Detalhado para o ponto de extremidade/nível de implantação Nível do cluster
Custo aplicado a VMs atribuídas às implantações VMs atribuídas ao cluster
Tráfego espelhado Com suporte Sem suporte
Implantação sem código Com suporte (modelos MLflow e Triton) Com suporte (modelos MLflow e Triton)

Implantações online

Uma implantação é um conjunto de recursos e computações necessárias para hospedar o modelo que faz a inferência real. Um único ponto de extremidade pode conter várias implantações com configurações diferentes. Essa configuração ajuda a separar a interface apresentada pelo ponto de extremidade do detalhes de implementação presentes na implantação. Um ponto de extremidade online tem um mecanismo de roteamento que pode direcionar solicitações para implantações específicas no ponto de extremidade.

O diagrama a seguir mostra um ponto de extremidade online que tem duas implantações, azul e verde. A implantação azul usa VMs com um SKU de CPU e executa a versão 1 de um modelo. A implantação verde usa VMs com um SKU de GPU e executa a versão 2 do modelo. O ponto de extremidade está configurado para rotear 90% do tráfego de entrada para a implantação azul, enquanto a implantação verde recebe os 10% restantes.

Diagram showing an endpoint splitting traffic to two deployments.

A tabela a seguir descreve os atributos de chave de uma implantação:

Atributo Descrição
Nome O nome da implantação.
Nome do ponto de extremidade O nome do ponto de extremidade no qual criar a implantação.
Modelar O modelo a ser usado para a implantação. Esse valor pode ser uma referência a um modelo com versão existente no workspace ou uma especificação de modelo embutida.
Caminho do código O diretório no ambiente de desenvolvimento local que contém todo o código-fonte do Python para pontuar o modelo. Você pode usar diretórios e pacotes aninhados.
Script de pontuação O caminho relativo para o arquivo de pontuação no diretório do código-fonte. Esse código Python precisa ter uma função init() e uma função run(). A função init() será chamada depois que o modelo for criado ou atualizado (você pode usá-la para armazenar o modelo em cache na memória, por exemplo). A função run() é chamada em cada invocação do ponto de extremidade para fazer a pontuação e previsão real.
Ambiente Contém os detalhes do ambiente para hospedar o modelo e o código. Esse valor pode ser uma referência para um ambiente com versão existente no espaço de trabalho ou uma especificação de ambiente embutido. Observação: a Microsoft aplica patch regularmente às imagens de base quanto a vulnerabilidades de segurança conhecidas. Você precisará reimplantar seu ponto de extremidade para usar a imagem com patch. Se você fornecer sua própria imagem, será responsável por atualizá-la. Para obter mais informações, confira Aplicação de patch à imagem.
Tipo de instância O tamanho da VM a ser usado para a implantação. Para obter a lista de tamanhos com suporte, confira Lista de SKU de pontos de extremidade online gerenciados.
Contagem de instâncias O número de instâncias a serem usadas para a implantação. Baseie o valor na carga de trabalho esperada. Para alta disponibilidade, recomendamos que você defina o valor mínimo de 3 Reservamos mais 20% para executar atualizações. Para obter mais informações, confira Alocação de cota de máquina virtual para implantações.

Para saber como implantar pontos de extremidade online usando a CLI, o SDK, o estúdio e o modelo do ARM, confira Implantar um modelo de ML com um ponto de extremidade online.

Implantação para codificadores e não codificadores

O Azure Machine Learning fornece suporte à implantação de modelo em pontos de extremidade online para codificadores e não codificadores, disponibilizando opções para implantação no-code, implantação low-code e implantação BYOC (Traga Seu Próprio Contêiner).

  • A implantação no-code fornece inferência pronta para uso para estruturas comuns (por exemplo, scikit-learn, TensorFlow, PyTorch e ONNX) por meio do MLflow e do Triton.
  • A implantação low-code permite que você forneça um código mínimo com seu modelo de ML para implantação.
  • A implantação BYOC permite que você traga virtualmente qualquer contêiner para executar seu ponto de extremidade online. Você pode usar todos os recursos da plataforma do Azure Machine Learning, como dimensionamento automático, GitOps, depuração e distribuição segura para gerenciar pipelines do MLOps.

A seguinte tabela realça os principais aspectos das opções de implantação online:

Sem código Pouco código BYOC
Resumo Usa inferência pronta para uso em estruturas populares, como scikit-learn, TensorFlow, PyTorch e ONNX, por meio do MLflow e do Triton. Para obter mais informações, confira Implantar modelos do MLflow em pontos de extremidade online. Usa imagens coletadas seguras e publicadas amplamente para estruturas populares, com atualizações a cada duas semanas para solucionar vulnerabilidades. Forneça o script de pontuação e/ou as dependências do Python. Para obter mais informações, confira Ambientes coletados do Azure Machine Learning. Forneça sua pilha completa por meio do suporte do Azure Machine Learning para imagens personalizadas. Para obter mais informações, confira Usar um contêiner personalizado para implantar um modelo em um ponto de extremidade online.
Imagem de base personalizada Não, o ambiente coletado fornecerá isso para facilitar a implantação. Sim e Não, você pode usar uma imagem coletada ou sua imagem personalizada. Sim, traga um local acessível para a imagem de contêiner (por exemplo, docker.io, ACR – Registro de Contêiner do Azure ou MCR – Registro de Contêiner da Microsoft) ou um Dockerfile que você possa criar/enviar com o ACR para o contêiner.
Dependências personalizadas Não, o ambiente coletado fornecerá isso para facilitar a implantação. Sim, traga o ambiente do Azure Machine Learning no qual o modelo é executado; uma imagem do Docker com dependências do Conda ou um dockerfile. Sim, isso será incluído na imagem de contêiner.
Código personalizado Não, o script de pontuação será gerado automaticamente para facilitar a implantação. Sim, traga seu script de pontuação. Sim, isso será incluído na imagem de contêiner.

Observação

As execuções do AutoML criam um script de pontuação e dependências automaticamente para os usuários, de modo que você pode implantar qualquer modelo do AutoML sem criar código adicional (para implantação no-code) ou pode modificar os scripts gerados automaticamente para suas necessidades de negócios (para implantação low-code). Para saber como implantar com modelos do AutoML, consulte Implantar um modelo do AutoML com um ponto de extremidade online.

Depuração de ponto de extremidade online

O Azure Machine Learning fornece várias maneiras de depurar pontos de extremidade online localmente e usando logs de contêineres.

Depuração local com o servidor HTTP de inferência do Azure Machine Learning

Você pode depurar seu script de pontuação localmente usando o servidor HTTP de inferência do Azure Machine Learning. O servidor HTTP é um pacote Python que expõe sua função de pontuação como um ponto de extremidade HTTP e encapsula o código e as dependências do servidor Flask em um único pacote. Ele está incluído nas imagens predefinidas do Docker para inferência que são usadas na implantação de um modelo com o Azure Machine Learning. Usando o pacote sozinho, você pode implantar o modelo localmente para produção e também pode validar facilmente seu script de pontuação (entrada) em um ambiente de desenvolvimento local. Se houver um problema com o script de pontuação, o servidor retornará um erro e o local em que o erro ocorreu. Você também pode usar o Visual Studio Code para depurar com o servidor HTTP de inferência do Azure Machine Learning.

Para saber mais sobre a depuração com o servidor HTTP, confira Depuração de script de pontuação com o servidor HTTP de inferência do Azure Machine Learning.

Depuração local

Para depuração local, é necessária uma implantação local, ou seja, um modelo implantado em um ambiente do Docker local. Você pode usar essa implantação local para testes e depuração antes da implantação na nuvem. Para implantar localmente, você precisará ter o Mecanismo do Docker instalado e em execução. Em seguida, o Azure Machine Learning cria uma imagem local do Docker que imita a imagem do Azure Machine Learning. O Azure Machine Learning criará e executará implantações para você localmente e armazenará em cache a imagem para iterações rápidas.

As etapas da depuração local geralmente incluem:

  • Verificação de que a implantação local foi bem-sucedida
  • Invocação do ponto de extremidade local para inferência
  • Revisão dos logs para obter a saída da operação de invocação

Para saber mais sobre depuração local, confira Implantar e depurar localmente usando pontos de extremidade locais.

Depuração local com o Visual Studio Code (versão prévia)

Importante

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos.

Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Assim como na depuração local, primeiro você precisa ter o Mecanismo do Docker instalado e em execução e, em seguida, implantar um modelo no ambiente do Docker local. Depois de ter uma implantação local, os pontos de extremidade locais do Azure Machine Learning usam contêineres de desenvolvimento do Docker e do Visual Studio Code (contêineres de desenvolvimento) para criar e configurar um ambiente de depuração local. Com os contêineres de desenvolvimento, você pode aproveitar os recursos do Visual Studio Code, como a depuração interativa, de dentro de um contêiner do Docker.

Para saber mais sobre a depuração interativa de pontos de extremidade online no VS Code, confira Depurar pontos de extremidade online localmente no Visual Studio Code.

Depuração com logs de contêineres

Em uma implantação, não é possível obter acesso direto à VM em que o modelo está implantado. No entanto, você pode obter logs de alguns dos contêineres em execução na VM. Há dois tipos de contêineres dos quais você pode obter os logs:

  • Servidor de inferência: os logs incluem o log do console (do servidor de inferência) que contém a saída de funções de impressão/registro em log do script de pontuação (código score.py).
  • Inicializador de armazenamento: os logs informam se os dados de código e de modelo foram baixados com êxito no contêiner. O contêiner será executado antes que o contêiner do servidor de inferência comece a ser executado.

Para saber mais sobre a depuração com logs de contêiner, confira Obter logs de contêiner.

Roteamento e espelhamento de tráfego para implantações online

Lembre-se de que um único ponto de extremidade online pode ter várias implantações. À medida que o ponto de extremidade recebe tráfego de entrada (ou solicitações), ele pode rotear porcentagens de tráfego para cada implantação, conforme usado na estratégia de implantação azul/verde nativa. Ele também pode espelhar (ou copiar) o tráfego de uma implantação para outra, o que também é chamado de espelhamento ou sombreamento de tráfego.

Roteamento de tráfego para implantação azul/verde

A implantação azul/verde é uma estratégia de implantação que permite distribuir uma nova implantação (a implantação verde) em um pequeno subconjunto de usuários ou solicitações antes de distribuí-la completamente. O ponto de extremidade pode implementar o balanceamento de carga para alocar determinadas porcentagens do tráfego em cada implantação, com a alocação total em todas as implantações chegando a 100%.

Dica

Uma solicitação pode ignorar o balanceamento de carga de tráfego configurado incluindo um cabeçalho HTTP de azureml-model-deployment. Defina o valor do cabeçalho como o nome da implantação para a qual você deseja que a solicitação seja roteada.

A imagem a seguir mostra as configurações no Estúdio do Azure Machine Learning para alocar o tráfego entre uma implantação azul e verde.

Screenshot showing slider interface to set traffic allocation between deployments.

Essa alocação de tráfego direciona o tráfego conforme mostrado na imagem a seguir, com 10% do tráfego indo para a implantação verde e 90% do tráfego indo para a implantação azul.

Diagram showing an endpoint splitting traffic to two deployments.

Espelhamento de tráfego para implantações online

O ponto de extremidade também pode espelhar (ou copiar) o tráfego de uma implantação para outra implantação. O espelhamento de tráfego (também chamado de teste sombra) é útil quando se quer testar uma nova implantação com tráfego de produção sem afetar os resultados que os clientes estão recebendo das implantações existentes. Por exemplo, na implantação azul/verde em que 100% do tráfego é roteado para a azul e 10% é espelhado para a verde, os resultados do tráfego espelhado para a implantação verde não são retornados aos clientes, mas as métricas e os logs são registrados.

Diagram showing an endpoint mirroring traffic to a deployment.

Para saber como usar o espelhamento de tráfego, confira Distribuição segura para pontos de extremidade online.

Mais recursos de pontos de extremidade online no Azure Machine Learning

Autenticação e criptografia

  • Autenticação: chave e tokens do Azure Machine Learning
  • Identidade gerenciada: atribuída pelo usuário e atribuída pelo sistema
  • SSL por padrão para invocação de ponto de extremidade

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 gerenciados dão suporte ao dimensionamento automático por meio da integração com o recurso de dimensionamento automático do Azure Monitor. Você pode configurar o dimensionamento baseado em métricas (por exemplo, utilização da CPU >70%), o dimensionamento baseado em agendamento (por exemplo, regras de dimensionamento para horário comercial de pico) ou uma combinação deles.

Screenshot showing that autoscale flexibly provides between min and max instances, depending on rules.

Para saber como configurar o dimensionamento automático, confira Como fazer o dimensionamento automático de pontos de extremidade online.

Isolamento de rede gerenciada

Ao implantar um modelo de ML em um ponto de extremidade online gerenciado, você pode proteger a comunicação com o ponto de extremidade online usando pontos de extremidade privados.

Você pode configurar a segurança para solicitações de pontuação de entrada e comunicações de saída com o workspace e outros serviços separadamente. As comunicações de entrada usam o ponto de extremidade privado do workspace do Azure Machine Learning. As comunicações de saída usam pontos de extremidade privados criados para a rede virtual gerenciada do workspace.

Para obter mais informações, confira Isolamento de rede com pontos de extremidade online gerenciados.

Monitoramento de implantações e pontos de extremidade online

O monitoramento dos pontos de extremidade do Azure Machine Learning é possível por meio da integração com o Azure Monitor. Essa integração permite exibir métricas em gráficos, configurar alertas, consultar tabelas de log, usar o Application Insights para analisar eventos de contêineres de usuários e assim por diante.

  • Métricas: use o Azure Monitor para rastrear várias métricas de ponto de extremidade, como latência de solicitação, e fazer drill down até o nível de implantação ou status. Você também pode rastrear métricas no nível de implantação, como a utilização da CPU/GPU, e fazer drill down até o nível da instância. O Azure Monitor permite que você acompanhe essas métricas em gráficos e configure painéis e alertas para análise adicional.

  • Logs: envie métricas para o Workspace do Log Analytics, onde você pode consultar os logs usando a sintaxe de consulta do Kusto. Você também pode enviar métricas para a Conta de Armazenamento e/ou Hubs de Eventos para processamento posterior. Além disso, é possível usar tabelas de log dedicadas para eventos relacionados a pontos de extremidade online, tráfego e logs de contêineres. A consulta do Kusto permite análises complexas que unem várias tabelas.

  • Application Insights: os ambientes selecionados incluem a integração com o Application Insights, e você pode habilitar ou desabilitá-lo ao criar uma implantação online. As métricas e os logs integrados são enviados para o Application Insights, e você pode usar seus recursos integrados, como Métricas Dinâmicas, Pesquisa de Transações, Falhas e Desempenho, para análises adicionais.

Para obter mais informações sobre monitoramento, confira Monitorar pontos de extremidade online.

Injeção de segredos em implantações online (versão prévia)

A injeção de segredos no contexto de uma implantação online é um processo de recuperação de segredos (como chaves de API) de repositórios de segredos e injeção em seu contêiner de usuário executado dentro de uma implantação online. Os segredos serão eventualmente acessíveis por meio de variáveis de ambiente, fornecendo assim uma maneira segura para que eles sejam consumidos pelo servidor de inferência que executa seu script de pontuação ou pela pilha de inferência que você traz com uma abordagem de implantação BYOC (traga seu próprio contêiner).

Há duas maneiras de injetar segredos. Você pode injetar segredos por conta própria, usando identidades gerenciadas ou pode usar o recurso de injeção de segredo. Para saber mais sobre as maneiras de injetar segredos, consulte Injeção de segredos em pontos de extremidade online (versão prévia).

Próximas etapas