Token-level sparse attention · DeepSeek V3.2

DeepSeek Sparse Attention(DSA)

DSA 把长上下文注意力拆成“廉价全长检索”和“昂贵稀疏聚合”两步。它保留内容寻址能力,但并没有神奇地让所有计算都从二次复杂度消失。

Top-2048DeepSeek-V3.2 的公开配置让 Lightning Indexer 为每个 query 选择最多 2,048 个历史 token。
基线Indexer算例训练局限资料

一、全量 MLA 仍会被序列长度拖住

MLA 压缩了 KV cache,却没有改变每个 query 与全部历史位置比较的事实。缓存更小不等于注意力矩阵不再随序列长度增长。

DeepSeek 在 V3.2 中加入 DSA:用一个比 MLA 更窄、更少头、无需 value 聚合的 Lightning Indexer 扫描历史,再让核心 MLA 只读取索引器选出的 token。

二、Lightning Indexer 到 Sparse MLA

Indexer 为 query (t) 和历史 token (s) 计算相关度,使用多个轻量 index heads 的门控 ReLU 点积合成标量分数。Top-k selector 取分数最高的历史位置,产生稀疏 mask;核心 MLA 随后只对这些位置进行精确注意力。

DSA 的索引与主注意力Lightning Indexer 扫描历史 token,选择 Top-k,再限制核心 MLA 的注意力范围。Query latent当前表示Lightning Indexer低维全长打分Top-k选 2,048 tokenSparse MLA精确 QK 与 VOutput注意力结果
概念图:Indexer 与核心 MLA 是两套不同成本的路径。稀疏 kernel 是否真的跳过未选 token,决定理论稀疏能否成为实际加速。
I(t,s) = Σⱼ w(t,j) · ReLU(q(t,j) · k(s))
S(t) = TopKₛ I(t,s),   y(t) = MLA(q(t), K[S], V[S])

三、为什么索引器仍值得做

以 128K 上下文、Top-2048 为例,核心 MLA 每个 query 只聚合约 1.56% 的历史 token。Indexer 仍扫描全部 128K token,但它的表示更窄、头数更少,不做 softmax 和 value 加权,因此常数项远小于完整 MLA。

复杂度要说完整。

核心注意力从 (O(L^2)) 降为 (O(Lk)),但独立运行的全长 indexer 仍有 (O(L^2)) 打分。DSA 的收益来自“把二次项变便宜”,而不是完全删除二次项。这也正是后来 IndexShare 要解决的问题。

四、选择器如何学会不漏掉重要 token

训练早期如果直接让未成熟 indexer 决定可见上下文,错误选择会切断梯度和信息。DeepSeek 的技术报告采用 dense attention 信号监督 indexer,使其 Top-k 尽量覆盖核心注意力会赋高权重的位置,再逐步过渡到原生稀疏训练。

这种目标优化的是“近似原 attention 的选择”,并不保证索引器学到人类可解释的检索规则。一个 token 被选中,只说明它对当前网络的注意力计算有用。

五、部署时真正困难的是不规则访问

  • 稀疏 kernel:先算全量 scores 再加 mask 不会节省主 attention;实现必须只加载入选 KV。
  • Top-k 成本:长序列排序与跨设备一致性会成为独立瓶颈。
  • 召回风险:关键 token 一旦不在 Top-k,后续精确注意力没有机会补救。
  • 缓存双轨:Indexer key cache 与 MLA latent cache 都需要管理。
DSA 和检索增强生成(RAG)是一回事吗?

不是。RAG 通常在模型外从文档库检索片段;DSA 在每个 Transformer 层内部、对已经进入上下文的 token 做可学习选择。两者可以同时存在。

评论加载中...