首页 > 其他分享 >LONGAGENT:优化大模型处理长文本

LONGAGENT:优化大模型处理长文本

时间:2024-07-29 20:56:33浏览次数:14  
标签:处理 模型 领导者 LONGAGENT 文本 优化 成员

人工智能咨询培训老师叶梓 转载标明出处

有的大模型(LLMs),尽管在语言理解和复杂推理任务上取得了显著进展,但在处理这些超长文本时却常常力不从心。它们在面对超过10万令牌的文本输入时,常常会出现性能严重下降的问题,这被称为“中间丢失”现象。这一问题不仅限制了LLMs在实际应用中的有效性,也对计算资源提出了巨大的挑战。

本文将介绍一种创新的解决方案——LONGAGENT,这是由复旦大学的研究团队提出的一种基于多代理协作的方法,它成功地将语言模型的上下文窗口扩展到128k令牌,显著提升了长文本处理的能力。与传统的单模型处理方式相比,LONGAGENT通过分散任务给多个代理,不仅降低了单个模型的计算负担,还通过代理间的协作和信息共享,有效解决了长文本中的信息丢失和处理延迟问题。这一突破性进展,为长文本的高效处理和深入理解打开了新的大门,预示着在处理大规模文本数据方面的一个新时代的到来。

方法

LONGAGENT通过将长文本分割成多个小块,分配给不同的成员处理,然后由领导者协调这些成员,共同完成对长文本的深入理解和分析。在这一过程中,领导者的作用至关重要。它不仅需要理解用户的查询意图,还要组织成员之间的讨论,监督成员间的沟通,以解决由于模型幻觉导致的意见冲突,并最终汇总信息,推导出回答。这一机制有效地扩展了模型的处理能力,使其能够处理超过100k令牌的长文本,同时保持了高效的计算效率。

LONGAGENT协作方案的流程图

图1展示了LONGAGENT协作方案的工作原理。说明了LONGAGENT如何处理长文本并生成最终响应。

  1. 文本分割:输入的长文本(图左)首先被分割成若干个小块(chunks),这些文本块随后被分配给不同的成员(members)进行处理。

  2. 领导者接收指令:领导者(Leader)接收到用户指令(图右),这些指令通常是一个问题或一个需要模型执行的任务。

  3. 子问题分解:领导者将用户指令分解为最简单的子问题(sub-problems),这样做可以帮助各个成员更清晰地理解他们需要解决的具体任务。

  4. 成员讨论:领导者召集成员进行讨论,每个成员根据自己的文本块内容提供信息。这个讨论过程可能涉及多轮对话,以确保从各个成员那里收集到所有必要的信息。

  5. 解决子问题:在讨论过程中,成员们协作解决每一个子问题,领导者负责监督这个过程,并确保所有子问题都能得到妥善解答。

  6. 最终响应生成:一旦所有子问题都得到了答案,领导者将这些答案综合起来,进行推理,形成对原始用户指令的最终响应。

这个协作方案的优势在于它能够有效地利用多个代理的集体智慧来处理复杂的长文本任务,同时通过领导者的协调来解决成员之间可能存在的信息冲突,从而提高整体的回答质量和准确性。

为了构建一个能够有效处理特定长文本任务的代理团队,LONGAGENT采用了专家模型的概念。这些专家模型在特定任务上表现出色,能够提供更准确和可靠的响应。研究团队通过使用提示(prompt)或微调(fine-tuning)的方法,构建了这些专家模型。在任务开始时,领导者会根据任务描述选择合适的专家模型来实例化团队成员。

在处理用户查询时,领导者需要协调各个成员,以获取和整合相关信息。领导者会根据历史对话状态和用户查询,决定下一步的行动,这可能包括发起新一轮的对话、解决成员间的冲突,或是得出最终答案。这一协作推理过程可能涉及多轮对话,直到领导者认为已经收集到足够的信息来推导出用户查询的答案。

由于模型幻觉的存在,成员可能会提供与文档内容不符的错误答案。为了解决这一问题,LONGAGENT引入了成员间的通信机制。当领导者发现成员间存在冲突的答案时,它会识别出这些冲突,并要求相关成员共享文本块,并通过直接交互来消除幻觉性的回答。这一策略被证明是简单而有效的,大多数经历幻觉的成员在收到包含正确答案的文本块后,能够纠正它们最初的错误回答。

LongAgent工作机制的概览

