LLoCO技术:突破大型语言模型处理长文本的局限

在自然语言处理领域,大型语言模型(LLMs)虽然在众多任务上展现出了卓越的能力,但在处理长文本上下文时却遭遇了瓶颈。由于自注意力机制导致的计算和内存开销随序列长度呈二次方增长,使得这些模型在面对长文本时力不从心。尤其是在需要理解和推理大量信息的场景,如长篇文档问答,LLMs往往难以有效应对。

针对这一问题,加州大学伯克利分校的研究团队提出了LLoCO技术,这是一种针对LLaMA2-7B模型的创新扩展。LLoCO通过离线学习和参数高效的微调方法,使得模型能够处理远超传统上下文窗口限制的长文本。LLoCO利用上下文压缩技术将长文本转化为简洁的摘要嵌入,并通过LoRA(Low-Rank Adaptation)技术对这些摘要进行微调,从而在不牺牲性能的前提下显著提升了模型处理长文本的能力。这项技术不仅在多个长文本问答数据集上显示出了卓越的性能,还大幅减少了推理时所需的令牌数量,为长文本处理提供了一个高效且经济的解决方案。

 架构

LLoCO技术的架构由两个主要部分组成:上下文编码器和LLM解码器。上下文编码器的作用是将长篇文本转换成较短的摘要嵌入,这些嵌入能够捕捉原文的核心信息,大大减少模型需要处理的令牌数量。这一过程类似于为模型创建一个“作弊纸”,使其能够在有限的空间内高效地存储和检索大量信息。

常规的大型语言模型(LLM)与提出的LLoCO架构的对比

常规LLM架构(图一左侧): 在传统的大型语言模型中,长文本上下文直接附加到提示(prompt)上。模型需要在每次生成输出时处理整个长文本,这不仅增加了计算负担,也使得模型难以捕捉和记忆文本中的关键信息。随着上下文长度的增加,模型的自注意力机制会导致计算和内存开销呈二次方增长,这限制了模型处理长文本的能力。

LLoCO架构(图一右侧): 与常规LLM不同,LLoCO引入了一个上下文编码器来预处理长文本。在LLoCO架构中,长文本首先通过上下文编码器,该编码器负责将长文本转换成较短的摘要嵌入(summary token embeddings)。这些摘要嵌入是原始文本的压缩表示,它们能够捕捉文本的主要信息,并且显著减少了模型需要处理的令牌数量。

这些摘要嵌入被放置在LLM的提示前(即被prepended),作为输入的一部分。这样,LLM在生成回答时,不是直接处理整个长文本,而是处理这些已经压缩的信息。这不仅减少了计算和内存需求,也使得模型能够更有效地定位和利用文本中的关键信息。

优势:

  1. 减少令牌数量: 摘要嵌入比原始文本中的令牌数量少得多,从而减少了模型在每次推理中需要处理的输入量。
  2. 提高效率: 通过预处理和压缩上下文,LLoCO减少了模型的计算负担,提高了处理速度。
  3. 增强信息检索: 摘要嵌入帮助模型更快地定位到相关信息,提高了长文本问答的准确性。

LLoCO的这种设计有效地扩展了模型处理长文本的能力,同时保持了高效的计算性能,这对于长文本的自然语言处理任务具有重要意义。

LLoCO的学习流程包含三个关键阶段:预处理、微调和服务。

预处理阶段涉及将长文本文档转换成“作弊纸”。这一步骤通过上下文编码器实现,它将文档分割成多个小块,并为每一块生成一个摘要嵌入。这些嵌入随后被存储在向量数据库中,为后续的检索和使用做好准备。

微调阶段中,LLoCO利用LoRA技术对模型进行参数高效的微调。这一过程在文档分组的基础上进行,每组文档共享一个LoRA适配器,该适配器在微调后能够提高模型对压缩上下文的理解能力。

服务阶段则是在模型部署和实际应用中进行的。在这个阶段,系统使用检索增强方法来检索与用户问题最相关的压缩文档和对应的LoRA模块,并将它们应用于LLM解码器以生成回答。

LLoCO在服务阶段的流程,显示了如何使用检索器检索压缩后的段落嵌入,并将这些嵌入与LoRA适配器结合应用于LLM解码器进行推理

Figure 2为LLoCO技术的服务流程,这一流程优化了传统LLMs处理长文本的方式。在LLoCO中,系统不直接检索文本段落,而是检索由上下文编码器生成的压缩令牌嵌入。这些嵌入捕捉了原文的关键信息,并且大大减少了模型需要处理的数据量。然后这些嵌入被连接并前置到LLM解码器的输入中,以便模型能够快速访问和理解长文本的核心内容。系统还会选择一个与检索到的文本最匹配的LoRA适配器,以最小的系统开销将其应用于解码器,进一步提升模型的性能和适应性。

