Lightning Attention-2:实现无限序列长度、恒定算力成本和更高建模精度的新一代注意力机制

Lightning Attention-2 是一种新型的线性注意力机制,让长序列的训练和推理成本与 1K 序列长度的一致。
大语言模型序列长度的限制,极大地制约了其在人工智能领域的应用,比如多轮对话、长文本理解、多模态数据的处理与生成等。造成这一限制的根本原因在于当前大语言模型均采用的 Transformer 架构有着相对于序列长度的二次计算复杂度。这意味着随着序列长度的增加,需要的计算资源成几何倍数提升。如何高效地处理长序列一直是大语言模型的挑战之一。
之前的方法往往集中在如何让大语言模型在推理阶段适应更长的序列。比如采用 Alibi 或者类似的相对位置编码的方式来让模型自适应不同的输入序列长度,亦或采用对 RoPE 等类似的相对位置编码进行差值的方式,在已经完成训练的模型上再进行进一步的短暂精调来达到扩增序列长度的目的。这些方法只是让大模型具有了一定的长序列建模能力,但实际训练和推理的开销并没有减少。 
OpenNLPLab 团队尝试一劳永逸地解决大语言模型长序列问题。他们提出并开源了 Lightning Attention-2—— 一种新型的线性注意力机制,让长序列的训练和推理成本与 1K 序列长度的一致。在遇到显存瓶颈之前,无限地增大序列长度并不会对于模型训练速度产生负面影响。这让无限长度预训练成为了可能。同时,超长文本的推理成本也与 1K Tokens 的成本一致甚至更少,这将极大地减少当前大语言模型的推理成本。如下图所示,在 400M、1B、3B 的模型大小下,随着序列长度的增加,FlashAttention2 加持的 LLaMA 的训练速度开始快速下降,然而 Lightning Attention-2 加持的 TansNormerLLM 的速度几无变化。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

新一代注意力机制lightning attention-2:无限序列长度、恒定算力开销、更高建模精度图 1新一代注意力机制lightning attention-2:无限序列长度、恒定算力开销、更高建模精度

论文:Lightning Attention-2: A Free Lunch for Handling Unlimited Sequence Lengths in Large Language Models
论文地址:https://arxiv.org/pdf/2401.04658.pdf
开源地址:https://github.com/OpenNLPLab/lightning-attention
Lightning Attention-2 简介
让大模型的预训练速度在不同序列长度下保持一致,这听起来是一个不可能的任务。事实上,如果一个注意力机制的计算复杂度相对于序列长度保持线性关系的话,就可以实现这一点。自 2020 年线性注意力【https://arxiv.org/abs/2006.16236】横空出世以来,研究人员一直在为了线性注意力的实际效率符合它的理论线性计算复杂度而努力。在 2023 年之前,大多数的关于线性注意力的工作均集中在对齐它们与 Transformer 的精度上。终于在 2023 年中期,改进的线性注意力机制【https://arxiv.org/abs/2307.14995】在精度上可以与最先进的 Transformer 架构对齐。然而,线性注意力中将计算复杂度变成线性的最关键的 “左乘变右乘” 的计算 Trick (如下图所示),在实际实现中远慢于直接左乘的算法。其原因在于右乘的实现需要用到包含大量循环操作的累积求和(cumsum),大量的 IO 操作使得右乘的效率远低于左乘。
新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度
图 2
为了更好的理解 Lightning Attention-2 的思路,让我们先回顾下传统 softmax attention 的计算公式:O=softmax ((QK^T)⊙M_) V,其中 Q, K, V, M, O 分别为 query, key, value, mask 和输出矩阵,这里的 M 在单向任务(如 GPT)中是一个下三角的全 1 矩阵,在双向任务(如 Bert)中则可以忽略,即双向任务没有 mask 矩阵。
作者将 Lightning Attention-2 的整体思路总结为以下三点进行解释:
1. Linear Attention 的核心思想之一就是去除了计算成本高昂的 softmax 算子,使 Attention 的计算公式可以写为 O=((QK^T)⊙M_) V。但由于单向任务中 mask 矩阵 M 的存在,使得该形式依然只能进行左乘计算,从而不能获得 O (N) 的复杂度。但对于双向任务,由于没有没有 mask 矩阵,Linear Attention 的计算公式可以进一步简化为 O=(QK^T) V。Linear Attention 的精妙之处在于,仅仅利用简单的矩阵乘法结合律,其计算公式就可以进一步转化为:O=Q (K^T V),这种计算形式被称为右乘,相对应的前者为左乘。通过图 2 可以直观地理解到 Linear Attention 在双向任务中可以达到诱人的 O (N) 复杂度!
2. 但是随着 decoder-only 的 GPT 形式的模型逐渐成为 LLM 的事实标准,如何利用 Linear Attention 的右乘特性加速单向任务成为了亟待解决的难题。为了解决这个问题,本文作者提出了利用 “分而治之” 的思想,将注意力矩阵的计算分为对角阵和非对角阵两种形式,并采用不同的方式对他们进行计算。如图 3 所示,Linear Attention-2 利用计算机领域常用的 Tiling 思想,将 Q, K, V 矩阵分别切分为了相同数量的块 (blocks)。其中 block 自身(intra-block)的计算由于 mask 矩阵的存在,依然保留左乘计算的方式,具有 O (N^2) 的复杂度;而 block 之间(inter-block)的计算由于没有 mask 矩阵的存在,可以采用右乘计算方式,从而享受到 O (N) 的复杂度。两者分别计算完成后,可以直接相加得到对应第 i 块的 Linear Attention 输出 Oi。同时,通过 cumsum 对 KV 的状态进行累积以在下一个 block 的计算中使用。这样就得到了整个 Lightning Attention-2 的算法复杂度为 intra-block 的 O (N^2) 和 inter-block 的 O (N) 的 Trade-off。怎么取得更好的 Trade-off 则是由 Tiling 的 block size 决定的。
3. 细心的读者会发现,以上的过程只是 Lightning Attention-2 的算法部分,之所以取名 Lightning 是因为作者充分考虑了该算法过程在 GPU 硬件执行过程中的效率问题。受到 FlashAttention 系列工作的启发,实际在 GPU 上进行计算的时候,作者将切分后的 Q_i, K_i, V_i 张量从 GPU 内部速度更慢容量更大的 HBM 搬运到速度更快容量更小的 SRAM 上进行计算,从而减少大量的 memory IO 开销。当该 block 完成 Linear Attention 的计算之后,其输出结果 O_i 又会被搬回至 HBM。重复这个过程直到所有 block 被处理完毕即可。
想要了解更多细节的读者可以仔细阅读本文中的 Algorithm 1 和 Algorithm 2,以及论文中的详细推导过程。Algorithm 以及推导过程都对 Lightning Attention-2 的前向和反向过程进行了区分,可以帮助读者有更深入的理解。

