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:

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

  • Saiba como criar e testar um fluxo no prompt flow.

  • 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.

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.

Captura de tela do texto de requisitos do fluxo.

Se você estiver usando o ambiente do cliente para criar o runtime da instância de computação, poderá encontrar a imagem na página de detalhes do ambiente no Estúdio do Azure Machine Learning. Para saber mais, consulte Personalizar o ambiente com o contexto Docker para runtime.

Captura de tela do nome da imagem na página de detalhes do ambiente.

Em seguida, você também precisa especificar a imagem para o environment no flow.dag.yaml na pasta de fluxo.

Captura de tela do ambiente personalizado para tempo de execução automático na página 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:

Captura de tela da Classificação da Web na página de criação de fluxo.

Página de detalhes da execução:

Captura de tela da Classificação da Web na 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

Captura de tela do assistente de implantação na página do ponto de extremidade.

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.
Diagnóstico do Application Insights Se você habilitar esse recurso, as métricas do sistema durante o tempo de inferência (como número de tokens, latência de fluxo, solicitação de fluxo etc.) serão coletadas no Application Insights padrão do workspace. Para saber mais, confira métricas de disponibilização do fluxo de prompt.

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.

Captura de tela das configurações do ponto de extremidade do assistente de implantação.

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 LearningOU 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.

Configurações avançadas – Implantação

Nesta etapa, exceto marcas, você também pode especificar o ambiente usado pela implantação.

Captura de tela do ambiente de 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 selecionando Raw 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.

    Captura de tela da especificação da imagem base no arquivo YAML bruto do fluxo.

  • É possível encontrar requirements.txt na pasta raiz da pasta do fluxo e adicionar dependências dentro dela.

    Captura de tela do texto de requisitos do fluxo.

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

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. Captura de tela da notificação de implantação.

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árioantes 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.

  1. No portal do Azure, acesse a página de visão geral do workspace do Azure Machine Learning.

  2. Selecione Controle de acesso e Adicionar atribuição de função. Captura de tela do Controle de acesso com a opção Adicionar atribuição de função realçada.

  3. 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.

  4. 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.

  5. 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.

    Captura de tela da página de visão geral com armazenamento e registro de contêiner realçados.

    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.

  6. (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.

Captura de tela da página de detalhes do ponto de extremidade mostrando uma implantação bem-sucedida.

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:

Captura de tela da página de detalhes do ponto de extremidade na guia Testar.

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.

Captura de tela de um ponto de extremidade implantado do fluxo de chat.

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.

Captura de tela da página de detalhes do ponto de extremidade com o código de consumo.

Ver as métricas de ponto 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.

Captura de tela da página de detalhes do ponto de extremidade com a opção Exibir métricas realçado.

Para obter mais informações sobre como exibir as métricas de ponto de extremidade online, confira Monitorar pontos de extremidade online.

Ver as métricas específicas de pontos de extremidade do fluxo de prompt (opcional)

Se você habilitar os diagnósticos do Application Insights no assistente de implantação da interface do usuário, ou configurar app_insights_enabled=true na definição de implantação usando código, as seguintes métricas específicas de pontos de extremidade de fluxo de prompt serão coletadas no Application Insights padrão do workspace.

Nome da Métrica Tipo Dimensões Descrição
token_consumption contador - fluxo
— nó
— llm_engine
— token_type: prompt_tokens: tokens de entrada da API LLM; completion_tokens: tokens de resposta da API LLM ; total_tokens = prompt_tokens + completion tokens
métricas de consumo do token da openai
flow_latency histogram flow,response_code,streaming,response_type custo de execução da solicitação, o response_type significa se ele é full/firstbyte/lastbyte
flow_request contador flow,response_code,exception,streaming número de solicitações de fluxo
node_latency histogram flow,node,run_status custo de execução do nó
node_request contador flow,node,exception,run_status contagem de execução de nó
rpc_latency histogram flow,node,api_call custo de rpc
rpc_request contador flow,node,api_call,exception número de rpcs
flow_streaming_response_duration histogram fluxo custo de envio da resposta de streaming, desde o envio do primeiro byte até o envio do último byte

Você pode encontrar o Application Insights padrão do workspace na página do seu workspace no portal do Azure.

Captura de tela do Application Insights padrão do workspace.

Abra o Application Insights e selecione Uso e custos estimados no painel de navegação esquerdo. Selecione Métricas personalizadas (Versão Prévia), selecione Com dimensões e salve a alteração.

Captura de tela de habilitar métricas multidimensionais.

Selecione a guia Métricas no painel de navegação esquerdo. Selecione as métricas padrão do fluxo de prompts no Namespace da Métrica e você poderá explorar as métricas, na lista suspensa Métrica, com diferentes métodos de agregação.

Captura de tela das métricas do ponto de extremidade do fluxo de prompt.

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.

    Captura de tela da página de detalhes do ambiente personalizado.

    Captura de tela da especificação da imagem base no arquivo YAML bruto do 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:

Captura de tela do erro Não foi possível buscar o esquema de implantação na guia Teste da página de detalhes do ponto de extremidade.

  • 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.
  • Pode ser porque você executou o fluxo em um runtime de versão antiga e, em seguida, implantou o fluxo, e a implantação usou o ambiente do runtime, que também estava em uma versão antiga. Atualize o runtime seguindo estas diretrizes e execute novamente o fluxo no runtime mais recente e, em seguida, implemente o fluxo novamente.

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.

Próximas etapas