Agent Lightning: Adicionando aprendizado de reforço a agentes de IA sem reescrever o código


Agent Lightning: Adicionando aprendizado de reforço a agentes de IA sem reescrever o código

Os agentes de IA estão remodelando o desenvolvimento de software program, desde a escrita de código até a execução de instruções complexas. No entanto, os agentes baseados em LLM são propensos a erros e muitas vezes têm um desempenho insatisfatório em tarefas complicadas e de várias etapas. A aprendizagem por reforço (RL) é uma abordagem em que os sistemas de IA aprendem a tomar decisões ideais, recebendo recompensas ou penalidades pelas suas ações, melhorando através de tentativa e erro. A RL pode ajudar os agentes a melhorar, mas normalmente exige que os desenvolvedores reescrevam extensivamente seu código. Isto desencoraja a adoção, embora os dados gerados por estes agentes possam aumentar significativamente o desempenho através do treino de RL.

Para resolver isso, uma equipe de pesquisa da Microsoft Analysis Ásia – Xangai introduziu Agente Relâmpago. Esse código aberto (abre em nova aba) A estrutura torna os agentes de IA treináveis ​​por meio de RL, separando a forma como os agentes executam tarefas do treinamento do modelo, permitindo que os desenvolvedores adicionem recursos de RL praticamente sem modificação de código.

Capturando o comportamento do agente para treinamento

O Agent Lightning converte a experiência de um agente em um formato que RL pode usar, tratando a execução do agente como uma sequência de estados e ações, onde cada estado captura o standing do agente e cada chamada LLM é uma ação que transfer o agente para um novo estado.

Essa abordagem funciona para qualquer fluxo de trabalho, não importa quão complexo seja. Quer envolva vários agentes colaboradores ou uso de ferramentas dinâmicas, o Agent Lightning divide tudo em uma sequência de transições. Cada transição captura a entrada, a saída e a recompensa do LLM (Figura 1). Este formato padronizado significa que os dados podem ser usados ​​para treinamento sem quaisquer etapas adicionais.

Figura 1: Diagrama que ilustra a interface de dados unificada do agente Lightning para um agente de geração aumentada de recuperação (RAG). À esquerda, quatro estados (state₀ a state₃) mostram o fluxo de execução do agente, onde as variáveis ​​semânticas – UserInput, Query, Passages e Answer – são atualizadas após cada chamada de componente (LLM ou Search). Os blocos verdes representam variáveis ​​preenchidas; blocos cinza indicam blocos vazios. À direita, a interface de dados unificada converte essas transições em um formato de trajetória contendo alerta, geração e recompensa imediata para o treinamento de RL.
Figura 1. Uma ilustração do formato padronizado do Agent Lightning usando um agente de geração aumentada de recuperação (RAG). Esquerda: O fluxo de trabalho completo do agente, onde o estado do agente é atualizado após cada etapa do componente. Os blocos verdes mostram variáveis ​​atribuídas e os blocos cinzas indicam variáveis ​​sem conteúdo. Certo: As transições coletadas são baseadas no formato padronizado para o processo de treinamento de RL, com cada transição correspondendo a uma etapa do LLM que contém seu immediate, resultado e recompensa imediata.

Aprendizagem por reforço hierárquico

O treinamento tradicional de RL para agentes que fazem múltiplas solicitações de LLM envolve juntar todo o conteúdo em uma longa sequência e, em seguida, identificar quais partes devem ser aprendidas e quais devem ser ignoradas durante o treinamento. Esta abordagem é difícil de implementar e pode criar sequências excessivamente longas que degradam o desempenho do modelo.

Em vez disso, o algoritmo LightningRL do Agent Lightning adota uma abordagem hierárquica. Após a conclusão de uma tarefa, um módulo de atribuição de crédito determina quanto cada solicitação de LLM contribuiu para o resultado e atribui a ela uma recompensa correspondente. Essas etapas independentes, agora combinadas com suas próprias pontuações de recompensa, podem ser usadas com qualquer algoritmo RL de etapa única existente, como Otimização de Política Proximal (PPO) ou Otimização de Política Relativa de Grupo (GRPO) (Figura 2).

