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 embasar as saídas do modelo em dados do mundo real.

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 atuais. Para informações sobre como implantar a IA preditiva, consulte MLOps: pipelines de entrega contínua e automação em machine learning.

O que são DevOps e MLOps?

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 otimizar o ciclo de vida de desenvolvimento de software, usando práticas como integração e entrega contínua (CI/CD).

O MLOps se baseia nos princípios de DevOps para lidar com os desafios de criação e operação de sistemas de machine learning (ML). Os sistemas de machine learning 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 programas grandes que usam conjuntos de dados para aprender e tomar decisões sem intervenção humana. Os modelos de fundação são treinados com muitos tipos de dados, incluindo texto, imagens, áudio e vídeo. Os modelos de fundação incluem modelos de linguagem grandes (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 enormes e diversos. Com este treinamento, você pode usar modelos de fundação 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 fundação são difíceis de criar e operar, exigindo que você adapte seus processos de DevOps e MLOps.

O desenvolvimento de um modelo de fundação exige recursos de dados significativos, hardware especializado, investimento considerável e experiência especializada. Por isso, muitas empresas preferem usar modelos básicos atuais 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 deles. Eles consideram os pontos fortes, fracos e custos de cada modelo para tomar uma decisão informada.
  • 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íveis, o aprendizado com poucos exemplos, o ajuste fino com eficiência de parâmetros (PEFT) e o encadeamento de modelos ajudam a orientar o comportamento do modelo. O encadeamento de modelos se refere à orquestração de 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 de solicitação, definições de cadeia, modelos incorporados, repositórios de dados de recuperação e adaptadores de modelos refinados. Esses artefatos têm próprios requisitos de governança e exigem 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 em produção:os administradores melhoram o desempenho dos aplicativos e mantêm os padrões de segurança usando técnicas de 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 loops de feedback humano.

As práticas de engenharia de dados têm um papel fundamental em todas as etapas de desenvolvimento. Para criar resultados confiáveis, você precisa ter embasamento factual (que garante que as saídas do modelo sejam baseadas em informações precisas e atualizadas) e dados recentes de sistemas internos e empresariais. Os dados de ajuste ajudam a adaptar modelos a tarefas e estilos específicos e corrigem erros persistentes.

Encontrar o modelo de fundação para seu caso de uso

Como a criação de modelos de fundação exige muitos recursos, a maioria das empresas prefere usar um modelo de fundação que seja ideal para o caso de uso delas. Encontrar o modelo de fundação certo é difícil porque existem muitos deles. 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 capacidade de transmissão:determine a latência e a capacidade de transmissão 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 abertamente que você implanta por conta própria.
  • Custo de uso:considere os custos de infraestrutura e consumo associados ao modelo.
  • Conformidade:avalie a capacidade do modelo de obedecer às regulamentações relevantes e aos termos de licenciamento.

Desenvolver e testar

Ao criar aplicativos 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 resultados. A avaliação fornece feedback que orienta as iterações subsequentes em um ciclo de feedback contínuo. Se o desempenho não corresponder às expectativas, colete mais dados, aumente ou refine os dados. Além disso, talvez seja necessário otimizar comandos, aplicar técnicas de ajuste fino ou mudar para outro modelo de fundação. Esse ciclo de refinamento iterativo, impulsionado por insights de avaliação, é tão importante para otimizar aplicativos de IA generativa quanto para machine learning e IA preditiva.

O paradigma do modelo de fundação

Os modelos de fundação são diferentes dos preditivos porque são modelos multifuncionais. Em vez de serem treinados para uma única finalidade com dados específicos para essa tarefa, os modelos de fundação são treinados com 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. Um modelo de fundação pode traduzir texto, gerar vídeos ou classificar dados apenas mudando a entrada. Até mesmo mudanças insignificantes na entrada podem afetar a capacidade do modelo de realizar a tarefa corretamente.

Essas propriedades dos 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 fundação são multifuncionais 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 com 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 de 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 com comando. 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 "traduza a frase a seguir do inglês para o francês", seguida da frase a ser traduzida. No entanto, sem essa instrução preliminar, um modelo de fundação 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 com a entrada para que o modelo de base faça a tarefa exigida pelo aplicativo.

O componente de modelo com comandos 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 com comandos. O ciclo de experimentação da IA generativa geralmente começa com o teste de variações do comando, mudando a redação das instruções, fornecendo mais contexto ou incluindo exemplos relevantes, e avaliando o impacto dessas mudanças. Essa prática é conhecida como engenharia de comando.

A engenharia de comandos envolve as seguintes etapas iterativas:

  • Comandos:crie e refine comandos para extrair os comportamentos desejados de um modelo de fundação para um caso de uso específico.
  • Avaliação:avalie as saídas do modelo, de preferência de forma programática, para medir a compreensão e o sucesso dele em atender às instruções do comando.

Para acompanhar os resultados da avaliação, você pode registrar os resultados de um experimento. Como o comando em si é um elemento essencial do processo de engenharia de comandos, ele 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, os pipelines e o código são diferentes. Mas com o paradigma de comandos na IA generativa, eles podem incluir contexto, instruções, exemplos, restrições 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 exige estratégias de gerenciamento diferentes. Considere o seguinte:

  • Comando como dados:algumas partes do comando agem como dados. Elementos como exemplos de poucos disparos, 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 do ciclo de vida.
  • Comando como código:outros componentes, como contexto, modelos de comandos e proteções, são semelhantes ao código. Esses componentes definem a estrutura e as regras do próprio comando e exigem práticas mais centradas em código, como processos de aprovação, controle de versões 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 uma iteração rápida e uma experimentação baseada em princípios. Muitas vezes, uma versão de um comando funciona bem com uma versão específica do modelo, mas não com outra. Ao rastrear 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 ampliação de modelos

Os modelos de IA generativa, principalmente os modelos de linguagem grandes (LLMs), enfrentam desafios inerentes para manter a atualização e evitar alucinações. A codificação de novas informações em LLMs exige um pré-treinamento caro e com uso intenso de dados antes da implantação. Dependendo do caso de uso, usar apenas um modelo com solicitação para realizar uma geração específica pode não ser suficiente. Para resolver esse problema, conecte vários modelos com comandos, além de 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 relativo.

Encadeamento de modelos no processo de desenvolvimento.

Mitigação de alucinações e informações desatualizadas

Dois padrões comuns baseados em cadeia que podem reduzir a recência e as alucinações são a geração aumentada por recuperação (RAG) (PDF) e os agentes.

  • A RAG aumenta os modelos pré-treinados com conhecimento recuperado de bancos de dados, o que evita a necessidade de pré-treinamento. A RAG permite o embasamento e reduz as alucinações ao incorporar informações factuais atualizadas diretamente no processo de geração.
  • Os agentes, popularizados pela técnica de solicitação ReAct (PDF), usam LLMs como mediadores que interagem 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ções 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 é 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 diferencia essas cadeias de componentes de IA generativa é 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 de forma isolada e depois encadeá-los no aplicativo de IA. Na IA generativa, você desenvolve uma cadeia durante a integração, realiza experimentos de ponta a ponta nela e itera estratégias de encadeamento, comandos, modelos de fundação e outras APIs de maneira coordenada para alcançar uma meta específica. Muitas vezes, não é necessário fazer engenharia de atributos, coleta de dados ou outros ciclos de treinamento de modelo. Basta mudar a redação do modelo de solicitação.

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 de ponta a ponta, e não apenas de cada componente, para medir 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 com comandos.
  • Controle de versões:você precisa gerenciar uma cadeia como um artefato completo em sua totalidade. É necessário rastrear a configuração da cadeia com o próprio histórico de revisões para análise, reprodutibilidade e compreensão dos efeitos das mudanças na saída. Os registros precisam incluir as entradas, saídas, estados intermediários da cadeia e todas as configurações usadas durante cada execução.
  • Monitoramento contínuo:para detectar degradação de desempenho, desvio de dados ou comportamento inesperado na cadeia, configure sistemas de monitoramento proativo. O monitoramento contínuo ajuda a identificar problemas em potencial com antecedência para manter a qualidade da saída gerada.
  • Introspecção:é necessário 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 as cadeias, os componentes de modelo com solicitação e o ajuste do modelo trabalham juntos em um aplicativo de IA generativa para reduzir a atualização 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 iterando.

Cadeias, modelo com comandos 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, confiar apenas na engenharia e no encadeamento de comandos para resolver o caso de uso. Para melhorar a performance das tarefas, os desenvolvedores geralmente precisam ajustar o modelo diretamente. Com o ajuste refinado, é possível mudar ativamente todas as camadas ou um subconjunto delas (ajuste refinado eficiente em termos de parâmetros) do modelo para otimizar a capacidade de realizar uma determinada tarefa. As maneiras mais comuns de ajustar um modelo são:

  • 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): treine um modelo de recompensa para prever o que os humanos prefeririam 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 avaliadores humanos para orientar 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.

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

  • A capacidade de rastrear 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. Com essa capacidade, é possível avaliar o modelo ajustado para as tarefas específicas em que ele foi treinado e comparar os resultados com modelos ajustados ou congelados anteriormente para a mesma tarefa.

