AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


2024年大模型Agent Tuning技术调研:工具增强,长序列,多智能体, ...
发布日期:2024-04-17 20:23:30 浏览次数: 2281 来源:旺知识


现在的agent的技术分为prompt engineering和训练两种方式,prompt engineering的方向发展的比较快(例如autogen,metagpt,Qwen-Agent, model-scope agent, langchain-agents, crewAI),而训练则发展比较缓慢,主要原因是数据结构比较复杂,不容易获得高质量的数据,另外,模型到了一定规模以后,不需要针对agent的范式训练,就能直接进行agent应用,但对于小模型,如果没有经过训练,本身是不具备agent相关的能力的。

本文我们调研介绍小模型的agent tuning相关的技术,agent涵盖了memory,tool use,reasoning,reflexion(能提升准确率,但会消耗更多的token,推理时间长,并不高效),collaboration,debate(最小化幻觉和谬论)等能力。

作者:张长旺, 图源:旺知识

为什么需要Agent tuning?

  • 目前的agents的方法需要prompt示例进行行为约束,而prompt示例会在推理阶段占用很多的token数目,会增加推理的成本,还对模型的长序列能力提出了更高的要求。

  • 目前的agents能力来源于大模型自身的zero-shot,instruction following等智能涌现能力,虽然效果好,但推理成本很高。

  • 现有的LLM远未达到可靠的工具使用性能:GPT-4(OpenAI,2023)的正确率为60.8%,而专门针对工具使用进行微调的ToolLLaMAv2(Qin et al.,2024)仅为37.3%。

  • 多智能体的协同优化通过fine tuning获得还存在盲区,但目前主流的agents应用框架都集成了多智能体的协作和debate的能力。

目前agents还是一片蓝海,好多工作需要我们去探索,接下来我从agent tuning的角度来介绍一下这些tool use, reflection,memory,collaboration, debate等能力怎么通过微调训练获得。

Agents的tool能力训练

AgentTuning: Enabling Generalized Agent Abilities for LLMs

Agent Instruction和AgentTuning概述如下图所示。Agent Instruction的构建,包括指令生成、轨迹交互和轨迹过滤器。AgentLM是使用AgentInstruction和通用域指令的混合进行微调的。AgentInstruct的任务有6个,AlfWorld,WebShop,Mind2Web,Knowledge Graph,Operating System和Database。ALFWorld, WebShop, Mind2Web, and

Knowledge Graph有现成的数据集,就直接进行了数据划分,Operating System 和Database任务则使用Task Derivation和Self-Instruct来构造对应的instructions。

训练方式是混合训练,其中D-general表示的是general dataset,D-agent表示的是AgentInstruct数据集,两个数据集通过一定的混合比率进行训练:

论文使用的是AgentLM-7B, 13B, and 70B(基座模型是Llama 2 chat模型),其中AgentLM-70B能够在未见过的agents任务上跟GPT-3.5相当.

注意:论文提到仅仅在agents任务上进行训练,模型在未知任务上的表现很差。

论文链接:

https://arxiv.org/abs/2310.12823arxiv.org/abs/2310.12823

代码链接:

https://github.com/THUDM/AgentTuninggithub.com/THUDM/AgentTuning

Fireact: Toward language agent fine-tuning

如下图,虽然LLM agents和语言模型微调都是热门话题,但它们的交叉点研究不足。这项工作迈出了第一步,展示了微调LMs用于agents用途的多重优势,并为LLM agent微调提出了各种新问题。

FireAct使用的还是ReAct这种thought-action-observation的这种范式,不仅构造了ReAct数据,还有Reflextion和CoT的数据,然后使用的LoRA进行的微调。如下图(a) 在微调过程中,大型LM(例如GPT-4)基于来自不同数据集的问题和来自不同方法的提示生成任务解决轨迹。然后将成功的轨迹转换为ReAct格式,以微调较小的LM。(b) 在推理过程中,微调的LM可以在没有少量提示的情况下操作,并且可以隐式地选择一种提示方法来完成具有灵活长度的ReAct轨迹,以适应不同的问题复杂性。例如,一个简单的问题可以只使用一轮思维-行动观察来解决,而不需要使用工具。

