LLMOps com o prompt flow e o Azure DevOps

As operações de linguagem grandes ou LLMOps, tornaram-se a base da engenharia de prompt eficiente e do desenvolvimento e implantação de aplicativos com LLM inserida. À medida que a demanda por aplicativos com LLM inserida continua aumentando, as organizações precisam de um processo coeso e simplificado para gerenciar ciclo de vida de ponta a ponta.

O Azure Machine Learning permite integração ao Azure DevOps para automatizar o ciclo de vida de desenvolvimento de aplicativos com LLM inserida com o prompt flow.

O prompt flow do Azure Machine Learning fornece uma abordagem simplificada e estruturada para o desenvolvimento de aplicativos infundidos por LLM. O processo bem definido e o ciclo de vida orienta você pelas fases de criação, teste, otimização e implantação de fluxos, culminando na criação de soluções totalmente funcionais com LLM.

Recursos de prompt flow do LLMOps

LLMOps com prompt flow tem um "modelo e diretrizes do LLMOps" para ajudar a criar aplicativos com LLM inserido usando prompt flow. Ela fornece os seguintes recursos:

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

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

  • Experimentação de variante e hiperparâmetro: experimente diversas variantes e hiperparâmetros, avaliando variantes de fluxo com facilidade. Variantes e hiperparâmetros são como ingredientes em uma receita. Essa plataforma permite experimentar diferentes combinações de variantes em vários nós de um fluxo.

  • Vários destinos de implantação: o repositório dá suporte à implantação de fluxos em Serviços de Aplicativo do Azure, Kubernetes, computação gerenciada do Azure orientada por meio da configuração, garantindo que seus fluxos possam ser escalados conforme necessário. Também gera imagens do Docker infundidas com o runtime de fluxo e seus fluxos de implantação para qualquer plataforma de destino e sistema operacional compatíveis com o Docker. Screenshot of endpoints.

  • Implantação A/B: implemente implantações A/B perfeitamente, 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 prompt flow. Isso significa que você pode comparar com facilidade versões diferentes de um fluxo em uma configuração do mundo real para determinar qual tem o melhor desempenho. Screenshot of deployments.

  • Relações de fluxo/conjunto de dados de muitos para muitos: acomode vários conjuntos de dados em cada fluxo padrão e de avaliação, garantindo versatilidade em 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 de modelo somente quando há uma alteração neles, não de outra forma.

  • Relatório abrangente: gere relatórios detalhados para cada configuração de variante, o que permite tomar decisões conscientes. Fornece coleção detalhada de métricas, execuções em massa de experimentos e variantes de todas as execuções e experimentos, permitindo decisões orientadas por dados em arquivos CSV e HTML. Screenshot of flow variants report.Screenshot of metrics report.

Outros recursos de personalização:

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

  • Oferece desenvolvimento baseado em configuração. Não é necessário gravar um código clichê extenso.

  • Fornece execução de ambos experimentos de prompt e avaliação no local e na nuvem.

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

  • Testes de ponto de extremidade no pipeline após a implantação para verificar sua disponibilidade e preparação.

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

LLMOps com fluxo de prompt fornece recursos para aplicativos simples e complexos com LLM inserido. Isso é completamente personalizável para as necessidades do aplicativo.

Estágios LLMOps

O ciclo de vida compreende quatro fases distintas:

  • Inicialização: defina claramente o objetivo de negócios, colete amostras de dados relevantes, estabeleça uma estrutura básica de prompts e crie um fluxo que aprimore seus recursos.

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

  • Avaliação e Refinamento: faça um parâmetro de comparação do desempenho do fluxo usando um conjunto de dados maior, avalie a eficácia do prompt e faça refinamentos conforme necessário. Progrida para o próximo estágio se os resultados atenderem aos padrões desejados.

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

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

