NLP——技术报告解读-DeepSeek-V3.2-Exp

注:本文包含 AI 辅助创作

Paper Summary

  • 论文介绍了 DeepSeek-V3.2-Exp,一个实验性的稀疏注意力模型,它通过持续训练为 DeepSeek-V3.1-Terminus 配备了 DeepSeek 稀疏注意力 (DeepSeek Sparse Attention, DSA)
    • 注:论文的 DSA 方法是用于 Token 的挑选(特别适用于长文本中),而 MoE 是针对专家的挑选,两者有本质区别
  • DSA 是一种由 lightning 索引器(lightning indexer)驱动(powered by)的细粒度稀疏注意力机制(fine-grained sparse attention mechanism) ,借助 DSA,DeepSeek-V3.2-Exp 在训练和推理效率上均取得了显著提升,尤其是在长上下文场景中
  • 模型检查点可在 huggingface.co/deepseek-ai/DeepSeek-V3.2-Exp 获取

Architecture

  • 与 DeepSeek-V3.1 的最后一个版本 DeepSeek-V3.1-Terminus 相比,DeepSeek-V3.2-Exp 在架构上唯一的修改就是通过持续训练引入了 DeepSeek 稀疏注意力 (DeepSeek Sparse Attention, DSA)

Prototype of DSA,DSA 原型

  • DSA 的原型主要由两个组件构成:一个 lightning 索引器和一个细粒度 Token 选择机制
  • lightning 索引器(lightning indexer)
    • lightning 索引器 计算 Query Token \( \mathbf{h}_t \in \mathbb{R}^d \) 与之前的 Token \( \mathbf{h}_s \in \mathbb{R}^d \) 之间的索引分数 \( I_{t,s} \) (注:\(t,s\) 表示 Token 的位置),决定哪些 Token 被 Query Token 选中:
      $$I_{t,s} = \sum_{j=1}^{H^I} w_{t,j}^I \cdot \text{ReLU} \left( \mathbf{q}_{t,j}^I \cdot \mathbf{k}_s^I \right),$$
      • \( H^I \) 表示索引器头的数量;
      • \( \mathbf{q}_{t,j}^I \in \mathbb{R}^{d^I} \) 和 \( w_{t,j}^I \in \mathbb{R} \) 源自 Query Token \( \mathbf{h}_t \);
        • 理解:
          • \( w_{t,j}^I \in \mathbb{R} = f^w(\mathbf{h}_t )\)
          • \( \mathbf{q}_{t,j}^I \in \mathbb{R}^{d^I} = f_{j}^q(\mathbf{h}_t )\)
      • \( \mathbf{k}_s^I \in \mathbb{R}^{d^I} \) 源自之前的 Token \( \mathbf{h}_s \)
    • 出于吞吐量考虑,论文选择 ReLU 作为激活函数
    • 鉴于 lightning 索引器头部数量较少且可以用 FP8 实现,其计算效率非常显著
  • 细粒度 Token 选择机制(fine-grained token selection mechanism)
    • 给定每个 Query Token \( \mathbf{h}_t \) 的索引分数 \(\{I_{t,s}\}\),论文的细粒度 Token 选择机制仅检索与 top-k 索引分数对应的 Key-Value 条目 \(\{c_s\}\)
    • 然后,通过在 Query Token \( \mathbf{h}_t \) 与稀疏选中的 Key-Value 条目 \(\{c_s\}\) 之间应用注意力机制来计算注意力输出 \( u_t \):
      $$u_t = \text{Attn}(\mathbf{h}_t, \{c_s | I_{t,s} \in \text{Top-k}(I_{t,s})\}).$$
      • 注:\(\text{Top-k}(I_{t,s})\) 表示 Query Token \(\mathbf{h}_t\) 与所有(\(t\) 之前的) Key Token \(\mathbf{h}_s\) 之间 index 分数最大的多个索引的集合
  • 理解:仅从方法上看 DSA 的实现与普通的 MoE Router 方法,似乎没什么区别,但论文的 DSA 方法是用于 Token 的挑选(特别适用于长文本中),而 MoE 是针对专家的挑选,两者有本质区别

Instantiate DSA Under MLA

  • 出于从 DeepSeek-V3.1-Terminus 进行持续训练(Continued Pre-Training)的考虑,论文基于 MLA (DeepSeek-AI, 2024) 为 DeepSeek-V3.2-Exp 实例化了 DSA
  • 在内核层面,为了计算效率,每个 Key-Value 条目必须在多个 Query之间共享 (2025)
  • 因此,论文基于 MLA 的 MQA 模式 (2019) 实现了 DSA,其中每个潜在向量(MLA 的 Key-Value 条目)将在 Query Token 的所有 Query 头之间共享
  • 基于 MLA 的 DSA 架构如图 1 所示,图 1:DeepSeek-V3.2-Exp 的注意力架构,其中 DSA 在 MLA 下实例化
    • 绿色部分说明了 DSA 如何根据索引器选择 top-k Key-Value 条目
  • 论文还提供了 DeepSeek-V3.2-Exp 开源实现,以明确指定细节
  • 注:论文在附录 A 中说明了 MLA 的 MQA 和 MHA 模式之间的区别

