Implantar e operar aplicativos de IA generativa

Last reviewed 2024-11-19 UTC

A IA generativa introduziu uma nova maneira de criar e operar aplicativos de IA que é diferente da IA preditiva. Para criar um aplicativo de IA generativa, você precisa escolher entre uma variedade de arquiteturas e tamanhos, organizar dados, criar comandos ideais, ajustar modelos para tarefas específicas e fundamentar as saídas do modelo em dados reais.

Este documento descreve como adaptar os processos de DevOps e MLOps para desenvolver, implantar e operar aplicativos de IA generativa em modelos de fundação existentes. Para informações sobre a implantação de IA preditiva, consulte MLOps: entrega contínua e pipelines de automação no aprendizado de máquina.

O que são DevOps e MLOps?

O DevOps é uma metodologia de engenharia de software que conecta desenvolvimento e operações. O DevOps promove a colaboração, a automação e a melhoria contínua para simplificar o ciclo de vida do desenvolvimento de software, usando práticas como integração e entrega contínua (CI/CD).

O MLOps se baseia nos princípios do DevOps para resolver os desafios de criar e operar sistemas de machine learning (ML). Os sistemas de aprendizado de máquina geralmente usam IA preditiva para identificar padrões e fazer previsões. O fluxo de trabalho de MLOps inclui o seguinte:

  • Validação de dados
  • Treinamento de modelo
  • Avaliação e iteração de modelos
  • Implantação e exibição de modelos
  • Monitoramento de modelos

O que são modelos de fundação?

Os modelos de fundação são o componente principal de um aplicativo de IA generativa. Esses modelos são grandes programas que usam conjuntos de dados para aprender e tomar decisões sem intervenção humana. Os modelos de base são treinados com muitos tipos de dados, incluindo texto, imagens, áudio e vídeo. Os modelos de fundação incluem modelos de linguagem grande (LLMs), como o Llama 3.1, e modelos multimodais, como o Gemini.

Ao contrário dos modelos de IA preditivos, que são treinados para tarefas específicas em conjuntos de dados focados, os modelos de fundação são treinados em conjuntos de dados massivos e diversos. Este treinamento permite que você use modelos de base para desenvolver aplicativos para vários casos de uso diferentes. Os modelos de fundação têm propriedades emergentes (PDF), que permitem fornecer respostas a entradas específicas sem treinamento explícito. Devido a essas propriedades emergentes, os modelos de base são difíceis de criar e operar e exigem que você adapte seus processos de DevOps e MLOps.

O desenvolvimento de um modelo de base exige recursos de dados significativos, hardware especializado, investimento significativo e experiência especializada. Portanto, muitas empresas preferem usar modelos básicos para simplificar o desenvolvimento e a implantação de aplicativos de IA generativa.

Ciclo de vida de um aplicativo de IA generativa

O ciclo de vida de um aplicativo de IA generativa inclui as seguintes fases:

  • Descoberta:desenvolvedores e engenheiros de IA identificam qual modelo de base é mais adequado para o caso de uso. Eles consideram os pontos fortes, fracos e custos de cada modelo para tomar uma decisão.
  • Desenvolvimento e experimentação:os desenvolvedores usam a engenharia de comandos para criar e refinar comandos de entrada e receber a saída necessária. Quando disponível, aprendizagem com poucos exemplos, ajuste fino (PEFT, na sigla em inglês) com eficiência de parâmetros e a vinculação de modelos ajudam a orientar o comportamento do modelo. A cadeia de modelos se refere a orquestrar chamadas para vários modelos em uma sequência específica para criar um fluxo de trabalho.
  • Implantação:os desenvolvedores precisam gerenciar muitos artefatos no processo de implantação, incluindo modelos incorporados, definições de cadeia, modelos incorporados, repositórios de dados de recuperação e adaptadores de modelos ajustados. Esses artefatos têm os próprios requisitos de governança e exigem um gerenciamento cuidadoso durante o desenvolvimento e a implantação. A implantação de aplicativos de IA generativa também precisa considerar os recursos técnicos da infraestrutura de destino, garantindo que os requisitos de hardware do aplicativo sejam atendidos.
  • Monitoramento contínuo na produção:os administradores melhoram o desempenho do aplicativo e mantêm os padrões de segurança usando técnicas IA responsável, como garantir imparcialidade, transparência e responsabilidade nas saídas do modelo.
  • Melhoria contínua:os desenvolvedores ajustam constantemente os modelos de fundação usando técnicas de solicitação, trocando os modelos por versões mais recentes ou até mesmo combinando vários modelos para melhorar o desempenho, a eficiência de custos ou reduzir a latência. O treinamento contínuo convencional ainda é relevante para cenários em que é necessário fazer ajustes recorrentes ou incorporar ciclos de feedback humano.

As práticas de engenharia de dados têm um papel fundamental em todos os estágios de desenvolvimento. Para criar saídas confiáveis, é necessário ter base factual, o que garante que as saídas do modelo sejam baseadas em informações precisas e atualizadas, e dados recentes de sistemas internos e corporativos. O ajuste de dados ajuda a adaptar modelos a tarefas e estilos específicos e corrige erros persistentes.

Encontre o modelo de base para seu caso de uso

