AI知识库

53AI知识库

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


2024年大模型Agent Tuning技术调研:工具增强,长序列,多智能体, ...
发布日期:2024-05-06 16:16:00 浏览次数: 2403


现在的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?

  • 当前的agent模型在实施行为约束时,依赖于提供prompt示例。然而,此类示例在推理过程中会消耗大量的token数量,不可避免地推高了推理成本。同时,这也对模型处理长序列信息的能力设定了更高的标准。

  • 当前agent所展现出的能力,诸如零样本学习(zero-shot)及遵循指令执行任务等智能化特性,本质上源于大型模型内部的智慧涌现效应。尽管这些能力在实际应用中表现优异,但其背后的推理过程往往伴随着较高的计算成本。

  • 现行的LLM模型,在作为可靠工具进行操作的表现上仍存在显著不足。以OpenAI于2023年发布的GPT-4为例,其任务完成准确率仅达到60.8%;而Qin等人于2024年推出的ToolLLaMAv2,虽专为提升工具使用性能而进行微调,其正确率却更低,仅有37.3%。

  • 当前,agent研究领域尚处于广阔未被充分开发的状态,蕴含着诸多待探索的课题。接下来,我将从agent调优的视角出发,阐述如何通过微调训练来赋予这些智能体以工具使用、反思、记忆、协作及辩论等关键能力。

当前,agent研究领域犹如一片亟待探索的蓝海,孕育着丰富的研究机遇。在此,我将聚焦agent调优层面,解析如何通过微调训练的方式,使agent成功习得并提升工具使用、反思、记忆、协作及辩论等多元能力。

Agents的tool能力训练

AgentTuning: Enabling Generalized Agent Abilities for LLMs

下图对Agent Instruction与AgentTuning的概念进行了概览。构建Agent Instruction的过程中,涵盖了指令生成、轨迹交互以及轨迹过滤器三个关键环节。AgentLM则是通过融合AgentInstruction与通用领域指令进行微调以获得定制化性能。AgentInstruct体系内设定了六项任务:AlfWorld、WebShop、Mind2Web、Knowledge Graph、Operating System以及Database。其中,AlfWorld、WebShop、Mind2Web及Knowledge Graph四项任务直接利用已有的完备数据集进行标准的数据分割处理;而对于Operating System与Database任务,则运用Task Derivation与Self-Instruct方法自动生成适宜的instruction内容。

训练方式是混合训练,其中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)与语言模型微调均备受瞩目,但针对两者交集领域的深入探究尚显匮乏。本研究率先填补这一空白,不仅揭示了针对代理应用对语言模型进行微调所蕴含的多种显著优势,还就此抛出了关于LLM代理微调的一系列崭新议题。

FireAct体系沿用了ReAct范式,即通过“思考-行动-观察”的循环进行交互学习,不仅构建了ReAct类型的数据集,还整合了Reflection与CoT数据资源。在模型优化阶段,运用LoRA技术进行精细化微调。参照下图(a),在微调流程中,大规模语言模型如GPT-4会依据各类数据集中抽取的问题以及不同引导策略提供的提示,生成一系列任务求解路径。这些成功解决问题的路径随后被转化为ReAct格式,用于对规模较小的语言模型进行针对性微调。

进入推理环节,如图(b)所示,经过微调的LM能够在仅接收到少量提示的情况下即开展运作,并能智能化地选取适宜的提示策略,生成弹性长度的ReAct轨迹,以应对不同难度级别的问题。例如,对于较简单的问题,模型可能仅需执行一个“思考-行动-观察”循环便能得出解决方案,无需借助额外工具辅助。

作者还就何时采用直接提示(direct prompting)与何时进行微调(fine-tuning)进行了深入探讨。对于已知问题领域,数据可通过结合直接提示与ChatGPT4等方法有效获取。此时,选择直接进行模型微调有以下优势:首先,它能提升模型的推理效率,省去了每次推理时进行少量示例(few-shot prompting)的过程;其次,微调后的模型通常展现出更强的泛化能力,能在相似但未见过的任务上表现更佳。

然而,当面临全新任务时,提示法(prompting)则显示出其独特优势。通过精心设计的提示语句,模型无需进行大规模参数调整即可引导其理解和应对未曾训练过的新情境,体现出更高的灵活性与适应性。

