Token导航 LogoToken导航

AI 资讯 · 科技行者

腾讯论文优化视频生成注意力计算提效

更新 2026-11-11科技行者正文 6956字阅读约 22分钟

你有没有想过,一部14秒的AI生成视频,背后要算多少次"谁该看谁"的账?

答案是惊人的。生成一个768p、14.4秒的视频,模型里的注意力机制要处理几十万个token,每个token都要和其他所有token算一遍相关性。这个计算量是平方级增长的,画面越长、分辨率越高,算力消耗就越恐怖。腾讯这篇论文里提到,用满血的密集注意力生成这样一段视频,需要1062秒,接近18分钟。这还只是去噪部分的耗时,没算上编码和解码。

于是业界想了个办法:既然注意力总是集中在少数几个关键token上,那干脆别算全部,只算重要的那部分,这就是稀疏注意力。听起来很合理,但稀疏到一定程度,生成的视频就开始出问题,画面模糊、细节丢失、和原本密集计算的结果差异明显。这篇论文想搞清楚的,正是这个"稀疏到底丢了什么"的问题。

密集和稀疏之间,到底差在哪

现在主流的稀疏注意力方法大多是按"块"来操作的。

块稀疏注意力*:把一堆query(提出问题的token)和一堆key(被查询的token)分别打包成固定大小的"块",对每组query块,只保留整体上看起来重要的几个key块,其余全部丢弃。

这个设计初衷很合理,因为GPU天生喜欢批量处理规整大小的数据块,如果每个token都单独决定自己要看谁,那内存访问会变得乱七八糟,效率反而更低。但问题也出在这里:一个块里塞了好几个token,这些token未必都关心同一组key。你强行让它们共享一次选择,结果就是有些token该看的东西没看到,不该看的东西反而被塞进来了。

论文作者没有直接去改进选择算法,而是先做了一件更基础的事:把误差来源拆开看。他们设计了三种"oracle"(理想情况下的最优选择器,用来对照实际方法差多少)作为对照组。

第一种叫块oracle,每组query块选出整体上最优的几个key块。第二种叫token oracle,还是共享一次选择,但选择的最小单位从块变成了单个token。第三种叫per-query oracle,每个query都能单独挑选自己的key token,不再和同组的其他query共享。

这三组对照一比,结果很清楚。从块oracle到token oracle,精度明显提升,说明"把不相关的邻居token硬塞进来"这件事本身就造成了损失,论文把这个叫做KV绑定误差。从token oracle再到per-query oracle,精度又进一步提升,说明"强迫不同query共享同一次选择"也在拖后腿,这是query绑定误差。这两种误差加在一起,就是论文说的结构性绑定误差。

除此之外还有两种误差。普通的块稀疏方法用的是均值池化打分,也就是把一个块里所有query和key先各自取个平均,再拿平均值去算相关性分数。这个平均操作本身就会丢信息,导致选出来的块未必是真正该选的,这叫选择误差。还有一种更隐蔽的误差,就算你选得再准,被丢弃的那些token依然带着一点点注意力权重,这些零零碎碎加起来也会造成输出的偏差,论文把这个叫做丢弃尾部误差。

这就好比你去图书馆找资料,如果图书馆规定"只能按整个书架借",哪怕你只需要架子上第三本书,也必须把旁边十几本不相关的书一起搬走占用你的精力,这是结构性绑定误差。如果你找资料靠的是书架标签上写的笼统分类,而不是翻看每本书的实际内容,那经常会找错架子,这是选择误差。就算你精准找到了最该看的那几本书,图书馆里其他角落里那些零散的、不起眼的参考资料依然可能藏着一两条有用的信息,你全部放弃不看,积少成多也会让你的研究出现偏差,这是丢弃尾部误差。如果不把这三类误差分开,你永远不知道该优化选择算法,还是该换数据结构,还是该想办法补偿被丢的那部分。

拆解清楚之后,论文给出的结论很直接:想要缩小密集和稀疏之间的差距,需要三件事同时做到,选择要更细粒度,打分要更精确,被丢掉的部分要有补偿机制。这三条原则直接催生了他们提出的新方法,叫MC-Sparse。

MC-Sparse:三管齐下的解法

MC-Sparse*(Meta-Cached Sparse Attention,元缓存稀疏注意力)的核心思路,是把前面说的三个问题逐一攻破,同时还要兼顾GPU执行效率。

先看第一个问题,结构绑定误差怎么解决。论文的做法是让KV(key和value,也就是被查询的内容)选择精确到单个token,不再被块结构束缚。但query(提问方)这边不能完全自由,因为GPU批量计算需要规整的数据块,如果每个query都单独跑一次,计算效率会大打折扣。于是论文的做法是,把相似的query聚成固定大小的组,组内共享一次KV选择,但KV选择的粒度精确到token级别,不再受块边界限制。

这就像是公司开会,如果让每个员工单独找老板汇报,效率太低,老板根本忙不过来,这是query完全自由带来的效率灾难。但如果把所有人塞进一个大会议室,不管议题相关不相关都强行一起听,那又是典型的结构绑定误差。折中的办法是,把议题相近的人分成几个小组,每组单独开会,但会议室里讨论的内容不再是笼统的"部门报告",而是精确到每个具体问题,这样既保证了效率,又保证了针对性。

那怎么把相似的query分成等大小的组呢?常见的k-means聚类做不到严格等大小分组,因为聚类结果天然是不规则的,强行拉齐就要靠填充,填充意味着浪费计算资源去处理没有实际意义的占位数据。论文采用的方法叫快速主方向分裂划分(Fast PDDP,一种递归二分聚类算法,通过沿数据主方向做中值切分来保证分组大小完全相等),原理是把一组query投影到它们的主方向上,按中位数切成两半,反复切下去,直到每组恰好包含目标数量的query。这个方法保证了组内相似性比较高,同时组的大小天然均等,不需要填充。

实验数据显示,这个设计确实管用。在同等的"实际执行密度"下(也就是算上填充浪费之后真正花费的计算量相同的前提下),Fast PDDP分组配合token级选择,注意力召回率能达到92.3%,比用k-means分组配合token选择的87.6%高出不少,输出相对误差也从3.8%降到2.6%。

再看第二个问题,选择误差怎么解决。论文给出的"精确选择"目标很直白:对每组query,找出能让这组query累积注意力权重最大的那批KV token。这需要先跑一次完整的密集注意力,拿到真实的注意力分数,再据此挑选,而不是像均值池化那样用一个粗糙的近似值来猜。

但密集注意力本身就很贵,如果每一步去噪都重新算一次精确选择,那和直接跑密集注意力也没差多少了,图什么稀疏化呢。这里论文观察到一个关键现象:在视频生成这种扩散模型里,去噪是分很多步进行的,相邻步骤之间,注意力关注的模式变化很小。

扩散模型*:一种通过多步迭代、从随机噪声逐步还原出清晰图像或视频的生成模型,每一步称为一个去噪步骤。

既然相邻步骤的注意力模式差不多,那就没必要每步都重新精确计算。论文设计了"锚点步"和"重用步"的机制:只在少数几个锚点步骤上跑一次完整的密集注意力,精确计算出该选哪些KV token,然后把这个选择结果缓存下来,后续若干个重用步骤直接复用这份选择,只是用当前步骤的最新Q、K、V去做实际计算。

这就好比你每天通勤走同一条路,路况在短时间内变化不大,你不需要每天早上都重新规划一次最优路线,只需要隔几天根据实际路况校准一次,其余日子直接沿用上次规划的路线走。如果每天都重新规划,花在规划上的时间可能比省下的通勤时间还多;但如果从来不校准,路况一旦真的变了(比如突然封路),你会一直走一条已经不合适的路线,代价是绕远路却毫不知情。锚点步和重用步的设计,恰好是在"每步都算"和"从来不算"之间找到了那个平衡点。

实验证明,这种复用策略甚至比"每步都用均值池化重新计算一次"更准。论文的图表显示,哪怕是25步之前缓存的精确选择结果,拿到当前步骤复用,表现依然优于当前步骤临时用均值池化算出来的选择。这说明"陈旧但精确"的信息,比"新鲜但粗糙"的信息更可靠。

最后看第三个问题,丢弃尾部误差怎么补偿。传统的块稀疏方法会用"块的平均值"去近似补偿被丢弃那部分的贡献,但MC-Sparse的选择精确到单个token,不再对齐任何块结构,这种块级别的补偿方式用不上了。

论文的解法转向了时间维度。他们发现,密集注意力和稀疏注意力输出结果之间的差值(也就是残差),在相邻去噪步骤之间变化很小,比输出结果本身的变化还要稳定,而且用精确选择算出来的残差,比用均值池化算出来的残差更稳定。

于是补偿机制变得很简单:在锚点步,把密集注意力的完整输出和稀疏注意力的输出相减,得到残差并缓存下来。后续的重用步骤,稀疏注意力算出结果之后,直接把这个缓存的残差加回去,相当于给每次稀疏计算打了个"误差补丁"。

这个思路有点像修一件老家具的损耗。如果每次用完都要重新测量损耗量再修补,费时费力;但如果你发现损耗量在短期内基本不变,那不如先测量一次损耗模式,之后每次直接按这个固定补丁去修补,省掉重复测量的成本。如果完全不打补丁,家具的瑕疵会一直存在;如果每次都重新测量,又会把节省下来的时间全部搭进去。

把这三个设计拼在一起,就是MC-Sparse的完整流程:在锚点步,跑一次密集注意力,顺便完成query分组、精确KV选择、残差计算这三件事,把结果打包缓存;在后续的重用步骤,直接复用缓存的分组方案和选择索引,只用新的Q、K、V做实际的稀疏注意力计算,再把缓存的残差加回去。

为了让这套流程真正跑得快,论文还做了几件工程上的硬功夫。他们用CuTeDSL(NVIDIA提供的一种底层GPU核函数编程框架,用于编写高性能的张量计算代码)手写了一个token级稀疏注意力核函数,支持直接按索引异步抓取被选中的key和value,不需要先打包成规整的块结构。他们还设计了一个两阶段的精确选择核函数,因为标准的FlashAttention在计算过程中用的是"在线softmax"技巧,不会把完整的注意力矩阵暴露出来,所以想要精确选择,需要先跑一遍拿到归一化所需的统计量,再跑第二遍把分数还原出来并直接完成分组聚合和筛选,避免把整个密集注意力矩阵都存在显存里。

实测效果怎么样

说了这么多设计,实际效果到底如何?

论文在多个视频生成模型和一个3D资产生成模型上做了测试。先看视频生成这块的核心数据。

在Minimax-H3-Base这个模型上,768p分辨率,15%的注意力密度(也就是只保留15%的query-key交互对)下,MC-Sparse的PSNR达到27.30分贝,SSIM是0.882,相比之下同密度区间表现最好的对比方法Sol-Attn在32.4%密度下只有23.66分贝,PISA在30%密度下是23.45分贝。密度更低、精度反而更高,同时速度还提升到了1.80倍。

PSNR*(峰值信噪比,数值越高说明生成结果和参照结果越接近),SSIM*(结构相似性指数,衡量两张图像结构上的相似程度,数值越接近1越好),这两个指标是用来衡量稀疏计算结果和密集计算结果之间差距的,数值越高说明稀疏方法越逼真。

在HunyuanVideo-13B这个720p模型上,25%密度时MC-Sparse达到32.89分贝PSNR,15%密度时达到30.78分贝,速度分别提升到1.82倍和2.00倍,全面超过Sol-Attn和PISA两个基线方法。

在Wan2.1-14B这个720p模型上,无论是文生视频还是图生视频任务,MC-Sparse在PSNR、SSIM、LPIPS三个指标上都拿到了最佳成绩,速度也达到1.52到1.53倍。

LPIPS*(学习感知图像相似度指标,一种基于深度网络特征计算的相似度指标,数值越低说明两张图像在人眼感知上越接近)。

再看3D资产生成这块,数据差距拉得更大。在HY3D-Internal这个内部模型上,15%密度时,MC-Sparse的Chamfer距离(衡量两个三维形状之间差异的几何指标,数值越低说明两个形状越接近)只有0.177,而PISA在25%密度时是0.976,Sol-Attn在36.1%密度时是1.901。速度方面,MC-Sparse达到2.32倍提升,远超Sol-Attn的1.57倍。论文配的3D模型渲染图显示,PISA和Sol-Attn生成的模型表面出现明显的断裂和细节缺失,而MC-Sparse的表面保持了连续性和细节完整度,即便它用的注意力密度更低。

| 模型 | 方法 | PSNR↑ | 密度↓ | 加速比↑ |

|---|---|---|---|---|

| Minimax-H3-Base | Sol-Attn | 23.66 | 32.4% | 1.59× |

| Minimax-H3-Base | **MC-Sparse** | **27.30** | **15.0%** | **1.80×** |

| HunyuanVideo-13B | PISA | 27.65 | 30.0% | 1.70× |

