LLMOps com fluxo imediato e GitHub

Large Language Operations, ou LLMOps, tornou-se a pedra angular da engenharia rápida eficiente e do desenvolvimento e implantação de aplicativos com infusão de LLM. À medida que a demanda por aplicativos com infusão de LLM continua a aumentar, as organizações precisam de um processo coeso e simplificado para gerenciar seu ciclo de vida de ponta a ponta.

O Azure Machine Learning permite que você se integre ao GitHub para automatizar o ciclo de vida de desenvolvimento de aplicativos com infusão de LLM com fluxo de prompt.

O Azure Machine Learning Prompt Flow fornece uma abordagem simplificada e estruturada para o desenvolvimento de aplicativos com infusão de LLM. Seu processo e ciclo de vida bem definidos orientam você através do processo de construção, teste, otimização e implantação de fluxos, culminando na criação de soluções totalmente funcionais com infusão de LLM.

Recursos do LLMOps Prompt Flow

LLMOps com fluxo de prompt é um "modelo e orientação LLMOps" para ajudá-lo a criar aplicativos com infusão de LLM usando fluxo de prompt. Proporciona as seguintes funcionalidades:

  • Hospedagem centralizada de código: Este repositório suporta a hospedagem de código para vários fluxos com base no fluxo de prompt, fornecendo um único repositório para todos os seus fluxos. Pense nesta plataforma como um único repositório onde reside todo o seu código de fluxo de prompt. É como uma biblioteca para seus fluxos, facilitando a localização, o acesso e a colaboração em diferentes projetos.

  • Gerenciamento do ciclo de vida: cada fluxo desfruta de seu próprio ciclo de vida, permitindo transições suaves da experimentação local para a implantação da produção. Screenshot of pipeline.

  • Experimentação de Variantes e Hiperparâmetros: Experimente múltiplas variantes e hiperparâmetros, avaliando variantes de fluxo com facilidade. Variantes e hiperparâmetros são como ingredientes de uma receita. Essa plataforma permite que você experimente diferentes combinações de variantes em vários nós em um fluxo.

  • Vários destinos de implantação: o repositório dá suporte à implantação de fluxos para os Serviços de Aplicativo do Azure, Kubernetes, cálculos gerenciados do Azure orientados por meio da configuração, garantindo que seus fluxos possam ser dimensionados conforme necessário. Ele também gera imagens do Docker infundidas com o tempo de execução do Flow e seus fluxos para implantação em qualquer plataforma de destino e sistema operacional que suporte o Docker. Screenshot of endpoints.

  • Implantação A/B: implemente perfeitamente implantações A/B, permitindo que você compare diferentes versões de fluxo sem esforço. Assim como nos testes A/B tradicionais para sites, essa plataforma facilita a implantação A/B para fluxo imediato. Isso significa que você pode comparar facilmente diferentes versões de um fluxo em uma configuração do mundo real para determinar qual tem o melhor desempenho. Screenshot of deployments.

  • Relações de conjunto de dados/fluxo muitos-para-muitos: Acomoda vários conjuntos de dados para cada padrão e fluxo de avaliação, garantindo versatilidade no teste e avaliação de fluxo. A plataforma foi projetada para acomodar vários conjuntos de dados para cada fluxo.

  • Dados condicionais e registro de modelo: a plataforma cria uma nova versão para o conjunto de dados no Ativo de Dados do Azure Machine Learning e flui no registro do modelo somente quando há uma alteração neles, não de outra forma.

  • Relatórios abrangentes: gere relatórios detalhados para cada configuração de variante, permitindo que você tome decisões informadas. Fornece coleta métrica detalhada, experimento e execuções em massa de variantes para todas as execuções e experimentos, permitindo decisões orientadas por dados em csv, bem como arquivos HTML. Screenshot of flow variants report.Screenshot of metrics report.

Outros recursos para personalização:

  • Oferece BYOF (traga seus próprios fluxos). Uma plataforma completa para o desenvolvimento de vários casos de uso relacionados a aplicativos com infusão de LLM.

  • Oferece desenvolvimento baseado em configuração. Não há necessidade de escrever extenso código de placa clichê.

  • Fornece a execução de experimentação e avaliação imediatas localmente, bem como na nuvem.

  • Fornece blocos de anotações para avaliação local dos prompts. Fornece biblioteca de funções para experimentação local.

  • Teste de endpoint dentro do pipeline após a implantação para verificar sua disponibilidade e prontidão.

  • Fornece Human-in-loop opcional para validar métricas de prompt antes da implantação.