图2展示了LONGAGENT如何通过分步骤的协作和推理过程,有效地处理长文本并生成准确的回答。这种多代理协作方法不仅提高了处理长文本的效率,而且通过减少单个模型处理大量信息的负担,提高了整体的准确性和可靠性。

  1. 成员选择(Step 1):领导者根据任务描述构建一个定制化的代理团队。这意味着领导者会根据特定任务的需求,选择或实例化具有相应专业能力的成员。例如,如果任务是回答基于给定段落的问题,领导者可能会选择问答(QA)专家模型作为团队成员。

  2. 协作推理(Step 2 & 3):领导者组织团队成员从文档中收集信息并解决冲突。这个过程可能涉及多个回合,领导者会持续监控对话状态,根据成员的回答和提供的证据来指导信息搜集的方向,并解决成员之间可能出现的意见不一致。

  3. 冲突解决:在收集信息的过程中,如果成员之间出现答案冲突,领导者需要识别这些冲突并采取措施解决。这可能包括让成员共享他们的文本块,以便直接比较和验证信息,从而纠正由于模型幻觉产生的错误答案。

  4. 最终响应生成(Step 4):当领导者认为已经收集到足够的信息来生成对用户查询的最终回答时,会结束讨论过程,并导出最终响应。这个响应是团队协作的结果,综合了所有成员提供的信息和证据。

LONGAGENT如何通过多代理协作和精心设计的通信机制,有效地扩展了语言模型在长文本处理上的能力。这种方法不仅提高了处理长文本的准确性,还通过分块处理降低了计算成本,为长文本的深入分析和理解提供了新的可能。

实验

为了全面评估LONGAGENT在长文本处理方面的能力,研究团队设计了一个先进的评估协议,包括了升级版的“Needle-in-a-Haystack”测试和一些合成任务。

Needle-in-a-Haystack PLUS:这个测试最初是为了评估模型处理长文本的能力而设计的。在PLUS版本中,研究者们将重点从简单的事实检索转移到了更具挑战性的问题回答任务,这可能涉及多个文档。在这个测试中,答案相关的实体已经被修改,以防止模型依赖内部知识来回答问题。

Synthetic Tasks:除了“Needle-in-a-Haystack PLUS”测试之外,研究团队还选择了两个广泛使用的长序列评估任务:长文本检索和数值比较。这些任务使用准确率(ACC)作为评估指标,便于评估模型在长序列处理方面的能力。

在实验中,LONGAGENT与几个强大的商业模型和学术方法进行了比较:

  • PI:通过位置插值扩展基于RoPE的预训练大型语言模型的上下文窗口大小。
  • YARN:一种改进的方法,用于高效扩展上下文窗口,通过直接修改PE来扩展到理论上的无限上下文长度。
  • Claude2.1:由Anthropic公司发布的Claude 2.1模型,具有200K令牌的上下文窗口,显著降低了模型幻觉的比率。
  • GPT-4 Turbo:OpenAI的GPT-4 Turbo模型提供128K的上下文窗口,能够处理超过300页的文本。

为了构建代理团队,研究团队对LLaMA2-7b-base进行了监督微调。在这个代理团队中,领导者负责协调成员完成各种任务。使用GPT-4生成了每个任务的1000条交互轨迹来训练领导者,并且手动验证了这些交互轨迹的正确性。成员的任务是根据领导者的指令处理文档。为了实现这一点,研究团队训练了问答专家、检索专家和数学专家来实例化成员。无论实例化了多少成员,它们都共享单一专家模型的参数。

在四个合成任务上的实验结果(准确率)
比较了GPT-4、Kimi-Chat、Claude2.1、YaRN、Ours-GPT3.5和Ours-LLaMA-7B模型的性能

训练数据的来源包括SQuAD训练集,以及自动合成的长文本检索和数值比较任务的数据。所有训练数据都与最终评估数据不重叠。

结果

研究结果表明,经过微调的LLaMA模型即使只有4k的上下文窗口,也能有效地处理长达128k的文本。在"Needle-in-a-Haystack PLUS"测试中,无论是单文档还是多文档设置,LONGAGENT都显示出比GPT-4更高的准确率,平均改进分别为19.53%和4.96%。

图3为单文档问题回答设置中Needle-in-a-Haystack PLUS的比较结果
使用LONGAGENT方案的经过微调的LLaMA2-7B模型与GPT-4相比,在1k到128k的范围内平均准确率提高了19.53%
图4为在多文档问题回答设置中Needle-in-a-Haystack PLUS的比较结果
使用LONGAGENT方案的经过微调的LLaMA2-7B模型与GPT-4相比,在1k到128k的范围内平均准确率提高了4.96%

研究团队分析了训练数据的配方和块大小对模型幻觉的影响。实验结果表明,增加训练数据中"拒绝"类型数据的比例可以提高模型正确拒绝回答的比例,但同时也可能轻微损害模型回答问题的能力。块大小的增加可以减轻幻觉问题,但超过一定大小后,幻觉问题会加剧。

训练数据中“Answer”和“Reject”类型数据的比例对模型幻觉现象的影响

在消融研究中通过比较引入通信机制前后模型准确率的差异,研究表明这一机制可以显著提高模型的准确率,平均改进达到18.9%。此外,随着文本长度的增加,成员数量和经历幻觉的成员数量也会增加,这使得通过解决冲突带来的准确率提升变得更加明显。

通过成员间通信机制提高的准确率。这种机制平均提高了1k到128k输入文本长度范围内的模型准确率18.9%

由于文本分块处理,LONGAGENT处理长文本的时间复杂度为O(N),处理时间几乎与文本长度成线性关系。实验结果表明,与具有二次复杂度的全注意力方法相比,LONGAGENT在处理长文本时具有显著的延迟优势,并且对内存的需求也更低。