Figura 2: Comparação de três abordagens de aprendizagem por reforço para tarefas LLM. (a) GRPO de etapa única: o modelo conclui a tarefa em uma chamada e vários resultados para a mesma tarefa são comparados com recompensas associadas. (b) GRPO anterior de várias etapas: A tarefa abrange várias chamadas LLM, formando trajetórias; tokens não LLM (caixas cinzas) são ignorados durante o treinamento e execuções inteiras de várias etapas são comparadas. (c) LightningRL: divide execuções de várias etapas em chamadas LLM individuais, cada uma incluindo entrada, contexto, saída e recompensa atribuída por um módulo de atribuição de crédito. As chamadas da mesma tarefa são agrupadas para reforço.
Figura 2. (a) GRPO de etapa única: O LLM conclui a tarefa em uma chamada. Múltiplas respostas para a mesma tarefa são comparadas para determinar quão fortemente cada uma deve ser reforçada. (b) GRPO anterior de várias etapas: A tarefa envolve múltiplas chamadas LLM. Várias execuções de várias etapas da mesma tarefa são comparadas, com tokens não gerados por LLM (caixas cinzas) ignorados durante o treinamento. (c) LightningRL: A execução em várias etapas é dividida em chamadas LLM individuais. As chamadas da mesma tarefa são comparadas para determinar a intensidade com que cada uma deve ser reforçada. Cada chamada inclui sua entrada, contexto, saída e recompensa, atribuídos pelo módulo de atribuição de crédito.

Este design oferece vários benefícios. Ele permanece totalmente compatível com algoritmos RL de etapa única amplamente utilizados, permitindo que métodos de treinamento existentes sejam aplicados sem modificação. A organização dos dados como uma sequência de transições independentes permite que os desenvolvedores construam com flexibilidade a entrada do LLM conforme necessário, dando suporte a comportamentos complexos, como agentes que usam diversas ferramentas ou trabalham com outros agentes. Além disso, ao manter as sequências curtas, a abordagem é dimensionada de forma limpa e mantém o treinamento eficiente.

Agente Lightning como middleware

O Agent Lightning serve como middleware entre algoritmos de RL e ambientes de agente, fornecendo componentes modulares que permitem RL escalonável por meio de protocolos padronizados e interfaces bem definidas.

Um agente corredor gerencia os agentes à medida que eles concluem as tarefas. Distribui o trabalho e coleta e armazena os resultados e dados de progresso. Ele opera separadamente dos LLMs, permitindo que sejam executados em diferentes recursos e dimensionados para suportar vários agentes em execução simultaneamente.

Um algoritmo treina os modelos e hospeda os LLMs usados ​​para inferência e treinamento. Ele orquestra o ciclo geral de RL, gerenciando quais tarefas são atribuídas, como os agentes as concluem e como os modelos são atualizados com base no que os agentes aprendem. Normalmente é executado em recursos de GPU e se comunica com o executor do agente por meio de protocolos compartilhados.

O Loja relâmpago (abre em nova aba) serve como repositório central para todas as trocas de dados dentro do sistema. Ele fornece interfaces padronizadas e um formato compartilhado, garantindo que os diferentes componentes possam trabalhar juntos e permitindo que o algoritmo e o executor do agente se comuniquem de forma eficaz.

Figura 3: Diagrama mostrando a arquitetura do Agente Lightning (AGL). À esquerda, o bloco Algoritmo AGL inclui um mecanismo de inferência (por exemplo, vLLM), um loop de iteração de algoritmo e um adaptador para dados treináveis ​​e atualização de pesos. No centro, o AGL Core contém o LightningStore, que gerencia tarefas, recursos, períodos e chamadas LLM. À direita, o AGL Agent Runner & Tracer inclui um agente definido pelo usuário usando preenchimento de chat OpenAI e agl.emit(). As setas indicam fluxos de prompts, respostas, tarefas, recursos, intervalos e conjuntos de dados entre componentes, com funções destacadas para pesquisadores de algoritmos e desenvolvedores de agentes.
Figura 3. A estrutura do Agent Lightning

Todos os ciclos de RL seguem duas etapas: (1) O Agente Lightning coleta dados de execução do agente (chamados de “spans”) e os armazena no armazenamento de dados; (2) ele então recupera os dados necessários e os envia ao algoritmo para treinamento. Por meio desse design, o algoritmo pode delegar tarefas de forma assíncrona ao executor do agente, que as conclui e reporta os resultados (Figura 4).

Figura 4: Diagrama do loop de treinamento no Agent Lightning. O elemento central é o 'Treinador', com setas formando um ciclo entre três componentes: Agente à esquerda, Algoritmo à direita e Treinador no meio. A seta superior denominada 'Tarefas' flui do Algoritmo para o Agente, enquanto a seta inferior denominada 'Expansões' flui do Agente para o Algoritmo. 'Modelos de Prompt' são indicados acima do ciclo, indicando sua função na geração de tarefas.
Figura 4. Ciclo RL do Agente Lightning

