7.1 DeepSeek 系列模型结构与训练范式详解(V1 / Math / V2 / V3)

本文围绕 DeepSeek 系列的几条关键技术线索展开:(1)V1:在 LLaMA 范式上做工程化与数据/对齐配方;(2)DeepSeek-Math:可扩展的数学语料构建与基于 GRPO 的强化学习;(3)V2:DeepSeekMoE 的细粒度专家 + 共享专家 + 设备受限路由与通信平衡;(4)V3:在 MoE 路由与负载均衡上进一步推进,并引入 MTP(Multi-Token Prediction)提高训练信号密度。


1. DeepSeek-V1(DSV1):在 LLaMA 基础上的架构与对齐训练

1.1 模型结构:LLaMA 主干 + 常见稳定性/效率组件

DeepSeek-V1 基于 LLaMA 风格的 decoder-only Transformer 主干,核心组件包括:

  • Pre-RMSNorm:在注意力/FFN 子层前做 RMSNorm(相较 Post-Norm 更利于深层训练稳定)。
  • SwiGLU:将 FFN 激活从传统 GeLU/Relu 迁移到 SwiGLU,提高表达能力与训练效率。
  • RoPE:旋转位置编码,用于提升长上下文建模能力。
  • GQA(67B):在大模型上使用 Grouped-Query Attention 降低推理 KV cache 的开销。

一个典型的 decoder block(抽象表达)可以理解为:

  1. 归一化后做自注意力:
    h~=h+Attn(RMSNorm(h)) \tilde{h} = h + \mathrm{Attn}(\mathrm{RMSNorm}(h)) h~=h+Attn(RMSNorm(h))

  2. 再归一化后做 FFN(SwiGLU):
    h′=h~+FFN(RMSNorm(h~)) h' = \tilde{h} + \mathrm{FFN}(\mathrm{RMSNorm}(\tilde{h})) h=h~+FFN(RMSNorm(h~))

其中 FFN 若采用 SwiGLU,可写为(概念形式):
FFN(x)=(xW1)⊙Swish(xW2) W3 \mathrm{FFN}(x)= (xW_1)\odot \mathrm{Swish}(xW_2)\, W_3 FFN(x)=(xW1)Swish(xW2)W3

直观理解:SwiGLU 相当于“门控 + 非线性”的组合,相比单一激活函数更容易学到条件化的特征选择。


1.2 分词:BBPE 与大词表(102400)

DeepSeek-V1 使用 BBPE(Byte-level BPE 的变体/实现)构建 tokenizer,并训练得到 102400 的词表规模。更大的词表通常带来:

  • 更少的 token 序列长度(尤其对多语言、符号、代码混合文本)
  • 更高的 embedding / softmax 参数规模(需要更大显存与带宽)

实际案例(直觉层面)
对于包含大量符号与数学表达式的文本(如 LaTeX、代码片段),byte-level 方案更稳健:即使遇到罕见字符也能退化为字节序列表示,减少 OOV 风险。


1.3 SFT:指令微调数据与训练配方

SFT(Supervised Fine-Tuning)阶段要解决的是:让基座模型从“续写”转为“指令遵循”。

  • 数据:约 1.5M 中英文指令数据
  • 训练轮次:7B 训练 4 epochs,67B 训练 2 epochs
  • 学习率:约 1×10−51\times 10^{-5}1×105(7B)与 5×10−65\times 10^{-6}5×106(67B)

为什么大模型更小学习率、epoch 更少?
大模型容量更强,若过度拟合指令数据,容易损伤通用能力;同时大模型每步更新带来的分布漂移更大,因此更保守的学习率与训练时长更稳健。


1.4 DPO:从自家 Chat 模型生成偏好对,进行偏好优化

DPO(Direct Preference Optimization)的核心是:不显式训练 reward model,而直接用偏好对约束策略。

  • 偏好对来源:用 DeepSeek Chat Models 生成多种 responses,再构建偏好对(chosen / rejected)
  • 训练超参:Batch size 512,lr=5×10−6lr=5\times 10^{-6}lr=5×106

