港中文联合MIT提出超长上下文LongLoRA大模型微调算法

d066c4bbd81b49c3ae4b61561a502b63.png

论文名称: LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models

文章链接:https://arxiv.org/abs/2309.12307

代码仓库: https://github.com/dvlab-research/LongLoRA

现阶段,上下文窗口长度基本上成为了评估LLM能力的硬性指标,上下文的长度越长,代表大模型能够接受的用户要求越复杂,近期OpenAI刚发布的GPT-4 Turbo模型甚至直接支持到128K的上下文窗口,相当于用户可以直接喂给模型一部长达300页的小说。但是从模型实现角度来看,训练具有长上下文大小的LLM的成本很高。例如在8192的上下文长度上训练参数规模相同的模型,自注意力层的计算成本是2048的16倍。

本文介绍一篇来自CUHK和MIT合作完成的工作,本文结合LoRA方法提出了长上下文LLM微调框架LongLoRA,本文从两个方面对LLM的上下文窗口进行了优化,首先提出了shift short attention(S2-Attn)模块替代了原始模型推理过程中的密集全局注意力,可以节省大量的计算量,同时保持了与普通注意力微调相近的性能。此外作者重新审视了LLM上下文窗口参数的高效微调机制,提出了LongLoRA策略,LongLoRA可以在单个8×A100机器上实现LLaMA2-7B模型的上下文从4k扩展到100k,或LLaMA2-70B模型的上下文扩展到32k。LongLoRA具有很强的普适性,其可以保持LLM的原始架构,并且与大多数现有技术兼容,例如FlashAttention-2等,此外,为了让LongLoRA的模型具有对话能力,作者团队专门收集了一个LongAlpaca数据集(包含9k长上下文问答对和3k短问答对),用于监督微调。

01. 引言

训练或微调一个LLM所需的计算资源对于普通的研究人员来说通常难以承受,因此研究更轻量的模型微调方案已经成为学术界的热点话题,目前最直接的手段是使用微软提出的低秩适应方法(LoRA)[1],LoRA可以通过学习一个低秩矩阵来修改自注意力块中的线性投影层,达到高效减少模型可训练参数规模的效果

9a4d8312ba214d91962f69c453bed5df.png

但是LoRA在遇到超长上下文的查询时,提升效果不够明显,并且会带来模型困惑度增加的问题,本文作者以LLaMA2-7B模型进行了模型困惑度实验,实验结果如上表所示,可以看到,LoRA方法相比完整微调方法(Full FT)会带来更明显的困惑现象,即使将LoRA矩阵的秩提升到256也不能缓解这种问题。此外在模型效率方面,无论是否采用LoRA,随着上下文窗口长度的扩展,模型的计算成本都会急剧增加,这主要是由于自注意力机制的计算量导致的,如下图所示,作者展示了三种不同方法在训练相同的LLaMA2模型时,模型的训练复杂度、GPU占用和训练时间随着上下文窗口长度增加的变化情况

cc23bd043d7245f292720b8616377219.png

为了解决上述问题,本文引入了一种专门解决长上下文训练难题的LongLoRA微调方法,同时为了应对标准自注意力机制庞大的计算量,作者提出了一种短时注意力S2-Attn来减少计算成本,从上面三个图中的结果来看,LongLoRA可以有效的提升模型各方面的微调性能。

02. 本文方法

2.1 shift short attention(S2-Attn)

a1236a65d3ac47fe80d6978075f5ff21.png

其首先将模型的输入分为几组,并在每个组中分别进行注意力计算,同时在每个组中,将原有的token移动组大小的一半来保证相邻注意力头之间的信息交互,作者进行了如下的实验来观察S2-Attn在不同上下文窗口中的性能变化,其中参与实验的baseline方法还包括一些无需进行微调的位置编码优化方法。可以看到,微调对于模型处理长上下文输入的效果起到了非常重要的作用

6241455e827d46aca532a7273488026e.png

