【大模型上下文长度扩展】LongLoRA:长序列大模型微调新方式

LongLoRA:长序列大模型微调新方式

    • 核心问题
      • 子问题1: 上下文窗口限制
      • 子问题2: 计算资源限制
      • 子问题3: 高效微调方法的缺乏
        • 低秩权重更新(LoRA)
        • S2-Attn(Shifted Sparse Attention)
      • 分析不足
    • 扩展大模型处理长上下文能力不同方法
      • 子问题1: 处理长上下文的高计算成本
      • 子问题2: 预训练LLMs微调的不可行性
      • 子问题3: 位置嵌入的长上下文适应性
      • 子问题4: 参数高效微调的需求
      • 分析不足
    • LongLoRA方法
      • 子问题1: 高计算成本和内存需求
      • 子问题2: 微调与长上下文适应性的差距
      • 分析不足
    • 总结
      • 子问题1: 高计算成本
      • 子问题2: 微调效率低
      • 全流程分析不足

 


论文:https://arxiv.org/pdf/2309.12307.pdf

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

 

核心问题

核心问题是如何有效地扩展大型语言模型(LLMs)的上下文窗口大小,以便处理长文本输入。

这一挑战主要由于标准的自注意力机制在处理大量上下文时计算成本高昂所导致。

子问题1: 上下文窗口限制

  • 背景: 大型语言模型如LLaMA和Llama2分别被训练以处理2048和4096个令牌的上下文。
  • 这种预定义的大小限制了模型在处理长文档摘要或回答长问题等应用中的能力。
  • 解法: LongLoRA通过引入效率更高的微调方法来扩展预训练LLMs的上下文窗口。
  • 例子: 若以Llama2为例,通过LongLoRA方法,可以在单个8×A100机器上将7B模型的上下文扩展到100k,或将70B模型扩展到32k。

子问题2: 计算资源限制

  • 背景: 从头训练或微调LLMs以适应更长的上下文需要大量的计算资源,例如,使用32个A100 GPUs扩展LLaMA模型的上下文从2k到8k,这对普通研究者来说通常是不可承受的。
  • 解法: LongLoRA通过利用低秩矩阵更新(LoRA)和短程注意力机制(S2-Attn)来减少所需的计算资源。
  • 例子: 使用S2-Attn可以通过将上下文长度分为几个组,并在每个组内单独进行注意力操作,从而有效减少计算成本。

子问题3: 高效微调方法的缺乏

  • 背景: 传统的低秩适应(LoRA)方法在扩展上下文时既不够有效也不够高效,导致长上下文模型的困惑度高。
  • 解法: LongLoRA结合了低秩权重更新和S2-Attn,后者通过分组和令牌偏移来实现高效的长上下文训练。
  • 例子: 在Llama2模型上应用LongLoRA,可以在保留原始注意力架构的同时,通过S2-Attn实现对长上下文的有效近似。

低秩权重更新(Low-rank Adaptation, LoRA)和S2-Attn(Shifted Sparse Attention)是两种技术,它们在提高大型语言模型(LLMs)处理长上下文时的效率和效果方面起着关键作用。

低秩权重更新(LoRA)

低秩权重更新是一种模型微调技术,旨在优化模型的参数更新过程,从而减少所需的计算资源。

在大型语言模型中,LoRA的核心思想是对模型中的线性投影层(通常存在于自注意力机制中)进行修改,而不是直接修改整个模型参数。

这种修改涉及到使用低秩矩阵来近似原始的高维权重矩阵。

  • 工作原理: LoRA通过将原始的权重矩阵分解为两个较小的矩阵的乘积,从而实现对模型的低秩更新。
  • 这两个较小的矩阵乘积的结果能够近似原始的高维权重矩阵,但参数数量大大减少,从而减轻了计算和存储的负担。
  • 优点: LoRA通过减少微调过程中需要优化的参数数量,显著降低了计算成本,同时仍然保持或甚至提高了模型性能。
S2-Attn(Shifted Sparse Attention)

S2-Attn是一种自注意力机制的变体,旨在通过对输入序列的高效处理来扩展模型的上下文窗口。