O modelo de prompt flow do LLMOps formaliza essa metodologia estruturada usando a abordagem de primeiro código e ajuda você a criar aplicativos infundidos por LLM usando o prompt flow com processo e ferramentas relevantes para solicitar o fluxo. Ele oferece uma variedade de recursos, incluindo Hospedagem Centralizada de Código, Gerenciamento de Ciclo de Vida, Experimentação de Variante e Hiperparâmetro, Implantação A/B, relatórios para todas as execuções e experimentos e muito mais.

O repositório deste artigo está disponível em LLMOps com o modelo de prompt flow

Fluxo de processo do LLMOps

Screenshot of LLMOps prompt flow process.

  1. Esse é o estágio de inicialização. Aqui, os fluxos são desenvolvidos, os dados são preparados e coletados e os arquivos de configuração relacionados ao LLMOps são atualizados.
  2. Após o desenvolvimento local usando o Visual Studio Code, juntamente com a extensão de prompt flow, uma solicitação de pull é gerada do branch de recursos para o branch de desenvolvimento. Isso resulta na execução do pipeline de validação de build. Ele também executa os fluxos de experimentação.
  3. A PR é aprovada manualmente e o código é mesclado ao branch de desenvolvimento
  4. Depois que a PR é mesclada ao branch de desenvolvimento, o pipeline de CI para 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 testes aceitação de build do fluxo implantado.
  6. Um branch de lançamento é criado do branch de desenvolvimento ou uma solicitação de pull é gerada do branch de desenvolvimento para o branch de lançamento.
  7. A PR é aprovada manualmente e o código é mesclado ao branch de versão. Depois que a PR é mesclada ao branch de lançamento, o pipeline de CI para o 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 testes aceitação de build do fluxo implantado.

Daqui em diante, você pode aprender sobre as LLMOps com o prompt flow seguindo as amostras de ponta a ponta que fornecemos e que ajuda a criar aplicativos com LLM inserida usando o prompt flow e o Azure DevOps. Seu objetivo principal é fornecer assistência no desenvolvimento de tais aplicativos, aproveitando os recursos de prompt flow e LLMOps.

Dica

É recomendável que você entenda como integrar o LLMOps ao prompt flow.

Importante

O fluxo de prompt está atualmente em versão prévia pública. Essa versão prévia é fornecida sem um SLA 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

  • Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
  • Um Workspace do Azure Machine Learning.
  • Git em execução no computador local.
  • Uma organização no Azure DevOps. A organização no Azure DevOps ajuda a colaborar, planejar e acompanhar seus defeitos de trabalho e código, problemas e configurar a integração e a implantação contínuas.
  • A extensão do Terraform para Azure DevOps, se você estiver usando o Azure DevOps + Terraform para desenvolver a infraestrutura

Observação

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

Importante

Os comandos da CLI neste artigo foram testados usando o 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 o OpenAI do Azure, OpenAI ou Pesquisa de IA do Azure e usa o runtime para a execução dos fluxos. Esses recursos devem ser criados antes de executar os fluxos no prompt flow.

Configurar conexões para o prompt flow

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

Clique no link para saber mais sobre conexões.

Observação

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

Configurar a computação e o runtime para o prompt flow

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

Clique no link para saber mais sobre o runtime.

Observação

O mesmo nome de runtime deve ser usado no arquivo LLMOps_config.json explicado posteriormente.

Configurar a Entidade de Serviço do Azure

Uma Entidade de Serviço do Azure é uma identidade de segurança que aplicativos, serviços e ferramentas de automação usam para acessar recursos do Azure. Ele representa um aplicativo ou serviço que precisa se autenticar com o Azure e acessar recursos em seu nome. Siga as diretrizes para criar a Entidade de Serviço no Azure.

Essa Entidade de Serviço é usada posteriormente para configurar a conexão do Serviço do Azure DevOps e o Azure DevOps para autenticar e conectar-se aos Serviços do Azure. Os trabalhos executados no prompt flow para ambos experiment and evaluation runs estão sob a identidade desta Entidade de Serviço. Além disso, compute e runtime são criados usando a mesma Entidade de Serviço.

