SpargeAttn:无需训练,加速所有模型!清华提出新型稀疏Attention机制

清华大学提出SpargeAttn,一种无需训练的稀疏Attention机制,加速包括语言、视频和图像模型在内的所有模型,推理速度提升4-7倍,精度无损。

原文标题:清华稀疏Attention,无需训练加速一切模型!

原文作者:机器之心

冷月清谈:

清华大学团队提出了一种名为SpargeAttn的全新稀疏Attention机制,旨在解决长序列场景下Attention计算复杂度过高的问题。该方法无需重新训练模型,能够直接应用于各种模型(包括语言、视频和图像模型),并在中等长度的上下文(如4-32K)中实现显著的加速效果。SpargeAttn通过快速预测P矩阵的稀疏部分,并结合TopCdf操作和GPU Warp级别的稀疏Online Softmax算法,有效省略了不必要的矩阵乘法计算。此外,针对视频和图像模型,该方法还利用希尔伯特重排来提高稀疏度。实验结果表明,SpargeAttn在保证精度的前提下,能够实现4-7倍于FlashAttention的推理加速,并在各类大模型上取得了优秀的端到端加速效果。

怜星夜思:

1、SpargeAttn声称可以加速包括视频、图像、文本生成等多种模型,那么这种通用性的背后,最关键的技术突破是什么?和其他稀疏Attention方法相比,它的优势体现在哪里?
2、文章中提到SpargeAttn使用了希尔伯特重排来提高视频和图像模型的稀疏度。希尔伯特曲线有什么特性?为什么这种重排能提高稀疏度?
3、SpargeAttn是基于SageAttention实现的,而现在Github仓库中已经有基于SageAttention2的实现,加速效果进一步提升。那么,SageAttention和SageAttention2之间有什么区别?如果我想使用SpargeAttn,应该选择哪个版本?

原文内容


在当今各类大语言模型以及视频模型中,长序列场景越来越普遍,而 Attention 的计算复杂度随着序列长度呈平方增长,成为长序列任务下的主要计算瓶颈。此前,清华大学陈键飞团队提出的即插即用量化的 SageAttention 系列工作已实现 3 倍加速于 FlashAttention,且在各类大模型上均保持了端到端的精度,已被业界和社区广泛使用。为了进一步加速 Attention,清华大学陈键飞团队进一步提出了无需训练可直接使用的稀疏 Attention(SpargeAttn)可用来加速任意模型。实现了 4-7 倍相比于 FlashAttention 的推理加速,且在语言,视频、图像生成等大模型上均保持了端到端的精度表现。



  • 论文标题:SpargeAttn: Accurate Sparse Attention Accelerating Any Model Inference

  • 论文链接:https://arxiv.org/abs/2502.18137 

  • 开源代码:https://github.com/thu-ml/SpargeAttn


下图展示了 SpargeAttn 的速度,可以发现在 RTX4090 上,SpargeAttn 在 60% 稀疏度的情况下可以达到 900TOPS 的速度,甚至是使用 A100 显卡速度的 4.5 倍(A100 上 FlashAttention 只有 200TOPS)。



在 SpargeAttn 的 Github 仓库中可以发现,SpargeAttn 的使用方法比较简洁,只需要进行一次简单的超参数搜索过程,就可以永久地对任意的模型输入进行推理加速。


接下来,将从前言,挑战,方法,以及实验效果四个方面介绍 SpargeAttn。


前言


随着大模型需要处理的序列长度越来越长,Attention 的速度优化变得越来越重要。这是因为相比于网络中其它操作的 O (N) 的时间复杂度,Attention 的时间复杂度是 O (N^2)。尽管 Attention 的计算复杂度为 O (N^2),但幸运的是 Attention 具备很好的稀疏性质,即 P 矩阵的很多值都接近 0。如何利用这种稀疏性来节省计算就成为了 attention 加速的一个重要方向。大多数现有的工作都集中在利用 P 矩阵在语言模型中表现出来的固定的稀疏形状(如滑动窗口)来节省计算,或是需要重新训练模型,比如 DeepSeek 的 NSA 以及 Kimi 的 MoBA。此外,现有稀疏 Attention 通常需要较大的上下文窗口(如 64K~1M)才能有明显加速。SpargeAttn 的目标是开发一个无需训练、对各种模型(语言 / 视频 / 图像)通用、精度无损、对中等长度的上下文(如 4-32K)也有加速效果的注意力机制。


图 1: 不同的模型表现出不同的稀疏形状


实现通用的,无需训练的稀疏 Attenion 有哪些挑战?


挑战 1 


通用性:Attention 虽然具备稀疏性质,但是其稀疏形状在不同的模型甚至同一模型的不同层中都是不同的,体现出很强的动态性。如图 1 所示,前两种模型分别为视频模型和图像生成模型,这两个模型中的 Attention 的稀疏形状相比语言模型更加没有规律。设计一种各种模型通用的稀疏 Attention 是困难的。


挑战 2 


可用性:对于各种 Attention 的输入,很难同时实现准确且高效的稀疏 Attention。这是因为准确性要求了完全精确地预测 P 中的稀疏区域,高效性则要求了此预测的时间开销极短。在一个极短的时间内完全精准地预测 P 的稀疏形状是困难的。


方法


