Implemente e opere aplicações de IA generativa

Last reviewed 2024-11-19 UTC

A IA generativa introduziu uma nova forma de criar e operar aplicações de IA que é diferente da IA preditiva. Para criar uma aplicação de IA generativa, tem de escolher entre uma gama diversificada de arquiteturas e tamanhos, organizar dados, criar comandos ideais, otimizar modelos para tarefas específicas e fundamentar os resultados do modelo em dados do mundo real.

Este documento descreve como pode adaptar os processos de DevOps e MLOps para desenvolver, implementar e operar aplicações de IA generativa em modelos de base existentes. Para obter informações sobre a implementação da IA preditiva, consulte o artigo MLOps: pipelines de automatização e entrega contínua na aprendizagem automática.

O que são DevOps e MLOps?

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

O MLOps baseia-se nos princípios do DevOps para resolver os desafios da criação e do funcionamento de sistemas de aprendizagem automática (ML). Normalmente, os sistemas de aprendizagem automática usam a IA preditiva para identificar padrões e fazer previsões. O fluxo de trabalho de MLOps inclui o seguinte:

  • Validação de dados
  • Preparação de modelos
  • Avaliação e iteração de modelos
  • Implementação e publicação de modelos
  • Monitorização de modelos

O que são modelos de base?

Os modelos de base são o componente essencial numa aplicação de IA generativa. Estes modelos são programas grandes que usam conjuntos de dados para aprender e tomar decisões sem intervenção humana. Os modelos de base são preparados em muitos tipos de dados, incluindo texto, imagens, áudio e vídeo. Os modelos de base incluem modelos de linguagem (conteúdo extenso) (MDLs/CEs), como o Llama 3.1, e modelos multimodais, como o Gemini.

Ao contrário dos modelos de IA preditivos, que são preparados para tarefas específicas em conjuntos de dados focados, os modelos de base são preparados em conjuntos de dados vastos e diversificados. Esta formação permite-lhe usar modelos de base para desenvolver aplicações para muitos exemplos de utilização diferentes. Os modelos de base têm propriedades emergentes (PDF), que lhes permitem fornecer respostas a entradas específicas sem formação explícita. Devido a estas propriedades emergentes, os modelos de base são difíceis de criar e operar, e exigem que adapte os seus processos de DevOps e MLOps.

O desenvolvimento de um modelo base requer recursos de dados significativos, hardware especializado, um investimento significativo e conhecimentos especializados. Por isso, muitas empresas preferem usar modelos de base existentes para simplificar o desenvolvimento e a implementação das respetivas aplicações de IA generativa.

Ciclo de vida de uma aplicação de IA generativa

O ciclo de vida de uma aplicação de IA generativa inclui as seguintes fases:

  • Descoberta: os programadores e os engenheiros de IA identificam o modelo de base mais adequado para o respetivo exemplo de utilização. Consideram os pontos fortes, os pontos fracos e os custos de cada modelo para tomar uma decisão informada.
  • Desenvolvimento e experimentação: os programadores usam a engenharia de comandos para criar e refinar comandos de entrada para obter o resultado necessário. Quando disponíveis, a aprendizagem com poucos exemplos, o ajuste fino (PEFT) eficiente em termos de parâmetros e o encadeamento de modelos ajudam a orientar o comportamento do modelo. A encadeamento de modelos refere-se à organização de chamadas para vários modelos numa sequência específica para criar um fluxo de trabalho.
  • Implementação: os programadores têm de gerir muitos artefactos no processo de implementação, incluindo modelos de comandos, definições de cadeias, modelos incorporados, arquivos de dados de obtenção e adaptadores de modelos otimizados. Estes artefactos têm os seus próprios requisitos de governação e exigem uma gestão cuidadosa ao longo do desenvolvimento e da implementação. A implementação de aplicações de IA generativa também tem de ter em conta as capacidades técnicas da infraestrutura de destino, garantindo que os requisitos de hardware da aplicação são cumpridos.
  • Monitorização contínua em produção: os administradores melhoram o desempenho da aplicação e mantêm as normas de segurança através de técnicas de IA responsáveis, como garantir a imparcialidade, a transparência e a responsabilidade nas saídas do modelo.
  • Melhoria contínua: os programadores ajustam constantemente os modelos de base através de técnicas de pedidos, substituindo os modelos por versões mais recentes ou até combinando vários modelos para melhorar o desempenho, a rentabilidade ou a latência reduzida. A preparação contínua convencional continua a ser relevante para cenários em que é necessário um ajuste recorrente ou a incorporação de ciclos de feedback humano.

As práticas de engenharia de dados desempenham um papel fundamental em todas as fases de desenvolvimento. Para criar resultados fiáveis, tem de ter uma base factual (que garante que os resultados do modelo se baseiam em informações precisas e atualizadas) e dados recentes de sistemas internos e empresariais. Os dados de ajuste ajudam a adaptar os modelos a tarefas e estilos específicos, e retificam erros persistentes.

Encontre o modelo de base para o seu exemplo de utilização

Uma vez que a criação de modelos de base requer muitos recursos, a maioria das empresas prefere usar um modelo de base existente que seja ideal para o seu exemplo de utilização. Encontrar o modelo de base certo é difícil porque existem muitos modelos de base. Cada modelo tem arquiteturas, tamanhos, conjuntos de dados de preparação e licenças diferentes. Além disso, cada exemplo de utilização apresenta requisitos únicos, o que exige que analise os modelos disponíveis em várias dimensões.