Dica

A configuração fornece permissões owner para a Entidade de Serviço.

  • Isso ocorre porque o Pipeline de CD fornece automaticamente acesso ao recém-provisionado Ponto de Extremidade do Azure Machine Learning e acesso ao workspace do Azure Machine Learning para ler informações de conexões.
  • Ele também o adiciona à política de cofre de chaves associada ao Workspace do Azure Machine Learning com as permissões secretas get e list.

A permissão de proprietário pode ser alterada para permissões de nível contributor alterando o código YAML do pipeline e removendo a etapa relacionada às permissões.

Configurar o Azure DevOps

Há várias etapas que devem ser realizadas para configurar o processo LLMOps usando o Azure DevOps.

Criar um novo projeto do Azure DevOps

Siga as diretrizes para criar um novo projeto do Azure DevOps usando a interface do usuário do Azure DevOps.

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

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

Esta etapa configura uma nova Conexão de Serviço do Azure DevOps que armazena as informações da Entidade de Serviço. Os pipelines no projeto podem ler as informações de conexão usando o nome da conexão. Isso ajuda a configurar as etapas de pipeline do Azure DevOps para se conectar ao Azure automaticamente.

Criar um grupo de variáveis do Azure DevOps

Siga as diretrizes para criar um novo grupo de variáveis e adicionar uma variável relacionada à Conexão de Serviço do Azure DevOps.

O nome da entidade de serviço está disponível automaticamente como variável de ambiente para os pipelines.

Configurar o repositório e os pipelines do Azure DevOps

Esse repositório usa dois branches, main e development para promoções de código e execução de pipelines em vez de alterações no código neles. Siga as diretrizes para configurar seu próprio repositório local e remoto para usar o código deste repositório.

As etapas envolvem clonar main e development branches do repositório e associar o código para se referir ao novo repositório do Azure DevOps. Além da migração de código, pipelines – os pipelines de PR e de desenvolvimento são configurados de modo que sejam executados automaticamente com base na criação de PR e nos gatilhos de mesclagem.

A política de branch para o branch de desenvolvimento também deve ser configurada para executar o pipeline de PR para qualquer PR gerado no branch de desenvolvimento de um branch de recursos. PRO pipeline 'dev' é executado quando a PR é mesclada ao branch de desenvolvimento. O pipeline 'dev' consiste em fases de CI e CD.

Há também humanos no loop implementado dentro dos pipelines. Depois que a fase de CI no pipeline dev é executada, a fase de CD segue após a aprovação manual. A aprovação deve ocorrer na interface do usuário de execução de build do pipeline do Azure DevOps. O tempo limite padrão é de 60 minutos. Depois disso o pipeline será rejeitado e a fase de CD não será executada. A aprovação manual da execução levará à execução das etapas de CD do pipeline. A aprovação manual é configurada para enviar notificações para 'replace@youremail.com'. Ele deve ser substituído por uma ID de email apropriada.

Teste os pipelines

Siga as diretrizes mencionadas para testar os pipelines.

As etapas são:

  1. Gere uma PR (Solicitação de Pull) de um branch de recursos para um branch de desenvolvimento.
  2. O pipeline de PR deve ser executado automaticamente como resultado da configuração da política de branch.
  3. A PR é então mesclada ao branch de desenvolvimento.
  4. O pipeline "dev" associado é executado. Isso resultará na execução completa de CI e CD e resultará em provisionamento ou atualização de pontos de extremidade existentes do Azure Machine Learning.

As saídas de teste devem ser semelhantes às mostradas aqui.

Execução local

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

  1. Clone o Repositório: comece clonando o repositório do modelo de seu repositório do GitHub.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Configurar o arquivo .env: crie um arquivo .env na pasta de nível superior 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 deverão ser adicionadas adequadamente. Atualmente, flua com o AzureOpenAI como provedor como suporte.

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 a 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óximas etapas