新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

图 3新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

Lightning Attention-2 精度对比
研究人员首先在小规模(400M)参数模型上对比了 Lightning Attention-2 与 Lightning Attention-1 的精度区别,如下图所示,二者几无差别。

新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

随后研究人员在 1B、3B 上将 Lightning Attention-2 加持的 TransNormerLLM(TNL-LA2)与其它先进的非 Transformer 架构的网络以及 FlashAttention2 加持的 LLaMA 在相同的语料下做了对比。如下图所示,TNL-LA2 与 LLaMA 保持了相似的趋势,并且 loss 的表现更优。这个实验表明,Lightning Attention-2 在语言建模方面有着不逊于最先进的 Transformer 架构的精度表现。

新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

模力视频 模力视频

模力视频 – AIGC视频制作平台 | AI剪辑 | 云剪辑 | 海量模板

模力视频 51 查看详情 模力视频

在大语言模型任务中,研究人员对比了 TNL-LA2 15B 与 Pythia 在类似大小下的大模型常见 Benchmark 的结果。如下表所示,在吃掉了相同 tokens 的条件下,TNL-LA2 在常识推理和多项选择综合能力上均略高于基于 Softmax 的注意力的 Pythia 模型。

新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

Lightning Attention-2 速度对比
研究人员对 Lightning Attention-2 与 FlashAttention2 进行了单模块速度与显存占用对比。如下图所示,相比于 Lightning Attention-1 和 FlashAttention2,在速度上,Lightning Attention-2 表现出了相比于序列长度的严格线性增长。在显存占用上,三者均显示出了类似的趋势,但 Lightning Attention-2 的显存占用更小。这个的原因是 FlashAttention2 和 Lightning Attention-1 的显存占用也是近似线性的。
新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度
笔者注意到,这篇文章主要关注点在解决线性注意力网络的训练速度上,并实现了任意长度的长序列与 1K 序列相似的训练速度。在推理速度上,并没有过多的介绍。这是因为线性注意力在推理的时候可以无损地转化为 RNN 模式,从而达到类似的效果,即推理单 token 的速度恒定。对于 Transformer 来说,当前 token 的推理速度与它之前的 token 数量相关。
笔者测试了 Lightning Attention-1 加持的 TransNormerLLM-7B 与常见的 7B 模型在推理速度上的对比。如下图所示,在近似参数大小下,Lightning Attention-1 的吞吐速度是百川的 4 倍,ChatGLM 的 3.5 倍以上,显示出了优异的推理速度优势。