Considere os seguintes fatores quando avaliar modelos:

  • Qualidade: execute comandos de teste para avaliar a qualidade dos resultados.
  • Latência e débito: determine a latência e o débito corretos que o seu exemplo de utilização requer, uma vez que estes fatores afetam diretamente a experiência do utilizador. Por exemplo, um chatbot requer uma latência inferior à das tarefas de resumo processadas em lote.
  • Tempo de desenvolvimento e manutenção: considere o tempo investido no desenvolvimento inicial e na manutenção contínua. Os modelos geridos requerem, muitas vezes, menos esforço do que os modelos disponíveis abertamente que implementa por si.
  • Custo de utilização: tenha em consideração os custos de infraestrutura e consumo associados ao modelo.
  • Conformidade: avalie a capacidade do modelo de cumprir os regulamentos relevantes e os termos de licenciamento.

Desenvolva e faça experiências

Ao criar aplicações de IA generativa, o desenvolvimento e a experimentação são iterativos e orquestrados. Cada iteração experimental envolve o refinamento de dados, a adaptação do modelo base e a avaliação dos resultados. A avaliação fornece feedback que orienta as iterações subsequentes num ciclo de feedback contínuo. Se o desempenho não corresponder às expectativas, pode recolher mais dados, aumentar os dados ou organizar ainda mais os dados. Além disso, pode ter de otimizar os comandos, aplicar técnicas de ajuste fino ou mudar para outro modelo base. Este ciclo de refinamento iterativo, impulsionado pelas estatísticas de avaliação, é tão importante para otimizar as aplicações de IA generativa como para a aprendizagem automática e a IA preditiva.

O paradigma do modelo de base

Os modelos de base diferem dos modelos preditivos porque são modelos multiusos. Em vez de serem preparados para um único objetivo em dados específicos dessa tarefa, os modelos de base são preparados em conjuntos de dados amplos, o que lhe permite aplicar um modelo de base a muitos exemplos de utilização diferentes.

Os modelos de base também são altamente sensíveis a alterações na respetiva entrada. A saída do modelo e a tarefa que executa são determinadas pela entrada no modelo. Um modelo de base pode traduzir texto, gerar vídeos ou classificar dados simplesmente alterando a entrada. Mesmo alterações insignificantes à entrada podem afetar a capacidade do modelo de realizar corretamente essa tarefa.

Estas propriedades dos modelos de base requerem práticas de desenvolvimento e operacionais diferentes. Embora os modelos no contexto da IA preditiva sejam autónomos e específicos de tarefas, os modelos de base são multifuncionais e precisam de um elemento adicional além da entrada do utilizador. Os modelos de IA generativa requerem um comando e, mais especificamente, um modelo de comando. Um modelo de comando é um conjunto de instruções e exemplos, juntamente com marcadores de posição para acomodar a entrada do utilizador. A aplicação pode combinar o modelo de comando e os dados dinâmicos (como a entrada do utilizador) para criar um comando completo, que é o texto transmitido como entrada para o modelo base.

O componente do modelo com comandos

A presença do comando é uma caraterística distintiva das aplicações de IA generativa. O modelo e o comando não são suficientes para a geração de conteúdo. A IA generativa precisa de ambos. A combinação do modelo e do comando é conhecida como o componente do modelo com comando. O componente do modelo pedido é o componente independente mais pequeno que é suficiente para criar uma aplicação de IA generativa. O comando não tem de ser complicado. Por exemplo, pode ser uma instrução simples, como "traduz a seguinte frase de inglês para francês", seguida da frase a traduzir. No entanto, sem essa instrução preliminar, um modelo base não executa a tarefa de tradução necessária. Assim, é necessário um comando, mesmo que seja apenas uma instrução básica, juntamente com a entrada para que o modelo base faça a tarefa exigida pela aplicação.

O componente de modelo com comandos cria uma distinção importante para as práticas de MLOps ao desenvolver aplicações de IA generativa. No desenvolvimento de uma aplicação de IA generativa, a experimentação e a iteração têm de ser feitas no contexto de um componente de modelo com comandos. Normalmente, o ciclo de experimentação da IA generativa começa com o teste de variações do comando, alterando a formulação das instruções, fornecendo contexto adicional ou incluindo exemplos relevantes, e avaliando o impacto dessas alterações. Esta prática é comummente designada por engenharia de comandos.

A engenharia de comandos envolve os seguintes passos iterativos:

  • Comandos: crie e refine comandos para obter os comportamentos desejados de um modelo de base para um exemplo de utilização específico.
  • Avaliação: avalie os resultados do modelo, idealmente de forma programática, para avaliar a sua compreensão e sucesso no cumprimento das instruções do comando.

Para acompanhar os resultados da avaliação, pode registar opcionalmente os resultados de uma experiência. Uma vez que o próprio comando é um elemento essencial do processo de engenharia de comandos, torna-se o artefacto mais importante entre os artefactos que fazem parte da experiência.

No entanto, para experimentar uma aplicação de IA generativa, tem de identificar os tipos de artefactos. Na IA preditiva, os dados, os pipelines e o código são diferentes. No entanto, com o paradigma de comandos na IA generativa, os comandos podem incluir contexto, instruções, exemplos, restrições e dados internos ou externos reais extraídos de outro local.