DPO 的经典目标形式可写为(给定 prompt xxx,chosen y+y^+y+,rejected y−y^-y):
LDPO=−log⁡σ(β[log⁡πθ(y+∣x)−log⁡πθ(y−∣x)−(log⁡πref(y+∣x)−log⁡πref(y−∣x))]) \mathcal{L}_{\mathrm{DPO}} \mathrm{}= -\log \sigma\left( \beta\left[ \log\pi_\theta(y^+|x)-\log\pi_\theta(y^-|x) -\left(\log\pi_{\mathrm{ref}}(y^+|x)-\log\pi_{\mathrm{ref}}(y^-|x)\right) \right] \right) LDPO=logσ(β[logπθ(y+x)logπθ(yx)(logπref(y+x)logπref(yx))])

  • πθ\pi_\thetaπθ:待训练策略
  • πref\pi_{\mathrm{ref}}πref:参考策略(通常是 SFT 模型)
  • β\betaβ:偏好强度系数

实际案例(直觉层面)
假设同一问题下:

  • y+y^+y+:回答更礼貌、步骤更清晰、最终结论正确
  • y−y^-y:结论含糊或出现幻觉
    DPO 直接驱动模型把概率质量从 y−y^-y 转移到 y+y^+y+,同时通过 reference 项控制“别跑太远”,避免破坏原有语言能力。

2. DeepSeek-Math:数学语料构建、去污染与 GRPO 强化学习

DeepSeek-Math 的关键点在于:(1)数学预训练语料的可扩展构建(120B tokens);(2)从 code LLM 初始化;(3)指令微调 + 强化学习配方;(4)对数学评测常用指标(如 Pass@K)的强调。


2.1 数学训练语料:从 OpenWebMath 种子到 Common Crawl 召回(120B tokens)

2.1.1 为什么要专门做数学语料?

数学能力不只是“语言流畅”,更依赖:

  • 结构化符号、定义、推导
  • 长链条逻辑一致性
  • 与公式/代码/LaTeX 的混合表达

如果预训练数据对这类结构覆盖不足,模型推理常出现“看似合理但关键步骤错”的问题。


2.2 数据收集与清洗流程(6 个步骤)

Step 1:初始种子语料库(OpenWebMath)
  • 使用 OpenWebMath 作为数学网页高质量种子语料
  • 规模:约 14.7B tokens
  • 用途:为后续召回提供“正样本分布”
Step 2:训练 fastText 分类器(理解其与 Word2Vec CBOW 的区别)

训练样本构建:

  • 正样本:从种子语料随机选 50 万网页片段/样本点
  • 负样本:从 Common Crawl 随机选 50 万网页

训练配置(示例):

  • 向量维度 256
  • 学习率 0.1
  • 最大词 n-gram 长度 3
  • 最小词频 3
  • 训练轮数 3

fastText vs Word2Vec CBOW(关键差异)

  • CBOW:词向量以“词”为最小单位,容易受未登录词影响
  • fastText:把一个词拆成多个字符 n-gram 子词,词表示为 n-gram 向量之和
    这使得 fastText 对数学/代码/稀有符号更鲁棒。

可以把 fastText 的词表示写成:
v(w)=∑g∈G(w)zg \mathbf{v}(w)=\sum_{g\in \mathcal{G}(w)} \mathbf{z}_g v(w)=gG(w)zg

  • G(w)\mathcal{G}(w)G(w):词 www 的字符 n-gram 集合
  • zg\mathbf{z}_gzg:n-gram 的向量

实际案例(直觉层面)
polylogarithmcovariantx^2+y^2\\frac{a}{b} 这类词/片段,fastText 不需要“完整见过这个词”也能凭字符片段泛化出相似度,从而更容易召回数学网页。


Step 3:去重与召回
  • URL 去重 + 近似去重,将 Common Crawl 压缩到约 40B HTML 页面
  • 用 fastText 模型对页面打分,召回数学相关网页
Step 4:过滤与排序(只保留高分页面,选定 token 规模)
  • 对召回页面按 fastText 分数排序,仅保留高分部分
  • 通过预训练实验评估数据量与收益,最终选择保留前 40B tokens(作为某一轮或阶段的规模选择依据)