作者还探讨了什么时候直接prompting,什么时候做fine tune,对于一些已知的问题,数据可以使用prompting和chatgpt4的方法进行获取,直接进行fine tuning能够提升模型的推理速度(不需要few shot prompting),更好的泛化能力,如果任务是新的,则prompting的方法更占优势。

论文给了一些实验,微调后的Llama-2-13B可以优于所有GPT-3.5提示方法(Input-Output prompting,IO;Chain-of-thought,CoT;ReAct)。这意味着微调小型开源LMs的表现可能优于推动更强的商业LMs。由于微调的LMs不需要few shot examples,因此它们的推理变得更高效,尤其是对于迭代累积上下文的agent应用程序,发现推理时间减少了70%。

论文链接:

https://arxiv.org/abs/2310.05915arxiv.org/abs/2310.05915

代码链接:

https://fireact-agent.github.io/fireact-agent.github.io/

Learning From Failure: Integrating Negative Examples when Fine-tuning Large Language Models as Agents

如图所示,该方法可以分为四个阶段,具体如下:(1) data collection, (2) data cleaning, (3) negative-aware reformatting, and (4) finetuning.

Data collection:对于每项任务,我们都会获得初始问题和相应的基本事实答案作为种子数据。然后,我们使用LLM生成三次轨迹,每次都具有不同的温度(0.2、0.5和0.7)。这使我们能够在试验各种正负样本收集策略的同时,收集各种正样本。在本文中,我们使用GPT-3.5-1106来生成高质量的轨迹。

Data cleaning:某些负样本有利于微调模型,而其他样本可能有害。因此,数据清理在我们的方法中起着至关重要的作用。考虑到任务之间的可变性,我们采用了特定任务的数据清理标准和方法,在每个任务的实验设置中详细介绍了这些标准和方法。

Negative-aware reformatting:在agents调整过程中区分正样本和负样本有助于教模型区分成功和不成功的结果。我们将其定义为隐式对比学习,以帮助模型从成功和失败中学习。因此,在微调之前,我们将不同的提示连接到正轨迹和负轨迹,以将它们与模型区分开来。

Fine-tuning:如下图,绿色的部分会被计算在loss内,正负样本放在一个prompt里面。论文使用了LLaMa-2-Chat 7B/13B模型,训练了2个epoch,batchsize 64, 4xA100 GPU, DeepSpeed ZeRO 3 stage。

Inference:使用正样本的prompt进行推理即可。

论文链接:

https://arxiv.org/abs/2402.11651arxiv.org/abs/2402.11651

Agent-FLAN: Designing Data and Methods of Effective Agent Tuning for Large Language Models

上图显示的是Agent-FLAN和其他agent-tuning方法的比较,在论文中,作者有如下的三个发现:

  • 大多数智能体训练数据都与格式遵循(format following)和一般推理(general reasoning)纠缠在一起,导致与模型的原始预训练语言领域,即自然会话发生了显著偏离。

  • 通过沿着基本能力方面明确地分解训练数据,每个损失都表现出不同的收敛曲线,表明LLM的agents任务所需能力的学习速度不同。

  • 现有的方法主要集中在专业agent能力上,忽略了幻觉效应(如下图a是格式幻觉,b是action幻觉)在模型输出中的普遍性和重要性。

然后作者是怎么改进的呢?由于预训练没有出现过json数据以及ReAct的数据,因此ReACT做了如下图的转换,把数据变成了聊天的形式。

推理和理解是最有益的混合,然后是检索和指令:当推理和理解数据的比例减少到50%时,最终性能分别下降1.1/0.3分。通过减少检索和指令跟随的数量,性能几乎不会受到影响,甚至会得到改善。这样的现象也启发我们缩小混合权重搜索空间,并根据每种能力的损失曲线大大减少训练token。另外,为了克服幻觉,我们插入了两种不同类型的负样本:(1)没有提供工具,用户对工具的查询请求(2)提供的工具,用户对正常对话的查询请求。通过明确的监督,不仅教会模型how,而且教会模型何时充当agent。

论文链接:

https://arxiv.org/abs/2403.12881arxiv.org/abs/2403.12881

代码链接:

https://github.com/InternLM/Agent-FLANgithub.com/InternLM/Agent-FLAN