LLMOps com fluxo imediato fornece recursos para aplicativos simples e complexos com infusão de LLM. É completamente personalizável para as necessidades da aplicação.

Estágios LLMOps

O ciclo de vida compreende quatro fases distintas:

  • Inicialização: defina claramente o objetivo de negócios, reúna amostras de dados relevantes, estabeleça uma estrutura básica de prompt e crie um fluxo que aprimore suas capacidades.

  • Experimentação: aplique o fluxo aos dados de amostra, avalie o desempenho do prompt e refine o fluxo conforme necessário. Itere continuamente até ficar satisfeito com os resultados.

  • Avaliação e refinamento: Avalie o desempenho do fluxo usando um conjunto de dados maior, avalie a eficácia do prompt e faça refinamentos de acordo. Avançar para a fase seguinte se os resultados cumprirem os padrões desejados.

  • Implantação: otimize o fluxo para eficiência e eficácia, implante-o em um ambiente de produção, incluindo implantação A/B, monitore seu desempenho, colete feedback do usuário e use essas informações para melhorar ainda mais o fluxo.

Ao aderir a essa metodologia estruturada, o Prompt Flow permite que você desenvolva com confiança, teste rigoroso, ajuste fino e implante fluxos, levando à criação de aplicativos de IA robustos e sofisticados.

O modelo LLMOps Prompt Flow formaliza essa metodologia estruturada usando a abordagem code-first e ajuda você a criar aplicativos com infusão de LLM usando o Prompt Flow usando ferramentas e processos relevantes para o Prompt Flow. Ele oferece uma variedade de recursos, incluindo hospedagem centralizada de código, gerenciamento do ciclo de vida, experimentação de variantes e hiperparâmetros, implantação A/B, relatórios para todas as execuções e experimentos e muito mais.

O repositório para este artigo está disponível em LLMOps com modelo de fluxo de prompt

Fluxo de processo LLMOps

Screenshot of LLMOps prompt flow Process.

  1. Este é o estágio de inicialização. Aqui, os fluxos são desenvolvidos, os dados são preparados e curados e os arquivos de configuração relacionados ao LLMOps são atualizados.
  2. Após o desenvolvimento local usando o Visual Studio Code junto com a extensão Prompt Flow, uma solicitação pull é gerada de ramificação de recurso para ramificação de desenvolvimento. Isso resulta na execução do pipeline de validação de compilação. Também executa os fluxos de experimentação.
  3. O PR é aprovado manualmente e o código é mesclado ao ramo de desenvolvimento
  4. Depois que o PR é mesclado à ramificação de desenvolvimento, o pipeline de CI para o ambiente de desenvolvimento é executado. Ele executa os fluxos de experimentação e avaliação em sequência e registra os fluxos no Registro do Azure Machine Learning, além de outras etapas no pipeline.
  5. Após a conclusão da execução do pipeline de CI, um gatilho de CD garante a execução do pipeline de CD que implanta o fluxo padrão do Registro do Azure Machine Learning como um ponto de extremidade online do Azure Machine Learning e executa testes de integração e fumaça no fluxo implantado.
  6. Uma ramificação de liberação é criada a partir da ramificação de desenvolvimento ou uma solicitação pull é gerada de ramificação de desenvolvimento para ramificação de versão.
  7. O PR é aprovado manualmente e o código é mesclado com a ramificação de lançamento. Depois que o PR é mesclado à ramificação de liberação, o pipeline de CI para ambiente prod é executado. Ele executa os fluxos de experimentação e avaliação em sequência e registra os fluxos no Registro do Azure Machine Learning, além de outras etapas no pipeline.
  8. Após a conclusão da execução do pipeline de CI, um gatilho de CD garante a execução do pipeline de CD que implanta o fluxo padrão do Registro do Azure Machine Learning como um ponto de extremidade online do Azure Machine Learning e executa testes de integração e fumaça no fluxo implantado.

A partir daqui, você pode aprender LLMOps com fluxo de prompt seguindo as amostras de ponta a ponta que fornecemos, que ajudam você a criar aplicativos com infusão de LLM usando fluxo de prompt e GitHub. Seu principal objetivo é fornecer assistência no desenvolvimento de tais aplicações, alavancando as capacidades de fluxo rápido e LLMOps.

Gorjeta

Recomendamos que você entenda como integrar LLMOps com fluxo imediato.