Step 5:迭代式数据收集(4 轮迭代到 120B)
  • 识别未覆盖来源,扩充种子
  • 继续训练/更新 fastText
  • 多轮迭代后得到:
    • 3550 万数学网页
    • 总计 120B math tokens

这里的核心思想是“自举式召回”:用一小份高质量种子训练召回器,不断扩大覆盖面,同时通过过滤与评估控制质量。

Step 6:去污染(Decontamination)

目标是避免评测集内容进入训练数据导致“刷榜”。

一种典型策略是 n-gram 匹配过滤:

  • 若文本片段长度达到阈值(例如 10-gram),只要与评测基准中的任意子串完全匹配,就删除该网页
  • 对较短片段(例如 3-gram 到 9-gram)采用更严格的精确匹配策略

可以抽象理解为:

  • 构建基准集合 BBB 的 n-gram 词典
  • 对候选网页 ddd 提取 n-gram 集合 N(d)\mathcal{N}(d)N(d)
  • N(d)∩N(B)≠∅\mathcal{N}(d)\cap \mathcal{N}(B)\neq \emptysetN(d)N(B)= 且满足阈值规则,则过滤该网页

2.3 为什么从 Code LLM 初始化(DeepSeek-Coder-Base-v1.5 7B)?

数学推理与代码能力共享很多底层能力:

  • 符号/结构敏感(括号、运算符、缩进/层级)
  • 严格的局部一致性要求
  • 长程依赖下的可验证步骤

因此用 code LLM 做 base,再进行数学语料预训练,常能更快获得可用的数学推理能力。


2.4 预训练:500B tokens 的分布与训练设置

2.4.1 数据分布(示例)

总计约 500B tokens,其中:

  • 56%:DeepSeekMath Corpus(数学网页)
  • 4%:AlgebraicStack
  • 10%:arXiv
  • 20%:GitHub code
  • 10%:中英文 Common Crawl 自然语言
2.4.2 优化与调度(示例)
  • 框架:HAI-LLM
  • 优化器:AdamW
  • warmup:2000 steps
  • 峰值学习率:4.2×10−44.2\times 10^{-4}4.2×104
  • batch:按 token 计可达 10M tokens/step(概念规模)

2.5 指令微调:数学指令数据(776K)与训练配方

2.5.1 数据构成

数学指令调优数据集覆盖不同数学领域与难度,包含中英文问题,solution 形式包括:

  • CoT(Chain-of-Thought)
  • PoT(Program-of-Thought)
  • tool-integrated reasoning

总大小约 776K

2.5.2 训练策略(示例)
  • 在 DeepSeekMath-Base 上训练
  • 将样本拼接到 4K tokens 长度
  • batch size 256
  • 学习率 5×10−55\times 10^{-5}5×105
  • 训练步数 500 steps

2.6 强化学习:GRPO(group size = 64)与 Pass@K

2.6.1 GRPO 的直觉

GRPO(Group Relative Policy Optimization)强调:同一问题下采样多条候选,把“相对好坏”转为稳定的优势信号,减轻单条轨迹奖励噪声对梯度的冲击。

如果同一题采样 KKK 条回答,得到奖励 r1,…,rKr_1,\dots,r_Kr1,,rK,常见做法是引入组内基线,例如:
Ai=ri−1K∑j=1Krj A_i = r_i - \frac{1}{K}\sum_{j=1}^{K} r_j Ai=riK1j=1Krj

更稳定的实现也常见能量化/soft baseline(不同工作会有差异):
b=log⁡∑j=1Kexp⁡(βrj),Ai=βri−b b = \log\sum_{j=1}^{K}\exp(\beta r_j),\quad A_i = \beta r_i - b b=logj=1Kexp(βrj),Ai=βrib

其中 β\betaβ 控制奖励尺度。

组内相对优势能抑制“奖励绝对尺度不可靠”带来的不稳定,同时鼓励在同一题内做更好的排序学习。

2.6.2 Pass@K:为什么数学评测要看它?

Pass@K 的核心含义是:给模型 KKK 次机会,只要有一次答对就算通过。
它更贴近“采样 + 验证”的推理系统设定,也能衡量模型的“可搜索性”。

设单次采样正确概率为 ppp,则在独立采样假设下:
Pass@K=1−(1−p)K \mathrm{Pass@}K = 1-(1-p)^K Pass@K=1(1p)K