Como a criação de modelos de base exige muitos recursos, a maioria das empresas prefere usar um modelo de base atual que seja ideal para o caso de uso. Encontrar o modelo de fundação certo é difícil porque existem muitos modelos de fundação. Cada modelo tem arquiteturas, tamanhos, conjuntos de dados de treinamento e licenças diferentes. Além disso, cada caso de uso apresenta requisitos exclusivos, exigindo que você analise os modelos disponíveis em várias dimensões.

Considere os seguintes fatores ao avaliar modelos:

  • Qualidade:execute comandos de teste para avaliar a qualidade da saída.
  • Latência e taxa de transferência:determine a latência e a taxa de transferência corretas que seu caso de uso exige, já que esses fatores afetam diretamente a experiência do usuário. Por exemplo, um chatbot exige uma latência menor do que tarefas de resumo processadas em lote.
  • Tempo de desenvolvimento e manutenção:considere o investimento de tempo para o desenvolvimento inicial e a manutenção contínua. Os modelos gerenciados geralmente exigem menos esforço do que os modelos disponíveis publicamente que você implanta.
  • Custo de uso:considere os custos de infraestrutura e consumo associados ao modelo.
  • Compliance:avalie a capacidade do modelo de obedecer a regulamentações e termos de licenciamento relevantes.

Desenvolver e testar

Ao criar apps de IA generativa, o desenvolvimento e a experimentação são iterativos e orquestrados. Cada iteração experimental envolve refinar dados, adaptar o modelo de base e avaliar os resultados. A avaliação fornece feedback que orienta iterações subsequentes em um ciclo de feedback contínuo. Se a performance não corresponder às expectativas, colete mais dados, aumente os dados ou faça uma curadoria mais detalhada. Além disso, talvez seja necessário otimizar comandos, aplicar técnicas de ajuste fino ou mudar para outro modelo de base. Esse ciclo de refinamento iterativo, impulsionado por insights de avaliação, é tão importante para otimizar aplicativos de IA generativa quanto para o aprendizado de máquina e a IA preditiva.

O paradigma do modelo de base

Os modelos de fundação são diferentes dos modelos preditivos porque são modelos multiuso. Em vez de serem treinados para um único propósito com dados específicos para essa tarefa, os modelos de fundação são treinados em conjuntos de dados amplos, o que permite aplicar um modelo de fundação a muitos casos de uso diferentes.

Os modelos de fundação também são muito sensíveis a mudanças na entrada. A saída do modelo e a tarefa que ele executa são determinadas pela entrada do modelo. Um modelo de base pode traduzir texto, gerar vídeos ou classificar dados simplesmente mudando a entrada. Mesmo mudanças insignificantes na entrada podem afetar a capacidade do modelo de realizar essa tarefa corretamente.

Essas propriedades de modelos de fundação exigem práticas operacionais e de desenvolvimento diferentes. Embora os modelos no contexto de IA preditiva sejam autossuficientes e específicos para tarefas, os modelos de base são multiuso e precisam de um elemento adicional além da entrada do usuário. Os modelos de IA generativa exigem um comando e, mais especificamente, um modelo de comando. Um modelo de comando é um conjunto de instruções e exemplos, além de marcadores de posição para acomodar a entrada do usuário. O aplicativo pode combinar o modelo de comando e os dados dinâmicos (como a entrada do usuário) para criar um comando completo, que é o texto transmitido como entrada para o modelo de base.

O componente do modelo solicitado

A presença do comando é uma característica distintiva dos aplicativos de IA generativa. O modelo e o comando não são suficientes para a geração de conteúdo. A IA generativa precisa dos dois. A combinação do modelo e do comando é conhecida como componente de modelo solicitado. O componente de modelo solicitado é o menor componente independente suficiente para criar um aplicativo de IA generativa. O comando não precisa ser complicado. Por exemplo, pode ser uma instrução simples, como "traduzir a seguinte frase do inglês para francês", seguida pela frase a ser traduzida. No entanto, sem essa instrução preliminar, um modelo de base não vai realizar a tarefa de tradução necessária. Portanto, um comando, mesmo que seja uma instrução básica, é necessário junto à entrada para que o modelo de base faça a tarefa exigida pelo aplicativo.

O componente de modelo solicitado cria uma distinção importante para as práticas de MLOps ao desenvolver aplicativos de IA generativa. No desenvolvimento de um aplicativo de IA generativa, a experimentação e a iteração precisam ser feitas no contexto de um componente de modelo solicitado. O ciclo de experimentação de IA generativa geralmente começa com o teste de variações da instrução, mudando a redação das instruções, fornecendo mais contexto ou incluindo exemplos relevantes, e avaliando o impacto dessas mudanças. Essa prática é comumente chamada de engenharia de comando.

A engenharia de comandos envolve as seguintes etapas iterativas:

  • Comando:crie e refine comandos para induzir comportamentos desejados de um modelo de base para um caso de uso específico.
  • Avaliação:avalie as saídas do modelo, de preferência de forma programática, para avaliar a compreensão e o sucesso dele em cumprir as instruções do comando.

Para acompanhar os resultados da avaliação, você pode registrar os resultados de um experimento. Como a instrução é um elemento central do processo de engenharia, ela se torna o artefato mais importante entre os que fazem parte do experimento.

No entanto, para testar um aplicativo de IA generativa, é necessário identificar os tipos de artefato. Na IA preditiva, os dados, pipelines e o código são diferentes. No entanto, com o paradigma de comando na IA generativa, os comandos podem incluir contexto, instruções, exemplos, limites e dados internos ou externos reais extraídos de outro lugar.

