大模型上下文长度的超强扩展:从LongLoRA到LongQLoRA

前言

本文一开始是《七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora Llama》中4.3节的内容,但考虑到

  • 一方面,LongLora的实用性较高
  • 二方面,为了把LongLora和LongQLora更好的写清楚,而不至于受篇幅之限制
  • 三方面,独立成文可以有更好的排版,而更好的排版可以有更高的可读性(哪怕一个小小的换行都能提高可读性,更何况独立成文带来的可读性的提高)

故把这部分的内容抽取出来独立成本文

第一部分 LongLora

具体而言,LongLora是港中文和MIT的研究者通过此篇论文《LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models》于23年9月底提出的(这是其GitHub),其显著特点有三

  1. longlora的作者团队认为:尽管在推理过程中需要密集的全局注意力,但通过稀疏局部注意力(sparse local attention)也可以高效地完成模型的微调,比如他们提出的移位稀疏注意力(shifted sparse attention,简称S2-Attn)可有效地实现上下文扩展且显著节省计算资源,具有与使用vanilla注意力(vanilla attention)进行微调相似的性能

    简言之,用sparse local attention替换掉dense global attention,类似检索,不需要把所有的东西都拿过来,把相似度高的,匹配度高的一部分context拿来就可以了
  2. 他们发现,LoRA加到embedding matrix以及normalization的子网络上的时候,效果更好
    啥意思?这点在于常规操作是lora一般加到query, key, value等部分上,而这里是加到embedding matrix上,以及normaliztion上了
  3. LongLoRA在保留原始架构的同时扩展了模型的上下文,并且与大多数现有技术(如Flash-Attention2)兼容
    此外,还进一步发布了使用LongLoRA技术的长指令遵循数据集LongAlpaca,以进行监督微调(we further conduct supervised fine-tuning with LongLoRA and our long instruction-following LongAlpaca dataset)

1.1 LoRA在长文本上的不足

通过本博客内的多篇文章可知,原始transformer的计算复杂度虽序列长度的二次方成正比,这一点一直导致模型的长下文长度不好扩展(比如把长度从2048扩展到8192,复杂度得上升4x4 = 16倍),对于该问题 很多研究者或团队做了各种改进与探索

  • 比如Flash-Attention、Flash-Attention2(详见此文《通透理解FlashAttention与FlashAttention2:让大模型上下文长度突破32K的技术之一)
  • 再比如Position Interpolation (详见此文《大模型上下文扩展之YaRN解析:从直接外推ALiBi、位置插值、NTK-aware插值、YaRN》的2.3节) spent 32 A100 GPUs to extend LLaMA models from 2k to 8k context,当然了,这种资源开销即便是七月项目团队也不一定舍得耗(其实,我司项目团队一直在“低成本 高效果”的方向上探索,过程中积攒了这方面的很多经验),更别说一般个人了

如何降低资源开销呢?一种直接的方法是通过LoRA对预训练的LLM进行微调

  • 对于预训练的权重矩阵W∈Rd×k,它通过低秩分解W +∆W = W + BA进行更新,其中B∈Rd×r和A∈Rr×k。秩r≪min(d, k),在训练过程中,W被冻结,没有梯度更新,而A和B是可训练的(关于LoRA的更多说明,详见此文《LLM高效参数微调方法:从Prefix Tuning、Prompt Tuning、P-Tuning V1/V2到LoRA、QLoRA(含对模型量化的解释)》的第4部分)

    For a pre-trained weight matrix W ∈ R d×k , it is updated with a low-rank decomposition W + ∆W = W + BA, where B ∈ R d×r and A ∈ R r×k .

    The rank r ≪ min(d, k). During training, W is frozen with no gradient updates, while A and B are trainable. This is the reason why LoRA training is much more efficient than full fine-tuning.

  • 在Transformer结构中,LoRA只关注权重(Wq、Wk、Wv、Wo),而冻结所有其他层,包括MLP层和归一化层

    In the Transformer structure, LoRA only adapts the attention weights (Wq, Wk, Wv, Wo) and freezes all other layers, including MLP and normalization layers