实际案例
如果单次正确率 p=0.2p=0.2p=0.2

  • Pass@1:0.20.20.2
  • Pass@5:1−0.85=1−0.32768=0.672321-0.8^5=1-0.32768=0.6723210.85=10.32768=0.67232
  • Pass@10:1−0.810≈0.89261-0.8^{10}\approx 0.892610.8100.8926

这解释了为何很多数学系统会做多样采样再用 verifier/规则筛选:即使单次不稳,多次采样可显著提高成功率。


3. DeepSeek-V2:DeepSeekMoE 的细粒度专家、共享专家与通信/路由优化

DeepSeek-V2 的重点是:做“经济高效”的 MoE,同时把训练与推理的系统瓶颈(负载、通信)纳入结构设计。


3.1 DeepSeekMoE:共享专家 + 路由专家的混合 FFN

设第 ttt 个 token 的 FFN 输入为 utu_tut,DeepSeekMoE 的 FFN 输出(概念表达)为:
ht′=ut+∑i=1NsFFNi(s)(ut)+∑i=1Nrgi,tFFNi(r)(ut) h_t' = u_t + \sum_{i=1}^{N_s}\mathrm{FFN}_i^{(s)}(u_t) + \sum_{i=1}^{N_r} g_{i,t}\mathrm{FFN}_i^{(r)}(u_t) ht=ut+i=1NsFFNi(s)(ut)+i=1Nrgi,tFFNi(r)(ut)

  • NsN_sNs:共享专家数量(shared experts)
  • NrN_rNr:路由专家数量(routed experts)
  • FFN(s)\mathrm{FFN}^{(s)}FFN(s):共享专家(每个 token 都走,提供通用能力)
  • FFN(r)\mathrm{FFN}^{(r)}FFN(r):路由专家(按 token 特征选择 TopK,提供专精能力)

路由门控通常由 token 表征与专家质心做相似度得到:
si,t=Softmaxi(utTei) s_{i,t}=\mathrm{Softmax}_i(u_t^T e_i) si,t=Softmaxi(utTei)