AgentOhana: Design Unified Data and Training Pipeline for Effective Agent Learning

AgentHana的工作流程如下。同构多轮数据格式旨在整合来自不同数据源的异构轨迹。AgentRater然后评估和过滤agent轨迹。最后,流式数据加载器能够集成各种数据集,并将数据随机馈送到分布式训练过程中。

该工作流构建了一个同质的JSON字典格式来封装每个轨迹的所有相关内容。具体来说,我们的格式包含了所有重要元素,如存储初始用户查询的user query、识别相应模型的model name以及记录可用模型性能分数的score。这些元素可用于区分模型,并有助于开发用于成对样本的训练,如DPO、self-reward 和AI feedback LLM。此外,将辅助轨迹信息或特定注释保存到other information中,为进一步分析或模型改进计划提供参考。

为了增强对多回合agent轨迹信息的保存和分析,提出了一个结构化的步骤定义,该定义捕获了每个交互回合的细节。一个步骤包括三个主要组成部分:intput、output和next observation。input组件整合了当前提示和过去交互的历史记录,作为交互的综合上下文。output组件捕获模型的预测,详细说明其决策和计划。next observation组件记录环境的反馈,这对反馈回路和系统自适应至关重要。

AGENTRATER:agent轨迹代表一个复杂的数据子集,不同于一般和直接的训练数据。虽然像Alpaca这样的数据集以单回合为特征,而LMSYS Chat包括平均两回合左右的对话,但这些通常包含更简单的交互模式。DialogStudio确实提供了多回合对话的例子,这些例子主要局限于用户和系统之间的对话,缺乏与外部环境的互动。除了agents轨迹复杂度高以外,agent轨迹的质量评估也是一个挑战,因为reward反应的是结果,而不是agents的轨迹生成的质量。为了解决这些问题,AgentRater的prompt template,其中开源模型(例如,Mistral)或封闭世界API(例如,ChatGPT)将根据标准对整个agent轨迹进行评级,然后分配0-5的分数。

模型:XLAM-v0.1,基座模型是Mixtral-8x7B-Instruct-v0.1,8 Nvidia H100 GPUs, QLoRA进行训练。

论文链接:

https://arxiv.org/abs/2402.15506arxiv.org/abs/2402.15506

代码链接:

https://github.com/SalesforceAIResearch/xLAMgithub.com/SalesforceAIResearch/xLAM

Agent LUMOS: Unified and Modular Training for Open-Source Language Agents

LUMOS的总体框架如下。LUMOS使用56K高质量的训练标注进行训练。我们提出了两种智能体训练和推理公式,LUMOS-O和LUMOS-I。LUMOS-O是一种高效的公式(formulation),能够进行一次推理;LUMOS-I是一种自适应公式(formulation),可帮助agent根据执行反馈进行灵活规划。我们展示了A-OKVQA和Mind2Web中的两个LUMOS-I运行示例。

对于各种复杂的交互式任务,常见的解决方案包括:(1)将任务分解为一系列子目标,(2)将子目标转换为具体行动,(3)执行这些行动。该过程对应于planning、grounding,execution模块。

Planning Module (PM).该模块旨在将复杂的任务分解为一系列用自然语言表示的高级子目标。例如,诸如“她手中的设备来自哪个国家?”这样的多模式问题需要两个子目标:(1)识别她手中设备的品牌;(2) 回答设备品牌的国家/地区。所设计的子目标有助于以可解释和工具不可知的方式将复杂任务分解为低级操作。计划模块旨在方便调试和学习新的任务计划,而不会影响其他模块。

Grounding Module (GM).该模块将PM生成的高级子目标转换为低级可执行操作。例如,GM将子目标“查询Lowell Sherman的生存期”转换为一个或多个操作,如KnowledgeQuery(LowellSherman)和QA([R2], Query:“What is theliving period of Lowell Sherman?”)。这里,R2指的是先前检索到的可能有助于回答查询的知识。接地模块可以很容易地进行定制,以在不影响计划模块的情况下学习新动作。