LoRA利用低秩矩阵对自注意块中的线性投影层进行修改,从而减少了可训练参数的数量(LoRA modifies the linear projection layers in self-attention blocks by utilizing low-rank matrices, which are generally efficient and reduce the number of trainable parameters)

  1. 然而,单纯的低秩自适应会导致长上下文扩展的困惑度(perplexityin,简称PPL)很高,如下表所示,且即便将秩增加到一个更高的值,例如rank = 256,也并不能缓解这个问题
    那咋办呢?让embedding层和Norm层也添加LoRA训练之后,困惑度PPL可以显著降低

  2. 在效率方面,无论是否采用LoRA,计算成本都会随着上下文规模的扩大而急剧增加,这主要是由于标准的自注意机制所导致的(Vaswani et al., 2017)。如下图所示,即便使用LoRA,当上下文窗口扩展时,Llama2模型的训练时间也会大大增加

    为此,他们提出shifted sparse attention(S2-Attn)以替代标准自注意力机制

1.2  shifted sparse attention(S2-Attn)

1.2.1 S2-Attn的原理解释

如下图所示

  1. 将上下文长度分成几个组,并在每个组中单独计算注意力。在半注意力头中,将token按半组大小进行移位,这保证了相邻组之间的信息流动(In half attention heads, we shift the tokens by half group size, which ensures the information flow between neighboring groups)
  2. 例如,使用组大小为2048的S2-Attn来近似总共8192个上下文长度训练,这与Swin Transformer具有高度的相似(详见此文《AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT/Swin transformer》的第五部分)

上面的描述还是不够形象具体,那到底怎么理解这个S2-Attn呢?如下图所示(值得一提的是,这个图是论文v2版的,和论文v1版稍有细微差别,当然 不影响本质)

  1. 首先,它将沿头部维度的特征分成两大块(即it splits features along the head dimension into two chunks,比如8行4列,8行相当于8个token,4列可以认为是有4个头,然后竖着一切为二)

    相当于[L, H, D], L=token num=8, H=head num=4, D=dimension of expression=1(可暂且认为是1了,毕竟一个方块,算是长度为1的一个向量)
    执行完操作之后是:[L, H, D] -> [L, H/2, D] and [L, H/2, D],即被竖着切成了左右两个part
  2. 其次,其中一个块中的标记被移动组大小的一半(tokens in one of the chunks are shifted by half of the group size)
    如上图step 2的shift所示,shift the 2^{nd} part by half group,相当于
    \rightarrow  第2个part的第8个token的后一半表示(也即原始inputs第8个token的后两个heads)移动到第2个part的第1行
    \rightarrow  而第2个part中原来的「第1-7个token的后一半表示」整体往下移动一行
  3. 第三,将token分组并重塑为批量维度,注意力只在每个组内计算,信息通过移位在不同组之间流动。虽然移位可能会引入潜在的信息泄漏,但这可以通过对注意力掩码进行微调来避免
    Third, we split tokens into groups and reshape them into batch dimensions. Attention only computes in each group in ours while the information flows between groups via shifting. Potential information leakage might be introduced by shifting, while this is easy to prevent via a small modification on the attention mask.

    相当于把两个part连起来后,然后横着切三刀切成了4个group,每个group有8个小方块
    第一个group相当于包含:第一part的前两行,和第二part中更新之后的前两行
    然后计算该group内的注意力,类似于做了“cross-over”,正因为只是计算group内部的几个tokens之间的attention,所以称之为short attention

为方便大家更快的理解,特再补充两点

  1. 为形象起见,举个例子,假定这8个单词是i am learning Machine Learning by julyedu online,然后上述过程可用下表表示
    i 前一半(表示)i 后一半(表示)i 前一半online 后一半:line
    am 前一半am 后一半am 前一半i 后一半
    learning 前一半learning 后一半learning 前一半am 后一半
    Machine 前一半Machine 后一半Machine 前一半learning 后一半
    Learning 前一半Learning 后一半Learning 前一半Machine 后一半
    by 前一半by 后一半by 前一半Learning 后一半
    julyedu 前一半julyedu 后一半julyedu 前一半by 后一半
    online 前一半online 后一半online 前一半:onjulyedu 后一半
  2. 针对上面那个S2-Attn示意图
    该图的左边部分 上文已经解释的很清楚了,那右侧的两个图呢?
    咋一看,比较抽象,其实仔细琢磨之后,右侧的两个图描述的注意力范围,pattern2相对于pattern1的注意力窗口是“移位”了的

    具体到某个token来观察会清楚一点,除了“pattern1中q1”和“pattern2中q1”的注意力范围是一致 都是k1之外
    pattern1中q2的注意力范围是[k1,k2],pattern2中q2的注意力范围变成了仅[k2];
    pattern1中q3的注意力范围仅是[k3],pattern2中q3的注意力范围变成了[k2,k3];
    pattern1中q4的注意力范围是[k3,k4],pattern2中q4的注意力范围变成了仅[k4];
    pattern1中q5的注意力范围是仅[k5],pattern2中q5的注意力范围变成了[k4,k5];
    ...
    两个pattern从最开始的token注意力范围就是错位的,所以后续token注意力范围就一直是错开的,这样错开的形式使得两个pattern聚合起来就可以让组外信息有机会产生交互