并仅激活 TopK 路由专家:
gi,t={si,t,si,t∈Topk({sj,t∣1≤j≤Nr},Kr)0,otherwise g_{i,t}= \begin{cases} s_{i,t}, & s_{i,t}\in \mathrm{Topk}(\{s_{j,t}\mid 1\le j\le N_r\},K_r)\\ 0, & \text{otherwise} \end{cases} gi,t={si,t,0,si,tTopk({sj,t1jNr},Kr)otherwise

其中:

  • eie_iei:第 iii 个路由专家的质心向量
  • KrK_rKr:激活的路由专家数量

3.2 为什么要“更细粒度专家”与“共享专家隔离”?

3.2.1 更细粒度专家:提高专精与知识捕获

当专家更细粒度时,同样总参数下可以提供更多“专门子空间”,让不同模式(代码、数学、对话、检索、工具调用等)各自聚类。

3.2.2 共享专家:减少路由专家之间的冗余

如果所有能力都通过路由专家实现,不同专家会重复学习通用语言模式,造成参数浪费。共享专家承担“通用底座”,路由专家专注“差异化技能”。

实际案例(直觉层面)
对一个 token(比如 “Therefore,”)来说,大多数上下文都需要通用语言建模,这可以由共享专家稳定提供;而对“integral / derivative / theorem / complexity”这类 token 或其上下文,路由专家更适合提供专门数学/代码能力。


3.3 Device-Limited Routing:限制通信涉及的设备数

3.3.1 背景:专家并行导致通信成本很高

在专家并行中,不同专家分布在不同设备上。一个 token 激活的专家覆盖的设备越多,All-to-All 的通信就越重。细粒度专家数增多后,这个问题更突出。

3.3.2 核心思想:先选设备,再选专家

不是直接在所有专家里做 TopK,而是:

  1. 先挑选 MMM 个设备,这些设备上拥有与 token 亲和度最高的专家
  2. 再在这 MMM 个设备的专家集合里做 TopK(得到 KrK_rKr 个专家)

这样保证每个 token 的目标专家最多分布在 MMM 个设备,从而降低通信范围。

经验结论
M≥3M\ge 3M3 时,性能接近不受限 TopK,但通信成本显著降低。


3.4 Communication Balance Loss:设备“接收侧”的负载均衡

即便 Device-Limited Routing 限制了发送侧,每个设备接收的 token 数仍可能严重不均衡,导致通信阻塞。因此引入通信平衡损失:

LCommBal=α3∑i=1Dfi′′Pi′′ \mathcal{L}_{\mathrm{CommBal}}=\alpha_3\sum_{i=1}^{D} f_i'' P_i'' LCommBal=α3i=1Dfi′′Pi′′

其中
fi′′=DMT∑t=1T1(Token t is sent to Device i) f_i''=\frac{D}{MT}\sum_{t=1}^{T}\mathbb{1}(\text{Token }t\text{ is sent to Device }i) fi′′=MTDt=1T1(Token t is sent to Device i)

Pi′′=∑j∈EiPj P_i''=\sum_{j\in \mathcal{E}_i} P_j Pi′′=jEiPj

  • DDD:设备数
  • MMM:设备受限路由中允许涉及的设备数
  • TTT:token 数
  • Ei\mathcal{E}_iEi:设备 iii 上的专家集合
  • PjP_jPj:专家/设备相关的概率或负载统计量(具体定义依实现而定)
  • 系数 DM\frac{D}{M}MD 的出现用于控制尺度,使 loss 不随设备数或激活设备数变化而漂移。

3.5 Token-Dropping:极端不均衡下的兜底策略

即使加了均衡机制,也不能保证完全平衡,因此引入设备级 token drop:

  1. 预先计算每个设备的平均计算预算
  2. 对该设备分配到的 token 按路由分数降序
  3. 超过预算的尾部 token 被 drop(不参与该层计算)

实际案例(直觉层面)
当某一批数据里大量 token 都强烈倾向同一组专家/同一设备时,不 drop 会导致该设备排队阻塞,整个 step 的吞吐被最慢设备拖垮;drop 则牺牲少量 token 的精确计算换取系统稳定吞吐。


3.6 MLA:KV Cache 低秩投影(面向推理内存/带宽优化)

Multi-Head Latent Attention(MLA)可以理解为对 KV cache 做低秩/潜变量投影,在尽量保持注意力效果的同时降低缓存成本。
其核心动机:推理阶段 KV cache 通常是显存大头,降低其存储与带宽能显著提升吞吐与上下文长度支持。


4. DeepSeek-V3:路由机制升级、无辅助损失均衡与 MTP 训练目标

DeepSeek-V3 在 V2 的 MoE 框架上继续演进,关键变化包括:

  • gate:从 softmax 改为 sigmoid(应对更多路由专家)
  • Load balancing:提出 Auxiliary-Loss-Free Load Balancing(不再依赖繁重的辅助 loss)
  • 引入 Complementary Sequence-Wise Auxiliary Loss(序列级补充)
  • 去掉 Token-Dropping(No Token-Dropping)
  • 训练目标:引入 MTP(Multi-Token Prediction)

4.1 gate:softmax →\rightarrow sigmoid(从“强竞争”到“更可区分”)

在 V2 类路由中,常见是 softmax:

  • softmax 会把分数推向两端(饱和),专家越多时,很多专家分数会极接近 0,区分度变差且对扰动敏感。

V3 使用 sigmoid 打分并再归一化(概念形式):
si,t=Sigmoid(utTei) s_{i,t}=\mathrm{Sigmoid}(u_t^T e_i) si,t=Sigmoid(utTei)

并在 TopK 激活后做归一化(示意):
gi,t=gi,t′∑j=1Nrgj,t′ g_{i,t}=\frac{g_{i,t}'}{\sum_{j=1}^{N_r} g_{j,t}'} gi,t=j=1Nrgj,tgi,t

整体 FFN 形式仍为:
ht′=ut+∑i=1NsFFNi(s)(ut)+∑i=1Nrgi,tFFNi(r)(ut) h_t' = u_t + \sum_{i=1}^{N_s}\mathrm{FFN}_i^{(s)}(u_t) + \sum_{i=1}^{N_r} g_{i,t}\mathrm{FFN}_i^{(r)}(u_t) ht=ut+i=1NsFFNi(s)(ut)+i=1Nrgi,tFFNi(r)(ut)

直觉
softmax 像“单标签分类”的强竞争;sigmoid 更像“多标签打分”,专家数量大时更容易保持分数区分度。


4.2 Auxiliary-Loss-Free Load Balancing:用可学习 bias 调控 TopK

V1/V2 常用各类辅助损失做均衡,但辅助损失可能伤害效果。V3 的思路是:不直接在 loss 里惩罚不均衡,而是通过学习到的 bias bib_ibi 调整 TopK 选择。

定义:
gi,t′={si,t,si,t+bi∈Topk({sj,t+bj∣1≤j≤Nr},Kr)0,otherwise g_{i,t}'= \begin{cases} s_{i,t}, & s_{i,t}+b_i\in \mathrm{Topk}(\{s_{j,t}+b_j\mid 1\le j\le N_r\},K_r)\\ 0, & \text{otherwise} \end{cases} gi,t={si,t,0,si,t+biTopk({sj,t+bj1jNr},Kr)otherwise

当某专家过载,就降低其 bib_ibi,使其更难进入 TopK;当某专家欠载,就提高 bib_ibi,增加其被选概率。

实际案例(直觉层面)
如果专家 A 在某段训练中频繁被选中导致拥塞,那么动态降低 bAb_AbA 会把一部分 token 分流到其他专家,系统层面更均衡,同时避免把均衡约束“硬塞进损失函数”导致目标冲突。


4.3 Complementary Sequence-Wise Auxiliary Loss:序列级补充

V3 仍引入一种序列级补充损失(思路类似专家级/设备级均衡,但粒度在“单条序列”)。一种表达形式为:

LBal=α∑i=1NrfiPi \mathrm{LBal}=\alpha\sum_{i=1}^{N_r} f_i P_i LBal=αi=1NrfiPi

其中
fi=NrKrT∑t=1T1(si,t∈Topk({sj,t∣1≤j≤Nr},Kr)) f_i=\frac{N_r}{K_r T}\sum_{t=1}^{T}\mathbb{1}\left(s_{i,t}\in \mathrm{Topk}(\{s_{j,t}\mid 1\le j\le N_r\},K_r)\right) fi=KrTNrt=1T1(si,tTopk({sj,t1jNr},Kr))

以及归一化:
si,t=si,t∑j=1Nrsj,t s_{i,t}=\frac{s_{i,t}}{\sum_{j=1}^{N_r}s_{j,t}} si,t=j=1Nrsj,tsi,t

Pi=1T∑t=1Tsi,t′ P_i=\frac{1}{T}\sum_{t=1}^{T} s_{i,t}' Pi=T1t=1Tsi,t

直观上:在序列级别统计专家使用频率与概率分布,作为补充约束,进一步稳定负载。


4.4 No Token-Dropping:为什么 V3 可以去掉?

当路由与负载均衡足够好(例如 bias 调控 TopK + 序列级补充),就能让设备负载更接近均衡,从而无需再通过 drop token 来兜底。
去掉 token-dropping 的好处是:训练/推理更“完整”,不会因为丢 token 引入额外误差或不可控偏差。


5. MTP(Multi-Token Prediction):多 token 预测目标与“因果链”设计

5.1 为什么要 MTP?

传统 next-token prediction 在每个位置只预测 1 个后续 token,训练信号密度有限。MTP 通过在每个位置额外预测多个未来 token,实现:

  1. 训练信号更密:同样长度序列得到更多监督项,提高数据利用效率
  2. 提前规划表征:为了同时预测多个未来 token,模型倾向于学习更“可前瞻”的中间表征

5.2 V3 的 MTP:顺序预测 + 保持完整因果链(Causal Chain)

V3 不是用 DDD 个独立输出头并行预测,而是采用 顺序的 MTP Module:第 kkk 个模块依赖第 k−1k-1k1 个模块的表征,并保持因果关系。

kkk 个 MTP 模块的输入构造(示意):
hi′k=Mk[RMSNorm(hik−1); RMSNorm(Emb(ti+k))] h_i^{\prime k}=M_k\left[\mathrm{RMSNorm}(h_i^{k-1});\ \mathrm{RMSNorm}(\mathrm{Emb}(t_{i+k}))\right] hik=Mk[RMSNorm(hik1); RMSNorm(Emb(ti+k))]

随后经过 Transformer 模块:
h1:T−kk=TRMk(h1:T−k′k) h_{1:T-k}^{k}=\mathrm{TRM}_k\left(h_{1:T-k}^{\prime k}\right) h1:Tkk=TRMk(h1:Tkk)

再经共享输出头得到第 kkk 阶预测分布:
Pi+k+1k=OutHead(hik) P_{i+k+1}^{k}=\mathrm{OutHead}(h_i^{k}) Pi+k+1k=OutHead(hik)


5.3 单个模块的训练目标与总体 MTP 损失

对第 kkk 个模块,其交叉熵损失为:
LMTPk=CrossEntropy(P2+k:T+1k, t2+k:T+1)=−1T∑i=2+kT+1log⁡Pik[ti] \mathcal{L}_{\mathrm{MTP}}^{k} \mathrm{}= \mathrm{CrossEntropy}\left(P_{2+k:T+1}^{k},\ t_{2+k:T+1}\right) \mathrm{}= -\frac{1}{T}\sum_{i=2+k}^{T+1}\log P_i^{k}[t_i] LMTPk=CrossEntropy(P2+k:T+1k, t2+k:T+1)=T1i=2+kT+1logPik[ti]

DDD 个模块的损失取平均并乘系数 λ\lambdaλ,作为主损失的附加项:
LMTP=λD∑k=1DLMTPk \mathcal{L}_{\mathrm{MTP}} \mathrm{}= \frac{\lambda}{D}\sum_{k=1}^{D}\mathcal{L}_{\mathrm{MTP}}^{k} LMTP=Dλk=1DLMTPk

最终总目标可理解为:
L=Lmain+LMTP \mathcal{L}=\mathcal{L}_{\mathrm{main}}+\mathcal{L}_{\mathrm{MTP}} L=Lmain+LMTP


5.4 一个直观案例:为什么“顺序 MTP”更像“规划”

假设当前位置是 iii,传统训练只要求模型把 ti+1t_{i+1}ti+1 预测好。
而 MTP 要求模型同时对 ti+1,ti+2,…,ti+Dt_{i+1}, t_{i+2}, \dots, t_{i+D}ti+1,ti+2,,ti+D 提供预测信号。

这会迫使模型在 hih_ihi 中编码更丰富的信息,例如:

  • 语法结构的延续(短期)
  • 论证方向/主题实体(中期)
  • 推理链条的关键中间量(更长)

特别在数学/代码场景,未来 token 往往强约束当前决策:例如括号闭合、变量复用、公式结构,这类结构性约束对“多 token 预测”更友好。


6. 总结:四条主线如何串起来

  • V1:在 LLaMA 范式上,用成熟的结构组件(Pre-RMSNorm / SwiGLU / RoPE / GQA)+ 大规模 tokenizer + SFT/DPO 对齐配方,构建通用对话模型体系。
  • DeepSeek-Math:从数据角度切入,用“种子语料 + fastText 召回 + 多轮迭代 + 去污染”构建 120B 数学 tokens,再结合数学指令微调与 GRPO 强化学习,把数学能力做成可扩展管线。
  • V2:从系统与结构协同角度切入,提出 DeepSeekMoE:细粒度专家 + 共享专家,并用设备受限路由、通信平衡损失、token drop 等机制解决 MoE 训练/推理的工程瓶颈。
  • V3:继续推进 MoE 的“可扩展性与稳定性”,用 sigmoid gate + 无辅助损失均衡(bias 调控)+ 序列级补充机制,使得训练与推理更稳,并引入 MTP 增加训练信号密度,提升对长链路生成与结构化预测的能力。

如果把 DeepSeek 的演进看作一条路线,其核心不只是“更大参数或更多专家”,而是**数据(Math Corpus)、结构(MoE + shared/routed)、系统(device-limited & comm balance)、目标(MTP)**在同一条工程闭环里共同驱动可扩展训练。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