Treinamento e ajuste contínuos

Em MLOps, o treinamento contínuo é a prática de treinar repetidamente modelos de machine learning 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 do mundo real mudam com o tempo. Para modelos de IA generativa, o ajuste contínuo costuma ser mais prático do que um processo de retreinamento 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 específicas. Para tarefas relativamente estáticas, como o resumo de texto, os requisitos de ajuste contínuo podem ser menores. Mas, para aplicativos dinâmicos, como chatbots que precisam de alinhamento humano constante, é necessário um ajuste mais frequente usando técnicas como o RLHF, que se baseia no feedback humano.

Para determinar a estratégia de ajuste contínuo certa, avalie 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 pelo poder de processamento paralelo, são altamente eficazes no tratamento de cargas de trabalho com uso intensivo de computação e geralmente estão associadas ao treinamento e à execução de modelos complexos de machine learning. As TPUs, por outro lado, foram projetadas especificamente pelo Google para acelerar tarefas de machine learning. As TPUs são excelentes para lidar com operações de matrizes grandes, que são 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 válido 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 fundação são treinados com dados como:

  • Conjuntos de dados de pré-treinamento (por exemplo, C4, The Pile ou dados proprietários)
  • 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 com base em dados como estes:

  • 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 nas 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ê gasta muito tempo com 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 de base, algumas instruções e talvez alguns exemplos de entradas (como aprendizado no contexto). É possível criar protótipos e lançar um aplicativo com poucos dados.