为了解决上述的两个挑战,研究团队提出了对应的解决办法。


  • 研究团队提出了一种各模型通用的快速的对 P 矩阵稀疏部分进行预测的算法。该方法选择性地对 Q, K 矩阵进行压缩并预测 P 矩阵,接着使用 TopCdf 操作省略 P 中稀疏部分对应的 QK^T 与 PV 的矩阵乘法。

  • 研究团队提出了在 GPU Warp 级别上的稀疏 Online Softmax 算法,该算法通过利用 Online Softmax 中全局最大值与局部最大值之间的差异,进一步省略了一些 PV 的矩阵乘法计算。

  • 可选的,针对视频和图像模型,研究团队充分利用图像以及视频中的 Token 局部相似性质,使用希尔伯特重排的方法对 Attention 前的 Token 进行重新排列,进一步提高稀疏度。

  • 最后,研究团队将这种稀疏方法与基于量化的 SageAttention 融合到一起,进一步加速 Attention。


图 2: SpargeAttn 的算法流程图


SpargeAttn 的算法流程如下所示:



实验效果


总的来说,SpargeAttn 在视频、图像、文本生成等大模型均可以实现无需训练的加速效果,同时保证了各任务上的端到端的精度。


下表展示了 SpargeAttn 在各模型上的稀疏度,Attention 速度,以及各任务上的端到端精度,可以发现 SpargeAttn 在保证了加速的同时没有影响模型精度:(注:此论文中的所有实验都是基于 SageAttention 实现,目前 Github 仓库中已有基于 SageAttention2 的实现,进一步提供了 30% 的加速。



值得一提的是,此前的稀疏 Attention 工作很多无法实际使用的原因之一是稀疏预测部分的 Overhead 较大,而 SpargeAttn 团队还将稀疏预测部分的代码进行了极致优化,将 Overhead 压缩到了几乎在各种长度的序列下都可以忽略的地步:



下表展示了对于各模型的端到端的加速效果,以视频生成模型 Mochi 为例,SpargeAttn 提供了近两倍的端到端加速效果:(注:此论文中的所有实验都是基于 SageAttention 实现,目前 Github 仓库中已有基于 SageAttention2 的实现,进一步提供了 30% 的加速)



© THE END 
转载请联系本公众号获得授权
投稿或寻求报道:liyazhou@jiqizhixin.com

我觉得SpargeAttn的关键在于它能够快速且准确地预测Attention矩阵的稀疏部分,而且不需要针对特定模型进行训练。这和其他需要预定义稀疏模式或者重新训练的稀疏Attention方法相比,通用性和可用性上优势明显。可以理解为自适应稀疏化,根据输入动态调整,而不是一刀切。

我来个更形象的比喻!把图像想象成一个班级的座位表,每个座位上都坐着一个学生(像素)。如果按照正常的座位顺序,可能学霸和学渣、喜欢学习的和喜欢玩游戏的都混在一起。而希尔伯特重排就像重新安排座位,把学习好的安排在一起,方便他们互相讨论问题,把喜欢玩游戏的安排在一起,让他们自己嗨,互不干扰。这样一来,学霸和学渣之间的交流就减少了,稀疏度就提高了!

从论文角度分析,我认为核心在于它解决了通用性和可用性两大挑战:一是提出了通用的稀疏预测算法,能够适应不同模型的稀疏形状;二是优化了稀疏预测部分的开销,保证了在各种序列长度下都能有效加速。对比其他稀疏Attention方法,SpargeAttn无需重新训练、适用范围更广、加速效果更明显。

希尔伯特曲线是一种空间填充曲线,可以将多维空间的数据映射到一维空间,并保持较好的局部性。在图像和视频中,相邻的像素或帧通常具有较高的相似性。通过希尔伯特重排,可以将这些相似的Token排列在一起,从而使得Attention矩阵中对应这些Token的区域更加稠密,而其他区域则更加稀疏,最终提高整体的稀疏度。

这个涉及到图像处理的一些知识了。简单来说,希尔伯特曲线能把二维图像像素按照某种顺序排列,让原本在空间上相邻的像素在序列上也尽量相邻。图像里相邻像素往往是很相似的,这样重排之后,相似的token更容易被attention到一起,不相似的token就可以直接忽略,从而提高了稀疏度。这就像把好朋友安排坐在一起,方便聊天,不认识的人就不用理了。

SageAttention2应该是SageAttention的优化版本,可能在量化策略、算法实现或者硬件利用率上有所改进,从而实现了更高的加速效果。如果想使用SpargeAttn,建议选择基于SageAttention2的版本,毕竟新版本通常会带来更好的性能和体验。可以先在小规模数据集上进行测试,看看是否满足自己的需求。

这个问题问得好!我感觉SpargeAttn就像一个“万金油”,啥模型都能用,而且不用额外学习。以前的那些稀疏Attention,要么只能给特定模型用,要么还要重新训练,太麻烦了!SpargeAttn这种“拿来即用”的设计思路,才是真香!

从软件工程的角度看,版本号越高,通常意味着bug更少、性能更好。既然作者都说了SageAttention2加速效果更好,那肯定选新的啊!不过,也要注意新版本可能存在一些兼容性问题,最好先看看Github上的文档和issue,确保自己的模型能够顺利运行。

当然是all in最新版啦!就像玩游戏,谁不喜欢最新的DLC呢?SageAttention2肯定有它的独到之处,说不定还有隐藏的buff!不过,记得备份好旧版本,万一新版本翻车了,还能退回去。