它通过将长序列分组,并在这些组内以及组之间应用稀疏注意力模式来实现这一点。

  • 工作原理: 在S2-Attn中,序列被分割成多个固定大小的组。在每组内部,模型执行标准的自注意力计算。
  • 为了确保信息能够在相邻组之间流动,一半的注意力头会对令牌进行偏移处理,即将它们在序列中的位置向前或向后移动半个组的大小。
  • 这种偏移允许模型捕获更长范围内的依赖关系,同时减少了计算量。
  • 优点: S2-Attn通过减少需要计算的注意力对,显著降低了处理长序列时的计算复杂度。
  • 这种方法特别适合于那些需要模型理解和生成长文本的应用场景。

结合使用LoRA和S2-Attn的优势在于,它们共同提供了一种高效且有效的方式来扩展大型语言模型的上下文处理能力。

LoRA通过低秩更新减少了模型微调的计算成本,而S2-Attn通过改进的注意力机制有效处理长序列,这两种技术的结合使得在资源受限的情况下也能实现对长上下文的支持。

这种方法不仅提高了模型处理长文本的能力,还保持了计算上的可行性,提供了更多的灵活性和效率。

分析不足

尽管LongLoRA为扩展LLMs的上下文窗口提供了一种有效且高效的方法,但存在几个潜在的限制和考虑因素:

  • 泛化能力: LongLoRA的效果如何在不同类型的任务和数据集上泛化还需进一步验证。
  • 复杂度与效率的平衡: 虽然S2-Attn减少了计算成本,但其对模型复杂度的影响,以及在极大上下文长度下的性能表现,需要详细的实验分析。
  • 与其他技术的兼容性: LongLoRA与其他优化技术和架构的兼容性,如Flash-Attention2,虽然在文中提到,但具体的实现细节和性能影响也值得进一步探索。

LongLoRA为扩展LLMs的上下文窗口提供了一条可行之路,但每个解决方案都应当在不同的场景下被细致评估,以确保最佳的性能和效率。

 


扩展大模型处理长上下文能力不同方法

子问题1: 处理长上下文的高计算成本

  • 背景: 传统的全注意力(full attention)机制在处理长上下文时,面临计算成本呈二次方增长的问题。
  • 解法: 使用稀疏注意力机制,如Longformer和BigBird,通过限制注意力的范围来减少计算量。
  • 例子: Longformer设计了一种稀疏注意力模式,只计算序列中特定位置的注意力分数,有效降低了处理长序列的计算复杂度。

子问题2: 预训练LLMs微调的不可行性

  • 背景: 许多扩展上下文方法通过对模型架构进行较大改动来实现,这使得在已有预训练模型上进行微调变得不可行。
  • 解法: 通过S2-Attn等方法,提出在微调阶段使用近似但形状相似的注意力机制,以便在推理阶段保持全注意力架构。
  • 例子: S2-Attn通过分组和令牌偏移实现高效处理长上下文,同时在模型推理时仍使用原始的全注意力机制,保证了模型的灵活性和效果。

子问题3: 位置嵌入的长上下文适应性

  • 背景: LLMs通常采用预定义的上下文长度进行预训练,对于超出此范围的上下文处理存在局限。
  • 解法: 通过位置插值和其他位置嵌入修改方法,如NTK-aware、Yarn等,来扩展模型对长上下文的适应性。
  • 例子: 位置插值通过修改旋转位置编码,扩展了LLaMA模型的上下文长度至32768,从而使模型能够处理更长的输入序列。

子问题4: 参数高效微调的需求

  • 背景: 给定的计算资源和存储限制要求微调方法不仅要有效,还要参数高效。
  • 解法: 采用LoRA等参数高效微调方法,通过局部更新模型的小部分,如输入嵌入层或特定的权重,来实现长上下文的扩展。
  • 例子: LoRA通过在自注意力块中使用低秩矩阵更新来微调模型,减少了所需的参数数量和计算资源。

分析不足

虽然上述方法在扩展LLMs处理长上下文的能力方面取得了进展,但每种技术都有其局限性。

例如,稀疏注意力机制虽然减少了计算成本,但可能牺牲了模型对于上下文中某些关键信息的捕捉能力。

位置嵌入方法的扩展能力虽好,但可能需要对模型架构进行较大的修改,影响模型的通用性。

参数高效微调技术虽然在资源受限的情况下非常有用,但可能需要仔细选择微调的层次,以确保模型性能不受影响。