1.2.2 S2-Attn的伪代码表示

如下图所示

  1. 第一步,B=batch size, N=sequence length, 3=q,k,v,H=head num,D=每个head的表示维度
    例如:qkv=[1, 4, 3, 4, 1]
    即batch size=1,一共一个序列;4=4个tokens,3=q,k,v,4=head num,1=dim of a head
    1head2head3head4head1head2head34
    21
    32
    43
  2. qkv.chunk(2, 3),得到的是一个tuple,包括两个张量,[1, 4, 3, 2, 1]左边的part,以及[1, 4, 3, 2, 1]是右边的part
    qkv.chunk(2, 3)[0],即左边的包括两个heads的part
    qkv.chunk(2,3)[1], 即右边的包括两个heads的part,这里是对其shift 1个token了
  3. 接下来,按照group分别计算group内的tokens的注意力
  4. 最后,复原

1.2.3 LongAlpaca-13B

在llama 13B上应用longlora技术,便是LongAlpaca-13B

第二部分 LongQLora

2.1 LongLoRA与LongQLoRA异同

Standard

LongLoRA

LongQLoRA

位置编码扩展

-/Position Interpolation/...

Position Interpolation

Position Interpolation

训练所用注意力机制

Standard Global Attention

Shift Short Attention

Shift Short Attention

训练方式

Full/LoRA/QLoRA

Full/LoRA

QLoRA

LoRA可训练层

(通常情况)

Attention层

Attention层、Norm层、Embedding层

Attention层

LoRA Rank

8/16/32/...

8/16/...

16/32/64/...

推理所用注意力机制

Standard Global Attention

Standard Global Attention

Standard Global Attention

2.1.1 可训练层和LoRA Rank的设置

研究团队发现在LongQLoRA中即使不放开Norm层和Embedding层来进行训练,也可以通过设置更大的LoRA Rank来实现更好的微调效果。

Different from LongLoRA, LongQLoRA can achieve better performance even without training word embeddings and normalization layers[Ba et al., 2016]. This is due to the fact that we add more LoRA adapters and use larger LoRA rank.

2.1.2 推理所用注意力机制的设置

研究团队发现

在LongQLoRA中,即使模型是在Shift Short Attention下训练的,但在推理时使用传统的Standard Global Attention表现会更好(在相应测试数据集上困惑度更低)

这一特性具备不小的意义:由于现有的大部分推理优化策略均是基于Standard Global Attention的,因此即使使用LongQLoRA进行训练,也仍可以使用Standard Global Attention进行推理,从而直接兼容现有的大部分推理策略

// 待更

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

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

相关文章

【JUC】进程和线程

目录 📢什么是进程?🎡什么是线程?🚀进程和线程的区别?🎢Java 线程和操作系统的线程有啥区别?🎖️JDK21的虚拟线程🎯虚拟线程和平台线程的对比 📢什么是进程? 进程是程序的一次执…

1032: 员工薪水 和 1041: 数列求和2

1032: 员工薪水 某公司规定,销售人员工资由基本工资和销售提成两部分组成,其中基本工资是1500元/月,销售提成规则如下: 销售额小于等于10000元时,按照5%提成; 销售额大于10000元但小于等于50000元时&am…

2024年了,难道还不会使用谷歌DevTools么?

我相信您一定对Chrome浏览器非常熟悉,因为它是前端开发者最亲密的伙伴。我们可以使用它查看网络请求、分析网页性能以及调试最新的JavaScript功能。 除此之外,它还提供了许多功能强大但不常见的功能,这些功能可以大大提高我们的开发效率。 让我们来看看。 1. 重新发送XHR…

Java网络爬虫--概述与原理

目录标题 基本概念与原理爬虫与搜索系统的关系爬虫运行原理爬虫步骤DNS域名解析 爬虫开发本质网络爬虫的分类通用网络爬虫聚集网络爬虫增量式网络爬虫Deep Web爬虫 参考文献 基本概念与原理 爬虫又叫网络蜘蛛,一种运行在互联网上用来获取数据的自动程序。 互联网的…

程序员副业之AI情侣头像(手把手超详细完整全流程)