No entanto, a facilidade de prototipagem 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 fontes completamente diferentes, e todos funcionam juntos.

Considere os seguintes tipos de dados:

  • Comandos de condicionamento:instruções dadas ao modelo de fundação para orientar a saída e definir limites do que ele pode gerar.
  • Exemplos de poucas imagens:uma maneira de mostrar ao modelo o que você quer alcançar com 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 embasamento ou 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. Esses dados podem vir de APIs externas (como a Pesquisa Google) ou de APIs e fontes de dados internas.
  • Conjuntos de dados específicos da tarefa:os conjuntos de dados que ajudam a ajustar um modelo de fundação para uma tarefa específica, melhorando o desempenho nessa área.
  • Conjuntos de dados de pré-treinamento completos:os conjuntos de dados enormes usados para treinar inicialmente os modelos de base. Embora os desenvolvedores de aplicativos não tenham acesso a eles ou aos tokenizadores, as informações codificadas no próprio modelo influenciam a saída e o desempenho do aplicativo.

Essa variedade de tipos de dados adiciona uma camada de complexidade em termos de organização, rastreamento e gerenciamento do ciclo de vida dos dados. Por exemplo, um aplicativo baseado em RAG pode reescrever consultas do usuário, reunir dinamicamente exemplos relevantes usando um conjunto selecionado de exemplos, consultar um banco de dados vetorial e combinar as informações com um modelo de solicitação. 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 disparos selecionados e informações da empresa, além de modelos de comandos.

Cada tipo de dado precisa de organização e manutenção cuidadosas. Por exemplo, um banco de dados vetorial exige o processamento de dados em incorporações, 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 controle de versões e rastreamento, e as consultas dos usuários precisam ser reescritas. As práticas recomendadas de MLOps e DevOps podem ajudar com essas tarefas. Na IA preditiva, você cria pipelines de dados para extração, transformação e carregamento. Na IA generativa, você cria pipelines para gerenciar, desenvolver, adaptar e integrar diferentes tipos de dados de maneira versionável, rastreável e reproduzível.