Para determinar o tipo de artefacto, tem de reconhecer que um comando tem diferentes componentes e requer diferentes estratégias de gestão. Considere o seguinte:

  • Comando como dados: algumas partes do comando atuam como dados. Os elementos, como exemplos de poucos disparos, bases de conhecimentos e consultas de utilizadores, são essencialmente pontos de dados. Estes componentes requerem práticas de MLOps centradas nos dados, como a validação de dados, a deteção de desvio e a gestão do ciclo de vida.
  • Comando como código: outros componentes, como o contexto, os modelos de comandos e as restrições, são semelhantes ao código. Estes componentes definem a estrutura e as regras do próprio comando e requerem práticas mais centradas no código, como processos de aprovação, controlo de versões do código e testes.

Como resultado, quando aplica práticas de MLOps à IA generativa, tem de ter processos que ofereçam aos programadores uma forma fácil de armazenar, obter, monitorizar e modificar comandos. Estes processos permitem uma iteração rápida e uma experimentação baseada em princípios. 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. Quando acompanha os resultados de uma experiência, tem de registar 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, particularmente os grandes modelos de linguagem (GMLs), enfrentam desafios inerentes na manutenção da atualidade e na prevenção de alucinações. A codificação de novas informações em MDIs/CEs requer uma pré-aprendizagem dispendiosa e com grande volume de dados antes de poderem ser implementados. Consoante o exemplo de utilização, usar apenas um modelo com comandos para realizar uma geração específica pode não ser suficiente. Para resolver este problema, pode associar vários modelos com comandos, juntamente com chamadas a APIs externas e lógica expressa como código. Uma sequência de componentes do modelo com comandos ligados desta forma é comummente conhecida como uma cadeia.

O diagrama seguinte mostra os componentes de uma cadeia e o processo de desenvolvimento relativo.

Encadeamentos de modelos no processo de desenvolvimento.

Mitigação da atualidade e alucinação

Dois padrões comuns baseados em cadeias que podem mitigar a atualidade e as alucinações são a geração aumentada de obtenção (RAG) (PDF) e os agentes.

  • A RAG aumenta os modelos pré-preparados com conhecimentos extraídos de bases de dados, o que evita a necessidade de pré-preparação. A RAG permite o fundamento e reduz as alucinações incorporando informações factuais atualizadas diretamente no processo de geração.
  • Os agentes, popularizados pela técnica de pedidos ReAct (PDF), usam MDIs como mediadores que interagem com várias ferramentas, incluindo sistemas RAG, APIs internas ou externas, extensões personalizadas ou até outros agentes. Os agentes permitem consultas complexas e ações em tempo real selecionando e usando dinamicamente origens de informações relevantes. O MDG, atuando como um agente, interpreta a consulta do utilizador, decide que ferramenta usar e formula a resposta com base nas informações obtidas.

Pode usar a RAG e os agentes para criar sistemas multiagentes ligados a grandes redes de informações, o que permite um processamento de consultas sofisticado e uma tomada de decisões em tempo real.

A orquestração de diferentes modelos, lógica e APIs não é novidade para as aplicações de IA generativa. Por exemplo, os motores de recomendações combinam modelos de filtragem colaborativa, modelos baseados em conteúdo e regras empresariais para gerar recomendações de produtos personalizadas para os utilizadores. Da mesma forma, na deteção de fraudes, os modelos de aprendizagem automática são integrados com sistemas baseados em regras e origens de dados externas para identificar atividades suspeitas.

O que torna estas cadeias de componentes de IA generativa diferentes é que não pode caracterizar a distribuição das entradas de componentes antecipadamente, o que torna os componentes individuais muito mais difíceis de avaliar e manter isoladamente. A orquestração provoca uma mudança de paradigma na forma como desenvolve aplicações de IA para IA generativa.

Na IA preditiva, pode iterar os modelos e os componentes separados de forma isolada e, em seguida, encadeá-los na aplicação de IA. Na IA generativa, desenvolve uma cadeia durante a integração, realiza experiências na cadeia de forma abrangente e itera estratégias de encadeamento, comandos, modelos de base e outras APIs de forma coordenada para alcançar um objetivo específico. Muitas vezes, não precisa de engenharia de funcionalidades, recolha de dados nem ciclos de preparação de modelos adicionais; basta alterar a formulação do modelo de comando.

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

  • Avaliação: devido à estreita ligação das cadeias, estas requerem uma avaliação integral, e não apenas de cada componente, para avaliar o respetivo desempenho geral e a qualidade do resultado. Em termos de técnicas de avaliação e métricas, a avaliação de cadeias é semelhante à avaliação de modelos com comandos.
  • Controlo de versões: tem de gerir uma cadeia como um artefacto completo na sua totalidade. Tem de acompanhar a configuração da cadeia com o seu próprio histórico de revisões para análise, para reprodução e para compreender os efeitos das alterações no resultado. Os seus registos têm de incluir as entradas, as saídas, os estados intermédios da cadeia e todas as configurações da cadeia que foram usadas durante cada execução.
  • Monitorização contínua: para detetar a degradação do desempenho, a deriva de dados ou o comportamento inesperado na cadeia, tem de configurar sistemas de monitorização proativa. A monitorização contínua ajuda a garantir a identificação precoce de potenciais problemas para manter a qualidade do resultado gerado.
  • Introspeção: tem de inspecionar os fluxos de dados internos de uma cadeia (ou seja, as entradas e as saídas de cada componente), bem como as entradas e as saídas de toda a cadeia. Ao oferecer visibilidade dos dados que fluem através da cadeia e do conteúdo resultante, os programadores podem identificar as origens de erros, parcialidades ou comportamento indesejável.

