Skip to content

DeepSeek-V3.2 与 DSA:年度总结摘记 ​

来源:个人文章全文归档。

整理与复习 ​

  • 详细流程见 DSA 算法笔记。
  • 主 Attention 只读入选位置,不等于永久删除未入选的 KV;后续 query 仍可能选择它们。
  • 固定预算使主 Attention 的访问量下降;不能据此断言包含全历史 indexer 打分的端到端复杂度也严格变为线性。
  • “Lighting”应为“Lightning”;旧文章的投影来源描述应以实际模型和上述独立笔记为准。

原笔记相关章节 ​

DeepSeek-V3.2 ​

DeepSeek-V3.2 主要创新性在于提出了 DSA(DeepSeek Sparse Attention),DSA 是一种可以在训练中学习的稀疏注意力算法,相比原有的固定模式的稀疏注意力,可以在训练中被使用。

DeepSeek Sparse Attention ​

DSA 包含两个组件,一个闪电索引器(lighting indexer)和一个细粒度词元选择器(fine-grained token selection mechanism)。

DeepSeek Sparse Attention 架构图

首先针对 Lighting Indexer,DeepSeek 给出了一个数学公式如下:

It,s=∑j=1HIwt,jI⋅ReLU(qt,jI⋅ksI) 其中:

  • HI ​:索引器的头数,数量较少,是保证效率的关键;
  • ht∈Rd :当前的 query token 向量, hs∈Rd :前置的 token 向量;
  • qt,jI∈RdI 、 wt,jI∈R :由 query token ht 生成的查询向量和权重;
  • ksI∈RdI ​:由前置 token hs ​ 生成的键向量;
  • ReLU :作为激活函数,选择它的核心原因是提升计算吞吐量。

在 DSA 中,首先通过输入的 ht 投影得到 ctQ ,这是通过 **MLA(Multi-head Latent Attention)**得到的,这个 ctQ 同时为 DSA Indexer 和 MQA 同时提供输入,随后在 Lighting Indexer 阶段通过以下步骤进行计算:

  • 从 ctQ ​ 中部分投影得到 qtI (对应论文的 qt,jI ​);
  • 从所有前置 token 的 ctKV ​(MLA 的 latent key-value 向量)中部分投影得到 ktI (对应论文的 ksI);
  • 从 ctQ ​中投影得到 wtI ​(对应论文的 wt,jI );
  • 对 qtI ​和 ktI 部分施加 RoPE 位置编码,再计算内积 + ReLU + 加权求和,得到索引分数(图中 “柱状图” 是分数的可视化)。

最终得到的计算分数 It,s 被输入作为下一个细粒度 Top-K 选择。

这里有几个值得注意的点,这里的 HI≪H ,同时选择 ReLU 可以提高吞吐量,同时该模块对精度的要求较低,可以使用 FP8 进行计算。

第二步是做 Token 的细粒度选择,在论文中给出了一个公式:

ut=Attn(ht,{ct|It,s∈Top−k(It,:)}) 这里 It,s 代表的含义为,t 位置的 token 认为 s 位置的 token 的重要程度,得到的分数越高,重要性越强。DSA 通过筛选排名前 k 的分数对应的 token 位置,记为 Stopk={s1,s2,...,sk} ,随后 DSA 保留对应的 MLA 隐向量并丢弃所有其他位置的向量。

通过这一机制,DSA 将注意力就按的复杂度从 o(L2) 降到了 O(KL) ,其中 K 是一个预设的,远小于 L 的一个常数,这种动态的基于内容分数的选择机制相比于固定的稀疏模式提供了更大的灵活度。

记录原理、连接知识、积累实践。