Para determinar o tipo de artefato, é preciso reconhecer que um comando tem componentes diferentes e requer estratégias de gerenciamento diferentes. Considere o seguinte:

  • Instrução como dados:algumas partes da instrução funcionam como dados. Elementos como exemplos de poucos cliques, bases de conhecimento e consultas do usuário são essencialmente pontos de dados. Esses componentes exigem práticas de MLOps centradas em dados, como validação de dados, detecção de desvios e gerenciamento de ciclo de vida.
  • Comando como código:outros componentes, como contexto, modelos de comando e limites, são semelhantes ao código. Esses componentes definem a estrutura e as regras da instrução e exigem práticas mais centradas no código, como processos de aprovação, versionamento de código e testes.

Como resultado, ao aplicar práticas de MLOps à IA generativa, você precisa ter processos que ofereçam aos desenvolvedores uma maneira fácil de armazenar, recuperar, rastrear e modificar comandos. Esses processos permitem iterações rápidas e experimentos principais. Muitas vezes, uma versão de um comando pode funcionar bem com uma versão específica do modelo e não tão bem com uma versão diferente. Ao acompanhar os resultados de um experimento, você precisa registrar o comando, as versões dos componentes, a versão do modelo, as métricas e os dados de saída.

Encadeamento e aumento de modelos

Os modelos de IA generativa, especialmente os modelos de linguagem grandes (LLMs), enfrentam desafios intrínsecos para manter a recência e evitar alucinações. A codificação de novas informações em LLMs requer um pré-treinamento caro e com uso intensivo de dados antes que eles possam ser implantados. Dependendo do caso de uso, usar apenas um modelo solicitado para realizar uma geração específica pode não ser suficiente. Para resolver esse problema, conecte vários modelos solicitados, junto com chamadas para APIs externas e lógica expressa como código. Uma sequência de componentes de modelo solicitados conectados dessa forma é conhecida como cadeia.

O diagrama a seguir mostra os componentes de uma cadeia e o processo de desenvolvimento relacionado.

Modelos de cadeias no processo de desenvolvimento.

Mitigação para recência e alucinação

Dois padrões comuns baseados em cadeia que podem mitigar a recência e as alucinações são a geração aumentada de recuperação (RAG, na sigla em inglês) (PDF) e agentes.

  • A RAG aumenta os modelos pré-treinados com o conhecimento recuperado de bancos de dados, o que elimina a necessidade de pré-treinamento. A RAG permite a base e reduz as alucinações incorporando informações factuais atualizadas diretamente no processo de geração.
  • Os agentes, popularizados pela técnica de solicitação de comando ReAct (PDF, link em inglês), usam LLMs como mediadores que interajam com várias ferramentas, incluindo sistemas RAG, APIs internas ou externas, extensões personalizadas ou até mesmo outros agentes. Os agentes permitem consultas complexas e ações em tempo real selecionando e usando dinamicamente fontes de informação relevantes. O LLM, agindo como um agente, interpreta a consulta do usuário, decide qual ferramenta usar e formula a resposta com base nas informações recuperadas.

É possível usar a RAG e os agentes para criar sistemas multiagentes conectados a grandes redes de informações, permitindo o processamento sofisticado de consultas e a tomada de decisões em tempo real.

A orquestração de diferentes modelos, lógicas e APIs não é uma novidade para aplicativos de IA generativa. Por exemplo, os mecanismos de recomendação combinam modelos de filtragem colaborativa, modelos baseados em conteúdo e regras de negócios para gerar recomendações de produtos personalizadas para os usuários. Da mesma forma, na detecção de fraudes, os modelos de aprendizado de máquina são integrados a sistemas baseados em regras e fontes de dados externas para identificar atividades suspeitas.

O que torna essas cadeias de componentes de IA generativa diferentes é que não é possível caracterizar a distribuição das entradas de componentes com antecedência, o que torna os componentes individuais muito mais difíceis de avaliar e manter isoladamente. A orquestração causa uma mudança de paradigma na forma como você desenvolve aplicativos de IA para IA generativa.

Na IA preditiva, é possível iterar os modelos e componentes separados em isolamento e, em seguida, encadeiá-los no aplicativo de IA. Na IA generativa, você desenvolve uma cadeia durante a integração, realiza experimentos na cadeia de ponta a ponta e itera estratégias de encadeamento, comandos, modelos de base e outras APIs de maneira coordenada para alcançar uma meta específica. Muitas vezes, você não precisa de engenharia de atributos, coleta de dados ou outros ciclos de treinamento de modelo. Basta mudar a redação do modelo.

A mudança para MLOps para IA generativa, em contraste com MLOps para IA preditiva, resulta nas seguintes diferenças:

  • Avaliação:devido ao acoplamento estreito das cadeias, elas exigem uma avaliação completa, não apenas para cada componente, para avaliar o desempenho geral e a qualidade da saída. Em termos de técnicas e métricas de avaliação, a avaliação de cadeias é semelhante à avaliação de modelos solicitados.
  • Controle de versão:é necessário gerenciar uma cadeia como um artefato completo. É necessário acompanhar a configuração da cadeia com o próprio histórico de revisões para análise, reprodutibilidade e para entender os efeitos das mudanças na saída. Seus registros precisam incluir as entradas, saídas, estados intermediários da cadeia e todas as configurações de cadeia usadas durante cada execução.
  • Monitoramento contínuo:para detectar a degradação de desempenho, a deriva de dados ou comportamentos inesperados na cadeia, é necessário configurar sistemas de monitoramento proativos. O monitoramento contínuo ajuda a identificar com antecedência possíveis problemas para manter a qualidade da saída gerada.
  • Introspecção:é preciso inspecionar os fluxos de dados internos de uma cadeia (ou seja, as entradas e saídas de cada componente), bem como as entradas e saídas de toda a cadeia. Ao fornecer visibilidade dos dados que fluem pela cadeia e do conteúdo resultante, os desenvolvedores podem identificar as fontes de erros, vieses ou comportamentos indesejáveis.

O diagrama a seguir mostra como cadeias, componentes de modelo solicitados e ajuste de modelo funcionam juntos em um aplicativo de IA generativa para reduzir a recência e as alucinações. Os dados são selecionados, os modelos são ajustados e as cadeias são adicionadas para refinar ainda mais as respostas. Depois que os resultados são avaliados, os desenvolvedores podem registrar o experimento e continuar a iterar.

Cadeias, modelo solicitado e ajuste de modelo em aplicativos de IA generativa.

Ajuste de detalhes

Ao desenvolver um caso de uso de IA generativa que envolve modelos básicos, pode ser difícil, especialmente para tarefas complexas, depender apenas da engenharia de comandos e da vinculação para resolver o caso de uso. Para melhorar a performance da tarefa, os desenvolvedores geralmente precisam ajustar o modelo diretamente. O ajuste fino permite mudar ativamente todas as camadas ou um subconjunto de camadas (ajuste fino eficiente de parâmetro) do modelo para otimizar a capacidade dele de realizar uma determinada tarefa. As maneiras mais comuns de ajustar um modelo são as seguintes:

  • Ajuste de detalhes supervisionado:você treina o modelo de maneira supervisionada, ensinando-o a prever a sequência de saída correta para uma determinada entrada.
  • Aprendizado por reforço com feedback humano (RLHF): você treina um modelo de recompensa para prever o que os humanos preferem como resposta. Em seguida, use esse modelo de recompensa para direcionar o LLM na direção certa durante o processo de ajuste. Esse processo é semelhante a ter um painel de juízes humanos orientando o aprendizado do modelo.

O diagrama a seguir mostra como o ajuste ajuda a refinar o modelo durante o ciclo de experimentação.

Ajuste de modelos.

No MLOps, o ajuste fino compartilha os seguintes recursos com o treinamento de modelo:

  • A capacidade de acompanhar os artefatos que fazem parte do job de ajuste. Por exemplo, os artefatos incluem os dados de entrada ou os parâmetros usados para ajustar o modelo.
  • A capacidade de medir o impacto do ajuste. Esse recurso permite avaliar o modelo ajustado para as tarefas específicas em que ele foi treinado e comparar os resultados com modelos ajustados anteriormente ou congelados para a mesma tarefa.

Treinamento e ajuste contínuos

No MLOps, o treinamento contínuo é a prática de treinar repetidamente modelos de aprendizado de máquina em um ambiente de produção. O treinamento contínuo ajuda a garantir que o modelo permaneça atualizado e tenha um bom desempenho à medida que os padrões de dados reais mudam ao longo do tempo. Para modelos de IA generativa, o ajuste contínuo dos modelos é geralmente mais prático do que um processo de reenvio devido aos altos custos computacionais e de dados envolvidos.

A abordagem para o ajuste contínuo depende do seu caso de uso e das suas metas. Para tarefas relativamente estáticas, como resumo de texto, os requisitos de ajuste contínuo podem ser menores. No entanto, para aplicativos dinâmicos, como chatbots, que precisam de alinhamento humano constante, é necessário um ajuste mais frequente usando técnicas como o RLHF com base no feedback humano.

Para determinar a estratégia de ajuste contínuo certa, é necessário avaliar a natureza do seu caso de uso e como os dados de entrada evoluem ao longo do tempo. O custo também é uma consideração importante, já que a infraestrutura de computação afeta muito a velocidade e o custo do ajuste. As unidades de processamento gráfico (GPUs) e as unidades de processamento de tensor (TPUs) são hardwares necessários para o ajuste fino. As GPUs, conhecidas por sua capacidade de processamento paralelo, são altamente eficazes no processamento de cargas de trabalho com uso intensivo de computação e costumam ser associadas ao treinamento e à execução de modelos complexos de machine learning. As TPUs, por outro lado, são projetadas especificamente pelo Google para acelerar tarefas de aprendizado de máquina. As TPUs se destacam no processamento de operações de matriz grande comuns em redes neurais de aprendizado profundo.

Práticas relacionadas a dados

Antes, o comportamento do modelo de ML era determinado apenas pelos dados de treinamento. Embora isso ainda seja verdadeiro para modelos de fundação, o comportamento do modelo para aplicativos de IA generativa criados com base em modelos de fundação é determinado pela forma como você adapta o modelo com diferentes tipos de dados de entrada.

Os modelos de base são treinados com dados como:

  • Conjuntos de dados de pré-treinamento (por exemplo, C4, The Pile ou dados reservados)
  • Conjuntos de dados de ajuste de instruções
  • Conjuntos de dados de ajuste de segurança
  • Dados de preferência humana

Os aplicativos de IA generativa são adaptados a dados como:

  • Comandos
  • Dados aumentados ou fundamentados (por exemplo, sites, documentos, PDFs, bancos de dados ou APIs)
  • Dados específicos da tarefa para PEFT
  • Avaliações específicas para tarefas
  • Dados de preferência humana

A principal diferença para as práticas relacionadas a dados entre o ML preditivo e a IA generativa está no início do processo de ciclo de vida. No ML preditivo, você passa muito tempo na engenharia de dados. Se não tiver os dados certos, não será possível criar um aplicativo. Na IA generativa, você começa com um modelo básico, algumas instruções e talvez algumas entradas de exemplo (como aprendizado no contexto). Você pode criar protótipos e lançar um aplicativo com poucos dados.

A facilidade de prototipagem, no entanto, vem com o desafio adicional de gerenciar dados diversos. A IA preditiva depende de conjuntos de dados bem definidos. Na IA generativa, um único aplicativo pode usar vários tipos de dados, de origens de dados completamente diferentes, que funcionam juntas.

Considere os seguintes tipos de dados:

  • Comandos de condicionamento:instruções dadas ao modelo de base para orientar a saída e definir limites do que ele pode gerar.
  • Exemplos de few-shot:uma maneira de mostrar ao modelo o que você quer alcançar usando pares de entrada e saída. Esses exemplos ajudam o modelo a entender as tarefas específicas e, em muitos casos, podem melhorar o desempenho.
  • Dados de base ou de aumento:os dados que permitem que o modelo de base produza respostas para um contexto específico e mantenha as respostas atualizadas e relevantes sem precisar treinar todo o modelo de base novamente. Esses dados podem vir de APIs externas (como a Pesquisa Google) ou de APIs e fontes de dados internas.
  • Conjuntos de dados específicos para tarefas:conjuntos de dados que ajudam a ajustar um modelo de base para uma tarefa específica, melhorando o desempenho dele nessa área específica.
  • Conjuntos de dados completos de pré-treinamento:conjuntos de dados massivos usados para treinar inicialmente modelos de base. Embora os desenvolvedores de aplicativos não tenham acesso a eles ou aos tokenizers, as informações codificadas no modelo influenciam a saída e o desempenho do aplicativo.

Essa variedade de tipos de dados aumenta a complexidade em termos de organização, rastreamento e gerenciamento de ciclo de vida dos dados. Por exemplo, um aplicativo baseado em RAG pode reescrever consultas do usuário, reunir exemplos relevantes dinamicamente usando um conjunto selecionado de exemplos, consultar um banco de dados de vetores e combinar as informações com um modelo de comando. Um aplicativo baseado em RAG exige que você gerencie vários tipos de dados, incluindo consultas de usuários, bancos de dados vetoriais com exemplos de poucos cliques selecionados e informações da empresa, além de modelos de comando.

Cada tipo de dados precisa de organização e manutenção cuidadosas. Por exemplo, um banco de dados vetorial exige o processamento de dados em embeddings, a otimização de estratégias de fragmentação e a garantia de que apenas informações relevantes estejam disponíveis. Um modelo de comando precisa de versionamento e rastreamento, e as consultas do usuário precisam ser reescritas. As práticas recomendadas de MLOps e DevOps podem ajudar nessas tarefas. Na IA preditiva, você cria pipelines de dados para extração, transformação e carregamento. Na IA generativa, você cria pipelines para gerenciar, evoluir, adaptar e integrar diferentes tipos de dados de uma maneira versionável, rastreável e reproduzível.

O ajuste fino dos modelos básicos pode melhorar o desempenho do aplicativo de IA generativa, mas os modelos precisam de dados. Para conseguir esses dados, inicie seu aplicativo e colete dados reais, gere dados sintéticos ou uma combinação dos dois. O uso de modelos grandes para gerar dados sintéticos está se tornando popular porque esse método acelera o processo de implantação, mas ainda é importante que pessoas verifiquem os resultados para garantir a qualidade. Confira a seguir exemplos de como usar modelos grandes para engenharia de dados:

  • Geração de dados sintéticos:esse processo envolve a criação de dados artificiais que se assemelham muito aos dados do mundo real em termos de características e propriedades estatísticas. Modelos grandes e capazes geralmente concluem essa tarefa. Os dados sintéticos servem como dados de treinamento adicionais para a IA generativa, permitindo que ela aprenda padrões e relações mesmo quando os dados reais rotulados são escassos.
  • Correção de dados sintéticos:essa técnica se concentra na identificação e correção de erros e inconsistências nos conjuntos de dados rotulados. Ao usar o poder de modelos maiores, a IA generativa pode sinalizar possíveis erros de rotulagem e propor correções para melhorar a qualidade e a confiabilidade dos dados de treinamento.
  • Aprimoramento de dados sintéticos:essa abordagem vai além da geração de novos dados. O aumento de dados sintéticos envolve a manipulação inteligente de dados para criar variações diversas, preservando características e relacionamentos essenciais. A IA generativa pode encontrar uma gama mais ampla de cenários do que a IA preditiva durante o treinamento, o que leva a uma generalização melhor e à capacidade de gerar resultados sutis e relevantes.

Ao contrário da IA preditiva, é difícil avaliar a IA generativa. Por exemplo, você pode não saber a distribuição dos dados de treinamento dos modelos básicos. Você precisa criar um conjunto de dados de avaliação personalizado que reflita todos os seus casos de uso, incluindo os essenciais, médios e extremos. Assim como no caso do ajuste fino de dados, é possível usar LLMs poderosos para gerar, selecionar e aumentar dados para criar conjuntos de dados de avaliação robustos.