此外,当前的研究主要集中在模型架构和训练方法的改进上,较少考虑到数据侧的优化,如通过更智能的数据预处理和选择机制来减轻长上下文处理的负担。

可以探索结合模型和数据两方面的优化,以进一步提高处理长上下文的效率和效果。

 


LongLoRA方法

子问题1: 高计算成本和内存需求

  • 背景: 标准的自注意力机制在处理长序列时,由于计算复杂度和内存需求与序列长度的二次方成正比,导致了高计算成本和内存需求。
  • 解法: Shifted Sparse Attention (S2-Attn)。
  • 特征: S2-Attn通过将输入序列分组并在每个组内进行自注意力计算,以及通过在一半的注意力头中对分组进行偏移,实现了计算成本的大幅度降低,同时保持了不同组之间信息的流动。
  • 例子: 在处理8192个令牌的输入时,通过将自注意力限制在2048大小的各个组内,并在一半的注意力头中将分组偏移1024个令牌,有效降低了计算复杂度,同时通过偏移实现组间信息交流。

在这里插入图片描述

LongLoRA技术的示意概览。它包括两个子图:

  • (a) 移位稀疏注意力(S^2-Attn):展示了如何将注意力划分为两种模式——无移位(模式1)和有移位(模式2)——以及这些模式如何结合以允许不同令牌组之间的通信。
  • (b) 低秩适应:展示了LongLoRA如何适应Transformer模型中的注意力权重。
  • 虽然注意力层中的LoRA权重是可训练的,嵌入层和归一化层也被设为可训练,这对于扩展模型处理的上下文至关重要。

在这里插入图片描述
此图提供了S^2-Attn工作方式的逐步视觉解释。分为三个步骤:

  1. 拆分:特征沿头部维度被拆分为两个块。
  2. 移位:其中一个块中的令牌被移动半个组大小。
  3. 分组和注意力:令牌被分组并重新塑形,并在这些组内计算注意力。
  4. 该图展示了两种注意力模式:一种没有移位和一种有移位,指出如何通过这种机制实现组间信息流动。

子问题2: 微调与长上下文适应性的差距

  • 背景: 通过低秩适应(LoRA)微调预训练模型时,随着目标上下文长度的增加,其与全面微调之间存在明显的性能差距。
  • 解法: LoRA+(改进的LoRA方法)。
  • 特征: LoRA+通过在训练过程中开放嵌入层和归一化层的参数,解决了仅通过低秩权重更新无法有效适应长上下文的问题。
  • 例子: 在Llama2 7B模型上,尽管归一化层参数仅占模型总参数的0.004%,通过训练这些层,LoRA+显著缩小了与全面微调之间的性能差距。

在这里插入图片描述

此图表比较了三种不同的方法:完全微调(Full FT)、传统的LoRA以及LongLoRA,它们基于在不同上下文大小下的困惑度、GPU内存使用和训练时长。

  • 困惑度图表:显示了随着上下文大小增加,困惑度(衡量模型性能的指标,数值越低越好)的变化。
  • LongLoRA似乎在性能和资源使用之间提供了一种平衡,其困惑度低于LoRA,并且与全微调相当。
  • GPU内存图表:说明了使用每种方法进行训练的内存成本。
  • LongLoRA比全微调使用的内存要少得多,表明它更为高效。
  • 训练时长图表:描述了使用每种方法训练模型所需的时间。
  • LongLoRA减少了与全微调相比的训练时间,突显了其效率。

分析不足

虽然LongLoRA通过S2-Attn和LoRA+提供了处理长上下文的有效策略,但仍有一些潜在的限制和改进空间:

  • 泛化能力: LongLoRA方法在不同类型和规模的LLMs上的泛化能力需要进一步研究和验证。
  • 长序列处理的极限: 尽管S2-Attn在减少计算成本方面非常有效,但其在处理极长序列时的效率和效果如何,特别是在超过模型原设计上下文长度很多倍的情况下,仍需进一步探索。
  • 优化与调整: LoRA+虽然提高了长上下文微调的效果,但如何选择最优的层(嵌入层和归一化层)参数,以及这些参数对不同任务影响的深入理解,可能会进一步提高微调效率和模型性能。

总结