项目介绍 小黑今天给咱们分享个轻松简单的项目,每天不会超过半小时,就是用AI制作情侣头像,在抖音上变现。听起来是不是很科幻?但实际上效果杠杠的! 最关键的是,收入方面,一单9块9,…

水文模型(科普类)

SWMM 模型概况: SWMM5 系列拥有编辑区域数据的功能,而且能模拟水文、 水力和水质。其核心部分是管道汇流计算模块,提供了恒定流法、运动波法和动力波法三种水动力学 方法。其中动力波法通过求解完整的圣维南方 程组进行计算,能够…

Open3D 点云下采样抽稀(7)

Open3D 点云下采样抽稀(7) 一、算法介绍二、算法实现1.代码 一、算法介绍 点云抽稀在计算机图形学和计算机视觉中有着广泛的应用,其作用包括但不限于以下几点: 数据压缩: 点云抽稀可以有效地减少点云数据量&#xff0…

浏览器使用隧道代理HTTP:洞悉无界信息

在信息爆炸的时代,互联网已经成为获取信息的首选渠道。然而,在某些地区或情况下,访问某些网站可能会受到限制。这时,隧道代理HTTP便成为了一个重要的工具,帮助用户突破限制,洞悉无界信息。 一、隧道代理HT…

【常考简答题】操作系统

目录 1、什么是进程 2、创建进程步骤 3、什么是死锁 4、死锁四个必要条件 5、什么是内存管理 6、内存管理功能 7、进程的三个基本状态转化图 8、操作系统为什么引入线程 9、什么是对换技术,好处是什么 10、DMA直接存取控制工作方式流程图 11、什么是假脱…

泽攸科技完全自主研制的电子束光刻机取得阶段性成果

国产电子束光刻机实现自主可控,是实现我国集成电路产业链自主可控的重要一环。近日,泽攸科技联合松山湖材料实验室开展的全自主电子束光刻机整机的开发与产业化项目取得重大进展,成功研制出电子束光刻系统,实现了电子束光刻机整机…

免费服务器腾讯云_腾讯云免费服务器申请流程(2024更新)

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

2024年MySQL学习指南(四),探索MySQL数据库,掌握未来数据管理趋势

文章目录 前言9. 约束的概念10. 约束的分类11. 非空约束12. 唯一约束13. 主键约束14. 默认约束15. 外键约束16. 约束的案例练习 前言 接上篇: 2024年MySQL学习指南(一) 2024年MySQL学习指南(二) 2024年MySQL学习指…

解析IT运维领域ITSS和ITIL证书

🌻IT运维领域ITSS和ITIL证书是两种广泛认可的专业认证。 📗ITSS认证证书 ITSS是中国电子技术标准化研究院推出的,👉包含“IT 服务工程师”和“IT 服务经理”的系列培训。有效满足GB/T 28827.1 的符合性评估要求和ITSS服务资质升级…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘match‘ of undefined

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

基于yolov5的PCB板缺陷检测(附有详细步骤通俗易懂版)

PCB板缺陷检测 模型训练 在初学的时候,可能不太了解到底模型训练是个什么流程,到底是什么意思。其实也很简单,就是我们用一个框架(如pytorch,tensorflow等)通过一定的算法如yolov5,对一定的数…

Linux第18步_安装“Ubuntu系统下的C语言编GCC译器”

Ubuntu系统没有提供C/C的编译环境,因此还需要手动安装build-essential软件包,它包含了 GNU 编辑器,GNU 调试器,和其他编译软件所必需的开发库和工具。本节用于重点介绍安装“Ubuntu系统下的C语言编译器GCC”和使用。 1、在安装前…

Flume实时读取本地/目录文件到HDFS

目录 一、准备工作 二、实时读取本地文件到HDFS (一)案例需求 (二)需求分析 (三)实现步骤 三、实时读取目录文件到HDFS (一)案例需求 (二)需求分析 …

竞赛保研 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

特征工程(特征提取数据预处理)

一、特征提取 在房价模型的例子中,我们提取房子的长度(frontage)和宽度(depth)作为特征之一。并得到初步的特征方程: 然而我们知道,房屋面积可以表示为:。用土地面积作为独立特征可…

09.简单工厂模式与工厂方法模式

道生一,一生二,二生三,三生万物。——《道德经》 最近小米新车亮相的消息可以说引起了不小的轰动,我们在感慨SU7充满土豪气息的保时捷设计的同时,也深深的被本土品牌的野心和干劲所鼓舞。 今天我们就接着这个背景&…
最新文章