Importante

O fluxo de prompt está atualmente em visualização pública. Essa 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

  • Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
  • Uma área de trabalho do Azure Machine Learning.
  • Git em execução na sua máquina local.
  • GitHub como o repositório de controle do código-fonte.

Nota

É necessária a versão 2.27 ou mais recente do Git. Para obter mais informações sobre como instalar o comando Git, consulte https://git-scm.com/downloads e selecione seu sistema operacional

Importante

Os comandos da CLI neste artigo foram testados usando Bash. Se você usar um shell diferente, poderá encontrar erros.

Configurar o Prompt Flow

O Prompt Flow usa o recurso de conexões para se conectar a pontos de extremidade como Azure OpenAI, OpenAI ou Azure AI Search e usa o tempo de execução para a execução dos fluxos. Esses recursos devem ser criados antes de executar os fluxos no Prompt Flow.

Configurar conexões para fluxo de prompt

As conexões podem ser criadas por meio da interface do usuário do portal de fluxo de prompt ou usando a API REST. Siga as diretrizes para criar conexões para fluxo de prompt.

Clique no link para saber mais sobre conexões.

Nota

Os fluxos de amostra usam conexão 'aoai' e a conexão chamada 'aoai' deve ser criada para executá-los.

Configurar computação e tempo de execução para fluxo de prompt

O tempo de execução pode ser criado por meio da interface dousuário do portal de fluxo de prompt ou usando a API REST. Siga as diretrizes para configurar a computação e o tempo de execução para fluxo de prompt.

Clique no link para saber mais sobre o tempo de execução.

Nota

O mesmo nome de tempo de execução deve ser usado no arquivo LLMOps_config.json explicado mais tarde.

Configurar o repositório GitHub

Há várias etapas que devem ser realizadas para configurar o processo LLMOps usando o repositório GitHub.

Fork e configurar o repositório

Siga as diretrizes para criar um repositório bifurcado em sua organização do GitHub. Este repositório usa duas ramificações - main e para promoções de código e development execução de pipelines em vez de alterações no código neles.

Configurar a autenticação entre o GitHub e o Azure

Siga as diretrizes para usar a Entidade de Serviço criada anteriormente e configurar a autenticação entre o repositório GitHub e os Serviços do Azure.

Esta etapa configura um Segredo do GitHub que armazena as informações da Entidade de Serviço. Os fluxos de trabalho no repositório podem ler as informações de conexão usando o nome secreto. Isso ajuda a configurar as etapas de fluxo de trabalho do GitHub para se conectar ao Azure automaticamente.

Clonagem do repositório

Siga as diretrizes para criar um novo repositório local.

Isso nos ajudará a criar uma nova ramificação de recursos a partir da ramificação de desenvolvimento e incorporar alterações.

Testar os pipelines

Siga as diretrizes para testar os pipelines. Os passos são

  1. Levante um PR(Pull Request) de uma ramificação de recurso para uma ramificação de desenvolvimento.
  2. O pipeline de PR deve ser executado automaticamente como resultado da configuração da política de ramificação.
  3. O PR é então fundido com o ramo de desenvolvimento.
  4. O pipeline 'dev' associado é executado. Isso resultará na execução completa de CI e CD e resultará no provisionamento ou atualização dos Pontos de Extremidade do Azure Machine Learning existentes.

Os resultados do teste devem ser semelhantes aos mostrados aqui.

Execução local

Para aproveitar os recursos da execução local, siga estas etapas de instalação:

  1. Clone the Repository: comece clonando o repositório do modelo a partir do repositório GitHub.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Configurar arquivo env: crie o arquivo .env no nível superior da pasta e forneça informações para os itens mencionados. Adicione quantos nomes de conexão forem necessários. Todos os exemplos de fluxo neste repositório usam a conexão AzureOpenAI chamada aoai. Adicione uma linha aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} com valores atualizados para api_key e api_base. Se conexões adicionais com nomes diferentes forem usadas em seus fluxos, elas devem ser adicionadas de acordo. Atualmente, flua com AzureOpenAI como provedor conforme suportado.

experiment_name=
connection_name_1={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
connection_name_2={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
  1. Prepare o conda local ou o ambiente virtual para instalar as dependências.

python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv

  1. Traga ou escreva seus fluxos no modelo com base na documentação aqui.

  2. Escreva scripts python semelhantes aos exemplos fornecidos em local_execution pasta.

Próximos passos