上表中的第一种注意力模式是只使用短时注意力进行训练(Pattern 1),由于对于长上下文,模型的计算成本主要来自自注意力模块。因此,在这个试验中,作者将自注意力模块分为4组。例如,在模型的训练和测试阶段均采用8192个token作为输入,而每个组中的注意力计算的token大小为2048,如上表所示,这种模式相比普通方法已经能够提升模型性能,但是随着上下文长度的增加,模型的困惑程度变得更严重,作者分析造成这种情况的原因是不同的组之间没有信息交互

bd3d739fcd1a4fe6871ef7faf678b60c.png

为了促进不同注意力组之间的信息交互,作者提出了一种shift模式,如上图所示,即在进行组划分时将注意力头移动组长度的一半距离,以上下文窗口长度8192为例,在Pattern 1中,第一组从第1个到第2048 个token进行自注意力计算。在Pattern 2中,组划分移动长度为1024,这样就导致另一个注意力组从第1025个token开始,到第3072个token结束,而第一个和最后1024个token属于同一组,这种方式不会增加额外的计算成本,但可以实现不同组之间的信息流动

176d084dc7444a9e9f0d401d79f5d7dc.png

此外,shift short attention非常容易在代码中实现,上图展示了其在注意力块计算时的伪代码,只需要在原始自注意力计算的基础上添加两行代码。

2.2 面向长上下文改进LoRA算法到LongLoRA

LoRA算法是目前LLM社区中非常常用的微调方法,几乎是微调一个基座模型到下游垂直领域中的首选算法,与完全微调相比,它节省了大量可训练参数和显存占用的成本。然而,使用LoRA算法在较长上下文的场景中进行训练仍然存在一些问题,微调后的模型性能会略逊色于完全微调方法,这种性能差距会随着目标上下文长度变大而增大。

9a4d8312ba214d91962f69c453bed5df.png

为了弥补这一差距,作者在训练时允许模型嵌入层和归一化层的参数进行更新。最终效果如上表所示,虽然这些层只占用少量的参数(特别是归一化层的参数量占比在整个LLaMA2-7B模型中仅为0.004%),但它们却对模型在长上下文场景中的适应起到有益帮助,上表中的LoRA+Norm+Embed获得了最佳性能,作者在后续的实验中将这种LoRA的改进版本表示为LoRA+。

03. 实验效果

本文的实验基座模型选用了预训练的LLaMA2模型,分别包含7B、13B和70B的版本,其中7B版本的最大上下文窗口大小为100k,13B版本为65536,70B版本为32768。对于实验数据集,作者使用Redpajama数据集进行训练,随后使用图书语料库数据集PG19和Arxiv Math数据集来评估微调模型的长序列语言建模性能,还使用PG19的测试集专门评估模型的困惑度。此外,作者团队还提出了一个用于监督微调长上下文模型的数据集LongAlpaca,LongAlpaca包含了9k个长问题和相应的答案,以及3k短问答,共计12k问答数据

3.1 长序列语言建模性能

下表中展示了本文方法在LLaMA2-7B和LLaMA2-13B模型上的长序列建模实验结果,模型的性能通过困惑度指标来体现,可以看到,对于相同的训练和评估上下文长度的情况,随着上下文窗口长度的增加,模型的困惑度会降低。通过将LLaMA2-7B模型的上下文窗口大小从8192增加到32768时,模型困惑度从2.72降低到2.50,降低了0.22。对于LLaMA2-13B模型,可以观察到困惑度从2.60降低到2.32,降低了0.28。

460457ee44414ae8bec121dac5e6bac0.png

在下表中,作者进一步探索了LongLoRA可以在单个 8 x A100 机器上微调的最大上下文窗口长度。这里将LLaMA2 7B、13B 和 70B 的上下文长度分别扩展到 100k、65536、32768,可以看到,LongLoRA在这些极端的设置上仍然取得了较好的结果,此外也可以观察到,扩展模型的上下文窗口大小会导致模型的困惑度下降

bdd36bc154b146e98836221fb6f7f258.png

3.2 基于检索的性能评估

