Terminais para inferência em produção

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

Depois de treinares modelos ou pipelines de aprendizagem automática, ou de encontrares modelos adequados no catálogo de modelos, precisas de os implementar em produção para outros usarem para inferência. Inferência é o processo de aplicar novos dados de entrada a um modelo ou pipeline de aprendizagem automática para gerar saídas. Embora estas saídas sejam tipicamente chamadas de "previsões", a inferência pode gerar resultados para outras tarefas de aprendizagem automática, como classificação e agrupamento. No Azure Machine Learning, fazes inferência usando endpoints.

Endpoints e implementações

Um endpoint é uma URL estável e duradoura que pode ser usada para solicitar ou invocar um modelo. Fornece as entradas necessárias ao endpoint e recebe as saídas. O Azure Machine Learning suporta implementações padrão, endpoints online e batch endpoints. Um endpoint fornece:

  • Uma URL estável e duradoura (como endpoint-name.region.inference.ml.azure.com)
  • Um mecanismo de autenticação
  • Um mecanismo de autorização

Uma implementação é um conjunto de recursos e computação necessários para alojar o modelo ou componente que realiza a inferência real. Um endpoint contém uma implantação. Para endpoints online e batch, um endpoint pode conter várias implementações. As implementações podem alojar ativos independentes e consumir diferentes recursos consoante as necessidades dos mesmos. Um endpoint também tem um mecanismo de encaminhamento que pode encaminhar pedidos para qualquer uma das suas implementações.

Alguns tipos de endpoints no Azure Machine Learning consomem recursos dedicados nas suas implementações. Para que estes endpoints funcionem, deve ter uma quota de cálculo na sua subscrição do Azure. No entanto, certos modelos suportam uma implementação serverless, o que lhes permite não consumir quota da sua subscrição. Para implementações serverless, é cobrado com base no uso.

Intuição

Suponha que está a trabalhar numa aplicação que prevê o tipo e a cor de um carro a partir de uma fotografia. Para esta aplicação, um utilizador com certas credenciais faz um pedido HTTP a uma URL e fornece uma imagem de um carro como parte do pedido. Em troca, o utilizador recebe uma resposta que inclui o tipo e a cor do carro como valores de cadeia. Neste cenário, o URL serve como ponto final.

Um diagrama que mostra o conceito de ponto final.

Agora suponha que uma cientista de dados, Alice, está a implementar a aplicação. Alice tem vasta experiência em TensorFlow e decide implementar o modelo usando um classificador sequencial Keras com uma arquitetura ResNet do TensorFlow Hub. Após testar o modelo, Alice fica satisfeita com os resultados e decide usar o modelo para resolver o problema da previsão do carro. O modelo é grande e requer 8 GB de memória com 4 núcleos para funcionar. Neste cenário, o modelo da Alice e os recursos — como o código e o cálculo — necessários para executar o modelo constituem uma implementação sob o endpoint.

Um diagrama que mostra o conceito de implantação.

Após alguns meses, a organização descobre que a aplicação tem um desempenho fraco em imagens com condições de iluminação precárias. Bob, outro cientista de dados, tem experiência em técnicas de aumento de dados que ajudam os modelos a construir robustez para este fator. No entanto, Bob prefere usar o PyTorch para implementar o modelo e treina um novo modelo com o PyTorch. Bob quer testar este modelo em produção gradualmente até que a organização esteja pronta para retirar o modelo antigo. O novo modelo também tem melhor desempenho quando implementado na GPU, pelo que a implementação precisa de incluir uma GPU. Neste cenário, o modelo de Bob e os recursos — como o código e o cálculo — necessários para executar o modelo constituem outra implementação sob o mesmo endpoint.

Um diagrama que mostra o conceito de um endpoint com múltiplas implementações.

Endpoints: implementação padrão, online e batch

Azure Machine Learning suporta implementações standard, endpoints online e endpoints batch.

Implementações padrão e endpoints online são concebidos para inferência em tempo real. Quando invocas o endpoint, os resultados são devolvidos na resposta do endpoint. As implementações padrão não consomem quota da tua subscrição; ao invés disso, são faturadas com a faturação regular.

Os endpoints de lote são concebidos para inferência em lote de longa duração. Quando invocas um endpoint batch, geras um trabalho batch que executa o trabalho real.

Quando usar endpoints de implementação padrão, online e em lote

Implementação padrão:

Utilize implementações padrão para consumir grandes modelos fundamentais para inferência em tempo real pronta a usar ou para afinar tais modelos. Nem todos os modelos estão disponíveis para implementação em implementações padrão. Recomendamos a utilização deste modo de implementação quando:

  • O seu modelo é um modelo fundamental ou uma versão afinada de um modelo fundamental disponível para implementações padrão.
  • Pode beneficiar de uma implantação sem quotas.
  • Não precisas de personalizar a pilha de inferência utilizada para executar o modelo.

Endpoints online:

Use endpoints online para colocar modelos em operação, realizando inferência em tempo real para pedidos síncronos com baixa latência. Recomendamos o seu uso quando:

  • O seu modelo é um modelo fundamental ou uma versão afinada de um modelo fundamental, mas não é suportado na implementação padrão.
  • Tens requisitos de baixa latência.
  • O seu modelo pode responder ao pedido num espaço de tempo relativamente curto.
  • As entradas do seu modelo encaixam no payload HTTP do pedido.
  • Precisas de aumentar o número de pedidos.

