跳转至

MSA 稀疏注意力三国杀:NSA / DSA / MoBA / MSA 四方案深度对比

Ch01.188 MSA 稀疏注意力三国杀:NSA / DSA / MoBA / MSA 四方案深度对比

📊 Level ⭐⭐ | 21.0KB | entities/msa-sparse-attention-three-kingdoms-huashu.md

MSA 稀疏注意力三国杀:NSA / DSA / MoBA / MSA 四方案深度对比

本实体整理自 原文存档,并参考 MiniMax M3 论文 MiniMax Sparse Attention(https://github.com/MiniMax-AI/MSA/blob/main/docs/MiniMaxSparseAttention.pdf )。 这是一份把 2026 年稀疏注意力赛道 4 份方案 (NSA / DSA / MoBA / MSA) 摆到一张桌上的完整对比。

一句话总结

2026 年稀疏注意力已成国产长上下文模型的"标配动作"——DeepSeek NSA (2025-02 论文) + DSA (2025-09 V3.2 落地)、Kimi MoBA (2025-02)、MiniMax MSA (2026-06 M3 配套)。四份方案表面相似,骨子里在三个分歧轴 (颗粒度 / KV 压缩 / 辅助分支) 上分道扬镳,外加一条正在收敛的暗线(训练配方从端到端 → 蹭信号 → KL 对齐)。背后是两种信念:DeepSeek 押"信息禁得起压",MiniMax 押"要省就省在挑选上"。

为什么大家都奔向稀疏

Transformer full attention 计算量是 O(n²)——1M 上下文下算力直接吃满,KV cache 把显存也吃满。稀疏注意力的核心思路:生成下一个词时,没必要真的回头看完前面 100 万个 token,挑出真正相关的一小撮来精算

挑谁、怎么挑、挑多细——这就是三国杀的全部分歧。

MSA 架构:粗筛 + 精算

MSA 由两条分支组成:Index Branch(索引分支)+ Main Branch(主分支)

第一步:粗筛

索引分支把上下文切成块(每块 128 token),用很轻的打分动作估每块相关性:

  1. 给块内每个 token 打分
  2. 块内最高分当这块的分(论文叫 block max pooling
  3. 挑出 16 块——当前位置所在的块必选,其余按得分高低挑

第二步:精算

主分支只在挑出的 16 块上跑完整 attention。

16 块 × 128 token = 每生成一个词固定只精算 2048 个 token——不管上下文是 10 万还是 100 万。预算焊死就是省钱的核心。

索引分支训练:KL 对齐

挑 top-k 这个动作不可导——索引分支不能用正常训练方法教它"该挑哪块"。论文的解法:

  • 让索引分支拿主分支的 attention 分布当老师,用 KL 散度对齐("你主分支真正关注谁,我就学着给谁打高分")
  • 训练信号只更新索引分支自己的参数(梯度截断
  • 开头 40B token 先跑全 attention 热身,等索引分支学得差不多再开启稀疏

效果:索引分支挑出来的块,覆盖了主分支九成以上的 attention 权重——用结果说话。

Kernel 创新:Outer Gather Q

问题:常规稀疏 kernel 以 query 为中心——每个 query 各自去把它要的 KV 块捞出来,同一块数据被不同 query 反复读

MSA 反过来:以 KV 块为外层——把所有选中了这块的 query 聚集到一起,一次性算完,每块数据只读一次。

GPU 是算得快、搬数据慢的架构(瓶颈在访存),衡量 kernel 看 计算访存比

中心化方式 计算访存比
Query 为中心 ≈ 组内头数(实验模型下 16)
KV 块为中心 ≈ 块大小 × 2/3(128 块下 85)

仅 top-k 选择这一步 kernel 实现快 3-5 倍。这一反转是 MSA kernel 的核心创新。

MSA 性能数据(109B 实验模型,1M 上下文)

指标 数字
注意力计算量 缩到全 attention 基线的 1/28
H800 prefilling 加速 14.2×
H800 decoding 加速 7.6×

论文老实承认实测加速追不上 28.4 倍理论值——建索引、挑 top-k、聚集 query 这些动作本身有开销。这些数字全来自论文的实验模型,M3 本体多大、实际跑起来快多少,论文没披露——只能等第三方实测。

MSA 能力不掉:3T token 对照实验

同一个 109B 模型,一个用全 attention 训,一个从头用 MSA 训,loss 曲线几乎重合。下游 benchmark:

  • 从头稀疏训练版(MSA-PT):长文本检索、数学、视频理解等好几项反超全 attention 基线
  • RULER-8K:84.2 vs 79.8(MSA-PT vs Full Attention)
  • MSA-CPT:拿全 attention 模型花 400B token 继续训练,可改装成稀疏版,能力几乎无损

MSA-CPT 残余差距:综合检索分差全 attention 0.6 分,重排序任务差 2 分多。要靠更长稀疏训练或加大选择预算去填。

把训练好的索引分支到底在挑什么可视化,每个头一张选择概率热力图:

  1. 沿对角线的深色带——永远关注最近的内容
  2. 最左边一条竖线——所有头都盯着开头几个 token 不放(attention sink 现象:注意力分数必须全部分出去,没什么值得看时,开头几个 token 成了"停车场")
  3. 各组各不相同的斜向条纹——不同头各自负责回看不同距离的远程信息

没人教过它这些,全是 KL 对齐训练自己涌现的。

试过的强制规则都被砍掉: - 显式加 sink 参数(GPT-OSS 思路)→ 没收益,砍掉 - 强制选开头第一块 + 附近窗口 → 模型自己就会这么选,强制规则纯属多余,砍掉 - 最终版只保留一条强制规则:当前 token 所在块必选

论文开篇自己写了:遵循奥卡姆剃刀,消融实验做完,只留下必不可少的组件。

三国杀:3 个核心分歧轴

场上四份方案:

方案 团队 时间 性质
NSA DeepSeek 2025-02 论文 学术完备(三分支架构)
DSA DeepSeek 2025-09 V3.2 生产实现(Lightning Indexer)
MoBA Kimi 2025-02 块级混合(可切回全 attention)
MSA MiniMax 2026-06 M3 选择器(不压 KV)

NSA 和 DSA 同源思想不同实现——论文偏学术完备,落地偏生产效率。

分歧一:颗粒度——token 级还是块级?

方案 颗粒度 细节
DSA token 级 Lightning Indexer 给每个 token 单独打分(ReLU + FP8),精确挑 2048 个
MSA 块级 16 块 × 128 token = 2048 token 预算
MoBA 块级 块内 key 向量取平均当代表,无额外参数

对仗细节:DSA 每个 query 挑 2048 token,MSA 挑 16 块 × 128 = 2048 token,预算一模一样,分歧全在颗粒度

赌的: - DSA:逐 token 挑能捞到散落各处的零碎信息 - MSA:相关内容通常成段聚着,块级足够,且块状访存对 GPU 友好

MSA 论文点了 token 级一句:长上下文下,光是从 100 万 token 里做 top-k 挑选本身就占不可忽略的延迟。

分歧二:压不压 KV?

DeepSeek 路线 = 两层叠加: - 底层 MLA 把 KV 压成更小的潜向量("与其存高清原图,不如存压缩图,放大有点糊但大轮廓都在"),省显存 - DSA 叠在 MLA 之上——在压缩后的 KV 上做 token 级稀疏选择 - 官方报告写得很直白:DSA 是"建在 MLA 之上"的

MSA 路线 = 不压 KV——论文原话 "selector-only design",KV 原原本本存着,所有功夫花在"选得准"上。

两种信念的冲突

立场 押什么
DeepSeek 信息禁得起压,糊一点没关系,省下来的显存更值钱
MiniMax 要省就省在挑选上,真正要算的那一下别糊

这条分歧在 2026-04 DeepSeek V4 上更激化:1M 上下文下每 token 推理计算量压到 V3.2 的 27%,KV cache 剩 10%——靠的是压缩得更狠的新一代 attention。DeepSeek 把"压"的信念贯彻到底;MiniMax 刚交的是"选"的答卷。

分歧三:要不要辅助分支?

NSA = 三件套: - 压缩分支(把连续块压成代表) - 选择分支(挑最重要块精算) - 滑动窗口分支(照顾最近 token)

三条各管一摊,最后用学出来的门控加权汇总。复用压缩分支算 attention 的副产品作选块分数,几乎零成本。

MSA 砍掉另外两条,只留初筛 + 精算。减法是对照实验做出来的:固定只看开头一块 + 最近窗口的 baseline 在一堆 agent 任务上一致地更差——位置固定的稀疏模式不如让模型自己动态挑。滑窗分支不是忘了做,是验证过不值得单独留。

MoBA 的特殊取舍能在全 attention 和稀疏 attention 之间灵活切换——百万上下文实验里:模型最后 3 层保留全 attention、其余层用 MoBA;预填充阶段用稀疏、生成阶段切回全 attention。说明 Kimi 自己也清楚稀疏在哪些环节有短板,用混合配置绕开。

暗线:训练配方正在收敛

四家给了三种答案教"挑块的小脑":

方案 训练方式 适用
NSA 端到端一起训(搭主结构便车) 学术方案
MoBA 蹭主模型学习信号(不给小脑配参数) 极简方案
DSA + MSA 单独给小脑找老师(KL 对齐) 生产方案

越靠近生产的方案,越往第三种靠——千亿参数规模,训练稳定性比架构优雅重要得多

深度分析

1. 长上下文之争的核心矛盾:从"能做"到"用得起"

四份方案折腾来折腾去,本质都在干同一件事——把长上下文从"能做"变成"用得起"。这件事的意义比 1M 数字本身大:

  • 长程 Agent 连干十几个小时
  • 百万行代码库里排查问题
  • 几小时视频一次喂进去理解

这些更性感的能力,全压在"长上下文用得起"这个前提上。底座便宜了,楼才盖得起来

2. "Selector-only" vs "Compress-then-Select" 的范式选择

四份方案最深层的分歧其实只在 2 条线上:

  • Selector-only(MSA):选得准 > 压得狠
  • Compress-then-Select(DeepSeek DSA):省显存 > 算得精

这两种选择背后是对模型智能的信任: - 选得准派相信模型能识别"哪些相关"——优先发展选择能力 - 压得狠派相信模型能容忍"信息模糊"——优先发展压缩能力

从工程落地看,selector-only 风险更低(KV 完整 → 出问题可解释),但 KV cache 占用更大;compress-then-select 工程风险高(压缩一旦破坏关键信息就难诊断),但推理吞吐量更大。

3. KL 对齐作为"小脑"训练范式的工程意义

DSA + MSA 都选了 KL 对齐训练"挑块的小脑",这背后有几个工程含义:

稳定性:梯度截断保护主网络不被打乱 → 大规模训练可恢复 可解释性:小脑=学"模仿主网络的 attention 模式" → 出现异常时可直接观察小脑选了什么 可蒸馏性:用主网络当老师 → 学生(小脑)规模可以极小(MSA 索引分支只用 1 个打分头)

这与 Agent 自我改进循环 中"用强模型教弱模型"的范式一脉相承——但这里的"强弱"是同一模型的不同角色(main branch 是老师,index branch 是学生)。

4. Head 涌现模式反映的训练稳定性

附录里 head 涌现的三种模式(对角线 / attention sink / 斜条纹)说明:

  • 模型自己学到了"局部性 + 持久化 + 多尺度"的 attention 模式
  • 这些模式与人类设计的归纳偏置(sliding window + global token + multi-scale)不谋而合
  • 人为强制规则都被砍掉——模型会自己学会这些

这给稀疏注意力训练提供了一个重要经验:不要过度工程化。最好的设计是给模型自由度 + 简单约束("当前块必选"),让它自己涌现合理的模式。

5. 论文级别的负结果为何重要

MSA 论文花了大量篇幅讲"试过、没用、砍掉":

  • 显式 sink 参数 → 砍
  • 强制开头 + 窗口 → 砍
  • 多分支辅助 → 砍(对照实验证明)

这种"负结果"比"正结果"更难得——大多数论文只展示 work 的部分,不展示"我试过 X 但 Y"。MSA 论文展示了完整的"奥卡姆剃刀"过程:

论文开篇原话:"遵循奥卡姆剃刀,消融实验做完,只留下必不可少的组件"。

这种"负结果透明"应成为稀疏注意力研究的新标准——避免后人重复踩坑。

实践启示

对 LLM 训练团队

  1. 1M 上下文的成本是新基准——能不压 KV 但仍能 1M 推理(MSA),就别压;如果一定要压(DeepSeek V4 路线),就压得彻底
  2. 训练配方比架构更影响生产稳定性——选 KL 对齐这种"梯度隔离 + 模仿主网络"的范式
  3. 从 3B token 改装起跑——MSA-CPT 证明 400B token 改装就够了,不必从头训练

对 Agent / 应用开发者

  1. 长上下文用得起是 agent 化的前提——M3 + MSA 1M 上下文是质变信号
  2. kernel 开源红利:MSA kernel 单独开源(待仓库地址放出),可被其他模型直接复用
  3. 选择用谁看场景:编程 + 多模态选 M3;纯长文检索选 DeepSeek V4

对 LLM 研究者

  1. head 涌现模式是研究金矿——attention sink / 局部性 / 多尺度这些现象值得更深入的可解释性研究
  2. 稀疏 + 稀疏 = 更稀疏——MoBA + 残差 attention 的混合架构是新的可探索方向
  3. 附录的负结果应当成为研究标准——MSA 论文展示了"奥卡姆剃刀"的过程,比 SOTA 数字更启发人

与现有实体的互补关系

总结:长上下文之争转向"成本"

哪种赌注能赢,得等更多真实场景的长跑验证

方案 赌注 风险
DSA 多花一笔打分成本,赌细粒度挑选物有所值 延迟被 top-k 吃掉
MSA 赌选得准比压得狠重要 KV cache 占用大
NSA 赌面面俱到(压缩 + 选择 + 窗口) 工程复杂度高
MoBA 赌灵活切换(混合配置兜底) 架构一致性弱

但有一点已经挺清楚了:长上下文这场仗,比的不再是谁能做到 1M,而是谁能让 1M 便宜到随便用

原文存档