Execution Module (EM). 执行模块(EM)是一个实现接地模块生成的动作并获得执行结果的程序。它部署了各种现成的工具,包括API、神经模型和虚拟模拟器(virtual simulations)。例如,执行模块可以调用维基百科或谷歌搜索API来完成KnowledgeQuery操作。

训练:把所有的多轮标注的数据送入decoder-only模型,对于user promp tokens使用了binary masking,不计算loss,模型使用的是LLAMA-2-7B和LLAMA-2-13B作为planning和grounding模型,并且使用了CoT和Agent training两种方法。

LLMs in the Imaginarium: Tool Learning through Simulated Trial and Error

该论文提出了STE(simulated trial and error),STE的示例如下,在探索(exploration)阶段,LLM与工具交互,并通过试错逐步收集工具使用经验。具体而言,a)在每次试验中,LLM想象与目标工具相关的看似合理的场景,与该工具迭代交互以完成用户查询,并最终对试验进行自我反思;b) 由最近的试验轨迹组成的短期记忆鼓励从细粒度的成功和失败中学习,并更深入地探索API;c) 对过去粗粒度试错经验的长期记忆可以在很长的时间范围内保持渐进式学习。在开发(exploitation)阶段,探索经验被提炼成一组工具使用示例,用于ICL或微调。

作者在实践中有如下的发现:

  • 现有的LLM远未达到可靠的工具使用性能:GPT-4(OpenAI,2023)的正确率为60.8%,而专门针对工具使用进行微调的ToolLLaMAv2(Qin et al.,2024)仅为37.3%。

  • 事实证明,在ICL和微调设置下,STE对于使用工具增强LLM非常有效。STE将Mistral-Instrument-7B的工具使用能力提高到76.8%(绝对值提高了46.7%),使其优于ICL的GPT-4。

  • 在实践中,不断添加新的工具。微调(有或没有STE)带来了灾难性遗忘的挑战,学习新工具可能会导致LLM失去现有的工具使用能力或通用语言能力。我们证明,一个简单的经验回放策略可以在很大程度上缓解这个问题,使模型能够不断学习新工具,同时保留其先前获得的技能。

训练:使用了LLama-2-Chat-7B和Mistral-Instruct-7B两个模型,4 NVIDIA A100/A6000 GPUs,2048 tokens,为了克服灾难性遗忘,使用了continue training。作者也说了这个工作的局限性:

1.Iterative improvement.目前使用强模型进行探索(exploration),使用较小的弱模型进行开采(exploitation)。勘探开发(exploration-exploitation)也可以像之前的工作一样反复进行,随着模型能力的提高,对强大模型的依赖可以逐渐减少(例如,仅作为评估者)。

2.Compositional tool use & planning. 在工具使用的背景下,另一个重要的能力是编写/规划多个工具调用来完成复杂的查询,这是我们在这里关注的正交方向。最近的工作表明,LLM的核心能力是通过预训练编码和引出的,而不是通过微调/对齐注入的,这表明可能不需要大量的数据准备来适应复杂的工具使用,这与我们的重点不同,在我们的重点中,随着从工具端获得信息,总是需要广泛的学习和探索。

3.Larger memory capacity beyond context limit. augmented memory的容量受到LLM的上下文长度的限制。有不同种类的方法可以用于进一步放大存储器,例如使用额外的检索模块或具有更多层次/压缩的memory表示。

4.Tool unlearning? 在我们探索不断学习新工具的同时,遗忘问题也很重要,因为工具可能会不断卸载/过时。知识遗忘通常是一个具有挑战性的问题,可能有一些特定的设计支持更容易的工具遗忘,例如ToolkenGPT(Hao et al.,2021),它允许即插即用的适应,同时实现大规模示例的学习。

5.Limitations of example-based fine-tuning. 最后,基于示例的工具学习方法也存在固有的局限性,特别是当不使用工具时,仅通过positive的工具使用示例来教授模型的困难。改善这一问题的一些潜在方法是结合negative examples(例如,使用contrastive objectives)或将API的这些部分与基于例子的训练结合起来。

Trial and Error: Exploration-Based Trajectory Optimization for LLM Agents