Uma das principais vantagens desta abordagem é a sua flexibilidade algorítmica. O sistema facilita aos desenvolvedores personalizar a forma como os agentes aprendem, seja definindo diferentes recompensas, capturando dados intermediários ou experimentando diferentes abordagens de treinamento.

Outra vantagem é a eficiência de recursos. Os sistemas Agentic RL são complexos, integrando sistemas agentic, mecanismos de inferência LLM e estruturas de treinamento. Ao separar esses componentes, o Agent Lightning torna essa complexidade gerenciável e permite que cada parte seja otimizada de forma independente

Um design desacoplado permite que cada componente use o {hardware} que melhor lhe convier. O executor do agente pode usar CPUs enquanto o treinamento do modelo usa GPUs. Cada componente também pode ser dimensionado de forma independente, melhorando a eficiência e facilitando a manutenção do sistema. Na prática, os desenvolvedores podem manter suas estruturas de agente existentes e alternar chamadas de modelo para a API do Agent Lightning sem alterar o código do agente (Figura 5).

Figura 5: Comparação de código lado a lado mostrando a implementação do agente antes e depois da integração do Agent Lightning. O painel esquerdo (fundo escuro) exibe o código original do agente escrito pelo desenvolvedor, incluindo lógica para chamadas LLM, uso de ferramentas e atribuição de recompensas. O painel direito (fundo claro) mostra a versão modificada usando o Agent Lightning, onde a maior parte da lógica do agente permanece inalterada, mas inclui importações e chamadas adicionais para componentes do Agent Lightning, como agl.PromptTemplate, agl.emit() e agl.Trainer para treinamento e atribuição de crédito. Um ícone de relâmpago estilizado está centralizado entre os dois painéis.
Figura 5. À esquerda, o desenvolvedor implementa o código do agente. No canto inferior direito está o código necessário para o Agente Lightning. O corpo principal do código do agente permanece inalterado.

Avaliação em três cenários do mundo actual

O Agent Lightning foi testado em três tarefas distintas, alcançando melhorias consistentes de desempenho em todos os cenários (Figura 6):

Texto para SQL (LangChain): Em um sistema com três agentes que cuidam da geração, verificação e reescrita de SQL, o Agent Lightning otimizou simultaneamente dois deles, melhorando significativamente a precisão da geração de SQL executável a partir de consultas em linguagem pure.

Geração aumentada de recuperação (implementação do OpenAI Brokers SDK): No conjunto de dados de resposta a perguntas multi-hop MuSiQue, que requer consulta a um grande banco de dados da Wikipédia, o Agent Lightning ajudou o agente a gerar consultas de pesquisa mais eficazes e a raciocinar melhor a partir do conteúdo recuperado.

Controle de qualidade matemático e uso de ferramentas (implementação do AutoGen): Para problemas matemáticos complexos, o Agent Lightning treinou LLMs para determinar com mais precisão quando e como chamar a ferramenta e integrar os resultados ao seu raciocínio, aumentando a precisão.

Figura 6: Figura com gráficos de seis linhas mostrando curvas de recompensa em três cenários de avaliação (Spider, MuSiQue, Calculator) para divisões de treinamento e teste. Linha superior: Recompensas de trem no Spider, MuSiQue e Calculadora – cada gráfico mostra uma linha azul com tendência ascendente barulhenta ao longo das etapas, indicando recompensas crescentes; Spider e Calculator sobem mais rápido com mais variância, MuSiQue sobe mais gradualmente. Linha inferior: Recompensas de teste no Spider, MuSiQue e Calculator – cada gráfico mostra uma linha azul que aumenta e depois se estabiliza em recompensas mais altas; A calculadora atinge quase o platô mais cedo, o Spider mostra ganhos constantes com pequenas flutuações, o MuSiQue melhora mais lentamente. Todos os gráficos usam 'Etapas' no eixo x e 'Recompensas' no eixo y, com uma legenda chamada 'nossa' e linhas de grade claras.
Figura 6. Curvas de recompensa nos três cenários de avaliação

Permitindo a melhoria contínua do agente

Ao simplificar a integração de RL, o Agent Lightning pode facilitar aos desenvolvedores a criação, a iteração e a implantação de agentes de alto desempenho. Planejamos expandir os recursos do Agent Lightning para incluir otimização automática de prompts e algoritmos RL adicionais.

A estrutura foi projetada para servir como uma plataforma aberta onde qualquer agente de IA pode melhorar por meio da prática do mundo actual. Ao unir os sistemas de agentes existentes com o aprendizado por reforço, o Agent Lightning visa ajudar a criar sistemas de IA que aprendem com a experiência e melhoram com o tempo.



Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *