近年来,随着视觉生成模型的发展,视觉生成任务的输入序列长度逐渐增长(高分辨率生成,视频多帧生成,可达到 10K-100K)。与输入序列长度呈平方复杂度的 Attention 操作,成为主要的性能瓶颈(可占据全模型的 60-80% 的开销),有明显的效率优化需求。注意力的稀疏化(Sparse Attention)与低比特量化(Attention Quantization)为常用的 Attention 优化技巧,在许多现有应用中取得优秀的效果。然而,这些方法在视觉生成模型中,在低稠密度(<50%)与低比特(纯 INT8/INT4)时面临着显著的性能损失,具有优化的需求。
本文围绕着视觉任务的 “局部性”(Locality)特点,首先提出了系统的分析框架,识别出了视觉生成任务 Attention 优化的关键挑战在于 “多样且分散” 的注意力模式,并且进一步探索了该模式的产生原因,并揭示了多样且分散的注意力模式,可以被统一为代表 “局部聚合” 的块状模式。然后,提出了一种简单且硬件友好的离线 “Token重排” 方案以实现注意力模式的统一化,并设计了针对性的稀疏与量化方法,配合高效的 CUDA 系统设计,展现了更优异的算法性能保持与硬件效率提升。最后,本文讨论了该方案更广泛的应用空间,与对视觉生成算法设计的启发。
如上文所述,一系列现有的注意力稀疏化与低比特量化方案已取得了进展,但是还存在着一定的挑战与改进空间:
对于稀疏化,一系列现有方案(DiTFastAttn,SparseVideoGen,Sparse-vDiT)尝试依据视觉注意力图的独特模式,设计针对性的稀疏掩码(Sparse Mask,如 “窗口状的”,“多对角线”,“垂直线的”),并将其进行组合。然而,适配多样且分散的注意力模式,给稀疏掩码的设计与选择机制带来了严峻的挑战。本文尝试采用另一种视角与方法,并不涉及复杂的掩码选择机制来适配复杂多样的注意力模式,而是设计方案 “重整注意力模式”。让多样且复杂的注意力模式,统一为硬件友好的块状注意力模式,让稀疏方案设计更加简单有效。
对于低比特量化,现有方案(SageAttention 系列)SageAttentionV2 可以将 Attention 中的 QK 计算(Query 与 Key 的乘法)降低至 INT4,但是 PV(AttentionMap 与 Value 的矩阵乘)计算仍然需要保持为较高的 FP8。最新版本的 SageAttentionV3 采用了 FP4 量化,但仅在最新的 B 系列 Nvidia GPU 上有支持。本文尝试分析了更低位宽的定点量化(全流程 INT4)的关键问题,并给出了解决方案。
图:本文(PAROAttn)的优化思路:重整注意力图以便稀疏与量化处理
为寻找 Attention 稀疏与量化的统一解决方案,本文尝试分析 Attention 效率优化中稀疏与低比特量化的关键问题,来自于视觉注意力图多样且分散的独特数据分布 (如下图左侧所示):
稀疏注意力方案设计需要从 2 方面考虑:保持算法性能,与提升硬件效率。
对于低比特量化算法的设计:关键问题为如何尽量减少量化损失。
图:视觉生成稀疏与量化的关键问题来自于多样分散的注意力模式,与本文的解决方案:采用Token重排以改进注意力图为统一的分块模式
为解决视觉注意力图多样且分散的独特数据分布给注意力稀疏与量化所带来的挑战。本文的技术路线为:对注意力图进行 “重整”(Reorganize),以获得更加统一且易处理的注意力模式。
受到视觉特征提取具有 “局部性” 的先验启发(CNN,SwinTransformer 的设计理念,与 Hubel 与 Wiesel 的生物学实验),本文进一步分析了视觉注意力模式多样性的产生原因,并发现了 “多样的视觉注意力模式本质上都在描述空间上的局部聚合”。
如下图所示,在 Transformer 的处理过程中,原本三维空间(F - 帧数,H,W - 每帧的图像宽高)会被转化为一维的标记序列(Token Sequence),按照默认的 [F,H,W] 的顺序排列。这会导致在除了内存上连续的最后一维(W)之外维度的三维空间相邻像素,在标记序列中呈现为按照一定的间隔排列。
因此,多对角线的注意力模式,本质上是在描述 “其他维度上的局部聚合”,并可以通过Token顺序的重排列,转化为代表局部聚合的块状模式(将局部聚合的维度转化为内存上连续的维度,如 [F,H,W] -> [F,W,H])。
本文进一步验证了,每个不同的注意力头(Head),在不同情况下,呈现出一致的在某个维度上的局部聚合,进而可以通过为每个 head 选取合理的Token重排(Token Reorder)方案,将多样且分散的注意力模式,转化为统一的,硬件友好的块状模式,以便于 Attention 的稀疏与量化。该方案利用了算法侧视觉特征提取的局部性(更好的数值 Locality),并将其与硬件计算的局部性将对应(更好的内存与计算 Locality),从而获得了同时更优的算法性能保持,与硬件效率提升。
图 视觉特征提取 “局部性” 的示意图
整体框架
方案流程如下图所示,对 Attention 计算的主要瓶颈,两个大规模矩阵乘(QK 与 PV)都进行了稀疏与量化优化,显著减少其硬件开销。本文基于少量矫正数据离线决定了每个注意力头(Head)的Token重排方案,与对应的稀疏掩码,几乎不在推理时引入额外的开销。在推理时,仅需跳过稀疏掩码所对应的 attention 分块,并对剩余的部分逐块进行低比特量化。
图 PAROAttention 稀疏与量化方案的流程
Token重排方案(PARO:Pattern-Aware Token Reordering)
本文发现每个不同的注意力头(Head),在不同情况下,呈现出一致的在某个维度上的局部聚合。因此,可以离线地对每个注意力头,选择恰当的Token重排方式,将注意力图转化为展示局部聚合的块状(Block-wise)模式。
本文发现了重排列中的一种特殊方式,维度置换(Permutation),就可以取得不错的效果。对于视频生成模型的特征 [F,H,W],本文为每个注意力头 6 种可能的置换方式,离线选取最优的置换方式,以获得需要的数据分布方式。由于对于注意力稀疏与量化,具有不同的数据分布需求。因此,本文针对稀疏和量化分别设计了重排方式的选取指标,并将两者组合作为最终指标。
如下图所示,稀疏与量化对注意力图的分布需求不同,需要组合两者需求,才能找到同时适合两者的重排方式。经过合适的重排处理之后,注意力图呈现块状且较为集中的分布,以适配稀疏与量化处理。
图:不同重排方式的注意力图示意
稀疏方案
现有的稀疏注意力方案可分为 2 种方式:(1)动态稀疏方案(如 SpargeAttention)在线依据注意力值生成稀疏掩码;(2)静态稀疏方案(如 DiTFastAttn):离线生成稀疏掩码。两者各有其优劣。尽管本方法设计的Token重排(PARO)方案能够同时帮助动态与静态方案,本文对两者优劣进行的分析,并最终选取了静态稀疏方案,作为 PAROAttention 的主要稀疏方案,具体分析如下:
对于动态稀疏(Dynamic Approach):
对于静态稀疏(Static Approach):
经过重排列处理之后,注意力图呈现出统一的集中的分块模式。因此,本文仅需离线统计每块中的 attention 数据之和,并设计阈值判断当前块是否需要被跳过(该阈值可以用于调节稠密度),就可以离线获取到稀疏掩码,在推理时不引入任何额外开销(overhead)。如下图所示,相比其他现有的静态注意力稀疏方案,由于预先对注意力模式的统一化,PAROAttention 避免了复杂且受限的掩膜设计,而能够与原图非常契合的稀疏掩膜。
量化方案:
对于低比特量化,评估量化损失的关键指标是分组内的数据差异,现有文献通常采用不均衡度(Incoherence)进行衡量,被定义为当前数据组中的最大值,除以平均值(x.max () /x.abs ().mean ())。经过合适的Token重排之后,Attention Map 块内的显著数据差异得到明显缓解,从而可以支持更低位宽的量化。
CUDA 系统设计
最小化额外开销:PAROAttention 所引入的额外开销主要有以下两方面,本文在系统层面进行了针对性优化以最小化额外开销。
兼容性:PAROAttention 的稀疏与量化方案都逐块处理,可直接与兼容 FlashAttention。由于重排与稀疏掩码均离线完成,无需精细的 CUDA Kernel 优化,仅需基于 FlashAttention 进行跳过整块计算的支持,能够广泛适配各种场景。
算法性能保持效果
本文在主流视频(CogVideo)与图片生成模型(Flux)上测试了多方面指标,包括了:
典型的实验结论概括如下:
(1)其他基线的稀疏方案在相对较高稀疏比(50%)时,仍会造成可观的质量损失,包括内容变化,图像模糊等;而 PAROAttention 的稀疏化方案,可以在 20% 的较高稀疏比情况下,依然生成和浮点结果非常相似的结果,获得比基线方案 50% 更好的多方面指标。
(2)Token重排方案 PARO,并不局限于静态稀疏方案。其与动态稀疏方案 SpargeAttention 能够直接适配,并提升生成效果。将 30% 稠密度的 SpargeAttention 组合 PARO,可以获得与 50% 稠密度 SpargeAttention 同等的生成质量。将加速比从 1.67x 提升至 2.22x。
(3)相比于 SageAttentionV2(QK INT4,PV FP8),PAROAttention 的量化方案可以在无精度损失的情况下,进一步将 PV 量化到 INT4。
(4)PAROAttention 的稀疏与量化方案可以并行使用,最激进的优化方案(50%+INT4)相比浮点能取得近 10 倍的 Attention 部分延迟优化,同时获得与仅能取得 2x 左右延迟优化的基线方法类似的算法性能保持。
硬件加速效果
本文进一步对系统层面优化技巧进行了分析,关键实验结论如下:
(1)PAROAttention 的稀疏方案,同时取得了更优的算法性能保持与效率提升。以 50% 稠密度为例,PAROAttention 取得了 1.73x 的 attention 加速,超过同等情况下的 SpargeAttention(1.67x)与 SparseVideoGen(1.42x),由于静态稀疏方案几乎不会引入额外开销,而基线方案的在线稀疏掩膜生成 / 选择会造成 6% 到 10% 左右的额外开销,该开销在更低稠密度下显得给更为明显。
(2)PAROAttention 的加速比与理论上限较为接近(50% 稠密度,理论 2 倍,实际 1.73 倍),凸显了方案的硬件友好性。
(3)PAROAttention 的各方面额外开销 overhead 得到了有效减少,控制在整体的 1% 之内。
总结来看,本文关注了视觉生成任务的 “局部性” 特性。通过一个简单且有效的Token重排操作,可以同时实现算法侧视觉特征提取的局部性(更好的数值 Locality),并将其与硬件计算的局部性相对应(更好的内存与计算 Locality),从而获得了同时更优的算法性能保持,与硬件效率提升。PAROAttention 的方案主要围绕推理效率优化设计,但是采用Token重排来更好利用特征提取局部性的思想并不局限于推理优化中。不同的注意力头自主的学习到在不同维度上的局部聚合,可以启发优化训练方法,与图像的参数化方式,三维空间的位置编码设计,并进一步推动具有合理归纳偏置(Inductive Bias)的视觉基座模型的构建。
文章来自于微信公众号“机器之心”。
【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。
项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file
本地安装:https://www.deepbi.com/
【开源免费】airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。
项目地址:https://github.com/hitsz-ids/airda
【部分开源免费】FLUX是由Black Forest Labs开发的一个文生图和图生图的AI绘图项目,该团队为前SD成员构成。该项目是目前效果最好的文生图开源项目,效果堪比midjourney。
项目地址:https://github.com/black-forest-labs/flux
在线使用:https://fluximg.com/zh