Exploration-based Trajectory Optimization (ETO)概览如图所示,从通过behavioral cloning训练的基本LLM agent开始,我们的方法允许agent迭代收集失败轨迹,并通过不断从对比的失败-成功轨迹对中学习来更新其策略。具体地址,首先使用基于SFT的行为克隆来构建基本agent,在探索阶段,该基础agent与目标环境交互以执行一组给定任务并接收来自环境的反馈。我们从基本agent中收集失败的轨迹,并将它们与之前为这些任务收集的专家轨迹配对。随后,我们应用DPO损失来利用这些对比轨迹对微调LLM策略,从而不断改进agent。ETO可以通过收集以前ETO调优agent的失败案例扩展到多轮。

在behavior cloning阶段使用的是auto-regressive的损失:

从失败的轨迹中学习的损失是:

训练的算法流程如下,训练过程可以在一个迭代的探索-训练循环中进行表述。在ETO的探索阶段,agent探索环境以收集故障轨迹。在训练阶段,agent从“failure-success”轨迹对中学习对比信息,以更新策略。

以下是一个示例,感受一下SFT微调出来的agent和ETO调出来的agent的差别:

局限性:1.ETO通过假设agent从一开始就产生错误的动作,简化了failure-success轨迹的比较。然而,在现实情况下,agent可能会从某个中间步骤开始执行不正确的操作。如果我们能够识别agent何时进行了糟糕的动作(比如a3),那么我们应该在a>3时收集剩余动作的专家轨迹。不幸的是,大多数当前环境都不包含这样的信息,这使得进行行动层面或流程层面的奖励建模具有挑战性。一个潜在的解决方案是使用GPT-4来识别不良动作并构建细粒度的对比轨迹数据。2.这项工作主要集中在为特定的agent任务开发专门的LLMagent,对强广义agent的构建进行了有限的探索。

论文链接:

https://arxiv.org/abs/2403.02502arxiv.org/abs/2403.02502

代码链接:

https://github.com/Yifan-Song793/ETOgithub.com/Yifan-Song793/ETO

长序列相关的论文

现在长序列要么就是简单粗暴的搞数据集,买更多的卡,要么就是做一些结构的调整,前者太耗费资源了,这里选了几篇有代表性的探索一下长序列是怎么做的。

Yi: Open Foundation Models by 01.AI

注意力机制使用的是Grouped-Query Attention(GQA),Yi-6B,Yi-34B都使用了GQA(减少训练和推理的成本),激活函数使用的是SwiGLU,post-attention layer把4h的activation大小降低到了8/3h,Position Embedding则使用的是RoPE,然后base 模型使用的是4k上下文长度进行训练,然后再10B 的长token上做post train。预训练的数据预处理使用的是层级过滤,去重,去噪等等,对齐策略用的是DPO,训练框架使用的是DeepSpeed和Megatron。

启发:这个Yi模型的长序列的训练和结构设计值得借鉴,比如使用GQA,在4k长度的上下文进行训练,再在10B长的token做post train。

论文链接:

https://arxiv.org/abs/2403.04652arxiv.org/abs/2403.04652

Mixtral of Experts

Mixtral 8x7B是一个具有开放权重的稀疏专家混合模型(SMoE),在Apache 2.0下获得许可。Mixtral在大多数基准测试中都优于Llama 2 70B和GPT-3.5。由于Mixtral只对每个token使用其参数的子集,因此在低批量时可以实现更快的推理速度,在大批量时可以获得更高的吞吐量。Mixtral是一个稀疏的专家混合网络。它是一个解码器的模型,其中前馈块从一组8个不同的参数中选取。在每一层,对于每一个token,路由器网络选择其中两个组(“专家”)来处理token,并将其输出相加。这项技术增加了模型的参数数量,同时控制了成本和延迟,因为模型每个令牌只使用总参数集的一小部分。

启发:这个对于小模型的结构设计很有帮助,降低了参数量,提升了推理速度。

论文链接:

https://arxiv.org/abs/2401.04088arxiv.org/abs/2401.04088

InternLM2 Technical Report

如图所示,修改了模型结构实现方式(本质上没变),使得tp并行更方便,使用了Grouped-Query Attention(GQA),可以在提升长上下文的推理速度,减少显存的消耗。