O diagrama seguinte mostra como as cadeias, os componentes do modelo com comandos e o ajuste fino do modelo funcionam em conjunto numa aplicação de IA generativa para reduzir a atualidade e as alucinações. Os dados são organizados, os modelos são otimizados e as cadeias são adicionadas para refinar ainda mais as respostas. Após a avaliação dos resultados, os programadores podem registar a experiência e continuar a iterar.

Cadeias, modelo com comandos e ajuste de modelos em aplicações de IA generativa.

Ajuste

Quando está a desenvolver um exemplo de utilização de IA generativa que envolve modelos de base, pode ser difícil, especialmente para tarefas complexas, depender apenas da engenharia de comandos e do encadeamento para resolver o exemplo de utilização. Para melhorar o desempenho das tarefas, os programadores precisam frequentemente de ajustar o modelo diretamente. A otimização precisa permite-lhe alterar ativamente todas as camadas ou um subconjunto de camadas (otimização precisa eficiente em termos de parâmetros) do modelo para otimizar a respetiva capacidade de realizar uma determinada tarefa. As formas mais comuns de ajustar um modelo são as seguintes:

  • Ajuste fino supervisionado: prepara o modelo de forma supervisionada, ensinando-o a prever a sequência de saída correta para uma determinada entrada.
  • Aprendizagem reforçada pelo feedback humano (ARFH): prepara um modelo de recompensa para prever o que os humanos prefeririam como resposta. Em seguida, usa este modelo de recompensa para orientar o MDG na direção certa durante o processo de ajuste. Este processo é semelhante a ter um painel de juízes humanos a orientar a aprendizagem do modelo.

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

Ajustar modelos.

No MLOps, o ajuste fino partilha as seguintes capacidades com a preparação de modelos:

  • A capacidade de acompanhar os artefactos que fazem parte da tarefa de otimização. Por exemplo, os artefactos incluem os dados de entrada ou os parâmetros usados para otimizar o modelo.
  • A capacidade de medir o impacto do ajuste. Esta capacidade permite-lhe avaliar o modelo otimizado para as tarefas específicas para as quais foi preparado e comparar os resultados com modelos otimizados anteriormente ou modelos congelados para a mesma tarefa.

Preparação e otimização contínuas

Em MLOps, a preparação contínua é a prática de preparar repetidamente modelos de aprendizagem automática num ambiente de produção. A formação contínua ajuda a garantir que o modelo permanece atualizado e tem um bom desempenho à medida que os padrões de dados do mundo real mudam ao longo do tempo. Para os modelos de IA generativa, a otimização contínua dos modelos é frequentemente mais prática do que um processo de preparação devido aos elevados custos computacionais e de dados envolvidos.

A abordagem à otimização contínua depende do seu exemplo de utilização e objetivos específicos. Para tarefas relativamente estáticas, como o resumo de texto, os requisitos de otimização contínua podem ser inferiores. No entanto, para aplicações dinâmicas, como chatbots, que precisam de um alinhamento humano constante, é necessário um ajuste mais frequente através de técnicas como o RLHF, que se baseiam no feedback humano.

Para determinar a estratégia de ajuste contínuo certa, tem de avaliar a natureza do seu exemplo de utilização e a forma como os dados de entrada evoluem ao longo do tempo. O custo também é uma consideração importante, uma vez que a infraestrutura de computação afeta significativamente a velocidade e as despesas da otimização. As unidades de processamento gráfico (GPUs) e as unidades de processamento tensor (TPUs) são hardware necessário para o ajuste fino. As GPUs, conhecidas pela respetiva capacidade de processamento paralelo, são altamente eficazes no processamento de cargas de trabalho computacionalmente intensivas e são frequentemente associadas à preparação e execução de modelos de aprendizagem automática complexos. Por outro lado, as TPUs são especificamente concebidas pela Google para acelerar as tarefas de aprendizagem automática. As TPUs destacam-se no processamento de operações de matrizes grandes, comuns em redes neurais de aprendizagem profunda.

Práticas de dados

Anteriormente, o comportamento do modelo de AA era ditado exclusivamente pelos respetivos dados de preparação. Embora isto ainda se aplique aos modelos de base, o comportamento dos modelos para aplicações de IA generativa criadas com base em modelos de base é determinado pela forma como adapta o modelo com diferentes tipos de dados de entrada.