LONGAGENT方案在处理长文本时的时间和内存效率显著优于直接对长文本执行全注意力机制

虽然ONGAGENT在长文本处理方面的巨大潜力。然而这项技术也存在局限性,如训练数据构建成本较高和对领导者推理能力的高要求。未来的研究将集中在优化代理间的协作机制,降低训练成本,并提高领导者的问题分解和成员协调能力和探索更高级的冲突解决策略和记忆增强技术。

论文链接:https://arxiv.org/abs/2402.11550

项目链接:https://github.com/zuucan/NeedleInAHaystack-PLUS

标签:处理,模型,领导者,LONGAGENT,文本,优化,成员
From: https://blog.csdn.net/yetzi1975/article/details/140770378

相关文章

  • 缓存优化(缓存击穿和缓存雪崩)
    缓存优化(缓存击穿和缓存雪崩)缓存击穿和缓存雪崩缓存击穿缓存击穿是指用户查询的数据在缓存中不存在,但是后端数据库中却存在。这种现象一般是由于缓存中的某个键过期导致的,比如一个热点数据键,它每时每刻都在接受大量的并发访问,如果某一刻这个键突然失效了,那么就会导致大量的并......
  • 「单调优化 dp」做题记录
    「单调优化dp」做题记录P1941[NOIP2014提高组]飞扬的小鸟设\(f(i,j)\)表示使小鸟到达\((i,j)\)所需的最少点击数。不难写出转移方程:\[f(i,j)=\min\begin{cases}f(i-1,j+y_{i-1}),\text{if}j+y_{i-1}\lem\\f(i-1,x-kx_{i-1}),k\in\mathbb{N}......
  • 数据结构优化DP
    51nod-基因匹配+luogu-【模板】最长公共子序列本题重在转化。由于最长公共子序列的下标是一个最长上升子序列,所以我们可以考虑把数字映射成下标,有多个就要倒序把每个值映射成多个不同的值,因为一个数有多种下标都是可取的。51nod-3976-最长序列与基本问题相同,但是需要根据长度插......
  • linux shell read 按列读取txt文本
    前言全局说明一、说明通常情况下,如果文本里有多列数据,会先读入,然后用grep和awk先拆分成行,在拆分成列。这样费时费力,遇到特殊字符行,还不好处理。在解决别的问题时候,无意发现read有直接按列读取的功能。二、文件2.1存放两列数据的文件文件名:list.txt1libCommonA......
  • MySQL 学习笔记 进阶(SQL优化,视图,存储过程 上)
    SQL优化 SQL优化-插入数据insert优化·批量插入insertintotb_uservalues(1,'Tom'),(2,'Cat'),(3,'Jerry');·手动提交事务starttransaction;insertintotb_uservalues(1,'Tom'),(2,'Cat'),(3,'Jerry......
  • 如何使用 bs4 在 phyton 中传递表情符号抓取文本
    我正在创建一个抓取器,用于抓取URL页面中的所有评论,并将文本保存在txt文件中(1条评论=1txt)。现在,当评论文本中有一些表情符号时,我遇到了问题。事实上,程序停止并显示“UnicodeEncodeError:‘charmap’编解码器无法对字符进行编码”。我怎样才能解决这个问题?(我用的是bs4)......
  • k8s修改pod的内核参数以优化服务网络性能
    k8s修改pod的内核参数以优化服务网络性能1、面对高并发场景:TIME_WAIT连接复用如果短连接并发量较高,它所在netns中TIME_WAIT状态的连接就比较多,而TIME_WAIT连接默认要等2MSL时长才释放,长时间占用源端口,当这种状态连接数量累积到超过一定量之后可能会导致无法新建连接。所......
  • 基于funasr+pyaudio实现电脑本地麦克风实时语音识别项目语音转文本python实现
    【框架地址】https://github.com/modelscope/FunASR【简单介绍】FunASR是一个功能全面的语音识别工具包,支持多种预训练模型的推理和微调,提供高精度和高效能的语音识别服务。结合PyAudio库,可以实现电脑本地麦克风实时语音识别项目。该项目首先通过PyAudio库捕获麦克风输入的......
  • GLSL教程 第11章:性能优化和调试
    目录11.1GLSL着色器的性能考量11.1.1减少计算复杂度避免不必要的计算使用适当的数据类型优化数学操作11.1.2减少内存访问减少纹理采样次数使用纹理缓存11.1.3优化数据传输减少数据传输量批处理(Batching)11.1.4使用高级渲染技术LevelofDetail(LOD)延迟渲染......
  • docker镜像优化
    目录优化原则使用多阶段构建有效使用缓存多层镜像构建优化优化原则(1)使用体积小的Linux镜像,比如使用alpine作为基础镜像;(2)尽可能的清理无用的缓存文件,比如尽可能把多个RUN指令合并,避免产生多个临时镜像;(3)修改dockerfile的时候,尽可能把修改的内容放在最后,这样可以充分利用......