Implantar um fluxo como um ponto de extremidade online gerenciado para inferência em tempo real
Após criar um fluxo e testá-lo adequadamente, é possível que você queira implantá-lo como um ponto de extremidade para que possa invocar o ponto de extremidade para inferência em tempo real.
Neste artigo, você aprenderá como implantar um fluxo como um ponto de extremidade online gerenciado para inferência em tempo real. As seguintes etapas são necessárias:
- Testar seu fluxo e prepará-lo para implantação
- Criar uma implantação online
- Conceder permissões ao ponto de extremidade
- Testar o ponto de extremidade
- Consumir o ponto de extremidade
Importante
Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. A 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.
Pré-requisitos
Reconhecimento de noções básicas sobre pontos de extremidade online gerenciados. Os pontos de extremidade online gerenciados funcionam com computadores avançados de CPU e GPU no Azure de forma escalonável e totalmente gerenciada que libera você da sobrecarga de configurar e gerenciar a infraestrutura de implantação subjacente. Para obter mais informações sobre pontos de extremidade online gerenciados, consulte Pontos de extremidade e implantações online para inferência em tempo real.
O RBAC do Azure (controle de acesso baseado em função) do Azure é usado para permitir acesso a operações no Azure Machine Learning. Para poder implantar um ponto de extremidade no prompt flow, sua conta de usuário deve ser atribuída ao cientista de dados do AzureML ou à função com mais privilégios para o espaço de trabalho do Azure Machine Learning.
Ter conhecimento básico sobre identidades gerenciadas. Saiba mais sobre as identidades gerenciadas.
Observação
O ponto de extremidade online gerenciado dá suporte apenas à rede virtual gerenciada. Se o seu espaço de trabalho estiver em uma VNet personalizada, você precisará tentar outras opções de implantação, como implantar no Ponto de extremidade online do Kubernetes usando CLI/SDK ou implantar em outras plataformas, como o Docker.
Criar o fluxo e prepará-lo para implantação
Se você já concluiu o tutorial de introdução, já testou o fluxo corretamente enviando a execução em lote e avaliando os resultados.
Se você não concluiu o tutorial, precisa criar um fluxo. Testar o fluxo corretamente por execução em lote e avaliação antes da implantação é uma prática recomendada.
Usaremos o fluxo de exemplo Classificação da Web como exemplo para mostrar como implantar o fluxo. Este fluxo de exemplo é um fluxo padrão. A implantação de fluxos de chat é semelhante. O fluxo de avaliação não dá suporte à implantação.
Definir o ambiente usado pela implantação
Quando você implanta o prompt flow para o ponto de extremidade online gerenciado na interface do usuário, por padrão, a implantação usará o ambiente criado com base na imagem do prompt flow mais recente e nas dependências especificadas no requirements.txt
do fluxo. Você pode especificar pacotes extras necessários no requirements.txt
. É possível encontrar requirements.txt
no diretório raiz da pasta de fluxo.
Observação
Se você estiver usando feeds privados no Azure Devops, precisará criar a imagem com feeds privados primeiro e selecionar o ambiente personalizado para implantar na interface do usuário.
Criar uma implantação online
Agora que você criou um fluxo e o testou corretamente, é hora de criar seu ponto de extremidade online para inferência em tempo real.
O prompt flow permite implantar pontos de extremidade de um fluxo ou uma execução em lote. Testar o fluxo antes da implantação é a prática recomendada.
Na página de criação de fluxo ou na página de detalhes da execução, selecione Implantar.
Página de criação de fluxo:
Página de detalhes da execução:
Um assistente para configurar o ponto de extremidade aparecerá e incluirá as etapas a seguir.
Configurações Básicas
Esta etapa permite que você defina as configurações básicas da implantação.
Propriedade | Descrição |
---|---|
Ponto de extremidade | Você pode selecionar se deseja implantar um novo ponto de extremidade ou atualizar um ponto de extremidade existente. Se você selecionar Novo, precisará especificar o nome do ponto de extremidade. |
Nome da implantação | — Dentro do mesmo ponto de extremidade, o nome da implantação deve ser exclusivo. - Se você selecionar um ponto de extremidade existente e entrar com um nome de implantação existente, essa implantação será substituída pelas novas configurações. |
Máquina virtual | 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. Especifique 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 cotas de pontos de extremidade online gerenciados |
Coleta de dados de inferência | Se você habilitar esse recurso, as entradas e saídas de fluxo serão coletadas automaticamente em um ativo de dados do Azure Machine Learning e poderão ser usadas para monitoramento posterior. Para saber mais, confira como monitorar aplicativos de IA generativa. |
Depois de concluir as configurações básicas, você pode revisão e criar para concluir a criação ou selecionar Avançar para definir as Configurações avançadas.
Configurações avançadas – Ponto de extremidade
Você pode especificar as seguintes configurações para o ponto de extremidade.
Tipo de autenticação
O método de autenticação para o ponto de extremidade. A autenticação baseada em chave fornece uma chave primária e secundária que não expira. A autenticação baseada em token do Azure Machine Learning fornece um token que é atualizado periodicamente de forma automática. Para obter mais informações sobre autenticação, confira Autenticação em um ponto de extremidade online.
Tipo de identidade
O ponto de extremidade precisa acessar recursos do Azure, como o Registro de Contêiner do Azure ou suas conexões do workspace para inferência. Você pode permitir que a permissão do ponto de extremidade acesse os recursos do Azure por meio da permissão para sua identidade gerenciada.
A identidade atribuída pelo sistema será criada automaticamente após a criação do ponto de extremidade, enquanto o usuário cria a identidade atribuída pelo usuário. Saiba mais sobre as identidades gerenciadas.
System-assigned
Você observará que há uma opção para Impor acesso a segredos de conexão (versão prévia). Se o fluxo usar conexões, o ponto de extremidade precisará acessar as conexões para executar a inferência. A opção está habilitada por padrão, o ponto de extremidade receberá a função Leitor de Segredos de Conexão do Workspace do Azure Machine Learning para acessar as conexões automaticamente, se você tiver permissão de leitor de segredos de conexão. Se você desabilitar essa opção, precisará conceder essa função à identidade atribuída pelo sistema manualmente por conta própria ou solicitar ajuda do administrador. Saiba mais sobre como conceder permissão à identidade do ponto de extremidade.
Atribuídos pelo Usuário
Ao criar a implantação), o Azure tenta efetuar puxar a imagem do contêiner do usuário do espaço de trabalho Registro de Contêiner do Azure (ACR) e montar o modelo do usuário e os artefatos de código no contêiner do usuário a partir da conta de armazenamento do espaço de trabalho.
Se você criou o ponto de extremidade associado à Identidade Atribuída pelo Usuário, a identidade atribuída pelo usuário deverá receber as seguintes funções, antes da criação da implantação. Caso contrário, a criação da implantação falhará.
Escopo | Função | Por que ele é necessário |
---|---|---|
Workspace do Azure Machine Learning | A função Leitor de Segredos de Conexão do Workspace do Azure Machine Learning OU uma função personalizada com "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action" | Obter conexões do espaço de trabalho |
Registro de contêiner do espaço de trabalho | Pull de ACR | Extração da imagem de contêiner |
Armazenamento padrão do espaço de trabalho | Leitor de Dados do Blob de Armazenamento | Carregar modelo a partir do armazenamento |
(Opcional) Workspace do Azure Machine Learning | Gravador de métricas do workspace | Depois de implantar o ponto de extremidade, se você quiser monitorar as métricas relacionadas ao ponto de extremidade, como utilização de CPU/GPU/Disco/Memória, precisará conceder essa permissão à identidade. |
Confira diretrizes detalhadas sobre como conceder permissões à identidade do ponto de extremidade em Conceder permissões ao ponto de extremidade.
Importante
Se o fluxo usar conexões de autenticação baseadas no Microsoft Entra ID, independentemente de usar a identidade atribuída pelo sistema ou pelo usuário, você sempre precisará conceder à identidade gerenciada as funções apropriadas dos recursos correspondentes para que ela possa fazer chamadas à API para esse recurso. Por exemplo, se a conexão do OpenAI do Azure OpenAI usar a autenticação baseada no Microsoft Entra ID, você precisará conceder à sua identidade gerenciada de ponto de extremidade a função Usuário OpenAI dos Serviços Cognitivos ou Colaborador OpenAI dos Serviços Cognitivos dos recursos correspondentes do OpenAI do Azure.
Configurações avançadas – Implantação
Nesta etapa, exceto marcas, você também pode especificar o ambiente usado pela implantação.
Usar o ambiente da definição de fluxo atual
Por padrão, a implantação usará o ambiente criado com base na imagem de base especificada em flow.dag.yaml
e nas dependências especificadas no requirements.txt
.
Você pode especificar a imagem de base em
flow.dag.yaml
selecionandoRaw file mode
do fluxo. Se não existir nenhuma imagem especificada, a imagem de base padrão será a imagem de base do prompt flow mais recente solicitada.É possível encontrar
requirements.txt
na pasta raiz da pasta do fluxo e adicionar dependências dentro dela.
Usar o ambiente personalizado
Você também pode criar um ambiente personalizado e usá-lo para a implantação.
Observação
Seu ambiente personalizado deve atender aos seguintes requisitos:
- a imagem do docker deve ser criada com base em uma imagem de base do prompt flow,
mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>
. Você pode encontrar a versão mais recente aqui. - a definição do ambiente deve incluir o
inference_config
.
A seguir, um exemplo de definição de ambiente personalizado.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
Habilitar o rastreamento ativando o diagnóstico do Application Insights (versão prévia)
Se você habilitar essa opção, os dados de rastreamento e as métricas do sistema durante o tempo de inferência (como contagem de tokens, latência de fluxo, solicitação de fluxo etc.) serão coletados no Application Insights vinculado ao workspace. Para saber mais, confira os dados e métricas de rastreamento de serviço do prompt flow.
Se quiser especificar um Application Insights diferente do workspace vinculado, você poderá configurar pela CLI.
Configurações avançadas – Saídas e Conexões
Nesta etapa, você pode exibir todas as saídas de fluxo e especificar quais saídas serão incluídas na resposta do ponto de extremidade implantado. Por padrão, todas as saídas de fluxo são selecionadas.
Você também pode especificar as conexões usadas pelo ponto de extremidade quando ele executa a inferência. Por padrão, eles são herdados do fluxo.
Depois de configurar e examinar todas as etapas acima, você poderá selecionar Examinar e Criar para concluir a criação.
Observação
Espere que a criação do ponto de extremidade leve aproximadamente mais de 15 minutos, pois ela contém várias fases, incluindo a criação do ponto de extremidade, registro do modelo, criação da implantação etc.
Você pode entender o progresso da criação da implantação por meio da notificação iniciada pela Implantação do prompt flow.
Conceder permissões ao ponto de extremidade
Importante
A concessão de permissões (adição de atribuição de função) só está habilitada para o Proprietário dos recursos específicos do Azure. Talvez seja necessário pedir ajuda ao seu administrador de TI. É recomendável conceder funções à identidade atribuída pelo usuário antes da criação da implantação. Pode levar mais de 15 minutos para que a permissão concedida entre em vigor.
Você pode conceder todas as permissões na interface do usuário do portal do Azure seguindo essas etapas.
No portal do Azure, acesse a página de visão geral do workspace do Azure Machine Learning.
Selecione Controle de acesso e Adicionar atribuição de função.
Selecione Leitor de Segredos de Conexão do Workspace do Azure Machine Learning, acesse Avançar.
Observação
Leitor de Segredos de Conexão do Workspace do Azure Machine Learning é uma função interna que tem permissão para obter conexões de workspace.
Se você quiser usar uma função personalizada, verifique se a função personalizada tem a permissão "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action". Saiba mais sobre como criar funções personalizadas.
Selecione Identidade gerenciada e selecione membros.
Para identidade atribuída pelo sistema, selecione Ponto de extremidade online de aprendizado de máquina em Identidade gerenciada atribuída pelo sistema e pesquise por nome do ponto de extremidade.
Para identidade atribuída pelo usuário, selecione Identidade gerenciada atribuída pelo usuário e pesquise por nome de identidade.
Para identidade atribuída pelo usuário, você também precisa conceder permissões para o registro de contêiner do workspace e a conta de armazenamento. Você pode encontrar o registro de contêiner e a conta de armazenamento na página de visão geral do workspace no portal do Azure.
Acesse a página de visão geral do registro de contêiner do workspace, selecione Controle de acesso e Adicionar atribuição de função e atribua Pull de ACR |Efetuar pull da imagem de contêiner para a identidade do ponto de extremidade.
Acesse a página de visão geral de armazenamento padrão do workspace, selecione Controle de acesso e Adicionar atribuição de função e atribua Leitor de Dados de Blob de Armazenamento à identidade do ponto de extremidade.
(opcional) Para identidade atribuída pelo usuário, se você quiser monitorar as métricas relacionadas ao ponto de extremidade, como utilização de CPU/GPU/Disco/Memória, será necessário conceder também a função do workspace Gravador de métricas do Workspace à identidade.
Verifique o status do endpoint
Haverá notificações depois que você concluir o assistente de implantação. Depois que o ponto de extremidade e a implantação forem criados com êxito, você poderá selecionar Implantar detalhes na página de detalhes da notificação para o ponto de extremidade.
Você também pode acessar a página Pontos de extremidade no estúdio e marcar o status do ponto de extremidade implantado.
Testar o ponto de extremidade usando dados de exemplo
Na página de detalhes do ponto de extremidade, alterne para a guia Teste.
Você pode inserir os valores e selecionar o botão Testar.
O Resultado do teste mostra o seguinte:
Testar o ponto de extremidade implantado de um fluxo de chat
Para pontos de extremidade implantados do fluxo de chat, você pode testá-lo em uma janela de chat imersiva.
O chat_input
foi definido durante o desenvolvimento do fluxo de chat. Você pode inserir a mensagem chat_input
na caixa de entrada. O painel Entradas no lado direito é para você especificar os valores para outras entradas além do chat_input
. Saiba mais sobre como desenvolver um fluxo de chat.
Consumir o ponto de extremidade
Na página de detalhes do ponto de extremidade, alterne para a guia Consumir. Você pode encontrar o ponto de extremidade REST e a chave/token para consumir o ponto de extremidade. Também há um código de exemplo para você consumir o ponto de extremidade em linguagens diferentes.
Observe que você precisa preencher os valores de dados de acordo com as entradas do fluxo. Utilize como exemplo o fluxo de amostra usado no artigo Classificação da Web. É necessário especificar data = {"url": "<the_url_to_be_classified>"}
e preencher a chave ou o token no código de consumo de amostra.
Monitorar pontos de extremidade
Ver as métricas comuns de pontos de extremidade online gerenciados usando o Azure Monitor (opcional)
Você pode exibir várias métricas (números de solicitação, latência de solicitação, bytes de rede, utilização de CPU/GPU/Disco/Memória e muito mais) de um ponto de extremidade online e suas implantações seguindo os links da página Detalhes do ponto de extremidade no estúdio. Seguir esses links levará você para a página de métricas exatas no portal do Azure para o ponto de extremidade ou implantação.
Observação
Se você especificar a identidade atribuída pelo usuário para seu ponto de extremidade, verifique se você atribuiu o Gravador de métricas do workspace do Workspace do Azure Machine Learning à sua identidade atribuída pelo usuário. Caso contrário, o ponto de extremidade não poderá registrar as métricas.
Para obter mais informações sobre como exibir as métricas de ponto de extremidade online, confira Monitorar pontos de extremidade online.
Exibir dados de rastreamento e métricas específicas de pontos de extremidade do prompt flow (opcional)
Se você habilitar os diagnósticos do Application Insights no assistente de implantação da interface do usuário, os dados de rastreamento e as métricas específicas do prompt flow serão coletados no Application Insights vinculado ao workspace. Confira os detalhes sobre como habilitar o rastreamento para sua implantação.
Solucionar problemas de pontos de extremidade implementados a partir do fluxo de prompt
Autorização ausente para executar a ação "Microsoft.MachineLearningService/workspaces/datastores/read"
Se o fluxo contiver a ferramenta Pesquisa de Índice, depois de implantá-lo, o ponto de extremidade precisará acessar o armazenamento de dados do workspace para ler o arquivo YAML MLIndex ou a pasta FAISS que contém partes e incorporações. Portanto, é preciso conceder manualmente a permissão de identidade do ponto de extremidade para isso.
É possível conceder a identidade do ponto de extremidade Cientista de Dados do AzureML no escopo do workspace ou uma função personalizada que contém a ação "MachineLearningService/workspace/datastore/reader".
Erro MissingDriverProgram
Se você implantar seu fluxo com o ambiente personalizado e encontrar o seguinte erro, talvez seja porque não especificou o inference_config
na definição do seu ambiente personalizado.
'error':
{
'code': 'BadRequest',
'message': 'The request is invalid.',
'details':
{'code': 'MissingDriverProgram',
'message': 'Could not find driver program in the request.',
'details': [],
'additionalInfo': []
}
}
Existem duas maneiras de corrigir esse erro.
(Recomendado) É possível encontrar o URI da imagem de contêiner na página de detalhes do ambiente personalizado e defini-lo como a imagem base do fluxo no arquivo flow.dag.yaml. Quando você for implantar o fluxo na interface do usuário, basta selecionar Usar ambiente da definição de fluxo atual, e o serviço de atendimento ao consumido criará o ambiente personalizado com base nessa imagem de base e
requirement.txt
para sua implantação. Saiba mais sobre o ambiente especificado na definição de fluxo.Você pode corrigir esse erro adicionando
inference_config
em sua definição de ambiente personalizado. Saiba mais sobre como usar o ambiente personalizado.A seguir, um exemplo de definição de ambiente personalizado.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
Resposta do modelo demorando muito
Às vezes, você pode notar que a implantação está demorando muito para responder. Há vários fatores potenciais para que isso ocorra.
- O modelo não é potente o suficiente (por exemplo, usa gpt em vez de text-ada)
- A consulta do índice não é otimizada e é muito lenta
- O Flow tem muitas etapas para processar
Considere otimizar o ponto de extremidade com as considerações acima para melhorar o desempenho do modelo.
Não é possível buscar o esquema de implantação
Depois de implantar o ponto de extremidade e quiser testá-lo na guia Teste na página de detalhes do ponto de extremidade, se a guia Teste mostrar Não foi possível buscar o esquema de implantação como a seguir, você pode tentar os dois métodos a seguir para atenuar esse problema:
- Verifique se você concedeu a permissão correta à identidade do ponto de extremidade. Saiba mais sobre como conceder permissão à identidade do ponto de extremidade.
Acesso negado para listar o segredo do workspace
Se você encontrar um erro como "Acesso negado para listar o segredo do workspace", verifique se concedeu a permissão correta à identidade do ponto de extremidade. Saiba mais sobre como conceder permissão à identidade do ponto de extremidade.
Limpar os recursos
Se você não for usar o ponto de extremidade após concluir esse tutorial, deverá excluí-lo.
Observação
A exclusão completa pode levar aproximadamente 20 minutos.