Implantar um fluxo como um endpoint online gerenciado para inferência em tempo real

Depois de criar um fluxo e testá-lo corretamente, convém implantá-lo como um ponto de extremidade para que você 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 etapas que você tomará são:

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. A versão de visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Pré-requisitos

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

  • Ter noções básicas sobre os pontos finais online geridos. Os pontos de extremidade online gerenciados funcionam com poderosas máquinas de CPU e GPU no Azure de uma maneira escalá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 online e implantações para inferência em tempo real.

  • Os controlos de acesso baseado em funções (RBAC do Azure) são utilizados para conceder acesso às operações no Azure Machine Learning. Para poder implantar um ponto de extremidade no fluxo de prompt, sua conta de usuário deve receber o cientista de dados do AzureML ou a 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 identidades gerenciadas.

Crie o fluxo e prepare-o para a 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, precisará criar um fluxo. Testar o fluxo corretamente por execução em lote e avaliação antes da implantação é uma prática recomendada recomendada.

Usaremos a Classificação da Web de fluxo de exemplo como exemplo para mostrar como implantar o fluxo. Este fluxo de amostra é um fluxo padrão. A implantação de fluxos de bate-papo é semelhante. O fluxo de avaliação não suporta a implantação.

Definir o ambiente usado pela implantação

Quando você implanta o fluxo de prompt no ponto de extremidade online gerenciado na interface do usuário, por padrão, a implantação usará o ambiente criado com base na imagem de fluxo de prompt mais recente e nas dependências especificadas no requirements.txt fluxo. Você pode especificar pacotes extras necessários no requirements.txt. Você pode encontrar requirements.txt na pasta raiz da sua pasta de fluxo.

Captura de tela do fluxo requisitos-texto.

Se você estiver usando o ambiente do cliente para criar o tempo de execução 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 ambiente com contexto docker para tempo de execução.

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

Em seguida, você também precisa especificar a imagem para a environmentflow.dag.yaml pasta in flow.

Captura de tela do ambiente personalizado para tempo de execução automático na página de fluxo.

Nota

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 endpoint online para inferência em tempo real.

O fluxo de prompt oferece suporte à implantação de pontos de extremidade a partir de um fluxo ou de uma execução em lote. Testar seu fluxo antes da implantação é uma prática recomendada 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.

Executar página de detalhes:

Captura de ecrã da Classificação Web na página de detalhes da execução.

Um assistente para você configurar o ponto de extremidade ocorre e inclui as etapas a seguir.

Definiçõ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.

Property Description
Ponto Final 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 implementação - Dentro do mesmo ponto de extremidade, o nome da implantação deve ser exclusivo.
- Se você selecionar um ponto de extremidade existente e inserir 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 suportados, consulte 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 como pelo menos 3. Reservamos um extra de 20% para a realização de upgrades. Para obter mais informações, consulte Cotas de pontos de extremidade online gerenciados
Recolha de dados de inferência Se você habilitar isso, 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, veja como monitorar aplicativos de IA generativa.
Diagnósticos do Application Insights Se você habilitar isso, as métricas do sistema durante o tempo de inferência (como contagem de tokens, latência de fluxo, solicitação de fluxo e etc.) serão coletadas no Application Insights padrão do espaço de trabalho. Para saber mais, consulte Métricas de serviço de fluxo de prompt.

Depois de concluir as configurações básicas, você pode diretamente Revisão+Criar para concluir a criação ou selecionar Avançar para definir as configurações avançadas.

Configurações avançadas - Endpoint

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.

Authentication type

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 automaticamente. Para obter mais informações sobre autenticação, consulte Autenticar 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 de espaço de trabalho para inferência. Você pode permitir que a permissão de ponto de extremidade acesse os recursos do Azure dando permissão à sua identidade gerenciada.

A identidade atribuída ao sistema será criada automaticamente após a criação do ponto de extremidade, enquanto a identidade atribuída pelo usuário será criada pelo usuário. Saiba mais sobre identidades gerenciadas.

Atribuída pelo sistema