Training

  • 从一个上下文长度已扩展到 128K 的 DeepSeek-V3.1-Terminus 基础检查点开始,论文执行了持续预训练,随后进行后训练,以创建 DeepSeek-V3.2-Exp

Continued Pre-Training

  • DeepSeek-V3.2-Exp 的持续预训练包含两个训练阶段
  • 对于这两个阶段,训练数据的分布与用于 DeepSeek-V3.1-Terminus 的 128K 长上下文扩展数据完全对齐
Dense Warm-up Stage
  • 首先使用一个短暂的预热阶段来初始化 lightning 索引器
    • 在此阶段,论文保持 Dense 注意力,并冻结除 lightning 索引器之外的所有模型参数
  • 为了使索引器输出与主注意力分布对齐,对于第 \(t\) 个 Query Token
    • 首先通过对所有注意力头的分数求和来聚合主注意力分数
    • 然后将该总和沿序列维度进行 L1 归一化 ,以产生目标分布 \(p_{t,:}\in\mathbb{R}^{t}\)
      • 理解:这里的目标分布 \(p_{t,:}\in\mathbb{R}^{t}\) 是一个 L1 归一化 得到的概率分布:
        $$ p_{t,i} = \frac{a_i}{\sum_j a_j} $$
        • 其中 \(a_j\) 是注意力分数
  • 基于 \(p_{t,:}\),论文设置一个 KL 散度损失作为索引器的训练目标:
    $$\mathcal{L}^{l}=\sum_{t}\mathbb{D}_{\text{KL} }\big{(}p_{t,:}\left| \operatorname{Softmax}(I_{t,:})\right\}\big{)}. \tag{3}$$
  • 对于预热,论文使用 \(10^{-3}\) 的学习率
  • 论文仅对索引器训练 1000 步,每步包含 16 个 128K Token 的序列,总共 2.1B Token
Sparse Training Stage
  • 索引器预热之后,论文引入细粒度 Token 选择机制,并优化所有模型参数,使模型适应 DSA 的稀疏模式
  • 在此阶段,论文继续保持索引器输出与主注意力分布对齐,但仅考虑选中的 Token 集 \(\color{red}{\mathcal{S}_{t}=\{s|I_{t,s}\in\text{Top-k}(I_{t,:})\} }\):
    $$\mathcal{L}^{l}=\sum_{t}\mathbb{D}_{\text{KL} }\big{(}p_{t,\color{red}{\mathcal{S }_{t} } }\left|\operatorname{Softmax}(I_{t,\color{red}{\mathcal{S}_{t} } })\right\}\big{)}. \tag{4}$$
  • 特别注意:论文将索引器输入从计算图中分离出来进行单独优化
  • 索引器的训练信号仅来自 \(\mathcal{L}^{l}\),而主模型的优化仅根据语言建模损失
  • 在此稀疏训练阶段,论文使用 \(7.3\times 10^{-6}\) 的学习率,并为每个 Query Token 选择 2048 个 Key-Value Token
  • 论文对主模型和索引器都训练了 15000 步,每步包含 480 个 128K Token 的序列,总共 943.7B Token

Post-Training

  • 持续预训练之后,论文执行后训练以创建最终的 DeepSeek-V3.2-Exp
  • DeepSeek-V3.2-Exp 的后训练也以与稀疏持续预训练阶段相同的方式采用稀疏注意力
  • 为了严格评估引入 DSA 的影响,对于 DeepSeek-V3.2-Exp,论文保持了与 DeepSeek-V3.1-Terminus 相同的后训练流程、算法和数据,具体如下
  • 专家蒸馏 (Specialist Distillation)
    • 对于每个任务,论文首先开发一个专门针对该特定领域的专家模型,所有专家模型都是从同一个预训练的 DeepSeek-V3.2 基础检查点微调而来
      • 除了写作任务和通用问答,论文的框架还涵盖五个专业领域:数学、竞争性编程、通用逻辑推理、智能体编码和智能体搜索
      • 每个专家都使用大规模 RL 进行训练
    • 此外,论文采用不同的模型来生成长链思维推理(思考模式)和直接响应生成(非思考模式)的训练数据
    • 一旦专家模型准备就绪,它们就被用来为最终检查点生成特定领域的数据
    • 实验结果表明,在蒸馏数据上训练的模型达到的性能水平仅略低于领域特定专家,并且通过后续的 RL 训练,性能差距被有效消除
  • 混合 RL 训练 (Mixed RL Training)
    • 对于 DeepSeek-V3.2-Exp,论文仍然采用 GRPO (DeepSeek-AI, 2025; 2024) 作为 RL 训练算法
    • 与先前使用多阶段强化学习训练的 DeepSeek 模型不同,论文将推理、智能体和人类对齐训练合并到一个 RL 阶段
    • 这种方法有效地平衡了不同领域的性能,同时避免了多阶段训练范式常见的灾难性遗忘问题
      • 对于推理和智能体任务,论文采用基于规则的结果奖励、长度惩罚和语言一致性奖励
      • 对于通用任务,论文采用生成式奖励模型,其中每个提示都有自己的评估标准
    • 论文的奖励设计仔细平衡了两个关键权衡:
      • (1) 长度与准确性
      • (2) 语言一致性与准确性

