DeepSeek 用暴力美学改架构,把 Full Attention 全线压制了
动态稀疏注意力过去只能加速推理,DeepSeek 第一次拿它从头预训练,损失曲线和下游评测全线压过 Full Attention——稀疏注意力不再只是省钱的补丁。
原视频在 YouTube 上放不出来,用音频听:
核心论点 · 点时间戳可跳到原声
动态稀疏和线性注意力是两条路
Kimi 和 DeepSeek 走的是动态稀疏注意力:稀疏模式不预先写死,由每个 token 的 query 动态决定要 attend 哪些 key/value block。MiniMax 走的是另一条路——混合架构,把绝大多数层换成线性注意力,只保留少量 softmax 注意力层,从而在推理解码阶段大幅缩短时间开销,对 test time scaling 更友好。松林判断 Kimi 和 DeepSeek 两篇共性更多,MiniMax 是另一套思路。
— 杨松林之前的动态稀疏只能加速推理
为什么之前的动态稀疏注意力不能做预训练?松林说主要是它跟当前硬件不是非常对齐,所以主流工作都只用来加速 inference,而不是从头预训练。DeepSeek 这篇是第一次拿动态稀疏注意力做非常大规模的预训练,机制上主要基于 Quest——MIT 韩松老师组 2024 年的一篇工作,核心是每个 token 动态决定要 attend 的 key/value block,且 block 是连续的一段,方便硬件连续读取。
— 杨松林GQA 逼它让所有头选同一个 block
这是 NSA 和 Kimi MoBA 的核心分歧。在 MHA 下每个注意力头有自己的 key/value,各选各的 block 读写量相同,可以尽情让不同头选不同 block,多样性更强。但 GQA 下一个 group 共享一份 key/value,如果不同头选不同 block 就要读多份 KV cache,带来额外开销。NSA 为了在 GQA 下减少这个开销,强行限制同一个 group 下所有头选同样的 KV block,做法是对所有头的注意力分数求和再取 top-k,保证行为一致。
— 杨松林为了凑矩阵乘法把 head 数硬拉上去
Tensor core 对矩阵乘法的最小尺寸有要求,在 Triton 里要求 h、dk、bk 至少为 16。但 GQA 每个 query group 下的 head 数通常不到 16,同时又要保证 4 个 group 来维持不同头之间的选择多样性。DeepSeek 干脆把整体 head 数量增大:dq 是 192,乘以 64 后存起来将近 12000,而 hidden dimension 只有 2560,等于做了一次非常大的向上投影。松林说这很有 DeepSeek 特色,MLA 也是类似做法,反正从头训练,只要训练和推理两个阶段都硬件高效,up projection 也无所谓。
— 杨松林稀疏注意力可以比 Full Attention 更好
在 Full Attention 基础上做稀疏(比如 Quest)会掉点,因为那是一个逼近过程,始终受 Full Attention 性能上限约束。松林说想让稀疏注意力甚至比 Full Attention 好,只有一个出路:train from scratch。DeepSeek 的结果是损失曲线全程压在 Full Attention 下面,下游 benchmark 上 NSA 甚至比 Full Attention 更好,long bench 上稀疏注意力比 Full Attention 还要好。松林认为这是 DeepSeek 指出的道路:不要只在 Full Attention 上做稀疏,干脆设计训练时就表现好的稀疏机制。
— 杨松林MoBA 的 block size 开不了太小
MoBA 每个 KV block 要把所有选到它的 query token 提出来,做各种 indexing 和 reindexing,这个 overhead 不是免费的。当 KV block 数量足够多时这一步可能成为 bottleneck,所以 Kimi 用了 512 的 block size,而 DeepSeek 用 64,top-k 分别是 3 和 16。松林说 block size 太大意味着粒度太粗,只选 3 个 block 一不小心就会漏掉重要信息;DeepSeek 选 16 个 block 容错率更大。这是 Kimi 简约背后付出的代价之一。
— 杨松林Kimi 砍掉压缩分支,SFT 时梯度稀疏
MoBA 把 DeepSeek 的压缩注意力分支和滑窗分支都砍掉,只保留中间分支,用 mean pooling 做 block 表示,不引入任何多余参数,很多人觉得比 NSA 更优雅。但代价是 SFT 时出现 suboptimal performance:SFT 的 prompt 不进入损失计算,只算后面少部分 token 的 loss,如果这些 loss token 没覆盖到某些 block,那些 block 就没有任何梯度信息,造成训练信号稀疏。他们的解法是把最后三层切回 full attention,保证每个 token 都有梯度。
— 杨松林RN 像大脑,Attention 像翻书
MiniMax 的混合架构把线性注意力和 softmax 注意力结合,scaling behavior 比纯 softmax attention 更好。松林解释两者好处互补:RN 有固定大小的 hidden state,强迫模型学出可压缩的 pattern,可能跟压缩即智能有关;softmax attention 保留全部 KV cache,擅长检索。他打了个比方——attention 像翻书,RN 像人的大脑,脑容量固定,需要时去翻书,平时靠固定容量的记忆就够用。纯线性注意力在 retrieval 类任务上是短板,混合后反而更好。
— 杨松林原话 · 已逐字校验
就是在这种硬件上面的限制下面 他能在 刀刃 就是他 他能 他能 就是 像刀尖舔血一样 就是能够 同时还能还能坚守他的大原则
就是在硬件的限制下,他能像刀尖舔血一样,同时还能坚守他的大原则。
杨松林1:17:25
但是我觉得从硬件暴力美学来看呢 这个我觉得也无可厚非吧 只要它够快 速度够 速度够快 performance够好 那我觉得它就是美的
但从硬件暴力美学的角度看,这也无可厚非——只要它够快、性能够好,那它就是美的。
杨松林1:43:04
数字与实体
| NSA 在 64k 序列长度上的加速比 | 快 10 倍 | 1:04:11 |
| MiniMax-01 的线性注意力与 softmax 注意力层数配比 | 每 7 层线性注意力配 1 层 softmax 注意力,共 80 层,重复 10 遍 | 1:46:09 |
| MoBA 长文本评测长度 | 测到 100 万级别 | 1:37:53 |
| A100 上半精度矩阵乘法相对 ALU 的加速 | 约 16 倍 | 47:55 |
| DeepSeek NSA 的 dq 与 hidden dimension | dq 192,hidden dimension 2560 | 53:00 |
| MoBA 预训练中稀疏注意力与 full attention 的 token 比例 | 90% 用稀疏注意力,10% 用 full attention | 1:36:53 |
术语
- NSA (Native Sparse Attention)原生稀疏注意力
- DeepSeek 提出的动态稀疏注意力,首次用于大规模预训练。
- MoBA (Mixture of Block Attention)块注意力混合架构
- Kimi 提出的动态稀疏注意力,每个头可自选 KV block。
- GQA (Group Query Attention)分组查询注意力
- 多个注意力头共享一份 key/value,减少 KV cache 读取。
- Lightning Attention闪电注意力
- MiniMax-01 采用的线性注意力变体,推理为常数复杂度。
- trunkwise分块算法
- 把序列分成若干块,块内并行、块间循环,凑出矩阵乘法。
- tensor core张量核心
- GPU 上专门做半精度矩阵乘法的计算单元,速度远快于 ALU。
收听指南
关注大模型架构与推理成本的工程师、研究员和投资人,想搞清 DeepSeek、Kimi、MiniMax 三条技术路线差异的人。
开头 0:00-4:00 的节目介绍和嘉宾定位可跳过,直接进论文讲解。