问题:如何提高大型语言模型(LLMs)处理长上下文的能力,同时保持高效率和精确度?

子问题1: 高计算成本

  • 背景: 标准的自注意力机制在处理长序列时,会因为计算复杂度随序列长度平方增长而导致计算资源消耗巨大。
  • 解法: 移位稀疏注意力(S²-Attn)。
  • 特征: S²-Attn通过将注意力分布在不同的组中,并在组内进行自注意力计算,减少了计算量。
  • 通过移位一半的注意力头部,实现了组间的信息交流,保持了上下文的连贯性,同时减少了计算成本。
  • 例子: 假设有一个包含8192个令牌的序列,通过S²-Attn,我们将其分为四个2048令牌的组,并且在一半的头部中进行移位,使每个组能够与相邻组交换信息,而不是单独计算。

子问题2: 微调效率低

  • 背景: 全参数微调(Full Fine-Tuning)需要大量的计算资源,这对于资源受限的研究者来说是不切实际的。
  • 解法: 改进的低秩适应(LoRA+)。
  • 特征: LoRA+通过在微调过程中只更新一小部分参数,减少了参数的数量并降低了训练成本。
  • 特别是,它通过对嵌入层和归一化层的参数进行训练,提高了对长上下文的适应性。
  • 例子: 对于一个7B参数的LLM,LoRA+能够在不牺牲性能的前提下,只微调嵌入层和归一化层参数,从而实现对长达32768个令牌上下文的处理。

全流程分析不足

虽然LongLoRA通过S²-Attn和LoRA+有效提高了LLMs处理长上下文的能力和效率,但可能在极端长上下文或特定任务上的表现仍有待验证。

此外,对于全新的上下文结构,这些方法可能需要进一步的调整或优化。

当前的方法可能还未充分考虑到模型的泛化能力,即在不同类型的数据或任务上的表现。

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

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

相关文章

Netty核心原理与基础实战(二)——详解Bootstrap

接上篇:Netty核心原理与基础实战(一) 1 Bootstrap基础概念 Bootstrap类是Netty提供的一个便利的工厂类,可以通过它来完成Netty的客户端或服务端的Netty组件的组装,以及Netty程序的初始化和启动执行。Netty的官方解释是…

【数据结构与算法】二叉树(Binary Tree)

相关推荐:堆(Heap) / 堆排序(HeapSort) / TopK 文章目录 1.树1.1 树相关概念1.2 举例树的应用 2. 二叉树2.1 二叉树分类2.2 特殊的二叉树2.3 二叉树的存储结构 3. 二叉树实现与热门问题 1.树 树是一种非线性的数据结构…

力扣:42. 接雨水 84.柱状图中最大的矩形(单调栈,双指针)

这两道题解题思路类似,一个是单调递增栈,一个是单调递减栈。本篇博客给出暴力,双指针和单调栈解法。 42. 接雨水 题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后…

AMD64 linux 环境中,如何将main.go打包成不带 .exe 的可执行文件?

在终端中先进入main.go所在的文件夹,然后运行这三条命令即可 $env:GOOS"linux" $env:GOARCH"amd64" go build main.go 最终结果,成功出现不带 .exe 结尾的可执行包:

日本失去的三十年:去杠杆用了14年

去年以来,日股在日本央行转鹰预期、基本面改善和一系列监管新规的催化下高歌猛进,日经指数已经逼近90年代资产泡沫时期的高位。今年迄今累计上涨8.51%,领跑全球,“失落的三十年”似乎已经远去。 日本因何走向衰退?“失…

【C语言】位与移位操作符详解

目录 1.⼆进制和进制转换 ①十进制:生活中最常用 ②二进制:计算机中使用的,每个数字称为一个比特 ③八进制、十六进制也如上 ④二进制转十进制 ⑤十进制转二进制 ⑥二进制转八进制 ⑦二进制转十六进制 2.原码、反码、补码 3.移位操…

【已更新】2024美赛C题代码教学思路数据处理数学建模分析Momentum in Tennis

问题一完整的代码已给出,预计2号晚上或者3号凌晨全部给出。 代码逻辑如下: C题第一问要求我们开发一个模型,捕捉得分时的比赛流程,并将其应用于一场或多场比赛。你的模型应该确定哪名球员在比赛的特定时间表现得更好,…