| HunyuanVideo-13B | **MC-Sparse** | **30.78** | **15.0%** | **2.00×** |

| Wan2.1-14B-T2V | SVG-EAR | 27.61 | 25.3% | 1.38× |

| Wan2.1-14B-T2V | **MC-Sparse** | **28.81** | **25.0%** | **1.53×** |

论文还做了细致的消融实验,一步步往基础的块稀疏方法上叠加各个组件。从最原始的均值池化块稀疏方法开始,PSNR只有20.96分贝,加上带缓存复用的精确KV选择,提升到21.60分贝,再加上token级粒度,提升到22.57分贝,再加上query分组,提升到23.51分贝,最后加上残差补偿,直接跳到27.05分贝。残差补偿这一步带来的提升最大,整整三点五个分贝,说明丢弃尾部误差确实是个被低估的问题。

但有个细节挺有意思:同样是加残差补偿,如果直接套到最原始的均值池化方法上,只能提升1.25分贝,套到PISA上只能提升0.49分贝。这说明残差补偿这个机制,得配合前面的精确选择和分组设计才能发挥最大效果,单独拎出来用效果有限。这也验证了论文一开始的判断,三类误差不是互相独立的,解决方案需要联动。

另外论文还专门测了核函数本身的执行效率,避免"稀疏是稀疏了,但GPU跑起来反而慢"这种尴尬局面。在Hopper GPU上,20%密度时MC-Sparse的核函数达到理论加速比的96%,PISA的核函数只有82%,SVG2的核函数只有80%。这说明MC-Sparse的token级选择虽然看起来更"碎",但因为用了异步抓取和warp专精的工程设计,并没有因为数据不规整而拖慢实际的GPU执行效率。

写在后面

读完这篇论文,我印象最深的其实不是最终的加速比数字,而是它处理问题的方式。

很多做稀疏注意力的论文,拿到一个新想法就直接上实验、报指标,但这篇论文先花了大量篇幅去拆解误差来源,用三种oracle对照组把"哪个环节在拖后腿"这件事量化出来。这种"先诊断再开药"的做法,在工程论文里其实不算常见,大部分工作更倾向于直接给方案。

另一个让我意外的细节是,残差补偿这个看似简单的加法操作,居然贡献了消融实验里最大的单项提升。这多少说明一个事实:被丢弃的那些"不重要"的token,累积起来的影响被低估了。直觉上我们会觉得注意力权重小的token可以忽略,但论文用数据证明,忽略的代价远比想象中大,尤其是在高密度稀疏的场景下。

还有个值得琢磨的地方,这篇论文用的"锚点步复用"策略,本质上是在拿"时间上的信息冗余"去换"空间上的计算精度"。这种思路在视频生成领域已经有不少论文在用,比如扩散模型的特征缓存技术,但把它用在稀疏选择和误差补偿两件事上同时发力,算是这篇论文比较巧妙的组合方式。

论文里没有展开讨论的一点是,这套方法在更极端的稀疏密度下(比如低于10%)会不会出现明显的精度断崖。锚点步之间的间隔如果拉得更长,精确选择的"过期"程度会不会突然失效,这个问题留给了后续工作去探索。

Q&A

Q1:MC-Sparse是什么?

A:MC-Sparse是腾讯提出的一种训练无需的稀疏注意力框架,核心做法是对KV token做精确的单个级别选择,同时把相似的query打包成等大小分组,并通过缓存跨去噪步骤复用选择结果和误差补偿残差,从而在降低计算量的同时保持接近密集注意力的生成质量。

Q2:MC-Sparse相比其他稀疏注意力方法有什么优势?

A:相比Sol-Attn、PISA等方法,MC-Sparse在同等甚至更低的注意力密度下取得更高的PSNR和SSIM指标,同时去噪速度更快。在Minimax-H3-Base上实现1.80倍加速,在3D资产生成模型HY3D-Internal上实现2.32倍加速,且视觉质量损失几乎不可察觉。

Q3:为什么传统的块稀疏注意力会导致生成质量下降?

A:传统块稀疏方法存在三类误差,一是把不相关的KV token硬绑在一个块里一起保留或丢弃,二是用均值池化等粗糙方式打分导致选择不准,三是被丢弃的token仍带有少量注意力权重,累积起来造成输出偏差。MC-Sparse通过token级选择、精确打分和残差补偿分别针对这三类误差做了优化。

文章标签腾讯学术研究

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。