Evaluations

Model Capabilities

  • 论文在一系列侧重于不同能力的基准测试上评估 DeepSeek-V3.2-Exp,并在表 1 中将其与 DeepSeek-V3.1-Terminus 进行比较
    • DeepSeek-V3.2-Exp 在长序列上显著提高了计算效率 ,且在短上下文长上下文任务上 ,论文均未观察到与 DeepSeek-V3.1-Terminus 相比有明显的性能下降
  • 论文还比较了 DeepSeek-V3.2-Exp 和 DeepSeek-V3.1-Terminus 的强化学习训练曲线,如图 2 所示
    • 两个模型在 BrowseComp 和 SWE Verified 上的性能在整个训练过程中稳步提高,曲线紧密对齐,这反映了 DSA 的训练稳定性
  • 图 2:DeepSeek-V3.1-Terminus 和 DeepSeek-V3.2-Exp 在 BrowseC-comp 和 SWE Verified 上的 RL 训练曲线
    • 实线表示准确度
    • 虚线表示平均输出 Token 数

Inference Costs

  • DSA 将主模型的核心注意力复杂度从 \(O(L^{2})\) 降低到 \(O(Lk)\)
    • 其中 \(k\) (\(\ll L\)) 是选中 Token 的数量
  • 尽管 lightning 索引器仍然具有 \(O(L^{2})\) 的复杂度,但与 DeepSeek-V3.1-Terminus 中的 MLA 相比,它所需的计算量要少得多
  • 结合论文优化的实现,DSA 在长上下文场景中实现了显著的端到端加速
  • 图 3 展示了 DeepSeek-V3.1-Terminus 和 DeepSeek-V3.2-Exp 的 Token 成本如何随序列中 Token 位置的变化而变化
    • 这些成本是基于部署在 H800 GPU 上的实际服务进行基准测试估算的,GPU 租赁价格为每小时 2 美元
    • 对于短序列预填充,论文专门实现了一种掩码 MHA 模式来模拟 DSA,这可以在短上下文条件下实现更高的效率
    • 问题:短序列上的掩码 MHA 在哪里介绍?
  • 图 3:DeepSeek-V3.1-Terminus 和 DeepSeek-V3.2-Exp 在 H800 集群上的推理成本

Future Validation in Real World

  • 尽管论文的内部评估显示了 DeepSeek-V3.2-Exp 的 promising 结果,论文仍在积极寻求在真实场景中进行进一步的大规模测试,以发现稀疏注意力架构的潜在局限性

附录 A: MHA and MQA Modes of MLA

  • 图 4 说明了 MLA 的两个方面(MHA 和 MQA 模式)以及它们之间的转换
    • 注:MQA 中,同一层的所有 Attention 头共享同一个 Key-Value;MHA 中则每个 Attention 头有自己的 Key-Value
  • 图 4:MLA 的 MHA 和 MQA 模式示意图
    • 对于 DeepSeek-V3.1-Terminus,MHA 模式用于训练和预填充,MQA 模式用于解码
  • 理解:MQA 中,可以在做完 MQA Attention 以后再恢复 MLA 的隐向量至最终 Hidden(特别注意左边 Query 部分也有很大差异);而 MHA 中则必须在 Attention 前做完 MLA 隐向量到 Key-Value Hidden 的恢复
  • 问题1:MQA 可以这样做的原因是因为什么?为什么隐向量可以用来做 Attention?
    • 补充问题:MQA 模式中为什么要对 Query 做 \(\mathbf{q}_{t,i}^A = \mathbf{W}_i^{UK} \mathbf{q}_{t,i}^C\)?
    • 回答:
      • 其实可以看出,上图 4 中,MHA 和 MQA 的 Attention 计算权重 Q,K 时,整体来说都是乘了一个 \( \mathbf{W}_i^{UK} \) 的,对于 Value 而言,则都是乘了一个 \( \mathbf{W}_i^{UV} \) 的,只是乘的地方不同而已
      • 但还需要确认的是,乘法做到 Query 上时,应该是使用转置来乘才对,即 \(\mathbf{q}_{t,i}^A = (\mathbf{W}_i^{UK})^{\color{red}{T}} \mathbf{q}_{t,i}^C\)
    • 问题:在 MHA 中,也可以将乘 \( \mathbf{W}_i^{UK} \) 放到 Query 上来?
      • 回答:不行,因为此时的不同 Attention 头,Key 是不一样的【待进一步思考】
  • 问题2:MHA 模式和 MQA 模式应该是模型结构决定的吧,还能在同一个模型的 训练、预填充 和 解码 阶段分别用不同的模式吗?