新一代注意力机制Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度

小结
Lightning Attention-2 代表了线性注意力机制的重大进步,使其无论在精度还是速度上均可以完美的替换传统的 Softmax 注意力,为今后越来越大的模型提供了可持续扩展的能力,并提供了一条以更高效率处理无限长序列的途径。OpenNLPLab 团队在未来将研究基于线性注意力机制的序列并行算法,以解决当前遇到的显存屏障问题。

以上就是Lightning Attention-2:实现无限序列长度、恒定算力成本和更高建模精度的新一代注意力机制的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/624736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月11日 08:16:29
下一篇 2025年11月11日 08:17:07

相关推荐

  • 如何用HTML插入标签云组件_HTML CSS3变换与随机颜色生成算法

    使用HTML构建标签结构,CSS3添加旋转与过渡效果,JavaScript生成随机HSL颜色并设置字体大小,实现动态交互的标签云组件。 要在网页中实现一个动态的标签云组件,结合 HTML、CSS3 变换和随机颜色生成算法,可以按照以下步骤操作。这个组件不仅能提升页面视觉效果,还能通过色彩和旋转增加交…

    2025年12月23日
    000
  • 如何在Go Gin应用中集成前端JavaScript模块(如Sentry)

    本文探讨了在Go Gin框架下,通过HTML模板服务前端页面时,如何有效集成JavaScript模块(如Sentry)。针对浏览器不直接支持Node.js模块导入语法的问题,文章详细阐述了利用CDN引入Sentry SDK的解决方案,并提供了具体的代码示例,帮助开发者实现前端错误监控功能,避免了复杂…

    2025年12月23日
    000
  • html官网浏览入口_html网站设计免费平台

    html官网浏览入口在https://www.codepen.io,该平台支持实时预览代码、创建Pen项目、Fork开源示例,可添加外部资源,具备点赞评论收藏等社区互动功能,设有挑战活动与作品集分类,开放API接口,界面简洁适合初学者,在线编写无需配置环境,支持多种预处理器和响应式测试。 html官…

    2025年12月23日
    000
  • html如何修改日期样式

    在html中,可以使用“::-webkit-datetime-edit”伪元素选择器来修改日期格式,只需要用该选择器选中元素,在设置具体样式即可,具体语法为“::-webkit-datetime-edit{属性:属性值}”。 本教程操作环境:windows7系统、CSS3&&HTML…

    2025年12月21日
    100
  • 单选框的type属性值为什么

    单选框的type属性值为“radio”。html type属性可以规定要显示的输入框“”元素的类型;值为“radio”时显示为单选框、“checkbox”时显示为复选框、“select”时显示为下拉式选框等等。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 在HTML中,…

    2025年12月21日
    000
  • HTML中type是什么意思

    在HTML中,type是类型的意思,是一个标签属性,主要用于定义标签元素的类型或文档(脚本)的MIME类型;例在input标签中type属性可以规定input元素的类型,在script标签中type属性可以规定脚本的MIME类型。 本教程操作环境:windows7系统、html5版、Dell G3电…

    2025年12月21日
    000
  • HTML中ul标签如何去掉点?HTML无序列表的样式实例解析

    本篇文章主要讲述的是关于html中的ul标签的默认小点给取消掉,还有关于html的无序列表ul标签的样式解释,给出了ul标签中的type属性三种值的介绍。现在就让我们一起来看本篇文章吧 首先这篇文章一开始我们就开始介绍在html中是怎么把ul标签的点给去掉的: 大家应该都使用过ul无序列表标签,ul…

    2025年12月21日 好文分享
    000
  • html中的ol标签如何去掉标号呢?标签的使用方法总结

    本篇文章介绍了html的ol标签是怎么去掉序号标号的,这里还有代码的详细解释,还有介绍了关于html ol有序列表标签如何更改序号,下文介绍了三种序号,大家也可以自己去想填写怎样的序号。现在来看这篇文章吧 一、我们先看看html中的ol标签是如何去掉标号的呢: 我们都知道html的ol标签是个有序列…

    2025年12月21日 好文分享
    000
  • HTML ul标签的什么意思?HTML ul标签的作用详解

    本篇文章主要的为大家讲解了关于html ul标签的三种重要的用法,还有关于html ul标签的解释,包含li标签的还有type属性对ul标签的使用情况,好了,下面大家一起来看文章吧 首先让我们先来解释一下HTML ul标签的意思: ul标签定义的是表格当中无序列表,表格当中的无序列表都是在 标签之中…

    2025年12月21日
    000
  • javascript框架和库是什么_如何选择React、Vue或Angular?

    JavaScript框架与库分别提供按需调用的功能集合和约束性开发结构;React是UI组件库,生态灵活但需自行整合工具;Vue渐进式易上手,兼顾原型与工程化;Angular是全功能TypeScript框架,适合强规范企业级项目。 JavaScript框架和库是封装好的代码集合,用来简化前端开发——…

    2025年12月21日
    000
  • React应用生产环境环境变量配置深度指南

    本文针对react应用在生产环境中无法读取`.env`文件配置的环境变量问题,深入剖析其工作原理、常见原因及排查方法。通过详细的步骤和示例代码,指导开发者正确配置和使用环境变量,解决api调用层面的`null`响应问题,确保应用在生产环境下的稳定运行。 在React应用开发中,环境变量(如API密钥…

    2025年12月21日
    000
  • JS注解怎么实现文档化_ JS注解生成开发文档的流程与工具

    JSDoc是一种JavaScript结构化注释规范,通过@param、@returns等标签描述代码元素,并借助工具生成HTML文档,结合IDE支持和CI/CD可提升团队协作效率。 JavaScript本身不支持原生注解(Annotation)像Java那样的语法,但通过约定的注释格式和配套工具,可…

    2025年12月21日
    000
  • JS注解怎么标注联合类型_ JS联合类型的注解书写与使用技巧

    在JavaScript中可通过JSDoc使用联合类型注解,如string|number表示多类型支持,结合@param、@typedef等标签提升代码可读性与编辑器提示,适用于函数参数、返回值等场景。 在JavaScript中,虽然原生不支持类型注解,但在使用JSDoc配合现代编辑器(如VS Cod…

    2025年12月21日
    000
  • VS Code主题开发:告别JSON,拥抱脚本化生成

    vs code主题扩展最终需json格式定义,但开发者可通过javascript或typescript等脚本语言生成此json文件。这种方法有效解决了大型json文件难以维护、不支持注释等问题,并能实现颜色动态计算,显著提升主题开发的灵活性与效率。 为什么选择脚本化生成VS Code主题? 在开发V…

    2025年12月20日
    000
  • 如何用Quasar框架开发一个跨平台应用?

    Quasar基于Vue.js用一套代码构建多平台应用,支持响应式网站、PWA、移动App和桌面应用。通过quasar create创建项目,利用模式(SPA、PWA、Electron等)切换目标平台,使用Quasar组件库编写通用UI,配合Pinia管理状态,最后通过不同构建命令发布到各平台,实现高…

    2025年12月20日
    000
  • 怎么利用JavaScript进行前端代码覆盖率统计?

    答案:利用JavaScript进行前端代码覆盖率统计的核心是通过Istanbul/nyc等工具对代码插桩,结合测试框架收集执行数据并生成报告。具体流程包括:在代码执行前通过Babel或Webpack插件(如babel-plugin-istanbul)插入计数器实现插桩;运行测试时记录哪些代码被执行;…

    2025年12月20日
    100
  • typescript中的参数分享

    TypeScript 中的参数共享允许组件间共享参数,实现跨组件状态维护和数据变更共享。通过 @Input 装饰器传递父组件参数,使用 @Output 装饰器定义子组件事件,以便在子组件状态改变时通知父组件。参数共享提高复用性,简化状态管理,允许子组件向父组件发出通知,但应谨慎使用,避免大量数据共享…

    2025年12月19日
    000
  • 手机如何运行typescript方法

    要在手机上运行 TypeScript 方法,可以使用 TypeScript 编译器或第三方库:TypeScript 编译器: 将 TypeScript 代码编译成 JavaScript,然后集成到移动应用程序中。第三方库: 如 React Native 或 NativeScript,允许使用 Typ…

    2025年12月19日
    000
  • typescript用来干嘛_typescript的作用

    TypeScript 是一种用于构建大型复杂应用程序的开源编程语言,它扩展了 JavaScript 的功能,具有以下作用:类型系统:编译时检查类型错误,提高代码可靠性。面向对象编程特性:支持类、接口、抽象类,增强代码组织性和维护性。模块系统:分解程序为可重用模块,提升可维护性和可扩展性。全面的类型推…

    2025年12月19日
    000
  • TypeScript基本用法和语法

    TypeScript 是一种具有类型系统的 JavaScript 超集,提供以下特性:类型注解:确保变量、函数和类的类型一致。接口:定义方法和属性,供类实现。枚举:提供命名常量集。泛型:创建可重用且类型安全的组件。 TypeScript 基本用法和语法 TypeScript 是一种超集 JavaSc…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信