对于长序列的数据的处理:Data Filtering Pipeline旨在过滤出低质量的长文本数据。它包括三个阶段:a)长度选择,一个基于规则的过滤器,选择超过32K字节的数据样本;b) 统计过滤器(Statistical Filters),利用统计特征来识别和删除异常数据;c) 困惑过滤器(Perplexity filters),利用困惑的差异来评估文本片段之间的连贯性,过滤出具有分散注意力的上下文的样本。注意,为长上下文训练选择的所有数据都是标准预训练语料库的子集,这意味着在预训练期间将至少学习两次长上下文数据。

预训练流程:用于预训练1.8B、7B和20B模型的token总数在2.0T到2.6T之间,预训练过程由三个不同的阶段组成。在第一阶段,使用了长度不超过4k的预训练语料库。在第二阶段,包含了50%的长度不超过32k的预训练语料库。在第三阶段,我们使用了特定能力的增强数据。在每个阶段,混合了英文、中文和代码的数据。

为了做长序列的训练,RoPE的基数从50000调整到了100 0000,使用的是flash attention和InternEvo,长序列的训练性能只下降了40%。

Long-Context Finetuning:使用了book data和github code DS-1000的长序列数据。

Tool-Augmented LLMs:

General Tool Calling:采用了ChatML格式的修改版本,通过引入“environment”角色来启用通用工具调用。这种修改在聊天场景中共享相同的格式,但在采用agent时为模型提供了更清晰的信号。此外,我们定义了两个特定的关键字来支持人工智能agent的不同用途,即代码解释器(<|interpret|>)和外部插件(<|plugin|>)。这使我们能够采用统一的流媒体格式,可以处理各种类型的插件扩展和人工智能环境,同时与通用聊天兼容。下图是一个示例格式:

Code Interpreter:还通过使用工具学习中描述的相同模式,将Python代码解释器视为一种特殊工具,增强了InternetLM2 Chat通过代码解释器解决数学问题的能力。我们采用了推理交织编码(RICO)策略,并以迭代的硬示例挖掘方式构建数据,如InternLM Math中所述。

论文链接:

https://arxiv.org/abs/2403.17297arxiv.org/abs/2403.17297

LongRoPE: Extending LLM Context Window Beyond 2 Million Tokens

LongRoPE基于三个关键创新。首先,LongRoPE充分利用了位置插值中的多维非均匀性。它根据标记位置为每个RoPE维度的RoPE旋转角度确定有效的重新缩放因子。由于识别重缩放因子的搜索空间随着目标扩展比呈指数级扩展,LongRoPE引入了一种具有两种优化技术的进化搜索算法,以提高搜索效率。

然后,LongRoPE利用一种高效、渐进的扩展策略来实现2048k上下文窗口,而无需对长度极长的文本进行直接微调,而这些文本很少且几乎不可用。该策略首先在预训练的LLM上搜索256k的长度,并在此长度下对其进行微调。然后,由于我们的非均匀位置插值允许在非微调设置中进行8×扩展,我们在微调扩展LLM上进行第二次搜索新的RoPE重缩放因子。这最终实现了LLaMA2和Mistral的2048k上下文窗口。

最后,为了缓解原始(较短)上下文窗口的性能下降,LongRoPE继续调整扩展LLM上的RoPE重新缩放因子。与从256k扩展到2048k类似,我们使用搜索算法在256k微调LLM上向下扩展到4k和8k上下文窗口,以减少位置插值。在推理过程中,如果序列长度小于8k,我们用搜索到的重缩放因子更新RoPE。

论文链接:

https://arxiv.org/abs/2402.13753arxiv.org/abs/2402.13753

多智能体训练

DebateGPT: Fine-tuning Large Language Models with Multi-agent Debate Supervision

DebateGPT的框架如下,(左)从Alpaca数据集中采样5K指令,并使用多智能体辩论的修改版本来改进生成的响应。这包括询问agents的置信度得分,总结其他agents的回答,并清理最终答案。(右)收集问答对,并使用OpenAI FineTuning API对GPT-3.5进行微调。