O ajuste refinado de modelos de fundação pode aumentar o desempenho de aplicativos de IA generativa, mas os modelos precisam de dados. Para isso, inicie o aplicativo e colete dados do mundo real, gere dados sintéticos ou use 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. No entanto, ainda é importante que os humanos verifiquem os resultados para garantir a qualidade. Confira a seguir exemplos de como usar modelos grandes para fins de 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 eficientes 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 rotulados do mundo real são escassos.
  • Correção de dados sintéticos:essa técnica se concentra em identificar e corrigir erros e inconsistências em 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.
  • Aumento de dados sintéticos:essa abordagem vai além da geração de novos dados. Aumentar os dados sintéticos envolve manipular de maneira inteligente os dados atuais para criar variações diversas, preservando recursos e relações essenciais. A IA generativa pode encontrar uma variedade maior de cenários do que a IA preditiva durante o treinamento, o que leva a uma generalização aprimorada e à capacidade de gerar resultados sutis e relevantes.

Ao contrário da IA preditiva, é difícil avaliar a IA generativa. Por exemplo, talvez você não conheça a distribuição dos dados de treinamento dos modelos de base. 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 os dados de ajuste refinado, é possível usar LLMs avançados para gerar, organizar 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: desde totalmente conduzida por humanos até totalmente automatizada por um processo.

Ao criar um protótipo de projeto, a avaliação costuma ser um processo manual. Os desenvolvedores revisam as saídas do modelo, tendo uma ideia qualitativa de como ele está funcionando. Mas, à 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ê avance mais rápido e torna as avaliações mais confiáveis. Ela também elimina a subjetividade humana da equação, o que ajuda a garantir que os resultados sejam reproduzíveis.

Mas a automação da avaliação de aplicativos de IA generativa tem um conjunto próprio de desafios. Por exemplo, considere o seguinte:

  • As entradas (comandos) e as saídas podem ser incrivelmente complexas. Um único comando pode incluir várias instruções e restrições que o modelo precisa gerenciar. As saídas costumam ser 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 seu sistema. Por exemplo, você pode pedir a um modelo de linguagem grande (como o AutoSxS) para avaliar 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. Você precisa garantir que sua avaliação automatizada esteja alinhada ao julgamento humano, porque quer que suas métricas sejam um proxy confiável do que as pessoas pensariam. Para garantir a comparabilidade entre experimentos, determine sua abordagem de avaliação e métricas no início do processo de desenvolvimento.
  • Falta de dados de verdade fundamental, principalmente nos estágios iniciais 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 aplicativos de IA generativa contra ataques adversários. Agentes maliciosos 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 (alimentar 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, estabilize a abordagem de avaliação, as métricas e os dados de verdade fundamentada o mais cedo possível na fase de desenvolvimento.
  • Gere dados sintéticos de informações empíricas para compensar a falta de dados reais.
  • Inclua casos de teste de comandos adversários 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 de Production são sistemas complexos com muitos componentes interativos. Para implantar um aplicativo de IA generativa em produção, é necessário gerenciar e coordenar esses componentes com as etapas anteriores do 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 um processo de implantação próprio.

A implantação de aplicativos de IA generativa é semelhante à implantação de 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ão e CI/CD.

Controle de versão

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

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

Integração contínua

Em um framework de integração contínua, toda mudança de código passa por testes automáticos antes da mesclagem para detectar problemas antecipadamente. Os testes de unidade e 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 fazer o seguinte:

  • Garantir saídas confiáveis e de alta qualidade:testes rigorosos aumentam a confiança no desempenho e na consistência do sistema.
  • Detecte bugs cedo:a identificação de problemas por meio de testes evita que eles causem problemas maiores mais tarde. Detectar bugs no início torna o sistema mais robusto e resiliente a casos extremos e entradas inesperadas.
  • Custos de manutenção menores:casos de teste bem documentados simplificam a solução de problemas e permitem modificações mais tranquilas no futuro, reduzindo os esforços gerais de manutenção.

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 solicitação, a cadeia, a lógica de encadeamento, os modelos incorporados e os sistemas de recuperação.

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

  • Dificuldade em gerar casos de teste abrangentes:a natureza complexa e aberta das saídas da IA generativa dificulta a definição e a criação de um conjunto exaustivo de casos de teste que cubram todas as possibilidades.
  • Problemas de reprodutibilidade:alcançar resultados determinísticos e reproduzíveis é difícil 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 dos 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 mais testes antes da implantação final.

Conforme descrito em Desenvolver e testar, os elementos de cadeia se tornam um dos principais componentes a serem implantados porque constituem fundamentalmente o aplicativo de IA generativa. O processo de entrega do aplicativo de IA generativa que contém a cadeia pode variar dependendo dos 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 executado de acordo com uma programação em produção. O processo de entrega se concentra em testar todo o pipeline em 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, escalonabilidade, confiabilidade e desempenho) com 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 a Vertex AI:

  • Configurar o controle de versões:implemente práticas de controle de versões para implantações de modelos. Com o controle de versões, é possível reverter para versões anteriores, se necessário, e acompanhar as mudanças feitas na configuração do modelo ou da implantação.
  • Otimize o modelo:realize tarefas de otimização (destilação, quantização e poda) antes de empacotar ou implantar o modelo.
  • Conteinerize 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 o desempenho ideal do modelo, como GPUs, TPUs e outros aceleradores de hardware especializados.
  • Defina 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 no tráfego esperado e nos requisitos de desempenho.
  • 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 e recebam respostas do modelo.
  • Configure o monitoramento e o registro em registros:configure sistemas de monitoramento e registro em registros para acompanhar o desempenho do endpoint, a utilização de recursos e os registros de erros.
  • Implante integrações personalizadas:integre o modelo a aplicativos ou serviços personalizados usando o SDK ou as APIs dele.
  • Implante 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 exige técnicas que podem ser adicionadas às técnicas de monitoramento usadas para MLOps convencionais. É necessário registrar e monitorar o aplicativo de ponta a ponta, o que inclui o registro e o monitoramento da entrada e saída geral do aplicativo e de todos os componentes.

