1565 words
8 minutes
DeepSeek-V3.2 技术报告阅读

论文链接:DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models

DeepSeek-V3.2 架构#

DeepSeek 稀疏注意力(DeepSeek Sparse Attention,DSA)#

符号约定:

符号含义
It,sI_{t,s}index score
htRd\bold{h}_t\in\mathbb{R}^dquery token
hsRd\bold{h}_s\in\mathbb{R}^dpreceding token
HIH^Inumber of indexer heads
qt,jIRdI\bold{q}^I_{t,j}\in\mathbb{R}^{d^I}derived from ht\bold{h}_t
ωt,jIR\omega^I_{t,j}\in\mathbb{R}derived from ht\bold{h}_t
ksIRdI\bold{k}^I_s\in\mathbb{R}^{d^I}derived from hs\bold{h}_s

当前 token 和第 ss 个 token 的 index score 为:

It,s=j=1HIwt,jIReLU(qt,jIksI),(1)I _ {t, s} = \sum_ {j = 1} ^ {H ^ {I}} w _ {t, j} ^ {I} \cdot \operatorname {R e L U} \left(\mathbf {q} _ {t, j} ^ {I} \cdot \mathbf {k} _ {s} ^ {I}\right), \tag {1}

选取 Top-k index score 的历史 token 参与注意力计算:

ut=Attn(ht,{csIt,sTopk(It;)}).(2)\mathbf {u} _ {t} = \operatorname {A t t n} \left(\mathbf {h} _ {t}, \left\{\mathbf {c} _ {s} \mid I _ {t, s} \in \operatorname {T o p} - \mathrm {k} \left(I _ {t;}\right) \right\}\right). \tag {2}

Figure 2 | DeepSeek-V3.2 的注意力架构,其中 DSA 在 MLA 下实例化。绿色部分展示了 DSA 如何根据索引器选择前k个键值条目。

复杂度:O(L2)O(kL)O(L^2)\rightarrow O(kL),其中 kLk\ll L.

持续预训练(Continued Pre-Training)#

  • 基模:DeepSeek-V3.1-Terminus 的一个检查点
  • 训练设置:DeepSeek-V3.2的持续预训练由两个训练阶段组成。在这两个阶段中,训练数据的分布与用于DeepSeek-V3.1-Terminus的128K长上下文扩展数据完全对齐

稠密预热阶段(Dense Warm-up Stage)#

  • 目的:初始化 lighting indexer
  • 方法:保持密集注意力,并冻结所有模型参数,除了 lighting indexer。为了使索引器的输出与主要注意力分布对齐,对于第 tt 个查询标记,首先通过对所有注意力头的得分进行求和来聚合主要注意力得分。然后沿序列维度对这个和进行 L1 归一化,以产生目标分布 pt,:Rtp*{t,:} \in \mathbb{R}^t。基于 pt,:p*{t,:},将 KL 散度损失设定为索引器的训练目标:
LI=tDKL(pt,:Softmax(It,:)).(3)\mathcal {L} ^ {I} = \sum_ {t} \mathbb {D} _ {\mathrm {K L}} \left(p _ {t,:} \| \operatorname {Softmax} \left(I _ {t,:}\right)\right). \tag {3}
  • 训练设置:
参数数值
学习率10310^{-3}
步数1000
每步序列数16
单序列长度128K
总 token 数21亿

稀疏训练阶段(Sparse Training Stage)#

  • 目的:在 indexer 预热之后,引入了细粒度的 token 选择机制,并优化所有模型参数,以使模型适应 DSA 的稀疏模式
  • 方法:保持将索引器输出与主要注意力分布对齐,但仅考虑所选的 token 集 St={sIt,sTopk(It;)}S_{t} = \{s\mid I_{t,s}\in \mathrm{Top - k}(I_{t;})\} :
LI=tDKL(pt,StSoftmax(It,St)).(4)\mathcal {L} ^ {I} = \sum_ {t} \mathbb {D} _ {\mathrm {K L}} \left(p _ {t, S _ {t}} \| \operatorname {S o f t m a x} \left(I _ {t, S _ {t}}\right)\right). \tag {4}

训练时,索引器输入与计算图分离,以便进行单独优化。索引器的训练信号仅来自 LI\mathcal{L}^I ,而主模型的优化仅根据语言建模损失进行。

  • 训练设置:
参数数值
学习率10610^{-6}
步数15000
每步序列数480
单序列长度128K
总 token 数943.7B

后训练(Post-Training)#

DeepSeek-V3.2 的后训练同样以与稀疏持续预训练阶段相同的方式采用稀疏注意力。DeepSeek-V3.2 保持与 DeepSeek-V3.2-Exp 相同的后训练流程,其中包括专家蒸馏和混合强化学习训练。

专家蒸馏#

