← 返回资讯
陈默
AI 行业分析师
已审核

手撕NSADeepSeek新作-原生稀疏注意力-超长文附代码

你有没有过那种瞬间?就是看到一组数据,脑子直接“嗡”一声,整个人都麻了。

手撕NSADeepSeek新作-原生稀疏注意力-超长文附代码

手撕NSADeepSeek新作-原生稀疏注意力-超长文附代码


手撕NSA那天,我真香了

你有没有过那种瞬间?就是看到一组数据,脑子直接“嗡”一声,整个人都麻了。

那天,我盯着NSA在64k inference下的指标——前向加速9倍,反向加速6倍,精度跟MHA持平。什么概念?相当于一辆自行车跑出了法拉利的速度,油耗还跟走路一样!我第一反应是:假的吧?数据造假了吧?

然后我一头扎进代码里。

嘿,这一撕,还真让我发现了点东西。


为什么说NSA是“倒过来想”的设计?

你想想,现在大模型部署最怕什么?不是算力不够,是显存爆炸!尤其是那个KV-Cache,序列长度一长,直接指数级增长。64k还好说,128k、256k呢?标准Attention直接变平方复杂度,把显存当水喝。

NSA的做法呢?不是减少token的数量——那是偷懒——而是减少KV的数量。说白了,就是“我只看该看的地方”。就像你在一堆文件里找关键信息,有经验的人不会逐字逐句读,而是先扫标题,再查目录,最后只翻需要的那页。

手撕代码的时候,我发现一个反直觉的点:理论上,标准Attention自己也能学出稀疏性,但NSA等于是用“人工辅助”加速了这个过程。它分两层:第一层老老实实做标准Attention,第二层才用稀疏策略。这样一来,即使第二层只选了片段KV,第一层已经把前驱token的信息都兜底了——丢不了东西。

有人说:“这不就是偷工减料么?”

但你看看实验数据:同样64k,标准Attention的计算量还在疯涨,NSA到某个阶段就不怎么动了。一个是平方级增长,一个是近似线性。差距有多大?你自己算算账。

说到这儿,我又想到一个类比:MHA就像你请了个保镖,24小时贴身跟着,事无巨细全记下来——累死自己,贵死甲方。NSA呢?它是个聪明的秘书,知道什么时候该进,什么时候该退。该关注全局的时候长焦,该聚焦重点的时候特写。


踩过的坑,比想象的多

我把自己手撕的NSA代码开源了——纯PyTorch实现,没GPU也能跑。具体包含了这几个模块:multi-head compress attention、kv-share-head sparse selection attention、sliding window attention、gated native sparse attention。

写代码最头疼的是啥?Kernel设计。

Sparse Attention里,每个query可能选到不同的top-k KV。你想要达到理论计算复杂度,注意力计算必须是line-wise,不能是block-wise。这就意味着你无法单纯靠矩阵乘法搞定,得引入top-k这类非矩阵乘操作。

坑就在这儿:看起来减少了attention的计算量,但实际实现时,增加了其他运算的比重。这事儿跟MoE简直一个模子刻出来的——Indexer网络就是gate,top-k kv就是top-k experts。

工程优化的空间很大,但想要逼近理论效率?得脱层皮。你想想,你既要保持精度,又要跑得快,还要省显存——这三件事放一起,就像你同时想买房、买车、环游世界,哪一件都不是省油的灯。


NSA和DSA:谁更香?

说到这,不得不提DeepSeek的另一个方案:DSA(DeepSeek Sparse Attention)。打个比方,DSA像MoE,用Indexer网络做gate,top-k kv做experts。从内存效率看,MHA可以优雅地等价变换到MQA,把HBM和SRAM之间的数据搬运量大大减少,访存效率直接起飞。

但NSA呢?它更“原生”——从设计之初就把稀疏性刻在骨子里,不是后期打补丁。你想想,一个是从零搭建的豪华别墅,一个是老房子改造,哪个住着更舒心?从V3.2到V4,DeepSeek这波在稀疏注意力上的投入,肉眼可见。


实操建议:你要是也想搞长上下文

来,直接给干货:

1. 第一层一定用标准Attention。这是你的保险,把兜底信息喂饱。

2. 后续层大胆上NSA,但门控机制要选对,别上来就乱试。

3. 代码实现时优先用Triton或CUDA优化kernel。纯PyTorch在64k以上会慢得你怀疑人生,别问我怎么知道的。

我手撕的代码在GitHub上,搜“dhcode-cpp/NSA”就能找到。写这代码花了整整两周,但值不值得?太值了!我不仅理解了稀疏注意力的本质,还把工程实现的坑都踩了一遍。

2026年,我打算继续手撕Infra算法。这事儿妙就妙在——你亲手把一块块砖瓦搭起来,看着它们变成一座坚不可摧的城堡。那种感觉,比写一百篇漂亮的文档都爽。

你猜怎么着?有时候,最硬的知识,就是靠手撕撕出来的。

277
6940 阅读
2 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月22日 13:20

陈默

AI 行业分析师

前某大厂 AI 实验室研究员,关注大模型技术演进和商业化落地。写过 200+ 篇行业分析,擅长从产品视角拆解技术趋势。

读者评论 2

张工 3天前
写得很实在,特别是实测对比那部分,跟我自己的使用感受一致。
回复 点赞 (12)
前端工程师 6天前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)