Sistemas de IA compostos
O que são os sistemas compostos de IA?
Os sistemas compostos de IA, conforme definido pelo blog Berkeley AI Research (BAIR), são sistemas que lidam com tarefas de IA combinando vários componentes que interagem entre si. Esses componentes podem incluir várias chamadas para modelos, recuperadores ou ferramentas externas. As aplicações de geração aumentada de recuperação (RAG), por exemplo, são sistemas compostos de IA, pois combinam (pelo menos) um modelo e um sistema de recuperação de dados. Os sistemas compostos de IA aproveitam os pontos fortes de vários modelos, ferramentas e pipelines de IA para aprimorar o desempenho, a versatilidade e a reutilização em comparação com o uso exclusivo de modelos individuais.
Cada vez mais muitos novos resultados de IA são de sistemas compostos (Fonte)
Os desenvolvedores estão, cada vez mais, construindo sistemas compostos de IA para lidar com as tarefas de IA mais desafiadoras. Esses sistemas geralmente podem superar os modelos isoladamente, mas, como comunidade, ainda estamos determinando a melhor maneira de projetar esses sistemas e os componentes que os integram.
Por que criar sistemas compostos de IA?
- Algumas tarefas são mais fáceis de melhorar por meio do design do sistema: o uso de modelos maiores e mais capazes pode melhorar as aplicações de IA, mas geralmente há um ponto em que os retornos diminuem. Além disso, o aprimoramento ou a personalização de um modelo por meio de treinamento ou ajuste fino pode ser lento e caro. A integração de outros modelos ou ferramentas em um sistema composto pode melhorar a qualidade da aplicação além do que pode ser alcançado por um único modelo, independentemente de sua capacidade.
- Os sistemas podem ser dinâmicos: os modelos individuais são fundamentalmente limitados por seus dados de treinamento. Eles aprendem um determinado conjunto de informações e comportamentos e não têm funcionalidades, como a capacidade de pesquisar fontes de dados externas ou impor controles de acesso. Uma abordagem de sistemas pode adicionar recursos externos, como bancos de dados, interpretadores de código, sistemas de permissões e outros, tornando os sistemas compostos de IA muito mais dinâmicos e flexíveis do que os modelos individuais.
- Melhor controle e confiança: pode ser difícil fazer com que modelos individuais retornem informações factuais ou resultados formatados de forma consistente. Isso pode exigir uma solicitação cuidadosa, vários exemplos, ajuste fino ou mesmo soluções alternativas, como sugerir a um LLM que obter uma boa resposta é uma questão de vida ou morte. A orquestração de LLMs com outras ferramentas e fontes de dados pode tornar os sistemas de IA mais confiáveis e seguros, fornecendo informações precisas de fontes externas ou usando ferramentas para aplicar melhor as restrições de formatação de saída.
- Mais opções de custo-qualidade: modelos individuais geralmente oferecem um nível fixo de qualidade a um custo fixo, mas as relações custo/qualidade disponíveis por meio de modelos únicos não são adequadas para todos os casos de uso. A capacidade de integrar LLMs com ferramentas externas oferece maior flexibilidade nas opções de custo-qualidade disponíveis. Por exemplo, um modelo pequeno e cuidadosamente ajustado combinado com várias heurísticas de busca pode fornecer bons resultados a um custo menor do que modelos maiores e mais capazes. Por outro lado, com um orçamento maior, trazer ferramentas e fontes de dados externas pode melhorar o desempenho até dos modelos maiores e mais capazes.
Como são criados os sistemas compostos de IA eficazes?
Os sistemas compostos de IA ainda são uma categoria de aplicação emergente, portanto, as práticas recomendadas que orientam seu desenvolvimento e uso ainda estão evoluindo. Há muitas abordagens diferentes para compor sistemas de IA, cada uma com diferentes benefícios e compensações. Por exemplo:
- Lógica de controle: em um sistema composto de IA, uma base de código que define a lógica de controle pode chamar um modelo para realizar tarefas específicas sob condições específicas, oferecendo a confiabilidade do fluxo de controle programático e, ao mesmo tempo, se beneficiando da expressividade dos LLMs. Outros sistemas podem usar um LLM para o fluxo de controle, oferecendo maior flexibilidade na interpretação e na ação sobre as entradas, com o possível sacrifício de alguma confiabilidade. Ferramentas como os modelos externos da Databricks podem ajudar na lógica de controle, simplificando o processo de roteamento de diferentes partes de uma aplicação para diferentes modelos.
- Onde investir tempo e recursos: ao desenvolver sistemas compostos de IA, nem sempre é óbvio se é necessário investir mais tempo e recursos no aprimoramento do desempenho do modelo ou dos modelos usados no sistema ou no aprimoramento de outros aspectos do sistema. O ajuste fino de um modelo ou até a mudança para um modelo com capacidade mais geral pode melhorar o desempenho de um sistema composto de IA, mas também pode melhorar um sistema de recuperação de dados ou outros componentes.
- Medição e otimização: a avaliação é importante em qualquer sistema que envolva modelos de IA, mas a abordagem a ser adotada é muito específica para cada aplicação. Em alguns sistemas, uma métrica discreta avaliando o desempenho de ponta a ponta pode ser adequada, enquanto em outros pode fazer mais sentido avaliar diferentes componentes individualmente. Por exemplo, em um aplicativo RAG, muitas vezes é necessário avaliar os componentes de recuperação e geração separadamente. O MLflow oferece uma abordagem flexível de avaliação que pode acomodar muitos aspectos diferentes dos sistemas compostos de IA, incluindo recuperação e geração.
Apesar das abordagens que mudam rapidamente, existem alguns princípios fundamentais para a criação de sistemas compostos de IA eficazes:
- Desenvolver um sistema de avaliação robusto: os sistemas compostos de IA tendem a envolver vários componentes que interagem entre si, e a alteração de qualquer um deles pode afetar o desempenho de todo o sistema. É essencial criar uma maneira eficaz de medir o desempenho do sistema e estabelecer a infraestrutura necessária para registrar, acessar e agir com base nessas avaliações.
- Fazer experimentos com diferentes abordagens: conforme observado acima, há poucas práticas recomendadas estabelecidas para a criação de sistemas compostos de IA. Com toda a probabilidade, será necessário experimentar diferentes formas de integrar modelos de IA e outras ferramentas, tanto em termos da lógica geral de controle de aplicações quanto dos componentes individuais. A modularidade ajuda na experimentação: é mais fácil experimentar com uma aplicação que permite troca de diferentes modelos, recuperadores de dados, ferramentas etc. O MLflow fornece um conjunto de ferramentas para avaliação e experimentação, sendo especialmente útil para o desenvolvimento de sistemas compostos de IA.
Quais são os principais desafios na construção de sistemas compostos de IA?
Os sistemas compostos de IA apresentam vários desafios de desenvolvimento importantes em comparação com os modelos de IA independentes:
- Espaço de design mais amplo: os sistemas compostos de IA combinam um ou mais modelos de IA com ferramentas como recuperadores ou interpretadores de código, fontes de dados, bibliotecas de código e muito mais. Normalmente, há várias opções para cada um desses componentes. O desenvolvimento de um aplicativo RAG, por exemplo, normalmente requer a escolha (pelo menos) de quais modelos usar para incorporação e geração de texto, qual fonte ou fontes de dados usar, onde armazenar os dados e qual sistema de recuperação usar. Sem práticas recomendadas claras, os desenvolvedores geralmente precisam investir esforços significativos para explorar esse vasto espaço de design e encontrar uma solução funcional.
- Co-otimização dos componentes do sistema: os modelos de IA geralmente precisam ser otimizados para funcionar bem com ferramentas específicas e vice-versa. A alteração de um componente de um sistema composto de IA pode alterar o comportamento de todo o sistema de maneiras inesperadas, e pode ser um desafio fazer com que todos os componentes funcionem bem juntos. Por exemplo, em um sistema RAG, um LLM pode funcionar muito bem com um determinado sistema de recuperação, enquanto outro não.
- Operações complexas: atender, monitorar e proteger os LLMs já é um desafio por si só. Combiná-los com outros modelos e ferramentas de IA pode agravar esses desafios. O uso desses sistemas compostos pode exigir que os desenvolvedores combinem ferramentas e práticas de MLOps e DataOps de maneiras exclusivas para monitorar e depurar aplicativos. O Databricks Lakehouse Monitoring pode fornecer excelente visibilidade dos complexos pipelines de dados e modelagem em sistemas compostos de IA.