论文通过一系列实验证实,经微调后的Llama-2-13B模型在性能上超越了所有应用于GPT-3.5的提示技术,包括输入输出提示(Input-Output prompting, IO)、链式思考(Chain-of-thought, CoT)以及反应式交互(ReAct)。这一结果暗示,对小型开源语言模型进行微调,有可能使其表现超越那些依赖强大商业支持的同类模型。此外,由于微调后的LM在推理过程中不再需要提供少量示例(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.

数据采集阶段:针对每一项任务,我们首先获取包含原始问题及其对应基础事实答案的种子数据集。接着,我们利用LLM生成三条不同温度(分别为0.2、0.5和0.7)的轨迹,旨在在探索多种正负样本收集策略的同时,丰富正样本的多样性。在此过程中,我们选择GPT-3.5-1106作为生成高质量轨迹的工具。

Data cleaning:并非所有负样本对模型微调均有益,部分样本甚至可能产生负面影响。因此,数据清洗在我们的方法中扮演着核心角色。鉴于各任务特性的差异,我们为每个任务定制了相应的数据清理标准与流程,并在各自实验配置章节中详述。

Negative-aware reformatting:在agent调整过程中,明确区分正轨迹与负轨迹有助于模型识别成功与失败的结果。我们将此过程视作一种隐式的对比学习机制,旨在使模型从成功案例与失败案例中汲取经验。为此,在微调前,我们为正向轨迹与负向轨迹分别添加特定提示,以便模型能清晰地区分两者。

Fine-tuning:参照下图所示,模型仅对绿色部分计算损失,其中正负样本被整合在同一prompt之内。实验中采用LLaMa-2-Chat 7B/13B模型进行微调,设定训练周期为2个epoch,批处理大小为64,使用4台配备A100 GPU的设备,并借助DeepSpeed ZeRO 3阶段技术进行加速。

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驱动的智能体在掌握任务所需各项能力时存在速率上的差异。

  • 现行方法主要关注智能体的专业技能构建,而在一定程度上忽视了模型输出中广泛存在且影响重大的幻觉效应,如图所示:图a描绘了格式幻觉现象,图b则揭示了action幻觉问题。

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

推理与理解功能的有效结合被证实最为有益,其后依次为检索与指令执行。当推理与理解成分占比降至50%,整体性能分别下降1.1分和0.3分。相比之下,缩减检索与指令操作的比例,不仅不会造成显著性能损失,反而可能带来性能提升。这一发现促使我们缩小混合权重的搜索范围,并依据各类能力对应的损失曲线,大幅度削减训练所需的token数量。

为应对幻觉问题,我们引入了两类特定的负样本:一是用户在缺乏相应工具的情况下对其发起查询请求;二是用户在已有工具提供的场景下,对常规对话内容进行查询。通过这种明确的监督机制,我们旨在不仅教导模型如何执行操作,更让其懂得在何种情境下适宜扮演代理角色。

论文链接:

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轨迹的记录与解析,我们提出了一种结构化的步骤定义,该定义旨在详尽捕捉每个交互回合的细部信息。一个步骤由"input"、"output"和"next observation"三部分构成。其中,"input"部分整合了当前提示及过往交互历史,形成全面的交互上下文;"output"部分记录模型的预测结果,详细解释其决策与行动计划;而"next observation"部分则记载了环境对模型动作的反馈,对于反馈机制的建立及系统自我适应能力的提升至关重要。

AGENTRATER针对的是agent轨迹这一特殊的复杂数据集合,它显著区别于常规且单一的训练数据集。诸如Alpaca等数据集往往以单个对话回合为特色,而LMSYS Chat虽涵盖约两回合的平均对话长度,但此类数据通常体现较为简易的交互模式。尽管DialogStudio确实提供了多回合对话实例,但这些实例主要局限于用户与系统之间的交谈,缺乏与外界环境的有效互动元素。

除了agent轨迹自身的复杂性特点外,对其质量的有效评估亦是一大难题,因为现有的奖励机制通常反映的是最终结果,而非agent生成轨迹本身的优劣。为应对这些挑战,AGENTRATER引入了评分模板,借助开源模型(如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系统的整体架构概述如下:该系统依托于56K条高质量的训练样本进行模型训练。我们设计了两种独特的智能体训练与推理方案,即LUMOS-O和LUMOS-I。其中,LUMOS-O作为一种高效型公式,旨在实现一次性推理任务;而LUMOS-I则是一种自适应公式,旨在赋予智能体依据执行反馈动态调整规划的能力。我们通过在A-OKVQA与Mind2Web两个应用场景中展示LUMOS-I的实际运行实例,以进一步阐述其功能与优势。

面对各类复杂的互动性任务,常见的应对策略可归纳为三个核心步骤:(1)任务拆解为一系列子目标,(2)子目标转化为实际操作指令,(3)执行这些指令。这一流程对应于系统的规划(Planning)、锚定(Grounding)及执行(Execution)三大模块。

规划模块(PM)

该模块致力于将复杂的互动任务细分为一系列以自然语言表述的高级子目标。以“她手中的设备产自哪个国家?”这类涉及多种信息源的问题为例,需设定两个子目标:(1)识别设备品牌,(2)确定品牌所属国家/地区。这种子目标设置有助于以直观且与具体工具无关的方式,将复杂任务降解为更易处理的底层操作。规划模块旨在便于调试与新增任务计划,而不对其他模块产生干扰。

锚定模块(GM)

此模块负责将规划模块产生的高级子目标转化为具体的、可执行的操作指令。比如,对于子目标“查询Lowell Sherman的生平时期”,锚定模块会将其转译为一个或多个具体动作,如KnowledgeQuery(LowellSherman)和QA([R2], Query:“What is the living period of Lowell Sherman?”)。此处,R2代表先前检索到、可能有助于解答查询的知识片段。锚定模块具备高度可定制性,能在不影响规划模块的前提下,适应性地学习并应用新的动作指令。

执行模块(EM)

执行模块是负责实施锚定模块生成的行动指令并获取执行结果的程序。它整合了多种既有工具资源,包括API接口、神经网络模型以及虚拟仿真环境。举例来说,执行模块可通过调用维基百科或谷歌搜索API来响应KnowledgeQuery操作请求。

训练过程

所有包含多轮标注数据的样本被输入到仅解码端的模型中,对用户提示部分的token采用二进制掩码处理,不计入损失计算。模型选用LLAMA-2-7B和LLAMA-2-13B分别作为规划与锚定模块的基础,并结合了思维链(Chain-of-Thought, 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还是一片蓝海,欢迎大家来发挥自己的优势完善这个方向。


作者:是念
https://zhuanlan.zhihu.com/p/690012170



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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询