
DeepSeek NSA & Moonshot MoBA 的见解
一、背景
最近几天 DeepSeek 的 NSA 以及 Moonshot 的 MoBA 受到广泛关注,我也在第一时间看了相关论文。由于最近 DeepSeek 的火爆,各大平台上也出现了非常多对这两篇文章的介绍,这里不再赘述其袭击,只是简单陈述一下我的一些思考和看法。
在看这两篇论文的时候,我们可以发现其很多观点和手段都似曾相识,其他在之前的 Quest、SeerAttention(之前也分享过)等论文都有相关介绍。不过,其在工业落地方面提供了更多的可能性,比如 Moonshot 已经将 MoBA 应用到其生产系统中。
二、关键结论
首先,它们在很大程度上解决了我们在之前分享的 Token 稀疏化文章中提到的问题:
- 以前的很多方案往往针对特定场景,不够通用。比如,RaaS 受限于特定的 Long Reasoning 场景。
- 实现不够高效,工业落地存在挑战。很多方案采用 Token 粒度的稀疏化方式,难以充分发挥 GPU 的算力;也有些工作,比如 RaaS 虽然也采用了 Block 粒度的稀疏化方式,但是并没有进行高效的实现。
除此之外,这几篇论文也进一步促进了一些共识:
- 在长序列场景(Long Prefill 或 Long Decoding),Attention 是高度稀疏化的,也是高度动态化的。
- 固定 Pattern 的稀疏化方式往往很难保持精度,可学习 Sparse Pattern 会是通用化且高精度的有效方案。
- Token 粒度的稀疏化很难充分发挥 GPU 算力,Block 粒度稀疏化是精度和性能(稀疏度、计算量)的良好平衡,基于此的高效 Block Sparse Attention 也成为标配,类似 GitHub - mit-han-lab/Block-Sparse-Attention [4]。
- 当前常见的 LLM 通常会采用 GQA,也要充分结合 GQA 的特性来设计稀疏化方案,不然可能会影响整体的稀疏化程度。
- 在进行 Block 选择时并不需要使用 Block 内所有的 KV Cache,选择一个代表性的“聚类中心”即可,比如取 Avg 或者 Max,MoBA 中使用 Mean Pooling,在 SeerAttention 中也有相应消融实验。
- 不要随意永久性丢弃 Token,由于 LLM 的自回归特性,很难推测在后续的生成中是不是一定不需要某个 Token。这也就是为什么在 NSA 和 MOBA 中并不会节约 KV Cache 的存储空间。
三、对训练的影响
最后,这几个文章都是非常好的工作,对于 Inference 的成本(长序列)节约非常有帮助;但其对于 Training 成本节约非常有限。主要是因为当前 Training 的主要成本是在 PreTraining 阶段,而 PreTraining 阶段的序列不会很长,常见的还是 4K。此时稀疏度不会很高,Attention 的占比也并不大,可能不到 10%。如下图 Table 1 所示,DeepSeek V3 Training 成本中 PreTraining 占到了 95% 以上:
虽然 DeepSeek NSA 中进行了 PreTraining 实验,并且 Loss 甚至低于 Full Attention,但其中的训练速度实际对比的是长序列下 Attention Kernel 的速度,并不是 PreTraining 端到端的速度,如下图 Figure 6:
而 Moonshot 的 MoBA 中也是聚焦在 SFT 阶段:
我们会发现,Block 粒度的稀疏化执行的是 Block Sparse Attention,而我们之前介绍的一系列 Sample Packing 的方案也是 Block Sparse Attention,只不过 Sample Packing 中可以根据输入数据预先知道 Block 的位置。基于这个思路,可以把 PreTraining 中的 Sample Packing 看成是 Block 粒度稀疏化的特例。如下图所示,每种颜色的 Block 代表一个 Sample:
直观感觉,在 PreTraining 中采用 Sample Packing 对应的 Block Sparse Attention 很有必要也很高效,然而实际的 PreTraining 中却比较少采用。一方面是 PreTraining 中 Attention 占比不高,另一方面是负载均衡问题进一步降低性能收益;此外,也有多个工作验证 Sample Packing 对预训练的效果影响也很小,比如 LLaMA 3 的技术报告有介绍,忽略 Sample Packing 中的 Sparse Attention Mask,对效果没什么影响。
当然,如果是长序列的 PreTraining 也许上述 Block Sparse Attention 能带来一些收益,但长序列的 PreTraining 是否有必要也另当别论。
四、参考链接
- https://github.com/MoonshotAI/MoBA/blob/master/MoBA_Tech_Report.pdf
- https://arxiv.org/abs/2502.11089
- https://arxiv.org/pdf/2410.13276
- https://github.com/mit-han-lab/Block-Sparse-Attention
本文转载自 AI闲谈,作者: AI闲谈