Endpoints batch:

Utilize endpoints em lote para operacionalizar modelos ou pipelines para inferência assíncrona de longa duração. Recomendamos o seu uso quando:

  • Tens modelos ou pipelines caros que demoram mais tempo a funcionar.
  • Queres operacionalizar pipelines de aprendizagem automática e reutilizar componentes.
  • É necessário fazer inferência sobre grandes quantidades de dados distribuídas em múltiplos ficheiros.
  • Não tens requisitos de latência baixos.
  • As entradas do seu modelo são armazenadas numa conta de armazenamento ou num ativo de dados do Azure Machine Learning.
  • Podes tirar partido da paralelização.

Comparação entre desdobramento padrão, endpoints em tempo real e endpoints batch

Todas as implementações padrão, endpoints online e batch endpoints baseiam-se na ideia de endpoints, pelo que pode transitar facilmente de um para o outro. Endpoints online e por lotes também têm a capacidade de gerir múltiplas implementações para o mesmo endpoint.

Pontos finais

A tabela seguinte apresenta um resumo das diferentes funcionalidades disponíveis para implementações padrão, endpoints online e batch endpoints ao nível do endpoint.

Destaque Implantações padrão Endpoints Online Endpoints em lote
URL de invocação estável Sim Sim Sim
Suporte para múltiplas implantações Não Sim Sim
Roteamento do processo de implantação Nenhuma Divisão do tráfego Mudar para o padrão
Espelhar tráfego para implementação segura Não Sim Não
Suporte ao Swagger Sim Sim Não
Autenticação Chave Key e Microsoft Entra ID (pré-visualização) Microsoft Entra ID
Suporte de rede privada (legado) Não Sim Sim
Isolamento de rede gerido Sim Sim Sim (ver configuração adicional necessária)
Chaves geridas pelo cliente NA Sim Sim
Custo base Por ponto final, por minuto1 Nenhuma Nenhuma

1É cobrada uma pequena fração por minuto pelo desdobramento padrão. Consulte a secção de implementações para as cobranças relacionadas com o consumo, que são faturadas por token.

Destacamentos

A tabela seguinte apresenta um resumo das diferentes funcionalidades disponíveis para implementações padrão, endpoints online e batch endpoints ao nível da implementação. Estes conceitos aplicam-se a cada implementação no âmbito do ponto final (para pontos finais online e de processamento batch), e aplicam-se a implementações padrão (nas quais o conceito de implementação está incorporado no ponto final).

Destaque Implantações padrão Endpoints Online Endpoints em lote
Tipos de implantação Modelos Modelos Modelos e componentes do oleoduto
Implementação do modelo MLflow Não, apenas modelos específicos no catálogo Sim Sim
Implementação de modelos personalizados Não, apenas modelos específicos no catálogo Sim, com script de pontuação Sim, com script de pontuação
Servidor de inferência 2 API de Inferência de Modelos do Azure AI - Servidor de Inferência do Azure Machine Learning
- Tritão
- Personalizado (usando BYOC)
Inferência em Batch
Recursos computacionais consumidos Nenhum (sem servidor) Instâncias ou recursos granulares Instâncias de cluster
Tipo de computação Nenhum (sem servidor) Computação gerida e Kubernetes Computação gerida e Kubernetes
Computação de baixa prioridade NA Não Sim
Dimensionar a computação até zero Embutido Não Sim
Computação de dimensionamento automático3 Embutido Sim, com base no uso de recursos Sim, com base no número de empregos
Gestão de sobrecapacidade Estrangulamento Estrangulamento Fila
Base de custo4 Por cada token Por implementação: instâncias de computação em execução Por tarefa: calcular as instâncias consumidas na tarefa (limitadas ao número máximo de instâncias do cluster)
Testes locais de implantações Não Sim Não

2Servidor de inferência refere-se à tecnologia de serviço que recebe pedidos, processa-os e cria respostas. O servidor de inferência também dita o formato da entrada e as saídas esperadas.

3Autoscaling é a capacidade de aumentar ou reduzir dinamicamente os recursos alocados à implementação com base na sua carga. As implementações online e em lote usam estratégias diferentes para autoescalonamento. Enquanto as implementações online aumentam e diminuem consoante a utilização dos recursos (como CPU, memória, pedidos, etc.), os endpoints batch aumentam ou diminuem consoante o número de trabalhos criados.

4 Tanto as implementações online como as em lote cobram pelos recursos consumidos. Nas implementações online, os recursos são provisionados no momento da implementação. Nas implantações em lote, os recursos não são consumidos no momento da implementação, mas sim no momento em que o trabalho é executado. Por isso, não há custo associado à implantação em lote em si. Da mesma forma, trabalhos em fila também não consomem recursos.

Interfaces para programadores

Os endpoints são concebidos para ajudar as organizações a operacionalizar cargas de trabalho ao nível de produção no Azure Machine Learning. Os endpoints são recursos robustos e escaláveis, e fornecem as melhores capacidades para implementar fluxos de trabalho MLOps.

Pode criar e gerir endpoints em lote e online com várias ferramentas para programadores:

  • CLI do Azure e Python SDK
  • Azure Resource Manager/REST API
  • Portal Web do estúdio do Azure Machine Learning
  • Portal do Azure (IT/Admin)
  • Suporte para pipelines CI/CD MLOps usando a interface CLI do Azure e as interfaces REST/ARM