通过这三个阶段,LLoCO不仅提高了模型处理长文本的能力,同时也优化了模型的效率和响应速度,为长文本的自然语言处理任务提供了一个创新且实用的解决方案。

实验

为了验证LLoCO技术在处理长文本问答任务上的有效性,研究者选择了QuALITY、Qasper、NarrativeQA和HotpotQA等专门的长文本问答数据集进行实验。实验结果表明,LLoCO不仅在各个数据集上均显著超越了传统的基线方法,而且在NarrativeQA数据集上,通过压缩上下文至约2600个令牌,实现了与原始上下文长度相比30倍的令牌减少,同时保持了出色的F1分数。

不同方法在长文档问答任务上的性能比较,包括原始上下文、检索方法、AutoCompressor以及LLoCO方法。表格中包括了压缩比和各种性能指标,如QuA、QAS、QM、NQA、HQA和平均F1分数

在消融研究中研究者使用原始上下文进行LoRA微调的效果进行了深入分析,并与LLoCO方法进行了对比。研究发现,尽管原始上下文微调后的模型性能有所提升,但LLoCO方法在压缩上下文上的微调同样有效,且在推理时使用的令牌数量大幅减少,显示出更高的成本效益。

表2对比了在领域内微调后,LLaMA-7B-4k、LLaMA-7B-32k与LLoCO的性能。表格显示了微调前后的性能提升百分比

LongBench基准测试进一步证实了LLoCO在长文本处理任务上的卓越性能。研究者专注于单文档问答、多文档问答和摘要任务,这些任务覆盖了不同的数据集和应用场景。LLoCO在多数任务中均优于基线模型,尤其是在多文档问答任务中表现突出。

表4 汇总了LLoCO在LongBench基准测试中的评估结果,涵盖了单文档问答(SingleDoc)、多文档问答(MultiDoc)和摘要任务(Summarization)

为了测试LLoCO在复杂环境中检索信息的能力,研究者采用了“针堆中寻针”任务。LLoCO在不同上下文窗口长度下均展现出了强大的检索能力,即使在面对随机变化的“针”时,通过持续的微调,LLoCO能够快速适应并保持高成功率。

固定针检索任务中的表现
随机针检索任务中的表现

在推理延迟和微通过量的评估中,LLoCO显示出了显著的性能提升。实验结果表明,LLoCO在保持相同上下文条件的情况下,与未压缩的LLaMA2-7B基线相比,在A100和A6000 GPU上分别实现了7.62倍和7.19倍的速度提升。在NarrativeQA数据集上的微通过量测试中,LLoCO也展现了更高的训练效率。

LLoCO在不同GPU上的推理延迟和微通过量的性能。左侧展示了不同上下文长度下的每token延迟,右侧展示了在NarrativeQA数据集上微调时的样本每秒数

通过这些详细的实验,不仅验证了LLoCO技术的有效性,还展示了其在不同方面的性能优势,特别是在处理长文本时的高效率和低成本。这些实验结果为LLoCO技术的进一步应用和发展提供了坚实的基础。

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

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

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

相关文章

[Qt的学习日常]--常用控件2

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、widget的…

ALTER TABLE 语句来添加字段或修改列的注释。

在 Apache Flink SQL 中,字段(也称为列)和注释(也称为元数据或描述)的管理通常与 Flink 使用的底层数据源(如 Kafka、JDBC 数据库、Hive 等)紧密相关。Flink SQL 本身不提供直接修改数据源中字段…

《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()

