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

news2024/11/23 0:47:03

现有的大模型(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1876990.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全与加密常识(0)安全与加密概述

文章目录 一、信息安全的基本概念二、加密技术概述三、常见的安全协议和实践四、加密的挑战与应对 在数字时代,信息安全和加密已成为保护个人和企业数据不受侵犯的关键技术。本文将探讨信息安全的基础、加密的基本原理,以及实用的保护措施,以…

Installed Build Tools revision xxx is corrupted. Remove and install again 解决

1.在buildTools文件下找到对应的sdk版本,首先将版本对应目录下的d8.bat改名为dx.bat。 2.在lib文件下将d8.jar改名为dx.jar。 3.重新编译工程即可

响应式宠物商店网站pbootcms模板

模板介绍 这是一款源码下载响应式宠物商店网站pbootcms模板。该模板采用响应式自适应设计,非常适合宠物行业的任何服务项目或在线商店或宠物网站,下载即用,组织代码优秀。 模板截图 源码下载 响应式宠物商店网站pbootcms模板

Python 算法交易实验74 QTV200第二步(改): 数据清洗并写入Mongo

说明 之前第二步是打算进入Clickhouse的,实测下来有一些bug 可以看到有一些分钟数据重复了。简单分析原因: 1 起异步任务时,还是会有两个任务重复的问题,这个在同步情况下是不会出现的2 数据库没有upsert模式。clickhouse是最近…

代码随想录:链表

文章目录 代码随想录---链表链表基础(创建以及增删查改)设计链表 链表的反转[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)递归法迭代法 删除链表倒数第N个结点[19. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end…

3ds Max导出fbx贴图问题简单记录

1.前言 工作中发现3ds Max导出的fbx在其它软件(Autodesk viewer,blender,navisworks,FBXReview等)中丢失了部分贴图,但导出的fbx用3ds Max打开却正常显示。 fbx格式使用范围较广,很多常见的三…

基于MDEV的PCI设备虚拟化DEMO实现

利用周末时间做了一个MDEV虚拟化PCI设备的小试验&#xff0c;简单记录一下&#xff1a; DEMO架构&#xff0c;此图参考了内核文档&#xff1a;Documentation/driver-api/vfio-mediated-device.rst host kernel watchdog pci driver: #include <linux/init.h> #include …

【Java】面试必问之Java常见线上故障排查方案详解

一、问题解析 在软件开发过程中&#xff0c;排查和修复产线问题是每⼀位⼯程师都需要掌握的基本技能。但是在⽣产环境中&#xff0c; 程序代码、硬件、⽹络、协作软件等任⼀因素&#xff0c;都会引发意想不到的问题&#xff0c;所以排查产线问题⽐较困 难&#xff0c;所以问…

关于数据库的ACID几点

首先的话就是关于ACID&#xff0c;最重要的就是原子性了&#xff0c;这是基础。 原子性是指事务包含的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成。如果不能保证原子性&#xff0c;可能会出现以下问题&#xff1a; 数据不一致&#xff1a;事务中的部分操作…

QT事件处理及实例(鼠标事件、键盘事件、事件过滤)

这篇文章通过鼠标事件、键盘事件和事件过滤的三个实例介绍事件处理的实现。 鼠标事件及实例 鼠标事件包括鼠标的移动、按下、松开、单击和双击等。 创建一个MouseEvent项目&#xff0c;通过项目介绍如何获得和处理鼠标事件。程序效果如下图所示。 界面布局代码如下&#xff…

【算法训练记录——Day36】

Day36——贪心Ⅳ 1.leetcode_452用最少数量的箭引爆气球2.leetcode_435无重叠区间3.leetcode_763划分字母区间4.leetcode_ 1.leetcode_452用最少数量的箭引爆气球 思路&#xff1a;看了眼题解&#xff0c;局部最优&#xff1a;当气球出现重叠&#xff0c;一起射&#xff0c;所用…

【工具推荐】Nuclei

文章目录 NucleiLinux安装方式Kali安装Windows安装 Nuclei Nuclei 是一款注重于可配置性、可扩展性和易用性的基于模板的快速漏洞验证工具。它使用 Go 语言开发&#xff0c;具有强大的可配置性、可扩展性&#xff0c;并且易于使用。Nuclei 的核心是利用模板&#xff08;表示为简…

多机调度问题

#include<iostream> #include<string> using namespace std; struct work {int time;int number; }; int setwork0(int m,int n,int a[],struct work w[]) {int maxtime0;for(int i1; i<m; i){cout<<i<<"号设备处理作业"<<w[i].num…

AD9026芯片开发实录5-ADRV9026 - FAQ

1. What information should I provide to help speed resolution of my issue?  Please provide as much detail as possible including all of the detail described in the table below 2. What are the key specifications of ADRV9026 chip?  The ADRV9026 is a 4…

kafka学习笔记08

Springboot项目整合spring-kafka依赖包配置 有这种方式&#xff0c;就是可以是把之前test里的配置在这写上&#xff0c;用Bean注解上。 现在来介绍第二种方式&#xff1a; 1.添加kafka依赖&#xff1a; 2.添加kafka配置方式: 编写代码发送消息&#xff1a; 测试&#xff1a; …

ROS2自定义接口Python实现机器人移动

1.创建机器人节点接口 cd chapt3_ws/ ros2 pkg create example_interfaces_rclpy --build-type ament_python --dependencies rclpy example_ros2_interfaces --destination-directory src --node-name example_interfaces_robot_02 --maintainer-name "Joe Chen" …

【STM32】在标准库中使用定时器

1.TIM简介 STM32F407系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器。通常情况下&#xff0c;先看定时器挂在哪个总线上APB1或者APB2&#xff0c;然后定时器时钟需要在此基础上乘以2。 2.标准库实现定时中断 #ifndef __BSP_TIMER_H #define __BSP_TIMER_H#if…

计算机基础知识——C基础+C指针+char类型

指针 这里讲的很细 https://blog.csdn.net/weixin_43624626/article/details/130715839 内存地址&#xff1a;内存中每个字节单位都有一个编号&#xff08;一般用十六进制表示&#xff09; 存储类型 数据类型 *指针变量名&#xff1b;int *p; //定义了一个指针变量p,指向的数…

自研Eclipse插件的生成及安装和使用

说明&#xff1a; 本处是使用个人自研的Eclipse插件为例&#xff0c;创建了一个菜单式的插件组&#xff0c;插件组下&#xff0c;有一个生成右击Jakarta EE服务端点类后&#xff0c;生成端点对应的Restful客户端。有什么问题&#xff0c;欢迎大家交流&#xff01;&#xff01;…

仓库管理系统11--物资设置

1、添加用户控件 <UserControl x:Class"West.StoreMgr.View.GoodsTypeView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://schemas.openxm…