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.mfbz.cn/a/716337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3中的常见组件通信之`provide`、`inject`

Vue3中的常见组件通信之provide、inject 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-mo…

大数据的力量:推动战略决策和业务转型

在当前全球化的时代背景下,国际间的联系日益紧密,世界变得更加互联互通。面对各种危机,数据驱动决策和分析显得愈发重要。从医学研究到市场趋势分析,大数据技术在各个领域发挥着关键作用,推动着一场深刻的变革浪潮。 大…

关于伪标头那些事

前言 看到伪标头,不少同学可能会比较陌生,因为谁让它默默无闻呢? 当然博主把它比喻为一个来自传输层的“共享盒子”。提到共享,我想大家有所体会了。这里给大家贴一张直观的图例,可以静静观摩之。 Q:什么是…

高端品牌网站建设

随着互联网的快速发展,越来越多的企业开始意识到高端品牌网站建设对于企业发展的重要性。高端品牌网站建设不仅是企业形象展示的窗口,更是与消费者进行有效沟通和互动的桥梁。下面从设计、内容和用户体验三个方面,探讨高端品牌网站建设的重要…

使用代理IP常见问题有哪些?

代理IP在互联网数据收集和业务开展中发挥着重要作用,它充当用户客户端和网站服务器之间的“屏障”,可以保护用户的真实IP地址,并允许用户通过不同的IP地址进行操作。然而,在使用代理IP的过程中,用户经常会遇到一些问题…

php遇到的问题

1、 underfined at line 3 in xxx.php , 错误提示,注释这行代码 // error_reporting(DEBUG ? E_ALL : 0); 目录:config/config.php

爆火的“植物大战僵尸杂交版” ‍♂️【附带安装包】

一、 杂交版植物引言 什么!你不会还没听过最近爆火的 《植物大战僵尸杂交版》吧?!?! 下面这些植物你是否未曾见过,或者已经非常熟悉呢? 二、🌱🧟‍♂️ **杂交版介绍** &…

探索C嘎嘎的奇妙世界:第三关---缺省参数与函数重载

在c语言中,我们常常在对有参函数进行传参,这样的繁琐过程,C祖师爷对此进行了相关改进,多说无益,上干货: 1 缺省参数: 缺省参数是指在声明或定义函数时为函数的形参指定一个默认值(默认参数)。在调用该函数时,如果没有指定实参,则…

2376.统计特殊整数

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int countSpecialNumbers(int n) {if (n < 0) {return -1;}std::string str to_string(n);std::vector<std::vector&l…

东南亚短视频:四川鑫悦里文化传媒有限公司

东南亚短视频&#xff1a;探寻异域的魅力与风情 随着短视频平台的兴起&#xff0c;世界各地的风土人情得以通过屏幕展现在我们眼前。而东南亚&#xff0c;这片充满异域魅力的土地&#xff0c;更是成为了短视频创作者们争相探索的热门目的地。今天&#xff0c;就让四川鑫悦里文…

【源码】2024运营版多商户客服系统/在线客服系统/手机客服/PC软件客服端

带客服工作台pc软件源代码&#xff0c;系统支持第三方系统携带参数打开客服链接&#xff0c;例如用户名、uid、头像等 支持多商家&#xff08;多站点&#xff09;支持多商家&#xff08;多站点&#xff09;&#xff0c;每个注册用户为一个商家&#xff0c;每个商家可以添加多个…

element-ui tabs+table 实现点击表格切换标签页

客户需求&#xff1a;点击主任务标签页中的表格 跳转到子任务所在的标签页 代码&#xff1a; 表格部分&#xff1a; <el-tabs type"border-card" :active-name"currentTab" tab-click"handleTabClick"><el-tab-pane class"table…

Fastjson漏洞之CVE-2022-25845

前言&#xff1a; 针对Fastjson之前已经介绍了&#xff0c;这里就不再重复了&#xff0c;漏洞CVE-2017-18349只能用来攻击>1.2.24版本的&#xff0c;CVE-2022-25845属于CVE-2017-18349的升级版&#xff0c;但是目前仅影响到1.2.83以下版本。CVE-2022-25845本质上是绕过了名…

理解并应用:JavaScript响应式编程与事件驱动编程的差异

背景介绍 在现代JavaScript开发中&#xff0c;响应式编程&#xff08;Reactive Programming&#xff09;和事件驱动编程&#xff08;Event-Driven Programming&#xff09;是两种非常重要且常用的编程范式。虽然它们都用于处理异步操作&#xff0c;但在理念和实现方式上存在显…

2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.2 用流程图表示算法-【例 2.9】

将例 2.4 求 1-1/21/3-1/41/99-1/100 的算用流程图表示。 一个流程图包括&#xff1a; 1. 表示相应操作的框&#xff1b; 2. 带箭头的流程线&#xff1b; 3. 框内外必要的文字说明。

Canvas倒计时

Canvas倒计时 前言 用Canvas绘制一个倒计时组件&#xff0c;显示距离新年还有多长时间&#xff0c;精确到秒&#xff0c;该倒计时需要实时更新 基础知识点 JS Date() 创建一个新Date对象的唯一方法是通过new 操作符&#xff0c;例如&#xff1a;let now new Date(); 若将…

Unity API学习之资源的动态加载

资源的动态加载 在实际游戏开发的更新换代中&#xff0c;随着开发的软件不断更新&#xff0c;我们在脚本中需要拖拽赋值的变量会变空&#xff0c;而要想重新拖拽又太花费时间&#xff0c;因此我们就需要用到Resources.Load<文件类型>("文件名")函数来在一开始…

R3CTF NinjaClub复现

R3CTF NinjaClub jinjia2沙箱 题目源码 from jinja2.sandbox import SandboxedEnvironment, is_internal_attribute from jinja2.exceptions import UndefinedError from fastapi import FastAPI, Form from fastapi.responses import HTMLResponse from pydantic import Bas…

MicroPython+ESP32 C3开发上云

传感器PinI/O状态D412输出1开0关D513输出1开0关 概述 MicroPython是python3编程语言的精简实现&#xff0c;能够在资源非常有限的硬件上运行&#xff0c;如MCU微控制器Micropython的网络功能和计算功能很强大&#xff0c;有非常多的库可以使用&#xff0c;它为嵌入式开发带来了…

线程池监控是怎么做的?

引言&#xff1a;在现代软件开发中&#xff0c;线程池是一种重要的并发控制机制&#xff0c;它能有效管理和复用线程资源&#xff0c;提升系统的性能和响应速度。然而&#xff0c;随着应用规模的扩大和复杂性的增加&#xff0c;对线程池进行有效监控显得尤为重要。线程池监控不…