观前提示:函数完整代码在文末,本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍: 此函数是一个用于初始化RCC(Reset and Clock Control)振荡器(Osc…

【JAVA】SpringBoot + skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上

【JAVA】SpringBoot skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上 1.下载SkyWalking APM https://skywalking.apache.org/downloads/ jdk8 不支持 SkyWalking APM 9.3.0以上版本,所以这里我们下载 9.3.0版本 2.下载 Java Agent …

MySQL----事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如,在学校管理系统中,我们删除一个学生,既需要删除学生的基本资料,也要删除和该学生相关的信息,如班级,考试成绩等等,这样&#…

python基础:字符集和编码

1.字符集 简单来说,字符集就是一套文字符号及其编码的概述。从20世纪60年代美国标准化组织ANSI发布了第一个计算机字符集ASCII开始,为了处理不同的文字,各大计算机公司,各国政府,以及各种标准化组织发明了几百种字符集…

GPT_AI高速发展中什么是Prompt提示词?

提示词(Prompt)是给大语言模型(以下简称模型)的输入文本,用于指定模型应该执行什么样的任务并生成什么样的输出。 提示词发挥了“提示” 模型 应该做什么的作用。设计高质量的提示词需要根据目标任务和模型能力进行精…

Eigen::Isometry3d变换矩阵的常用方法

文章目录 Eigen::Isometry3d变换矩阵的常用方法一、基本定义二、操作方法三、与四元数和平移向量的转换四、左乘与右乘 Eigen::Isometry3d变换矩阵的常用方法 一、基本定义 变换矩阵本质是一个4*4的矩阵 Eigen::Isometry3d T_imu_to_lidar Eigen::Isometry3d::Identity()二、…

分数限制下,选好专业还是选好学校?

1.专业解析 探讨不同专业的优势和未来挑战(课程学习、就业等维度)。结合个人专业选择的经验和思考过程,自定义实际场景并给出不同场景下的“专业VS学校”选择方案。 当探讨不同专业的优势和未来挑战时,需要根据具体的专业领域和市…

手把手教你使用OpenCV和KNN算法进行手写数字识别

手把手教你使用OpenCV和KNN算法进行手写数字识别 在这篇博客中,我将向大家介绍如何使用OpenCV和KNN算法编写一个手写数字识别程序。我们将一步一步地解释每个步骤,确保大家能理解代码的每个细节。我们将通过一个具体的实例来演示,如何从图像…

【Python】 Stacking: 强大的集成学习方法

我们都找到天使了 说好了 心事不能偷藏着 什么都 一起做 幸福得 没话说 把坏脾气变成了好沟通 我们都找到天使了 约好了 负责对方的快乐 阳光下 的山坡 你素描 的以后 怎么抄袭我脑袋 想的 🎵 薛凯琪《找到天使了》 在机器学习中,单…

vscode 终端无法正常执行脚本命令如何解决

我们经常需要在vscode的中安装第三方依赖包,npm是前端目前最大的Node.js模块化管理系统,它能帮助开发者管理和发布Node.js模块。但很多时候我们在vscode的终端中执行npm install命令时经常会报以下错误: 但是在Windows的cmd命令提示符中执行n…

JavaScript妙笔生花:打造沉浸式中国象棋游戏体验

前言 随着信息技术的飞速发展,Web开发领域也出现了翻天覆地的变化。JavaScript作为前端开发中不可或缺的编程语言,其重要性不言而喻。而当我们谈论到利用JavaScript打造一款沉浸式的中国象棋游戏体验时,我们不仅仅是在开发一个游戏&#xff0…

在 Linux/Debian/Ubuntu 上安装 LAMP: Linux、Apache、MySQL 和 PHP

在 Linux/Debian/Ubuntu 上安装 LAMP LAMP 代表 Linux、Apache、MySQL 和 PHP,是一种流行的开源 Web 开发平台,可以提供强大的服务器环境来运行动态网站和 Web 应用程序。本文将详细介绍如何在 Ubuntu 系统上安装和配置 LAMP。 步骤 1: 更新系统 在开…

微信分销商城小程序源码系统在线搭建 前后端分离 带完整的安装代码包以及搭建教程

系统概述 本微信分销商城小程序源码系统采用先进的前后端分离架构设计,前端使用Vue.js框架开发,后端则基于Spring Boot构建,确保了系统的高可维护性、扩展性和性能。系统集商品展示、在线交易、会员管理、分销推广、订单处理、数据统计等功能…

AIoT设备新一代高性能处理器瑞芯微RK3576,东胜物联RK3588等核心板定制开发

随着物联网、人工智能和嵌入式技术的不断发展,智能设备应用对芯片处理器的性能需求越来越高,以满足复杂的数据处理需求、实时性要求、复杂的算法运算和多任务处理能力。高性能的芯片可以为智能设备提供更强大的计算能力和更快速的响应速度,从…

Camtasia Studio 2024软件下载附加详细安装教程

amtasia Studio 2024是一款功能强大的屏幕录制和视频编辑软件,由TechSmith公司开发。这款软件不仅能够帮助用户轻松地记录电脑屏幕上的任何操作,还可以将录制的视频进行专业的编辑和制作,最终输出高质量的视频教程、演示文稿、培训课程等。 …

【Android】RecyclerView纵向倾斜滑动,触发ViewPage2横向滑动而导致的滑动冲突问题

问题描述 场景ViewPage2FragmentRecyclerView(我的项目里RecycleView外层还套了一层SmartRefreshLayout) 因ViewPage2滑动太灵敏,RecyclerView纵向倾斜滑动,触发ViewPage2横向滑动而导致的滑动冲突问题 解决方案: …

Google Earth Engine(GEE)——导出影像video到自己的Google硬盘当中

函数: Export.video.toDrive(collection, description, folder, fileNamePrefix, framesPerSecond, dimensions, region, scale, crs, crsTransform, maxPixels, maxFrames) Creates a batch task to export an ImageCollection as a video to Drive. The collection must on…

极简opencv操作xml文件

目标 修改xml文件&#xff0c;先产生一个临时文件&#xff0c;拷贝&#xff0c;修改&#xff0c;改名&#xff0c;使用opencv 非常简单地就可以搞定配置xml文件 code #include <opencv2/opencv.hpp> #include <iostream> #include <opencv2/core/utils/files…