扩散 Transformer 跑视频和高分辨率 3D 资产生成已经很贵,稀疏注意力本来是降本的标准路径——只是各家现成方案在高稀疏率下都会损伤画质。腾讯混元 10 月 5 日挂在 arXiv 的 MC-Sparse (arXiv 2610.06801) 把这件事重新拆了一遍:在 MiniMax-H3-Base 上做到 1.80 倍去噪加速,在 3D 资产生成上做到 2.32 倍加速,画质损失几乎不可见;更关键的是,这是一套完全 training-free 的方案,不需要重新训练任何模型。
现有稀疏注意力方案的三个根问题
作者先用一组对照实验把「为什么现有的稀疏注意力方案在高稀疏率下画质会崩」拆成了三个来源:
- token grouping 带来的结构约束:为了适配 GPU 的 tile 大小,大多数方案会强制把多个 query 或 KV 打包成一组,这等于人为增加了一层粒度,模型没法在这个粒度上表达「真正重要」的 token;
- 交互选择不准:基于近似分数或滑动窗口去挑 KV,经常漏掉真正参与贡献的 token,而且挑错之后没有办法在后续步骤里纠正;
- 被丢弃 token 的注意力贡献消失:一旦 KV 被丢掉,它在 dense attention 里贡献的那部分分数就彻底没了,后面所有 denoise step 都补不回来。
这三条里只要任何一条没处理好,画面就会出现闪烁、细节糊掉、人物面部崩坏这些肉眼可见的问题。
MC-Sparse 的做法:分块选 token + 复用元数据
MC-Sparse 的核心叫 Meta-Cached Sparse Attention,做了三件事来解决上面的三个问题:
- tile 对齐的 query 分组:不是粗暴地把 query 切块,而是把相似的 query 用 Fast PDDP 算法聚成一组,组内共享 GPU 的调度开销——解决了「grouping 的结构约束」;
- 用真实的 attention 概率选 KV:在「anchor step」(校准步骤)里跑一次 dense attention,拿到的真实概率分布来挑每个 query 真正需要的 KV token,而不是用近似分数猜——解决了「交互选择不准」;
- 把 dense 和 sparse 的输出残差缓存下来:一次性算好 dense baseline 和 sparse 输出之间的差,缓存进 metadata,后面所有 denoise step 直接复用,再叠加 fresh 的 Q/K/V——解决了「被丢弃 token 的贡献消失」。
换句话说,这套方案不是「少算点 attention」,而是「少算点 attention,但把算过的那点信息压榨到极致」。
数据:1.80 倍 / 2.32 倍,无画质损失
论文里给出的对照数字(基于 MiniMax-H3-Base 和 3D 资产生成模型):
- 视频生成(MiniMax-H3-Base):1.80× denoising speedup,与 dense attention 相比画质损失可忽略;
- 3D 资产生成:2.32× speedup,几何细节保留明显优于现有稀疏注意力 baseline。
仓库 dodododddo/mcsparse 已经开源,Apache-2.0 协议,内含完整的 kernel 实现和 MiniMax-H3 集成。Setup 章节明确写了目前只支持 NVIDIA Hopper 架构 GPU,需要 CUDA-enabled PyTorch + FlashAttention-3 的 flash_attn_interface。
部署与生态
GitHub README 给出了几种典型 GPU 布局的脚本:
- 单卡 5 秒 / 15 秒短视频生成(
run_1gpu_5s.sh/run_1gpu_15s.sh); - 7+1 卡的服务化布局(1 张卡常驻 text encoder,其余 7 张用 Ulysses context parallelism 做 denoise);
- 8 卡共享布局(encoder 用完回到 CPU,腾出显存给 denoise)。
调度的关键开关包括 INDEX、OUT_DIR、GPU / NPROC、TOPK / TOPKS、CALIBRATE——可以在不重训模型的前提下,根据硬件配置灵活调稀疏率。
实用边界与 TODO
作者在 README 的 TODO 部分给得很坦白:
- Fast PDDP 的 query grouping 速度还要进一步优化;
- whitening 支持还要在 H3 集成里补完并验证。
实际可落地的功能已经覆盖了 MiniMax-H3 的端到端采样流程——mcsparse info、mcsparse examples、mcsparse run 几条命令就能跑通视频和 3D 资产两条管线。Benchmark(tests/bench_token_sparse.py、tests/bench_pca_group.py)和纯逻辑测试(tests/test_token_sparse_logic.py)都已附带,不用 PyTorch/CUDA 也能跑调度逻辑那一层。
评论:Hunyuan 把「稀疏注意力」的工程化门槛砍掉了
稀疏注意力在视频扩散领域已经被反复研究过,但真正能在生产里挑大梁的方案一直很少——大多数论文要么改了一行 attention 的实现就要重新训练,要么稀疏率上去了画质就崩。MC-Sparse 给出了第三条路:不重训、用真实概率选 token、把残差缓存复用。
这恰好踩到了 MiniMax-H3、3D 资产这类长序列扩散模型当下最痛的点——去噪 step 数本身已经压不下去,只能在每一步里省 FLOPs。1.80 倍 / 2.32 倍的加速意味着同一张卡能多跑一档分辨率,或多撑一倍 batch。
唯一遗憾:目前只支持 Hopper。这对 A100 / A800 / L40 / 国产卡集群是个明确的不友好信号——意味着要在新架构上重写 CuTeDSL kernel。考虑到腾讯自己也是 NV 用户,这很可能只是「先支持自有用卡」的策略;但对其他厂商的部署方来说,等社区 PR 还是看 Tencent 后续动作,是接下来值得跟进的点。
代码与论文:
- 论文:https://arxiv.org/abs/2610.06801
- GitHub:https://github.com/dodododddo/mcsparse (Apache-2.0)