对于每个任务,开发一个专门针对该特定领域的专用模型,所有专家模型均从同一预训练的DeepSeek-V3.2基础检查点进行微调。除了写作任务和通用问答外,该框架还涵盖六个专业领域:数学、编程、通用逻辑推理、通用智能体任务、智能体编程和智能体搜索,所有这些领域都支持思考和非思考两种模式。每个专家模型都通过大规模强化学习(RL)计算进行训练。此外,采用不同的模型来生成用于长链式思维推理(思考模式)和直接响应生成(非思考模式)的训练数据。专家模型准备就绪后,它们被用来为最终检查点生成领域特定的数据。实验结果表明,在蒸馏数据上训练的模型,其性能水平仅略低于领域特定专家模型的性能,而通过后续的强化学习训练,这一性能差距得到了有效消除。

混合RL训练#

将推理、代理和人类对齐训练合并为一个强化学习阶段。这种方法有效平衡了不同领域的表现,同时避免了多阶段训练范式中常见的灾难性遗忘问题。

  • 推理和agent任务: 基于规则的结果奖励、长度惩罚和语言一致性奖励。
  • 一般任务: 生成奖励模型,每个提示都有自己的评分标准。

Scaling GRPO#

DeepSeek-V3.2 的 GRPO 主要增加了无偏 KL 散度估计以及非策略序列掩码(Off-Policy Sequence Masking)。公式如下:

JGRPO(θ)=EqP(Q),{oi}i=1Gπold(q)[1Gi=1G1oit=1oimin(ri,t(θ)A^i,t,clip(ri,t(θ),1ε,1+ε)A^i,t)Mi,tβDKL(πθ(oi,t)πref(oi,t))],(8)\begin{array}{l} \mathcal {J} _ {\mathrm {G R P O}} (\theta) = \mathbb {E} _ {q \sim P (Q), \{o _ {i} \} _ {i = 1} ^ {G} \sim \pi_ {\mathrm {o l d}} (\cdot | q)} \left[ \frac {1}{G} \sum_ {i = 1} ^ {G} \frac {1}{| o _ {i} |} \sum_ {t = 1} ^ {| o _ {i} |} \right. \\ \left. \min \left(r _ {i, t} (\theta) \hat {A} _ {i, t}, \operatorname {c l i p} \left(r _ {i, t} (\theta), 1 - \varepsilon , 1 + \varepsilon\right) \hat {A} _ {i, t}\right) M _ {i, t} - \beta \mathbb {D} _ {\mathrm {K L}} \left(\pi_ {\theta} (o _ {i, t}) \left\| \pi_ {\mathrm {r e f}} (o _ {i, t})\right) \right], \quad (8) \right. \\ \end{array}

其中

DKL(πθ(oi,t)πref(oi,t))=πθ(oi,tq,oi,<t)πold(oi,tq,oi,<t)(πref(oi,tq,oi,<t)πθ(oi,tq,oi,<t)logπref(oi,tq,oi,<t)πθ(oi,tq,oi,<t)1),\mathbb {D} _ {\mathrm {K L}} \big (\pi_ {\theta} (o _ {i, t}) \left\| \pi_ {\mathrm {r e f}} (o _ {i, t}) \right. \big) = \frac {\pi_ {\theta} (o _ {i , t} | q , o _ {i , < t})}{\pi_ {\mathrm {o l d}} (o _ {i , t} | q , o _ {i , < t})} \left(\frac {\pi_ {\mathrm {r e f}} (o _ {i , t} | q , o _ {i , < t})}{\pi_ {\theta} (o _ {i , t} | q , o _ {i , < t})} - \log \frac {\pi_ {\mathrm {r e f}} (o _ {i , t} | q , o _ {i , < t})}{\pi_ {\theta} (o _ {i , t} | q , o _ {i , < t})} - 1\right),Mi,t={0A^i,t<0,1oit=1oilogπo l d(oi,tq,oi,<t)πθ(oi,tq,oi,<t)>δ,1o t h e r w i s e.M _ {i, t} = \left\{ \begin{array}{l l} 0 & \hat {A} _ {i, t} < 0, \frac {1}{| o _ {i} |} \sum_ {t = 1} ^ {| o _ {i} |} \log \frac {\pi_ {\text {o l d}} \left(o _ {i , t} \mid q , o _ {i , < t}\right)}{\pi_ {\theta} \left(o _ {i , t} \mid q , o _ {i , < t}\right)} > \delta, \\ 1 & \text {o t h e r w i s e}. \end{array} \right.

非策略序列掩码的目的在于掩盖了引入显著策略偏差的负序列,从而稳定训练并提高对非策略更新的容忍度。

DeepSeek-V3.2 技术报告阅读
https://etherwindy.github.io/AstroBlog/posts/deepseek-v3_2/
Author
etherwindy
Published at
2025-12-03
License
CC BY-NC-SA 4.0