AI-数学-高中-24-三角函数一般形式的各参数含义

原作者视频:三角函数】12三角函数一般形式的各参数含义(易)_哔哩哔哩_bilibili 1.函数中的A标识符:表示曲线中间平衡位置的振幅,值域为正负A:[-A,A]。 2.函数中的B标识符:决定曲线纵向上下平移…

基于 SpringBoot 和 Vue.js 的权限管理系统部署教程

大家后,我是 jonssonyan 在上一篇文章我介绍了我的新项目——基于 SpringBoot 和 Vue.js 的权限管理系统,本文主要介绍该系统的部署 部署教程 这里使用 Docker 进行部署,Docker 基于容器技术,它可以占用更少的资源,…

linux文件的IO函数

open函数: 作用:打开或者新建一个文件 原型: int open(const char*pathname,int flags); int open(const char*pathname,int flags,mode_t mode); 参数: pathname:路径 flags:1-> O_RONLY 只读打开 2 -> O_WONLY只写打开 3->…

83 CTF夺旗-Python考点SSTI反序列化字符串

这里写目录标题 CTF各大题型简介演示案例:CTF夺旗-Python-支付逻辑&JWT&反序列化CTF夺旗-Python-Flask&jinja2&SSTl模版注入CTF夺旗-Python-格式化字符串漏洞&读取对象 涉及资源: 我们这篇文章主要讲的是CTF在web渗透测试方向的3个考点 CTF各大…

elementui常用组件-个人版(间断更新)

Dialog 对话框 el-dialog <el-dialogtitle"提示":visible.sync"dialogVisible"width"30%":before-close"handleClose"><span>这是一段信息</span><span slot"footer" class"dialog-footer"…

微信小程序(三十六)事件传参

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.传参步骤 2.传参接收解构步骤 源码&#xff1a; index.wxml <button type"primary" bind:tap"onclick" mark:index"{{0}}" mark:remb"{{1}}" class"But&quo…

产品经理--分享在项目中产品与研发之间会遇到的问题 在面试这一岗位时,面试官常问的问题之一,且分享两大原则来回答面试官这一问题

目录 一.STAR原则 1.1 简介 1.2 如何使用 1.3 举例说明 二.PDCA原则 2.1 简介 2.2 如何使用 2.3 运用场景 2.4 举例说明 三.产品与研发的沟通痛点 3.1 沟通痛点的原因 3.2 分享案例 前言 本篇会详细阐明作为一个产品经理会在项目遇到的问题&#xff0c;如&#xff1a;产…

张艺谋《主角》选角引发热议,周迅、赵丽颖、杨紫或成候选。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 近日&#xff0c;张艺谋执导的首部电视剧《主角》女主选角成为…

6.electron之上下文隔离,预加载JS脚本

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

【Linux】vim的基本操作与配置(上)

Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦&#xff01; 那么废话不多说&#xff0c;咱们直接进入正题&#xff01; 1.初识vim vim是一款多模式的文本编辑器&#xff0c;可以对一个文件进行编辑操作。 它一共有三个模…

2024年【化工自动化控制仪表】最新解析及化工自动化控制仪表考试资料

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【化工自动化控制仪表】最新解析及化工自动化控制仪表考试资料&#xff0c;包含化工自动化控制仪表最新解析答案和解析及化工自动化控制仪表考试资料练习。安全生产模拟考试一点通结合国家化工自动化控制仪表考…

《dx12 龙书》第四部分学习笔记——预备知识(下)

7、多重采样技术的原理 由于屏幕中显示的像素不可能是无穷小的&#xff0c;所以并不是任意一条直线都能在显示器上“平滑”而完美地呈现出来。即为以像素矩阵 &#xff08;matrix of pixels&#xff0c; 可以理解为“像素2D数组”&#xff09;逼近直线的方法所产生的“阶梯” &…

EDM营销平台哪个好?推荐的邮件营销平台?

EDM邮件营销平台有哪些&#xff1f;外贸EDM邮件营销平台有哪些&#xff1f; EDM营销平台已成为企业推广产品和服务的重要工具。但是&#xff0c;面对市场上众多的EDM营销平台&#xff0c;究竟哪个更好呢&#xff1f;下面&#xff0c;蜂邮EDM将从平台功能、用户体验、数据分析和…