为了保证实验的完整性,作者在长序列语言建模性能评估之外还引入了基于长上下文检索的实验。在下表中,作者将本文方法与其他开源LLMs在LongChat[2]中设置的主题检索任务上进行了对比实验。该任务要求模型从很长的对话数据中检索到目标主题,长度从 3k、6k、10k、13k 到 16k 不等。由于数据集中的一些问题的长度超过了16k,因此作者选择对LLaMA2-13B模型进行微调,上下文窗口长度为18k。

c1ae2f4a305c427aa841980091efe045.png

从上表中可以看出,本文方法实现了与该任务中SOTA方法LongChat-13B相当的性能,甚至在极端长度16k的场景评估中性能超过了LongChat-13B

04. 总结

本文针对LLM微调训练提出了一种名为LongLoRA的方法,它可以有效地将LLM的上下文窗口长度扩展到更长的范围。LongLoRA与标准完全微调方法相比,所使用的GPU显存成本和训练时间更少,并且精度损失也很小。在架构层面,作者将原始笨重的自注意力计算转换为更加轻量的shift short attention(S2-Attn),S2-Attn以独特的注意力头划分模式实现了局部的信息交互,从而带来更高效的性能,更关键的是,S2-Attn只需要两行代码就可以实现。在模型训练层面,作者在传统LoRA微调模式中加入了可训练的标准化和嵌入层参数,这被证明在长上下文场景中是有效的。从实际操作层面来看,LongLoRA是一种通用的方法,可以兼容到更多类型的LLMs中,进一步降低开发者微调LLM的难度和成本。

参考

[1] Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. Lora: Low-rank adaptation of large language models. In ICLR, 2022.

[2] Dacheng Li, Rulin Shao, Anze Xie, Ying Sheng, Lianmin Zheng, Joseph E. Gonzalez, Ion Stoica,Xuezhe Ma, and Hao Zhang. How long can open-source llms truly promise on context length? June 2023.


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区

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

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

相关文章

误删文件怎么恢复?别错过这3个实用方法!

“我在电脑里不小心将几个比较重要的文件误删了,误删的文件应该怎么恢复呢?大家有没有比较好用的恢复方法可以推荐一下呢?” 在日常生活和工作中,我们会将各种重要的文件保存在电脑上,如果在操作时我们误删了重要的文件…

完全分布式运行模式

完全分布式运行模式 分析:之前已经配置完成 ​ 1)准备3台客户机(关闭防火墙、静态ip、主机名称) ​ 2)安装JDK ​ 3)配置环境变量 ​ 4)安装Hadoop ​ 5)配置环境变量 ​ 6&am…

东芝工控机维修东芝电脑PC机维修FA3100A

TOSHIBA东芝工控机维修电脑控制器PC机FA3100A MODEL8000 UF8A11M 日本东芝TOSHIBA IA controller维修SYU7209A 001 FXMC12/FXMC11;BV86R-T2GKR-DR7YF-8CPPY-4T3QD; CPU处理单元是可编程逻辑控制器的控制部分。它按照可编程逻辑控制器系统程序赋予的功能接收并存储从编程器键入…

使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212,用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:…

8.字符串转换整数

题目:请实现一个myAtoi(string s)函数,使其能将字符串转换成一个32位有符号整数。 函数myAtoi(string s)的算法如下: 1.读入字符串并丢弃无用的前导空格 2.检查下一个字符(假设还未到字符末尾)为正还是负号&#xf…

Leetcode 134. 加油站 java版 如何解决环路加油站算法

# 官网链接:. - 力扣(LeetCode) 1. 问题描述: 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升…

目标检测——车辆障碍物数据集

检测道路上障碍物对于道路安全、自动驾驶技术的发展以及交通流畅性都具有重要性和意义。以下是这些重要性和意义的详细解释: 道路安全 从道路安全的角度来看,小障碍物可能给行驶中的车辆带来潜在风险。例如,一个丢弃在道路上的轮胎或纸箱可能…

MCU最小系统电路设计(以STM32F103C8T6为例)

目录 一、何为最小系统? 二、最小系统电路设计 1.电源 (1)各种名词解释 (2)为什么会有VDD_1 _2 _3区分? (3)Mirco USB (4)5v->3.3v滤波电路 &#…