Avaliação

O processo de avaliação é uma atividade essencial do desenvolvimento de aplicativos de IA generativa. A avaliação pode ter diferentes graus de automação: totalmente orientada por humanos ou totalmente automatizada por um processo.

Quando você está criando um protótipo de um projeto, a avaliação geralmente é um processo manual. Os desenvolvedores analisam as saídas do modelo, tendo uma noção qualitativa de como ele está funcionando. No entanto, à medida que o projeto amadurece e o número de casos de teste aumenta, a avaliação manual se torna um gargalo.

A automação da avaliação tem dois grandes benefícios: ela permite que você se mova mais rápido e torne as avaliações mais confiáveis. Ele também tira a subjetividade humana da equação, o que ajuda a garantir que os resultados sejam reproduzíveis.

Mas a automação da avaliação para aplicativos de IA generativa tem seus próprios desafios. Por exemplo, considere o seguinte:

  • As entradas (comandos) e as saídas podem ser incrivelmente complexas. Uma única instrução pode incluir várias instruções e restrições que o modelo precisa gerenciar. As saídas geralmente são de alta dimensão, como uma imagem gerada ou um bloco de texto. É difícil capturar a qualidade dessas saídas em uma métrica simples. Algumas métricas estabelecidas, como BLEU para traduções e ROUGE para resumos, nem sempre são suficientes. Portanto, é possível usar métodos de avaliação personalizados ou outro modelo de base para avaliar o sistema. Por exemplo, você pode solicitar que um modelo de linguagem grande (como o AutoSxS) avalie a qualidade dos textos gerados em várias dimensões.
  • Muitas métricas de avaliação da IA generativa são subjetivas. O que faz uma saída ser melhor do que outra pode ser uma questão de opinião. É necessário garantir que a avaliação automatizada esteja alinhada ao julgamento humano, porque você quer que suas métricas sejam um indicador confiável do que as pessoas pensam. Para garantir a comparabilidade entre os experimentos, você precisa determinar sua abordagem de avaliação e as métricas no início do processo de desenvolvimento.
  • Falta de dados de verdade, especialmente nas primeiras etapas de um projeto. Uma solução alternativa é gerar dados sintéticos para servir como informações empíricas temporárias que podem ser refinadas ao longo do tempo com feedback humano.
  • A avaliação abrangente é essencial para proteger os aplicativos de IA generativa contra ataques de adversários. Atores mal-intencionados podem criar comandos para tentar extrair informações sensíveis ou manipular as saídas do modelo. Os conjuntos de avaliação precisam abordar especificamente esses vetores de ataque, usando técnicas como fuzzing de comandos (alimentando o modelo com variações aleatórias de comandos) e testes de vazamento de informações.

Para avaliar aplicativos de IA generativa, implemente o seguinte:

  • Automatize o processo de avaliação para garantir velocidade, escalonabilidade e reprodutibilidade. Você pode considerar a automação como um substituto do julgamento humano.
  • Personalize o processo de avaliação conforme necessário para seus casos de uso.
  • Para garantir a comparabilidade, estabeleça a abordagem de avaliação, as métricas e os dados informativos o mais cedo possível na fase de desenvolvimento.
  • Gere dados empíricos sintéticos para acomodar a falta de dados empíricos reais.
  • Inclua casos de teste de solicitação de adversário como parte do conjunto de avaliação para testar a confiabilidade do próprio sistema contra esses ataques.

Implantar

Os aplicativos de IA generativa no nível da Production são sistemas complexos com muitos componentes interativos. Para implantar um aplicativo de IA generativa na produção, você precisa gerenciar e coordenar esses componentes com as etapas anteriores de desenvolvimento de aplicativos de IA generativa. Por exemplo, um único aplicativo pode usar vários LLMs com um banco de dados, todos alimentados por um pipeline de dados dinâmico. Cada um desses componentes pode exigir o próprio processo de implantação.

Implantar aplicativos de IA generativa é semelhante a implantar outros sistemas de software complexos, porque é necessário implantar componentes do sistema, como bancos de dados e aplicativos Python. Recomendamos que você use práticas padrão de engenharia de software, como controle de versões e CI/CD.

Controle de versão

A experimentação de IA generativa é um processo iterativo que envolve ciclos repetidos de desenvolvimento, avaliação e modificação. Para garantir uma abordagem estruturada e gerenciada, implemente um controle de versão rígido para todos os componentes modificáveis. Os componentes são estes:

  • Modelos de comando:a menos que você use soluções específicas de gerenciamento de comandos, use ferramentas de controle de versões para acompanhar as versões.
  • Definições de cadeia:use ferramentas de controle de versão para acompanhar as versões do código que definem a cadeia (incluindo integrações de API, chamadas de banco de dados e funções).
  • Conjuntos de dados externos:nos sistemas RAG, os conjuntos de dados externos desempenham um papel importante. Use soluções de análise de dados, como o BigQuery, o AlloyDB para PostgreSQL e o Feature Store da Vertex AI, para acompanhar essas mudanças e versões dos conjuntos de dados.
  • Modelos de adaptador:técnicas como o ajuste de LoRA para modelos de adaptador estão sempre evoluindo. Use soluções de armazenamento de dados estabelecidas (por exemplo, o Cloud Storage) para gerenciar e criar versões desses recursos de maneira eficaz.