Os modelos de base são preparados com dados como os seguintes:

  • Conjuntos de dados de pré-treino (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ências humanas

As aplicações de IA generativa são adaptadas com base em dados como os seguintes:

  • Comandos
  • Dados aumentados ou fundamentados (por exemplo, Websites, documentos, PDFs, bases de dados ou APIs)
  • Dados específicos da tarefa para PEFT
  • Avaliações específicas de tarefas
  • Dados de preferências humanas

A principal diferença para as práticas de dados entre a aprendizagem automática preditiva e a IA generativa está no início do processo do ciclo de vida. Na ML preditiva, dedica muito tempo à engenharia de dados e, se não tiver os dados certos, não pode criar uma aplicação. Na IA generativa, começa com um modelo base, algumas instruções e, possivelmente, alguns exemplos de entradas (como a aprendizagem no contexto). Pode criar protótipos e lançar uma aplicação com muito poucos dados.

No entanto, a facilidade de criação de protótipos apresenta o desafio adicional de gerir dados diversificados. A IA preditiva baseia-se em conjuntos de dados bem definidos. Na IA generativa, uma única aplicação pode usar vários tipos de dados, de origens de dados completamente diferentes, que funcionam em conjunto.

Considere os seguintes tipos de dados:

  • Comandos de condicionamento: instruções dadas ao modelo base para orientar a respetiva saída e definir limites para o que pode gerar.
  • Exemplos de poucos disparos: uma forma de mostrar ao modelo o que quer alcançar através de pares de entrada-saída. Estes exemplos ajudam o modelo a compreender as tarefas específicas e, em muitos casos, podem melhorar o desempenho.
  • Dados de fundamentação ou aumento: os dados que permitem ao modelo de base produzir respostas para um contexto específico e manter as respostas atuais e relevantes sem voltar a formar todo o modelo de base. Estes dados podem provir de APIs externas (como a Pesquisa Google) ou APIs internas e origens de dados.
  • Conjuntos de dados específicos da tarefa: os conjuntos de dados que ajudam a ajustar um modelo de base existente para uma tarefa específica, melhorando o respetivo desempenho nessa área específica.
  • Conjuntos de dados de pré-preparação completos: os conjuntos de dados massivos que são usados para preparar inicialmente os modelos de base. Embora os programadores de aplicações possam não ter acesso aos mesmos nem aos tokenizadores, as informações codificadas no próprio modelo influenciam o resultado e o desempenho da aplicação.

Esta diversidade de tipos de dados adiciona uma camada de complexidade em termos de organização, acompanhamento e gestão do ciclo de vida dos dados. Por exemplo, uma aplicação baseada em RAG pode reescrever as consultas dos utilizadores, recolher dinamicamente exemplos relevantes através de um conjunto de exemplos organizado, consultar uma base de dados vetorial e combinar as informações com um modelo de comando. Uma aplicação baseada em RAG requer que faça a gestão de vários tipos de dados, incluindo consultas de utilizadores, bases de dados vetoriais com exemplos de poucos disparos preparados e informações da empresa, bem como modelos de comandos.

Cada tipo de dados requer uma organização e uma manutenção cuidadosas. Por exemplo, uma base de dados vetorial requer o processamento de dados em incorporações, a otimização de estratégias de divisão e a garantia de que apenas as informações relevantes estão disponíveis. Um modelo de comando precisa de controlo de versões e acompanhamento, e as consultas dos utilizadores precisam de ser reescritas. As práticas recomendadas de MLOps e DevOps podem ajudar com estas tarefas. Na IA preditiva, cria pipelines de dados para extração, transformação e carregamento. Na IA generativa, cria pipelines para gerir, desenvolver, adaptar e integrar diferentes tipos de dados de forma versionável, rastreável e reproduzível.

A otimização dos modelos de base pode aumentar o desempenho das aplicações de IA generativa, mas os modelos precisam de dados. Pode obter estes dados iniciando a sua aplicação e recolhendo dados do mundo real, gerando dados sintéticos ou uma combinação de ambos. A utilização de modelos grandes para gerar dados sintéticos está a tornar-se popular porque este método acelera o processo de implementação, mas continua a ser importante que os humanos verifiquem os resultados para garantir a qualidade. Seguem-se alguns exemplos de como pode usar modelos grandes para fins de engenharia de dados:

  • Geração de dados sintéticos: este processo envolve a criação de dados artificiais que se assemelham muito aos dados do mundo real em termos das respetivas características e propriedades estatísticas. Os modelos grandes e capazes concluem frequentemente esta tarefa. Os dados sintéticos servem como dados de treino adicionais para a IA generativa, o que lhe permite aprender padrões e relações mesmo quando os dados do mundo real etiquetados são escassos.
  • Correção de dados sintéticos: esta técnica centra-se na identificação e correção de erros e inconsistências em conjuntos de dados etiquetados existentes. Ao usar o poder de modelos maiores, a IA generativa pode sinalizar potenciais erros de etiquetagem e propor correções para melhorar a qualidade e a fiabilidade dos dados de treino.
  • Aumento de dados sintéticos: esta abordagem vai além da geração de novos dados. O aumento de dados sintéticos envolve a manipulação inteligente de dados existentes para criar variações diversificadas, preservando as caraterísticas e as relações essenciais. A IA generativa pode encontrar uma gama mais ampla de cenários do que a IA preditiva durante a preparação, o que leva a uma generalização melhorada e à capacidade de gerar resultados detalhados e relevantes.

Ao contrário da IA preditiva, é difícil avaliar a IA generativa. Por exemplo, pode não conhecer a distribuição dos dados de preparação dos modelos de base. Tem de criar um conjunto de dados de avaliação personalizado que reflita todos os seus exemplos de utilização, incluindo os casos essenciais, médios e extremos. Tal como os dados de ajuste preciso, pode usar MDIs poderosos para gerar, organizar e aumentar os dados para criar conjuntos de dados de avaliação robustos.

Avaliação

O processo de avaliação é uma atividade essencial do desenvolvimento de aplicações de IA generativa. A avaliação pode ter diferentes graus de automatização: desde ser totalmente conduzida por humanos a ser totalmente automatizada por um processo.

Quando está a criar um protótipo de um projeto, a avaliação é frequentemente um processo manual. Os programadores reveem os resultados do modelo, obtendo uma perceção qualitativa do seu desempenho. No entanto, à medida que o projeto amadurece e o número de exemplos de teste aumenta, a avaliação manual torna-se um obstáculo.

A automatização da avaliação tem duas grandes vantagens: permite-lhe avançar mais rapidamente e torna as avaliações mais fiáveis. Também elimina a subjetividade humana da equação, o que ajuda a garantir que os resultados são reproduzíveis.

No entanto, a automatização da avaliação das aplicações de IA generativa tem o seu próprio conjunto 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 tem de gerir. As próprias saídas são frequentemente de alta dimensão, como uma imagem gerada ou um bloco de texto. É difícil captar a qualidade destes resultados numa métrica simples. Algumas métricas estabelecidas, como o BLEU para traduções e o ROUGE para resumos, nem sempre são suficientes. Por conseguinte, pode usar métodos de avaliação personalizados ou outro modelo base para avaliar o seu sistema. Por exemplo, pode pedir a um modelo de linguagem grande (como o AutoSxS) para classificar 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 com que um resultado seja melhor do que outro pode ser uma questão de opinião. Tem de garantir que a avaliação automática está alinhada com o julgamento humano, porque quer que as métricas sejam um indicador fiável do que as pessoas pensariam. Para garantir a comparabilidade entre as experiências, tem de determinar a abordagem de avaliação e as métricas no início do processo de desenvolvimento.
  • Falta de dados de verdade fundamental, especialmente nas fases iniciais de um projeto. Uma solução alternativa é gerar dados sintéticos para servirem como verdade fundamental temporária que pode refinar ao longo do tempo com feedback humano.
  • A avaliação abrangente é essencial para proteger as aplicações de IA generativa contra ataques adversariais. Os autores maliciosos podem criar comandos para tentar extrair informações confidenciais ou manipular os resultados do modelo. Os conjuntos de avaliação têm de abordar especificamente estes vetores de ataque através de técnicas como a geração de ruído nos comandos (introduzir variações aleatórias nos comandos) e os testes de fuga de informações.

Para avaliar as aplicações de IA generativa, implemente o seguinte:

  • Automatize o processo de avaliação para ajudar a garantir a velocidade, a escalabilidade e a reprodutibilidade. Pode considerar a automatização como um indicador do julgamento humano.
  • Personalize o processo de avaliação conforme necessário para os seus exemplos de utilização.
  • Para garantir a comparabilidade, estabilize a abordagem de avaliação, as métricas e os dados de verdade fundamental o mais cedo possível na fase de desenvolvimento.
  • Gere dados de verdade empírica sintéticos para compensar a falta de dados de verdade empírica reais.
  • Inclua exemplos de comandos adversariais como parte do conjunto de avaliação para testar a fiabilidade do próprio sistema contra estes ataques.

Implementação

As aplicações de IA generativa ao nível da produção são sistemas complexos com muitos componentes que interagem. Para implementar uma aplicação de IA generativa em produção, tem de gerir e coordenar estes componentes com as fases anteriores do desenvolvimento de aplicações de IA generativa. Por exemplo, uma única aplicação pode usar vários MDIs/CEs juntamente com uma base de dados, todos alimentados por um pipeline de dados dinâmicos. Cada um destes componentes pode exigir o seu próprio processo de implementação.

A implementação de aplicações de IA generativa é semelhante à implementação de outros sistemas de software complexos, uma vez que tem de implementar componentes do sistema, como bases de dados e aplicações Python. Recomendamos que use práticas de engenharia de software padrão, como o controlo de versões e a CI/CD.

Controlo de versões

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 gerível, tem de implementar um controlo de versões rigoroso para todos os componentes modificáveis. Estes componentes incluem o seguinte:

  • Modelos de comandos: a menos que use soluções específicas de gestão de comandos, use ferramentas de controlo de versões para acompanhar as versões.
  • Definições da cadeia: use ferramentas de controlo de versões para acompanhar as versões do código que define a cadeia (incluindo integrações de APIs, chamadas de bases 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 estatísticas de dados existentes, como o BigQuery, o AlloyDB for PostgreSQL e o Vertex AI Feature Store, para acompanhar estas alterações e versões destes conjuntos de dados.
  • Modelos de adaptadores: as técnicas, como o ajuste fino de LoRA para modelos de adaptadores, estão em constante evolução. Use soluções de armazenamento de dados estabelecidas (por exemplo, o Cloud Storage) para gerir e controlar as versões destes recursos de forma eficaz.

Integração contínua

Num framework de integração contínua, todas as alterações ao código passam por testes automáticos antes da união para detetar problemas antecipadamente. Os testes unitários e de integração são importantes para a qualidade e a fiabilidade. Os testes unitários focam-se em partes individuais do código, enquanto os testes de integração verificam se os diferentes componentes funcionam em conjunto.

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

  • Garantir resultados fiáveis e de alta qualidade: os testes rigorosos aumentam a confiança no desempenho e na consistência do sistema.
  • Detete erros antecipadamente: a identificação de problemas através de testes evita que estes causem problemas maiores mais tarde. A deteção precoce de erros torna o sistema mais robusto e resiliente a casos extremos e entradas inesperadas.
  • Custos de manutenção mais baixos: os exemplos de testes bem documentados simplificam a resolução de problemas e permitem modificações mais simples no futuro, reduzindo os esforços de manutenção gerais.

Estas vantagens são aplicáveis a aplicações de IA generativa. Aplique a integração contínua a todos os elementos do sistema, incluindo os modelos de comandos, a cadeia, a lógica de encadeamento, todos os modelos incorporados e os sistemas de obtenção.

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

  • Dificuldade em gerar exemplos de testes abrangentes: a natureza complexa e aberta dos resultados da IA generativa dificulta a definição e a criação de um conjunto exaustivo de exemplos de testes que abranjam todas as possibilidades.
  • Problemas de reprodutibilidade: alcançar resultados determinísticos e reproduzíveis é difícil porque os modelos generativos têm frequentemente aleatoriedade intrínseca e variabilidade nas respetivas saídas, mesmo para entradas idênticas. Esta aleatoriedade torna mais difícil testar consistentemente os comportamentos esperados.

Estes desafios estão estreitamente relacionados com a questão mais ampla de como avaliar as aplicações de IA generativa. Pode aplicar muitas das mesmas técnicas de avaliação ao desenvolvimento de sistemas de CI para IA generativa.

Entrega contínua

Após a união do código, inicia-se um processo de entrega contínua para mover o código criado e testado através de ambientes que se assemelham muito à produção para testes adicionais antes da implementação final.

Conforme descrito em Desenvolva e experimente, os elementos da cadeia tornam-se um dos principais componentes a implementar porque constituem fundamentalmente a aplicação de IA generativa. O processo de entrega da aplicação de IA generativa que contém a cadeia pode variar consoante os requisitos de latência e se o exemplo de utilização é em lote ou online.

Os exemplos de utilização em lote requerem que implemente um processo em lote que é executado de acordo com um horário na produção. O processo de entrega centra-se em testar toda a pipeline na integração num ambiente semelhante à produção antes da implementação. Como parte do processo de teste, os programadores podem afirmar requisitos específicos sobre o débito do próprio processo em lote e verificar se todos os componentes da aplicação estão a funcionar corretamente. (Por exemplo, os programadores podem verificar as autorizações, a infraestrutura e as dependências de código.)

Os exemplos de utilização online requerem a implementação de uma API, que é a aplicação que contém a cadeia e é capaz de responder aos utilizadores com baixa latência. O seu processo de entrega envolve testar a API na integração num ambiente semelhante ao de produção. Estes testes validam se todos os componentes da aplicação estão a funcionar corretamente. Pode validar os requisitos não funcionais (por exemplo, escalabilidade, fiabilidade e desempenho) através de uma série de testes, incluindo testes de carga.

Lista de verificação da implementação

A lista seguinte descreve os passos a seguir quando implementa uma aplicação de IA generativa usando um serviço gerido, como o Vertex AI:

  • Configure o controlo de versões: implemente práticas de controlo de versões para implementações de modelos. O controlo de versões permite-lhe reverter para versões anteriores, se necessário, e acompanhar as alterações feitas à configuração do modelo ou da implementação.
  • Otimize o modelo: execute tarefas de otimização do modelo (destilação, quantização e remoção) antes de embalar ou implementar o modelo.
  • Coloque o modelo num contentor: embale o modelo preparado num contentor.
  • Defina os requisitos de hardware de destino: certifique-se de que o ambiente de implementação de destino cumpre os requisitos para o desempenho ideal do modelo, como GPUs, TPUs e outros aceleradores de hardware especializados.
  • Defina o ponto final do modelo: especifique o contentor do modelo, o formato de entrada, o formato de saída e quaisquer parâmetros de configuração adicionais.
  • Atribua recursos: atribua os recursos de computação adequados ao ponto final com base no tráfego esperado e nos requisitos de desempenho.
  • Configure o controlo de acesso: configure mecanismos de controlo de acesso para restringir o acesso ao ponto final com base nas políticas de autenticação e autorização. O controlo de acesso ajuda a garantir que apenas os utilizadores ou os serviços autorizados podem interagir com o modelo implementado.
  • Criar ponto final do modelo: criar um ponto final para implementar o modelo como um serviço de API REST. O ponto final permite que os clientes enviem pedidos ao ponto final e recebam respostas do modelo.
  • Configure a monitorização e o registo: configure sistemas de monitorização e registo para monitorizar o desempenho, a utilização de recursos e os registos de erros do ponto final.
  • Implemente integrações personalizadas: integre o modelo em aplicações ou serviços personalizados através do SDK ou das APIs do modelo.
  • Implemente aplicações em tempo real: crie um pipeline de streaming que processe dados e gere respostas em tempo real.

Registe e monitorize

A monitorização de aplicações de IA generativa e dos respetivos componentes requer técnicas que pode adicionar às técnicas de monitorização que usa para MLOps convencionais. Tem de registar e monitorizar a sua aplicação de forma abrangente, o que inclui: registar e monitorizar a entrada e a saída gerais da sua aplicação e todos os componentes.

As entradas na aplicação acionam vários componentes para produzir as saídas. Se o resultado de uma determinada entrada for factualmente incorreto, tem de determinar qual dos componentes não teve um bom desempenho. Precisa de linhagem no seu registo para todos os componentes que foram executados. Também tem de mapear as entradas e os componentes com quaisquer artefatos e parâmetros adicionais dos quais dependam para poder analisar as entradas e as saídas.

Quando aplicar a monitorização, dê prioridade à monitorização ao nível da aplicação. Se a monitorização ao nível da aplicação provar que a aplicação está a ter um bom desempenho, isto implica que todos os componentes também estão a ter um bom desempenho. Posteriormente, aplique a monitorização aos componentes do modelo com comandos para obter resultados mais detalhados e uma melhor compreensão da sua aplicação.

Tal como na monitorização convencional em MLOps, tem de implementar um processo de alerta para notificar os proprietários da aplicação quando é detetado desvio, assimetria ou degradação do desempenho. Para configurar alertas, tem de integrar ferramentas de alerta e notificação no seu processo de monitorização.

As secções seguintes descrevem a monitorização da distorção e da deriva, bem como as tarefas de avaliação contínua. Além disso, a monitorização no MLOps inclui a monitorização das métricas para o estado geral do sistema, como a utilização de recursos e a latência. Estas métricas de eficiência também se aplicam a aplicações de IA generativa.

Deteção de desvio

A deteção de desequilíbrios nos sistemas de AA convencionais refere-se ao desequilíbrio entre a preparação e a publicação que ocorre quando a distribuição de dados de funcionalidades em produção se desvia da distribuição de dados de funcionalidades que foi observada durante a preparação do modelo. Para aplicações de IA generativa que usam modelos pré-treinados em componentes encadeados para produzir o resultado, também tem de medir a distorção. Pode medir a distorção comparando a distribuição dos dados de entrada que usou para avaliar a sua aplicação e a distribuição das entradas para a sua aplicação em produção. Se as duas distribuições se afastarem, tem de investigar mais a fundo. Também pode aplicar o mesmo processo aos dados de saída.

Deteção de desvio

Tal como a deteção de desequilíbrios, a deteção de desvios verifica as diferenças estatísticas entre dois conjuntos de dados. No entanto, em vez de comparar avaliações e entradas de publicação, a variação procura alterações nos dados de entrada. A deriva permite-lhe avaliar as entradas e, por isso, como o comportamento dos seus utilizadores muda ao longo do tempo.

Uma vez que a entrada na aplicação é normalmente texto, pode usar diferentes métodos para medir a distorção e a variação. Em geral, estes métodos tentam identificar alterações significativas nos dados de produção, tanto textuais (como o tamanho da entrada) como conceptuais (como os tópicos na entrada), quando comparados com o conjunto de dados de avaliação. Todos estes métodos procuram alterações que possam indicar que a aplicação pode não estar preparada para processar com êxito a natureza dos novos dados que estão a ser recebidos. Alguns métodos comuns incluem o seguinte:

Como os exemplos de utilização da IA generativa são tão diversos, pode precisar de métricas personalizadas adicionais que capturem melhor as alterações inesperadas nos seus dados.

Avaliação contínua

A avaliação contínua é outra abordagem comum à monitorização de aplicações de IA generativa. Num sistema de avaliação contínua, captura o resultado da produção do modelo e executa uma tarefa de avaliação com esse resultado para acompanhar o desempenho do modelo ao longo do tempo. Pode recolher feedback direto dos utilizadores, como classificações, que fornecem estatísticas imediatas sobre a qualidade percebida dos resultados. Em paralelo, a comparação das respostas geradas pelo modelo com a verdade fundamental estabelecida permite uma análise mais detalhada do desempenho. Pode recolher a verdade fundamental através da avaliação humana ou como resultado de uma abordagem de modelo de IA de conjunto para gerar métricas de avaliação. Este processo oferece uma vista de como as métricas de avaliação mudaram desde o momento em que desenvolveu o modelo até ao que tem em produção hoje.

Governar

No contexto de MLOps, a governação abrange todas as práticas e políticas que estabelecem controlo, responsabilidade e transparência sobre o desenvolvimento, a implementação e a gestão contínua de modelos de aprendizagem automática, incluindo todas as atividades relacionadas com os ciclos de vida do código, dos dados e do modelo.

Nas aplicações de IA preditiva, a linhagem foca-se no acompanhamento e na compreensão do percurso completo de um modelo de aprendizagem automática. Na IA generativa, a linhagem vai além do artefacto do modelo para se estender a todos os componentes na cadeia. A monitorização inclui os dados, os modelos, a linhagem dos modelos, o código e os dados de avaliação relativos, bem como as métricas. A monitorização da linhagem pode ajudar a auditar, depurar e melhorar os seus modelos.

Juntamente com estas novas práticas, pode reger o ciclo de vida dos dados e os ciclos de vida dos componentes de IA generativa através das práticas padrão de MLOps e DevOps.

O que se segue?

Implemente uma aplicação de IA generativa com o Vertex AI

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