As entradas do aplicativo acionam vários componentes para produzir as saídas. Se a saída para uma determinada entrada for factualmente imprecisa, determine qual dos componentes não teve um bom desempenho. Você precisa de linhagem no seu registro em todos os componentes executados. Você também precisa mapear as entradas e os componentes com todos os artefatos e parâmetros adicionais de que eles dependem para poder 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 ele está funcionando bem, isso significa que todos os componentes também estão. Depois, aplique o monitoramento aos componentes do modelo solicitado para ter resultados mais granulares e entender melhor seu aplicativo.

Assim como no monitoramento convencional em MLOps, você precisa implantar um processo de alerta para notificar os proprietários de aplicativos quando um desvio, uma distorção ou uma degradação de desempenho for detectada. Para configurar alertas, é preciso integrar ferramentas de alerta e notificação ao seu processo de monitoramento.

As seções a seguir descrevem o monitoramento de viés e deriva e as tarefas de avaliação contínua. Além disso, o monitoramento em MLOps inclui o monitoramento das métricas de integridade geral do sistema, como utilização de recursos e 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 entre treinamento e disponibilização que ocorre quando a distribuição de dados de atributos na produção é diferente da distribuição de dados de atributos observada durante o treinamento de modelo. Para aplicativos de IA generativa que usam modelos pré-treinados em componentes encadeados para produzir a saída, também é necessário medir o viés. É possível medir o desvio comparando a distribuição dos dados de entrada usados para avaliar o aplicativo e a distribuição das entradas do aplicativo em produção. Se as duas distribuições se afastarem, investigue mais a fundo. Você 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 desvio 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. Com a deriva, é possível avaliar as entradas e, portanto, como o comportamento dos usuários muda com o tempo.

Como a entrada do aplicativo geralmente é texto, é possível usar diferentes métodos 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 tamanho da entrada) quanto conceituais (como 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 a natureza dos novos dados que estão chegando. Alguns métodos comuns incluem:

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 seus 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 o desempenho do modelo ao longo do tempo. Você pode coletar feedback direto dos usuários, como classificações, que fornecem insights imediatos sobre a qualidade percebida das respostas. Paralelamente, a comparação das respostas geradas pelo modelo com informações empíricas estabelecidas permite uma análise mais detalhada da performance. É possível coletar informações empíricas por 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 hoje.

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 machine learning, incluindo todas as atividades relacionadas aos ciclos de vida de código, dados e modelos.

Em aplicativos de IA preditiva, a linhagem se concentra em rastrear e entender a jornada completa de um modelo de machine learning. 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 os dados e métricas de avaliação relativos. O rastreamento de linhagem pode ajudar você a auditar, depurar e melhorar seus modelos.

Além dessas novas práticas, é possível 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

Autores: Anant Nawalgaria, Christos Aniftos, Elia Secchi, Gabriela Hernandez Larios, Mike Styer e Onofrio Petragallo