Integração contínua

Em um framework de integração contínua, todas as mudanças de código passam por testes automáticos antes da mesclagem para detectar problemas antecipadamente. Os testes de unidade e de integração são importantes para a qualidade e a confiabilidade. Os testes de unidade se concentram em partes individuais do código, enquanto os testes de integração verificam se diferentes componentes funcionam juntos.

A implementação de um sistema de integração contínua ajuda a:

  • Garantir saídas confiáveis e de alta qualidade:testes rigorosos aumentam a confiança na performance e na consistência do sistema.
  • Detectar bugs com antecedência:identificar problemas por meio de testes evita que eles causem problemas maiores mais adiante. Detectar bugs antecipadamente torna o sistema mais robusto e resiliente a casos extremos e entradas inesperadas.
  • Custos de manutenção mais baixos:casos de teste bem documentados simplificam a solução de problemas e permitem modificações mais suaves no futuro, reduzindo os esforços de manutenção gerais.

Esses benefícios são aplicáveis a aplicativos de IA generativa. Aplique a integração contínua a todos os elementos do sistema, incluindo os modelos de comando, a cadeia, a lógica de encadeamento, todos os modelos incorporados e os sistemas de recuperação.

No entanto, aplicar a integração contínua à IA generativa traz os seguintes desafios:

  • Dificuldade em gerar casos de teste abrangentes:a natureza complexa e aberta das saídas de IA generativa dificulta a definição e a criação de um conjunto exaustivo de casos de teste que abranja todas as possibilidades.
  • Problemas de reprodutibilidade:alcançar resultados determinísticos e reprodutíveis é complicado porque os modelos generativos geralmente têm aleatoriedade e variabilidade intrínsecas nas saídas, mesmo para entradas idênticas. Essa aleatoriedade dificulta o teste consistente de comportamentos esperados.

Esses desafios estão intimamente relacionados à questão mais ampla de como avaliar aplicativos de IA generativa. É possível aplicar muitas das mesmas técnicas de avaliação ao desenvolvimento de sistemas de CI para IA generativa.

Entrega contínua

Depois que o código é mesclado, um processo de entrega contínua começa a mover o código criado e testado por ambientes que se assemelham muito à produção para outros testes antes da implantação final.

Conforme descrito em Desenvolver e experimentar, os elementos de cadeia se tornam um dos principais componentes a serem implantados, porque eles constituem o aplicativo de IA generativa. O processo de entrega do aplicativo de IA generativa que contém a cadeia pode variar de acordo com os requisitos de latência e se o caso de uso é em lote ou on-line.

Os casos de uso em lote exigem a implantação de um processo em lote que é executado em uma programação de produção. O processo de entrega se concentra no teste de todo o pipeline de integração em um ambiente semelhante à produção antes da implantação. Como parte do processo de teste, os desenvolvedores podem declarar requisitos específicos sobre a taxa de transferência do próprio processo em lote e verificar se todos os componentes do aplicativo estão funcionando corretamente. Por exemplo, os desenvolvedores podem verificar permissões, infraestrutura e dependências de código.

Os casos de uso on-line exigem a implantação de uma API, que é o aplicativo que contém a cadeia e é capaz de responder aos usuários com baixa latência. Seu processo de entrega envolve testar a API em integração em um ambiente semelhante à produção. Esses testes verificam se todos os componentes do aplicativo estão funcionando corretamente. É possível verificar requisitos não funcionais (por exemplo, escalabilidade, confiabilidade e desempenho) por meio de uma série de testes, incluindo testes de carga.

Lista de verificação da implantação

A lista a seguir descreve as etapas a serem seguidas ao implantar um aplicativo de IA generativa usando um serviço gerenciado, como o Vertex AI:

  • Configurar o controle de versões:implemente práticas de controle de versões para implantações de modelos. O controle de versões permite reverter para versões anteriores, se necessário, e acompanhar as mudanças feitas na configuração do modelo ou da implantação.
  • Otimizar o modelo:realize tarefas de otimização do modelo (destilação, quantização e poda) antes de empacotar ou implantar o modelo.
  • Conteinerizar o modelo:empacote o modelo treinado em um contêiner.
  • Defina os requisitos de hardware de destino:verifique se o ambiente de implantação de destino atende aos requisitos para a performance ideal do modelo, como GPUs, TPUs e outros aceleradores de hardware especializados.
  • Definir o endpoint do modelo:especifique o contêiner do modelo, o formato de entrada, o formato de saída e outros parâmetros de configuração.
  • Alocar recursos:aloque os recursos de computação adequados para o endpoint com base nos requisitos de tráfego e desempenho esperados.
  • Configurar o controle de acesso:configure mecanismos de controle de acesso para restringir o acesso ao endpoint com base em políticas de autenticação e autorização. O controle de acesso ajuda a garantir que apenas usuários ou serviços autorizados possam interagir com o modelo implantado.
  • Criar endpoint de modelo:crie um endpoint para implantar o modelo como um serviço de API REST. O endpoint permite que os clientes enviem solicitações para o endpoint e recebam respostas do modelo.
  • Configurar o monitoramento e o registro:configure sistemas de monitoramento e registro para rastrear o desempenho do endpoint, a utilização de recursos e os registros de erros.
  • Implantar integrações personalizadas:integre o modelo a aplicativos ou serviços personalizados usando o SDK ou as APIs do modelo.
  • Implantar aplicativos em tempo real:crie um pipeline de streaming que processe dados e gere respostas em tempo real.

Registrar e monitorar

O monitoramento de aplicativos de IA generativa e seus componentes requer técnicas que podem ser adicionadas às técnicas de monitoramento que você usa para MLOps convencionais. É necessário registrar e monitorar o aplicativo de ponta a ponta, o que inclui registrar e monitorar a entrada e a saída geral do aplicativo e de cada componente.

As entradas no aplicativo acionam vários componentes para produzir as saídas. Se a saída de uma determinada entrada for imprecisa, você precisará determinar qual dos componentes não teve um bom desempenho. Você precisa de linhagem no registro de todos os componentes que foram executados. Você também precisa mapear as entradas e os componentes com todos os artefatos e parâmetros adicionais de que eles dependem para que você possa analisar as entradas e saídas.

Ao aplicar o monitoramento, priorize o monitoramento no nível do aplicativo. Se o monitoramento no nível do aplicativo provar que o aplicativo está funcionando bem, isso implica que todos os componentes também estão funcionando bem. Em seguida, aplique o monitoramento aos componentes do modelo solicitados para ter resultados mais detalhados e entender melhor sua aplicação.

Assim como no monitoramento convencional em MLOps, é necessário implantar um processo de alerta para notificar os proprietários do aplicativo quando forem detectados desvios, distorções ou declínios de desempenho. Para configurar alertas, é necessário integrar ferramentas de alerta e notificação ao seu processo de monitoramento.

As seções a seguir descrevem o monitoramento de desvios e desvios e tarefas de avaliação contínua. Além disso, o monitoramento em MLOps inclui as métricas de integridade geral do sistema, como a utilização de recursos e a latência. Essas métricas de eficiência também se aplicam a aplicativos de IA generativa.

Detecção de desvio

A detecção de distorção em sistemas de ML convencionais se refere ao desvio de treinamento/disponibilização que ocorre quando a distribuição de dados do recurso na produção se desvia da distribuição de dados do recurso observada durante o treinamento de modelo. Para aplicativos de IA generativa que usam modelos pré-treinados em componentes encadeados para produzir a saída, você também precisa medir a distorção. É possível medir o desvio comparando a distribuição dos dados de entrada usados para avaliar o aplicativo e a distribuição das entradas para o aplicativo em produção. Se as duas distribuições se afastarem, você precisará investigar mais. Você também pode aplicar o mesmo processo aos dados de saída.

Detecção de desvio

Assim como a detecção de distorção, a detecção de deslocamento verifica diferenças estatísticas entre dois conjuntos de dados. No entanto, em vez de comparar avaliações e entradas de exibição, a deriva procura mudanças nos dados de entrada. O Drift permite avaliar as entradas e, portanto, como o comportamento dos usuários muda ao longo do tempo.

Como a entrada do aplicativo geralmente é texto, é possível usar métodos diferentes para medir a distorção e a deriva. Em geral, esses métodos tentam identificar mudanças significativas nos dados de produção, tanto textuais (como o tamanho da entrada) quanto conceituais (como os tópicos na entrada), quando comparados ao conjunto de dados de avaliação. Todos esses métodos procuram mudanças que possam indicar que o aplicativo não está preparado para processar corretamente os novos dados que estão chegando. Alguns métodos comuns, incluindo:

Como os casos de uso de IA generativa são muito diversos, talvez você precise de outras métricas personalizadas que capturem melhor as mudanças inesperadas nos dados.

Avaliação contínua

A avaliação contínua é outra abordagem comum para o monitoramento de aplicativos de IA generativa. Em um sistema de avaliação contínua, você captura a saída de produção do modelo e executa uma tarefa de avaliação usando essa saída para acompanhar a performance do modelo ao longo do tempo. Você pode coletar feedback direto do usuário, como classificações, que fornecem insights imediatos sobre a qualidade percebida das saídas. Ao mesmo tempo, comparar as respostas geradas pelo modelo com a verdade estabelecida permite uma análise mais profunda do desempenho. É possível coletar informações empíricas com base na avaliação humana ou como resultado de uma abordagem de modelo de IA de conjunto para gerar métricas de avaliação. Esse processo mostra como as métricas de avaliação mudaram desde o desenvolvimento do modelo até o que você tem em produção atualmente.

Governar

No contexto das MLOps, a governança abrange todas as práticas e políticas que estabelecem controle, responsabilidade e transparência sobre o desenvolvimento, a implantação e o gerenciamento contínuo de modelos de aprendizado de máquina, incluindo todas as atividades relacionadas aos ciclos de vida do código, dos dados e dos modelos.

Em aplicativos de IA preditiva, a linhagem se concentra no rastreamento e no entendimento da jornada completa de um modelo de aprendizado de máquina. Na IA generativa, a linhagem vai além do artefato do modelo e se estende a todos os componentes da cadeia. O rastreamento inclui os dados, modelos, linhagem de modelos, código e dados e métricas de avaliação relativas. O rastreamento de linhagem pode ajudar você a auditar, depurar e melhorar seus modelos.

Além dessas novas práticas, você pode governar o ciclo de vida dos dados e dos componentes de IA generativa usando práticas padrão de MLOps e DevOps.

A seguir

Implantar um aplicativo de IA generativa usando a Vertex AI