直接微调多智能体模型有一定的挑战,首先,尽管已经注意到增加agents和debate轮次的数量可以提高准确性,但大型语言模型中对最大上下文窗口的内在约束阻碍了agents数量和辩论持续时间的可扩展性。其次,目前的多智能体辩论配置也可能得出错误的结论,主要是因为智能体缺乏有效的机制来适当评估和整合其参与者的见解和观点。最后,产生的答案通常带有无关的以辩论为中心的短语,如“在最后一轮”或“其他agents”,这些短语对模型的改进(refinement)没有帮助。鉴于这些限制,作者提出了三个具体的修改来应对每一个挑战,从而提高多智能体辩论范式的有效性。

Summarization: 为了处理预训练语言模型中对最大上下文窗口的约束,引入了一个摘要模型,该模型在每轮辩论中总结来自其他LLM agent的响应。具体来说,在第r轮辩论中,首先收集上一轮辩论中所有其他agents的回复。对于 agent ak,将收集的响应Ar−1’k={a1,···ak−1,ak+1,··,an}发送到摘要模型,以合并这些响应,并提供给定问题的简短而清晰的答案,其中n是agents的数量。在实验中,使用另一个GPT-3.5作为summarizer,并使其与辩论agents不同。这一变化使我们能够使用更多的agents和辩论回合来获得更准确的数据,用于微调下游模型。

Confidence Scores: 为了增强主体有效评估和整合自身和其他主体反应的能力,在多主体辩论程序中集成了置信度评分机制。每个参与的agent都会被提示生成一个置信度分数,该分数在1到100的范围内。该分数反映了agents对其自身反应的准确性和可靠性的确定程度。置信度较低的答案对最终答案的影响较小。这些置信度得分有助于更统一的评估,同时整合来自不同agents的见解。

Cleaning: 为了提高最终答案的一致性,并删除通过多智能体辩论生成的无关文本,引入了一个清理模型,用于清理上一轮辩论的响应。还在提示中为该模型提供了四个GPT-4响应示例,以帮助它生成简洁一致的文本。使用单独的GPT-3.5作为清洁器,使其与debate agent和摘要模型不同。然后将清理后的数据用于微调下游模型。

下面是一个示例,取自AlpacaEval数据集,GPT-3.5算错了,DebateGPT-3.5和GPT-4算对了,论文还给了很多示例,有需要可以多看看论文。

论文链接:

https://openreview.net/forum?id=ChNy95ovpFopenreview.net/forum?id=ChNy95ovpF

CMAT: A Multi-Agent Collaboration Tuning Framework for Enhancing Small Language Models

如下图,用户将任务分配给assistant,助手根据短期和长期记忆生成SQL命令:短期记忆提供轨迹历史中的即时上下文,而自我反思输出存储为长期记忆。在环境中执行SQL命令之前,检查程序会验证这些命令的正确性。

论文工作重点是设计和实现多智能体LLM调整框架,通过不同agent角色(即User、Assistant、Checker)之间的协作通信和任务完成,提高复杂系统中的决策质量、可控性和效率。它强调使用基于预先训练的数据集(如AgentBench)的监督微调技术,如LoRA和PTuning,并通过环境交互和记忆更新进行进一步调整,类似于从人类反馈中强化学习(RLHF)的过程。有兴趣的可以看看下面的算法流程,其实就是把能力进行了拆分,通过协作完成一些复杂的任务。

论文链接:

https://arxiv.org/abs/2404.01663arxiv.org/abs/2404.01663

Memory相关的论文

memory模块主要是面临的context length超出的问题,需要对context windows进行一定的策略优化,其中一个就是memory retrieval的功能,retrieval的效果对整个模型的性能有很大的影响,因此也有一些微调retrieval模型的方法,有兴趣可以参考下面的文章:


是念:2024年大模型最快的应用落地技术-Embedding向量优化Matryoshka,Nomic Embed,JINA EMBEDDINGS 2,ColBERTv2,BGE M3,GRIT86 赞同 · 3 评论文章

总结

本文主要是对Agents的一些能力怎么优化做了一些探索,主要是数据层面,训练层面的一些认知,包括agents的轨迹,负样本轨迹,fine tuning,对比学习,context windows的memory retrieval的优化,长序列的优化,包括预训练,SFT的长序列优化技巧,MoE架构提升速度等等,目前agents tuning还是一片蓝海,欢迎大家来发挥自己的优势完善这个方向。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询