Você notará que há uma opção se Impor acesso a segredos de conexão (visualização). Se seu fluxo usa conexões, o ponto de extremidade precisa acessar conexões para executar 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 Espaço de Trabalho do Azure Machine Learning para acessar conexões automaticamente se você tiver permissão de leitor de segredos de conexão. Se você desativar essa opção, precisará conceder essa função à identidade atribuída ao sistema manualmente por si mesmo ou pedir ajuda ao administrador. Saiba mais sobre como conceder permissão à identidade do ponto de extremidade.

Atribuído pelo usuário

Ao criar a implantação, o Azure tenta extrair a imagem do contêiner do usuário do Registro de Contêiner do Azure (ACR) do espaço de trabalho e montar o modelo de 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 com a Identidade Atribuída pelo Usuário, a identidade atribuída pelo usuário deve receber as seguintes funções antes da criação da implantação, caso contrário, a criação da implantação falhará.

Âmbito Função Por que motivo é necessária
Área de trabalho do Azure Machine Learning Função Leitor de Segredos de Ligação da Área de Trabalho do Azure Machine LearningOU uma função personalizada com "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action" Obter as ligações da área de trabalho
Registo de contentores da área de trabalho Pedidos do ACR Extrair imagem de contentor
Armazenamento predefinido da área de trabalho Leitor de Dados do Armazenamento de Blobs Carregar o modelo a partir do armazenamento
(Opcional) Área de Trabalho do Azure Machine Learning Escritor de métricas da área de trabalho Depois de implementar o ponto final, se pretender monitorizar as métricas relacionadas com o ponto final, tais como a utilização da CPU/GPU/Disco/Memória, terá de conceder esta permissão à identidade.

Consulte orientações 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 tags, você também pode especificar o ambiente usado pela implantação.

Captura de tela do ambiente de implantação.

Use o ambiente de definição de fluxo atual

Por padrão, flow.dag.yaml a implantação usará o ambiente criado com base na imagem base especificada no e dependências especificadas no requirements.txt.

  • Você pode especificar a imagem base na flow.dag.yaml selecionando Raw file mode o fluxo. Se não houver nenhuma imagem especificada, a imagem base padrão será a imagem base de fluxo de prompt mais recente.

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

  • Você pode encontrar requirements.txt na pasta raiz da sua pasta de fluxo e adicionar dependências dentro dela.

    Captura de tela do texto dos requisitos de fluxo.

Use um ambiente personalizado

Você também pode criar um ambiente personalizado e usá-lo para a implantação.

Nota

Seu ambiente personalizado deve satisfazer os seguintes requisitos:

  • A imagem do Docker deve ser criada com base na imagem base do fluxo de prompt, mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>. Você pode encontrar a versão mais recente aqui.
  • A definição de ambiente deve incluir o inference_config.

Segue-se 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 & Conexões

Nesta etapa, você pode visualizar 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 revisar todas as etapas acima, você pode selecionar Revisão+Criar para concluir a criação.

Nota

Espere que a criação do endpoint demore aproximadamente mais de 15 minutos, pois contém vários estágios, incluindo a criação do ponto de extremidade, o registro do modelo, a 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 fluxo de prompt. Captura de tela da notificação de implantação.

Conceder permissões ao ponto de extremidade

Importante

A concessão de permissões (adicionar atribuições de funções) só está ativada para o Proprietário dos recursos específicos do Azure. Talvez seja necessário pedir ajuda ao administrador de TI. É recomendável conceder funções à identidade atribuída pelo usuário antes da criação da implantação. Pode demorar 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 as etapas.

  1. Vá para a página de visão geral do espaço de trabalho do Azure Machine Learning no portal do Azure.

  2. Selecione Controle de acesso e selecione Adicionar atribuição de função. Captura de ecrã do controlo de acesso com a atribuição de adicionar função realçada.

  3. Selecione Azure Machine Learning Workspace Connection Secrets Reader, vá para Next.

    Nota

    O Leitor de Segredos de Conexão do Espaço de Trabalho do Azure Machine Learning é uma função interna que tem permissão para obter conexões de espaço de trabalho.

    Se você quiser usar uma função personalizada, verifique se a função personalizada tem a permissão de "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 do 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 ao registro e à conta de armazenamento do contêiner do espaço de trabalho. Você pode encontrar o registro de contêiner e a conta de armazenamento na página de visão geral do espaço de trabalho no portal do Azure.

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

    Vá para a página de visão geral do registro do contêiner de espaço de trabalho, selecione Controle de acesso, selecione Adicionar atribuição de função e atribuir pull ACR |Puxe a imagem do contêiner para a identidade do ponto de extremidade.

    Vá para a página de visão geral do armazenamento padrão do espaço de trabalho, selecione Controle de acesso, selecione Adicionar atribuição de função e atribua o Leitor de Dados de Blob de Armazenamento à identidade do ponto de extremidade.

  6. (facultativo) Para identidade atribuída pelo usuário, se você quiser monitorar as métricas relacionadas ao ponto de extremidade, como a utilização de CPU/GPU/Disco/Memória, também precisará conceder a função de gravador de métricas do espaço de trabalho à identidade.

Verificar o estado do ponto final

Haverá notificações depois de concluir o assistente de implantação. Depois que o ponto de extremidade e a implantação forem criados com êxito, você poderá selecionar Detalhes de implantação na página de detalhes da notificação para o ponto de extremidade.

Você também pode ir diretamente para a página Pontos de extremidade no estúdio e verificar 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 com dados de amostra

Na página de detalhes do ponto final, 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 ecrã da página de detalhes do ponto final no separador teste.

Testar o ponto de extremidade implantado a partir de um fluxo de bate-papo

Para pontos de extremidade implantados a partir do fluxo de bate-papo, você pode testá-lo em uma janela de bate-papo imersiva.

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

O chat_input foi definido durante o desenvolvimento do fluxo de bate-papo. Você pode inserir a chat_input mensagem 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 final, alterne para a guia Consumir . Você pode encontrar o ponto de extremidade REST e a chave/token para consumir seu ponto de extremidade. Há também um código de exemplo para você consumir o ponto de extremidade em diferentes idiomas.

Observe que você precisa preencher os valores de dados de acordo com suas entradas de fluxo. Tome o fluxo de exemplo usado neste artigo Classificação da Web como exemplo, você precisa especificar data = {"url": "<the_url_to_be_classified>"} e preencher a chave ou token no código de consumo de exemplo.

Captura de ecrã da página de detalhes do ponto final com o código de consumo.

Exibir métricas de endpoint

Exibir métricas comuns de pontos de extremidade online gerenciados usando o Azure Monitor (opcional)

Você pode visualizar 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) para um endpoint online e suas implantações seguindo os links da página Detalhes do endpoint no estúdio. A seguir esses links, você será direcionado para a página de métricas exatas no portal do Azure para o ponto de extremidade ou implantação.

Nota

Se você especificar a identidade atribuída pelo usuário para seu ponto de extremidade, certifique-se de ter atribuído o gravador de métricas do Espaço de Trabalho 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 ecrã da página de detalhes do ponto final com as métricas de visualização realçadas.

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

Exibir métricas específicas de pontos de extremidade de fluxo de prompt (opcional)

Se você habilitar o diagnóstico do Application Insights no assistente de implantação da interface do usuário ou definir app_insights_enabled=true na definição de implantação usando código, haverá a seguir métricas específicas de pontos de extremidade de fluxo de prompt coletadas no espaço de trabalho padrão Application Insights.

Nome das métricas Type Dimensões Description
token_consumption counter - 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 de tokens OpenAI
flow_latency histograma fluxo, response_code, streaming, response_type custo de execução da solicitação, response_type significa se é full/firstbyte/lastbyte
flow_request counter fluxo,response_code,exceção,streaming contagem de solicitações de fluxo
node_latency histograma fluxo, nó, run_status custo de execução do nó
node_request counter fluxo, nó, exceção, run_status contagem de execução de nó
rpc_latency histograma fluxo, nó, api_call Custo RPC
rpc_request counter fluxo,nó,api_call,exceção Contagem de RPC
flow_streaming_response_duration histograma fluxo Custo de envio de resposta de streaming, desde o envio do primeiro byte até o último byte de envio