JVM相关工具【jps、jstat、jinfo、jmap、jhat、jstack、VisualVM、GCEasy、MAT、GCViewer、Arthas】

JVM相关工具 JDK工具包jpsjstatjinfojmapjhatjstackVisualVM 第三方工具【GCEasy、MAT、GCViewer、Arthas】 转自 《极客时间》 JDK工具包 jps jstat jinfo jmap jhat jstack VisualVM 第三方工具【GCEasy、MAT、GCViewer、Arthas】

常见面试题——说说堆内存与栈内存的区别

在C中,堆(heap)和栈(stack)是两种不同的内存分配方式,它们在存储数据、生命周期和访问方式上有很大的区别。让我们深入了解一下这两者之间的关键区别: 栈(Stack)&#xf…

用户故事编写指南:写出最贴近用户实际场景的故事

用户故事在软件开发过程中被作为“描述需求”的一种表达形式,是定义用户想要什么的简单方法。通过它可以清楚地解释产品。一个好的用户故事能帮助利益相关者理解产品的功能,并且有助于向客户介绍产品是什么。用户故事都会写,但如何写出最贴近…

Stable Diffusion 模型分享:【Checkpoint】YesMix(动漫、2.5D)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四下载地址模型介绍 条目内容类型大模型基础模型SD 1.5来源

10个常考的前端手写题,你全都会吗?(上)

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

XXE 漏洞简单研究

近期在做个基础的 web 常见漏洞的 ppt,主要参考 OWASP TOP 10 2017RC2,此版本中增加了 XXE 攻击,所以自己简单的研究下 XXE 攻击。XXE(XML External Entity)XML 外部实体,当前端和后端通信数据采用 xml&…

迭代器模式:分离遍历逻辑与数据结构,实现统一访问接口与灵活扩展

文章目录 一、引言二、应用场景与技术背景三、模式定义与实现四、优缺点分析总结: 一、引言 ​ 迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。迭…

STC-ISP原厂代码研究之 V3.7d汇编版本

最近在研究STC的ISP程序,用来做一个上位机烧录软件,逆向了上位机软件,有些地方始终没看明白,因此尝试读取它的ISP代码,但是没有读取成功。应该是目前的芯片架构已经将引导代码放入在了单独的存储块中,而这存储块有硬件级的使能线,在面包板社区-宏晶STC单片机的ISP的BIN文…

uniapp:使用DCloud的uni-push推送消息通知(在线模式)java实现

uniapp:使用DCloud的uni-push推送消息通知(在线模式)java实现 1.背景 今天开发app的时候遇到一个需求: 业务在出发特定条件的时候向对应的客户端推送消息通知。 为什么选择在线模式,因为我们使用的是德邦类似的手持终端&#xf…

vue如何重写移动端长按文字复制的功能

移动端长按文字会出现 “复制 全选”的默认弹框(这里拿安卓举例) 但是有的时候需要在长按的时候增加别的功能 这时候就需要禁用原生的弹框然后重写自己的功能 第一步:禁用掉原生弹窗 但是支持划选文字 重要css属性: -webkit-t…

StarRocks——Stream Load 事务接口实现原理

目录 前言 一、StarRocks 数据导入 二、StarRocks 事务写入原理 三、InLong 实时写入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 详细流程 3.3.1 任务写入数据 3.3.2 任务保存检查点 3.3.3 任务如何确认保存点成功 3.3.4 任务如何初始化 3.4 Exactly Once 保证…

Ethernet/IP转Modbus TCP网关

产品功能 1 YC-EIP-TCP工业级EtherNet/IP 网关 2 Modbus TCP 转 EtherNet/IP 3支持ModBus主从站 4 即插即用 无需编程 轻松组态 ,即实现数据交互 5导轨安装 支持提供EDS文件 6 EtherNET/IP与ModBus互转数据透明传输可接入PLC组态 支持CodeSys/支持欧姆龙PLC 支持罗克韦尔(AB) 典…