从 V2-Flash 的 256K 到 V2.5-Pro 的 1M token——MiMo 系列没有发明全新的注意力机制,而是把混合稀疏注意力 + 可学习 attention sink + MTP 投机解码这三件套打磨到了能稳定支撑近千轮工具调用的工程化水平。结合罗福莉的采访,这里面还有一笔更深层的账:为什么不用 MLA,以及这个选择如何让 MTP 成为可能。
MiMo 的长上下文不是靠堆注意力,而是把绝大多数层换成只看最近 128 个 token 的小窗口注意力,每 5–6 层才插入一层全局注意力,再用一个可学习的 attention sink给小窗口加上"什么都不看"的安全阀,让 6×–7× 的 KV cache 压缩不掉性能。
推理侧再用一个 0.33B 的轻量级 MTP 模块当草稿,三层叠起来给主模型做投机解码——速度提升 2.6 倍,最长上下文做到 1M。这也解释了为什么他们不用 MLA:MLA 吃光了 compute budget,MTP 就没空间了。
大模型正在从"Chat 模式"转向"Agent 模式"——一次任务要调几百轮工具、读完整个代码仓库、跟住几小时的 trace。这意味着长上下文不再是 nice-to-have,而是Agent 的基础设施。但当上下文从 8K 涨到 1M,全局自注意力的代价是平方级膨胀——KV cache 装不下,attention 算不动,更糟的是模型在长 context 下的真实理解能力会塌方。
近一年涌现的"长上下文方案"基本分两条路。一条是稀疏 / 选择型:DeepSeek-V3.2 用 sparse attention 只挑重要 token 来算;另一条是混合型:Gemma、MiniMax、Qwen3-Next 等让大部分层只做局部 sliding window,少数层做完整 global。
混合路线更工程化、kernel 更熟、KV cache 控制更直接,但有个长期被诟病的弱点——窗口太小、SWA 比例太高时,长 context 任务掉点严重,"看起来便宜,跑起来不行"。
MiMo-V2-Flash 论文给出的判断是:这个弱点不是混合架构本身的问题,而是缺了一个关键组件——可学习的 attention sink bias。补上之后,他们敢把窗口缩到 128、把 SWA:GA 比例拉到 5:1(V2.5-Pro 是 6:1),KV cache 直接压到全 GA 的 1/7,长 context 准确率却几乎不掉。
DeepSeek-V3 的 Multi-head Latent Attention 把 KV cache 压缩到极致,是近一年最受关注的注意力变种。但 MiMo 团队明确选择了不走这条路。主导这个决定的,是一笔关于 compute bound 与 memory bound 的账。
MLA 的设计是用计算换内存,在 H 系列芯片上做到了几乎极致的优化……但一旦你用了 MLA,模型就变成了 compute bound,你就没有多余的算力来做 MTP 了。
传统的 Multi-Head Attention (MHA) 在推理时是纯 memory bound——瓶颈在于从显存搬运 KV cache 到计算单元。MLA 通过低秩投影把 KV cache 压缩了 10×,但代价是每次 attention 需要把压缩的 latent 重新投影回完整维度,增加了计算量。这笔交易在 H100/H800 上是值的——显存带宽贵、算力便宜,"用计算换内存"刚好把芯片两端都打满。
但这也意味着:MLA 已经把 GPU 的 compute 预算吃光了。MTP 投机解码需要在同一次 forward 中额外跑 draft token 的验证,这需要 compute headroom。MLA 模型没有这个余量——它已经 compute bound 了。
同一个目标(压缩 KV cache),不同的成本与收益结构
罗福莉更进一步地判断:MLA 是为 H 系列芯片特定时代设计的"完美结构",但芯片在演化、推理场景在变、Agent 时代对后训练灵活性的要求在增加。一个对特定硬件过度优化的结构,在硬件换代时反而会成为负担。
Hybrid Attention 的好处是足够简单。简单意味着灵活,灵活意味着在 Agent 时代快速迭代后训练时不会被架构绑死。大家太相信 MLA 了。
MiMo 把 Transformer 的 48–70 层组织成有节奏的"块":每 5–6 层只看最近 128 个 token 的 SWA,紧跟着 1 层全局 GA。第 0 层是个特例,用 GA + dense FFN 稳定早期表征学习。这个设计从一开始就是为 Agent 场景量身定制的——长 context 不是功能,而是地基。
我们在做 MiMo 架构的时候,感知到的是一个趋势——从 Chat 到 Agent。Agent 需要长上下文不是因为用户想读长文章,而是因为 agent 要连续调工具几百轮。如果架构不是天生为长 context 做效率优化的,光靠推理端压缩根本撑不住。
两个模型采用同一种节奏,只是块数和 ratio 不同。V2-Flash 用 5:1,V2.5-Pro 用 6:1,sliding window 都是 128。
每个 hybrid block:5×SWA → 1×GA
8 个 block × 6 层 = 48 层。第 0 层把第一个 SWA 替换成 dense GA。
这三件单独看都不新——SWA 来自 Longformer,GA 是普通自注意力,attention sink bias 来自 gpt-oss——但组合起来才让"激进的稀疏 + 长上下文"同时成立。
团队在 32B dense 模型上跑了消融,对比 W=128 / W=512 两种 SWA 窗口(都加 sink)。结果在长 context 任务上,更小的窗口稳赢。论文给出的解释直击稀疏注意力研究的"窗口越大越保险"惯性。
| 架构 | GSM-Infinite | NoLiMa | RULER-32k | MRCR |
|---|---|---|---|---|
| All GA | 12.3 | 49.7 | 89.4 | 32.5 |
| SWA W=128 + sink | 17.3 +5.0 | 51.2 +1.5 | 89.4 = | 34.4 +1.9 |
| SWA W=512 + sink | 17.2 | 38.5 −11.2 | 84.7 −4.7 | 19.6 −12.9 |
这个发现对工程上有个直接含义:不要"折中"。要么放弃 SWA 走全 GA,要么就把 SWA 用激进——窗口尽量小、SWA 比例尽量高。中间地带反而最差。
作者也明确声明:这是在他们的 scale 和数据下的经验观察,不一定泛化到所有架构。但这给了"更小窗口 + 更高 SWA 比例"一个反直觉的实验依据。
模型从 48 层扩到 70 层时,我们保持 GA 层的绝对数量大致不变(9 → 10 层),增加的全是 SWA 层。GA 层的绝对数量比 SWA:GA 的 ratio 更重要。模型越大,能承受的稀疏比例越高。
这是一条实用的缩放律:当 GA 层足够多(~10 层)时,模型已经具备足够的长程建模能力。额外增加的层数全部用 SWA,既省 KV cache、又让 MTP 有更多的 compute 余量。V2-Flash 是 5:1,V2.5-Pro 是 6:1——ratio 变了,但 GA 层从 9 涨到 10,几乎没变。
混合架构是骨架,但要让模型真正"理解" 1M 上下文,还需要训练流程配合。MiMo 的策略是:大部分预训练用 32K 短序列以保证吞吐,最后小段时间专门切到长序列,并配合 RoPE base 频率调整。
这条课程线还有个工程意义:真正昂贵的训练(前 26T token)都跑在 32K 序列上,吞吐高、kernel 友好。只有最后 1T token 才付"长序列训练成本",再加上 hybrid 架构本身省 KV cache,让 256K → 1M 的扩展从财务上变成可行。
Multi-Token Prediction(MTP)原本是为了提升训练效率的辅助 loss,让模型多预测几个未来 token。MiMo 把 MTP 的角色"复用"到了推理侧——同一份权重在推理时变成投机解码的 draft,并故意把它做得很轻。而这一切之所以成立,是因为 SWA 省下来的算力刚好留出了 MTP 需要的空间。
每个 MTP block 不是一个输出头——它是一整个单层 Transformer(SWA attention + dense FFN),只是做得很轻(0.33B)。3 个 block 链式串联:前一个的 hidden state + 预测 token 的 embedding 喂给下一个。
左边每步只产 1 个 token,右边每轮产 ~3.6 个。同时跑,看谁先产出 12 个 token。
SWA 把注意力的计算量省下来了,模型就变成了 memory bound。这个时候 MTP 刚好把省下来的算力填进去——验证 3 个 draft token 的 compute 成本几乎是"白捡"的,因为瓶颈早就不在算力上了。
这就是 MiMo 架构最精妙的一笔:SWA 和 MTP 不是两个独立的优化,而是一对互补的预算分配。SWA 把 attention FLOPs 省出来,模型从 compute bound 转向 memory bound;MTP 用投机解码把这些闲置的 compute cycle 填满,转化为 2.6× 的吞吐提升。MLA 走了相反方向——把 memory 省出来的空间拿去堆 compute,结果 MTP 根本没空间切入。
长上下文有两类典型评测:检索类(NIAH-Multi · 大海捞针)测能不能找到藏在 1M 上下文里的针;推理类(GSM-Infinite)测能不能在长链路上做完整数学推导。前者考记忆、后者考真理解。
| 长度 | MiMo-V2-Flash | Kimi-K2 | DeepSeek-V3.2 |
|---|---|---|---|
| 32K | 99.3 | 99.8 | 85.6* |
| 64K | 99.9 | 100.0 | 85.9* |
| 128K | 98.6 | 99.5 | 94.3* |
| 256K | 96.7 | — | — |
| 长度 | MiMo-V2-Flash | Kimi-K2 | DeepSeek-V3.2 |
|---|---|---|---|
| 16K | 37.7 | 34.6 | 50.4 |
| 32K | 33.7 | 26.1 | 45.2 |
| 64K | 31.5 | 16.0 | 32.6 |
| 128K | 29.0 | 8.8 | 25.7 |
到 V2.5-Pro 这一代,OpenAI 的 GraphWalks 长上下文 benchmark 上,512K 仍能拿 0.56 BFS / 0.92 Parents,1M 拿 0.37 / 0.62——而上一代 V2 Pro 在 1M 处直接归零。1M context 不再是个 PR 数字。
2026 年 4–5 月这一波 MiMo-V2 / V2.5 系列,技术骨架是同一套——hybrid SWA+GA · W=128 · attention sink · MTP——只是 scale 与 ratio 在调。