Você pode encontrar o Application Insights padrão do espaço de trabalho em sua página de espaço de trabalho no portal do Azure.

Captura de tela do Application Insights padrão do espaço de trabalho.

Abra o Application Insights e selecione Uso e custos estimados na navegação à esquerda. Selecione Métricas personalizadas (Visualização), selecione Com dimensões e salve a alteração.

Captura de tela de habilitar métricas multidimensionais.

Selecione a guia Métricas na navegação à esquerda. Selecione as métricas padrão do promptflow no Namespace de Métrica e você pode explorar as métricas da lista suspensa Métrica com diferentes métodos de agregação.

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

Resolver problemas de pontos finais implementados a partir do fluxo imediato

Falta autorização para executar a ação "Microsoft.MachineLearningService/workspaces/datastores/read"

Se o fluxo contiver a ferramenta Pesquisa de Índice, depois de implantar o fluxo, o ponto de extremidade precisará acessar o armazenamento de dados do espaço de trabalho para ler o arquivo yaml MLIndex ou a pasta FAISS contendo partes e incorporações. Portanto, você precisa conceder manualmente a permissão de identidade do ponto de extremidade para fazer isso.

Você pode conceder a identidade de ponto de extremidade AzureML Data Scientist no escopo do espaço de trabalho ou uma função personalizada que contém a ação "MachineLearningService/workspace/datastore/reader".

Erro MissingDriverProgram

Se você implantar seu fluxo com ambiente personalizado e encontrar o seguinte erro, pode ser porque você não especificou o inference_config em sua definição de 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 2 maneiras de corrigir esse erro.

  • (Recomendado) Você pode encontrar o uri da imagem do contêiner na página de detalhes do ambiente personalizado e defini-lo como a imagem base do fluxo no arquivo flow.dag.yaml. Ao implantar o fluxo na interface do usuário, basta selecionar Usar ambiente de definição de fluxo atual e o serviço de back-end criará o ambiente personalizado com base nessa imagem base e requirement.txt para sua implantação. Saiba mais sobre o ambiente especificado na definição de fluxo.

    Captura de ecrã 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 sua definição de ambiente personalizado. Saiba mais sobre como usar o ambiente personalizado.

    Segue-se 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

A resposta ao modelo demora muito tempo

Às vezes, você pode notar que a implantação está demorando muito para responder. Existem vários fatores potenciais para que isso ocorra.

  • O modelo não é poderoso o suficiente (por exemplo, use gpt sobre text-ada)
  • A consulta de índice não está otimizada e demora muito tempo
  • O fluxo tem muitas etapas para processar

Considere otimizar o endpoint com as considerações acima para melhorar o desempenho do modelo.

Não é possível obter o esquema de implementação

Depois de implantar o ponto de extremidade e desejar testá-lo na guia Teste na página de detalhes do ponto de extremidade, se a guia Teste mostrar Não é possível buscar o esquema de implantação como a seguir, você pode tentar os 2 métodos a seguir para mitigar esse problema:

Captura de tela do erro não é possível buscar o esquema de implantação na guia Teste na página de detalhes do ponto final.

  • Certifique-se de ter concedido a permissão correta para a identidade do ponto de extremidade. Saiba mais sobre como conceder permissão à identidade do ponto final.
  • Pode ser porque você executou seu fluxo em um tempo de execução de versão antiga e, em seguida, implantou o fluxo, a implantação usou o ambiente do tempo de execução que estava na versão antiga também. Atualize o tempo de execução seguindo esta orientação e execute novamente o fluxo no tempo de execução mais recente e, em seguida, implante o fluxo novamente.

Acesso negado a listar segredos da área de trabalho

Se você encontrar um erro como "Acesso negado à lista de segredos do espaço de trabalho", verifique se concedeu a permissão correta para a identidade do ponto de extremidade. Saiba mais sobre como conceder permissão à identidade do ponto final.

Clean up resources (Limpar recursos)

Se você não vai usar o ponto de extremidade depois de concluir este tutorial, você deve excluir o ponto de extremidade.

Nota

A eliminação completa pode demorar aproximadamente 20 minutos.

Passos Seguintes