195 lines
17 KiB
Markdown
195 lines
17 KiB
Markdown
# DeepSeek-V3 技术报告(中文精读)
|
||
|
||
> **原文标题**:DeepSeek-V3 Technical Report
|
||
> **arXiv**:[2412.19437](https://arxiv.org/abs/2412.19437) | **发布**:27 Dec 2024(最后修订 18 Feb 2025)
|
||
> **作者/机构**:DeepSeek-AI(第一作者 Aixin Liu 等,全体作者署名 DeepSeek-AI);DeepSeek(深度求索)
|
||
> **原文 PDF**:[04-DeepSeek-V3-2412.19437.pdf](./04-DeepSeek-V3-2412.19437.pdf)
|
||
|
||
## 一、摘要(全文翻译)
|
||
|
||
我们提出 DeepSeek-V3,一个强大的混合专家(Mixture-of-Experts, MoE)语言模型,总参数量为 671B,每个 token 激活 37B 参数。为实现高效推理与高性价比训练,DeepSeek-V3 采用多头潜在注意力(Multi-head Latent Attention, MLA)与 DeepSeekMoE 架构,这两者在 DeepSeek-V2 中已得到充分验证。此外,DeepSeek-V3 开创了一种无辅助损失的负载均衡策略,并设置了多 token 预测(multi-token prediction)训练目标以获得更强的性能。我们在 14.8 万亿个多样且高质量的 token 上预训练 DeepSeek-V3,随后进行监督微调与强化学习阶段,以充分释放其能力。全面评测表明,DeepSeek-V3 优于其他开源模型,并达到与领先闭源模型相当的性能。尽管性能出色,DeepSeek-V3 的完整训练仅需 2.788M H800 GPU 小时。此外,其训练过程极其稳定。在整个训练过程中,我们没有遇到任何不可恢复的损失尖峰(loss spike),也没有执行任何回滚(rollback)。模型检查点可在 https://github.com/deepseek-ai/DeepSeek-V3 获取。
|
||
|
||
## 二、核心贡献
|
||
|
||
1. **无辅助损失的负载均衡**:靠辅助损失强制均衡会损害性能,V3 改用仅参与路由的专家偏置 $b_i$ 并随负载动态调整。
|
||
2. **多 token 预测(MTP)**:顺序预测额外 token 且保持完整因果链以密化训练信号,推理时可丢弃或用于投机解码。
|
||
3. **FP8 混合精度训练**:首次在超大规模模型上验证 FP8 训练,相对损失误差低于 0.25%。
|
||
4. **DualPipe 与通信优化**:攻克跨节点专家并行的计算通信比瓶颈,无需张量并行即可训练 671B 模型。
|
||
5. **从 DeepSeek-R1 蒸馏推理能力**:把长思维链模型的验证与反思模式注入标准 LLM。
|
||
6. **极低训练成本**:2.664M H800 GPU 小时完成 14.8T token 预训练,全流程 2.788M GPU 小时,约 5.576M 美元。
|
||
|
||
## 三、方法与技术要点
|
||
|
||
### 3.1 基础架构:MLA 与 DeepSeekMoE
|
||
|
||
DeepSeek-V3 仍在 Transformer 框架内,沿用 DeepSeek-V2 的 MLA + DeepSeekMoE 组合:MLA 负责高效推理,DeepSeekMoE 负责经济训练。
|
||
|
||
**MLA 的核心是对键值(KV)做低秩联合压缩**,以削减推理时的 KV 缓存:
|
||
|
||
$$
|
||
\mathbf{c}_t^{KV} = W^{DKV}\mathbf{h}_t,\qquad [\mathbf{k}_{t,1}^C;\dots;\mathbf{k}_{t,n_h}^C]=\mathbf{k}_t^C = W^{UK}\mathbf{c}_t^{KV}
|
||
$$
|
||
$$
|
||
\mathbf{k}_t^R = \operatorname{RoPE}(W^{KR}\mathbf{h}_t),\qquad \mathbf{k}_{t,i}=[\mathbf{k}_{t,i}^C;\mathbf{k}_t^R],\qquad \mathbf{v}_t^C = W^{UV}\mathbf{c}_t^{KV}
|
||
$$
|
||
$$
|
||
\mathbf{o}_{t,i}=\sum_{j=1}^{t}\operatorname{Softmax}_j\!\left(\frac{\mathbf{q}_{t,i}^{T}\mathbf{k}_{j,i}}{\sqrt{d_h+d_h^{R}}}\right)\mathbf{v}_{j,i}^{C},\qquad \mathbf{u}_t=W^{O}[\mathbf{o}_{t,1};\dots;\mathbf{o}_{t,n_h}]
|
||
$$
|
||
|
||
其中 $\mathbf{c}_t^{KV}\in\mathbb{R}^{d_c}$($d_c\ll d_h n_h$)为 KV 压缩潜在向量,$W^{KR}$ 产生携带 RoPE 的解耦键。**推理时只需缓存 $\mathbf{c}_t^{KV}$ 与 $\mathbf{k}_t^R$**,KV 缓存大幅缩小而性能与标准多头注意力相当;查询侧同样低秩压缩。
|
||
|
||
**DeepSeekMoE 相比 GShard 用更细粒度专家并隔离出共享专家**:
|
||
|
||
$$
|
||
\mathbf{h}_t'=\mathbf{u}_t+\sum_{i=1}^{N_s}\operatorname{FFN}_i^{(s)}(\mathbf{u}_t)+\sum_{i=1}^{N_r}g_{i,t}\operatorname{FFN}_i^{(r)}(\mathbf{u}_t),\qquad s_{i,t}=\operatorname{Sigmoid}(\mathbf{u}_t^{T}\mathbf{e}_i)
|
||
$$
|
||
|
||
与 V2 不同:**V3 用 sigmoid 计算亲和度,并对选中的亲和度归一化得到门控值**。
|
||
|
||
### 3.2 无辅助损失的负载均衡
|
||
|
||
负载不均会导致路由崩溃并削弱专家并行的效率,而辅助损失过大又损害性能。V3 把均衡信号从损失挪进路由:为每个专家引入偏置 $b_i$,用它参与 top-$K$ 路由决策,
|
||
|
||
$$
|
||
g'_{i,t}=\begin{cases}s_{i,t}, & s_{i,t}+b_i\in\operatorname{Topk}(\{s_{j,t}+b_j\},K_r)\\ 0, & \text{otherwise}\end{cases}
|
||
$$
|
||
|
||
**偏置只参与路由、不参与门控**。训练中每步监控批内负载:过载减 $\gamma$、欠载加 $\gamma$(前 14.3T token 取 0.001);另用极小的序列级互补辅助损失($\mathcal{L}_{\mathrm{Bal}}=\alpha\sum_i f_iP_i$,$\alpha=0.0001$)防单序列内极端失衡,并用节点受限路由限制每 token 至多发往 $M=4$ 个节点。均衡良好,故**训练与推理均不丢弃 token**。
|
||
|
||
### 3.3 多 token 预测(MTP)
|
||
|
||
与 Gloeckle 等人并行预测 $D$ 个额外 token 不同,V3 **顺序预测并保持完整因果链**。第 $k$ 个 MTP 模块含共享嵌入层、共享输出头、Transformer 块与投影矩阵 $M_k\in\mathbb{R}^{d\times 2d}$:
|
||
|
||
$$
|
||
\mathbf{h}_i'^{k}=M_k[\operatorname{RMSNorm}(\mathbf{h}_i^{k-1});\operatorname{RMSNorm}(\operatorname{Emb}(t_{i+k}))],\qquad \mathbf{h}_{1:T-k}^{k}=\operatorname{TRM}_k(\mathbf{h}_{1:T-k}'^{k}),\qquad P_{i+k+1}^{k}=\operatorname{OutHead}(\mathbf{h}_i^{k})
|
||
$$
|
||
|
||
训练目标是各深度交叉熵损失的加权平均 $\mathcal{L}_{\text{MTP}}=\frac{\lambda}{D}\sum_{k=1}^{D}\mathcal{L}_{\text{MTP}}^{k}$。**推理时 MTP 模块可整体丢弃**,也可复用为投机解码。
|
||
|
||
### 3.4 训练基础设施:DualPipe、通信与显存
|
||
|
||
集群为 2048 张 H800(节点内 NVLink,跨节点 IB),采用 16 路流水线并行(PP)、跨 8 节点的 64 路专家并行(EP)与 ZeRO-1 数据并行。
|
||
|
||
**DualPipe** 针对约 1:1 的计算通信比,把 chunk 拆为注意力、dispatch、MLP、combine 四部分,反向 chunk 的注意力与 MLP 再分为对输入与对权重两部分,并按比例调配通信与计算的 SM,从而**同时隐藏 all-to-all 与 PP 通信**,并双向喂入微批次。其气泡为 $(\frac{PP}{2}-1)(F\&B+B-3W)$,参数占用 2×、激活为 $PP+1$,但大 EP 规模下两份参数并不显著增加显存。
|
||
|
||
**跨节点 all-to-all 内核**与 MoE 门控及网络拓扑协同设计:NVLink 带宽 160 GB/s 约为 IB(50 GB/s)的 3.2 倍,故**限制每 token 至多发往 4 个节点**;token 先经 IB 到目标节点的同号 GPU,再经 NVLink 转发到承载目标专家的 GPU。**实践中只选 8 个路由专家,该成本最多可支撑 13 个(4 节点 × 3.2)**;仅 20 个 SM 即可跑满带宽。
|
||
|
||
**显存优化**:反向重算 RMSNorm 与 MLA 上投影,EMA 参数置于 CPU 异步更新,并把最浅层与最深层放在同一 PP rank 以物理共享嵌入层与输出头。
|
||
|
||
### 3.5 FP8 混合精度训练
|
||
|
||
低精度训练的难点在于激活、权重与梯度中的离群值。该框架让**计算密集的 GEMM(Fprop/Dgrad/Wgrad)全部以 FP8 执行**(输入 FP8、输出 BF16 或 FP32,理论上较 BF16 提速一倍),而**嵌入、输出头、MoE 门控、归一化与注意力算子保留高精度**。四项关键技术:
|
||
|
||
- **细粒度量化**:激活按 $1\times128$ tile、权重按 $128\times128$ block 分组缩放,避免以张量最大绝对值对齐 FP8 范围造成的离群值敏感。
|
||
- **提升累加精度**:H800 的 FP8 GEMM 累加仅约 14 位尾数,$K=4096$ 时相对误差近 2%;做法是**每累加 $N_C=128$ 个元素就把部分和搬到 CUDA Core 的 FP32 寄存器做全精度累加**。
|
||
- **尾数优先于指数**:以往 Fprop 用 E4M3、Dgrad/Wgrad 用 E5M2,**V3 统一用 E4M3**。
|
||
- **在线量化**:不做延迟量化,而是**实时计算每个 tile/block 的最大绝对值**再导出缩放因子。
|
||
|
||
配套措施:AdamW 动量用 BF16,Linear 激活以 FP8 缓存(注意力后的输入用定制 E5M6),MoE 上投影前的激活也量化为 FP8。**相对损失误差始终低于 0.25%**;附录 B.2 指出激活梯度若也块状量化会导致约 16B MoE 训练发散。
|
||
|
||
### 3.6 推理与部署
|
||
|
||
**预填充**最小单元为 4 节点 32 GPU,注意力用 TP4 + 序列并行(SP)配 DP8,MoE 用 EP32;为均衡负载引入**冗余专家**:复制高负载专家并每约 10 分钟按在线统计调整,预填充设 32 个(每卡除原有 8 个专家外再承载 1 个)。
|
||
|
||
**解码**把共享专家视为路由专家,故每 token 实际路由 9 个专家。最小单元为 40 节点 320 GPU,注意力用 TP4 + SP 配 DP80,MoE 用 EP320;每卡只承载一个专家,另有 64 张 GPU 承载冗余与共享专家;dispatch/combine 经 IB 点对点直传。
|
||
|
||
### 3.7 预训练:数据、超参与长上下文
|
||
|
||
语料提高了数学与编程样本比例、多语言覆盖超出中英,用文档打包但不做跨样本注意力掩码;沿用 DeepSeekCoder-V2 的**中间填充(FIM)策略**(PSM 结构,比例 0.1)。分词器为字节级 BPE,词表 128K,并随机拆分「标点+换行」组合 token 以缓解 token 边界偏差。
|
||
|
||
模型超参:61 层、隐藏维度 7168;MLA 中 $n_h=128$、$d_h=128$、$d_c=512$、$d_c'=1536$、$d_h^R=64$;除前 3 层外全部 FFN 换为 MoE,每层 1 个共享专家 + 256 个路由专家,专家中间维度 2048,每 token 激活 8 个、至多送往 4 个节点;MTP 深度 $D=1$。训练超参:AdamW($\beta_1=0.9$、$\beta_2=0.95$、weight decay 0.1),序列长度 4K,学习率在 2K 步内升至 $2.2\times10^{-4}$、10T token 后余弦衰减至 $2.2\times10^{-5}$,批次由 3072 增至 15360,MTP 权重 $\lambda$ 前 10T token 取 0.3、其余取 0.1。
|
||
|
||
**长上下文扩展**:用 YaRN 分两阶段各 1000 步把窗口由 4K 扩到 32K 再到 128K,仅施加于解耦共享键 $\mathbf{k}_t^R$($s=40$、$\alpha=1$、$\beta=32$、$\sqrt{t}=0.1\ln s+1$),学习率 $7.3\times10^{-6}$。
|
||
|
||
### 3.8 后训练:SFT、RL 与 R1 蒸馏
|
||
|
||
SFT 数据集含 **1.5M 条**多领域实例。推理类数据(数学、代码竞赛、逻辑谜题)由内部 DeepSeek-R1 生成,但 R1 数据有过度思考、格式差、过长等问题,故先用 SFT + RL 管线训练领域专家模型,为每条实例生成 `<问题, 原始回答>` 与 `<系统提示, 问题, R1 回答>` 两类样本,系统提示引导产出带反思与验证机制的响应;RL 阶段让模型融合 R1 模式,数百步后以拒绝采样筛选数据。非推理数据由 DeepSeek-V2.5 生成并经人工校验。SFT 微调 2 个 epoch,学习率由 $5\times10^{-6}$ 余弦降至 $1\times10^{-6}$。
|
||
|
||
RL 使用**规则奖励模型**(数学题按格式校验、LeetCode 跑测试用例)与**模型奖励模型**(从 SFT 检查点训练,偏好数据含通向奖励的思维链)。算法为 **GRPO**:省去 critic,用组内得分估计基线,对组内采样 $\{o_i\}_{i=1}^{G}$ 上取裁剪后的重要性比率乘优势 $A_i=\frac{r_i-\operatorname{mean}(\{r\})}{\operatorname{std}(\{r\})}$,并减去相对参考模型的 KL 惩罚。
|
||
|
||
## 四、主要实验结果
|
||
|
||
### 4.1 基座模型(DeepSeek-V3-Base)
|
||
|
||
| 基准 / 任务 | 本模型(37B 激活 / 671B 总参数) | DeepSeek-V2 / Qwen2.5 72B / LLaMA-3.1 405B | 说明 |
|
||
|---|---|---|---|
|
||
| MMLU (EM, 5-shot) | 87.1 | 78.4 / 85.0 / 84.4 | 全面领先 |
|
||
| MMLU-Pro (EM, 5-shot) | 64.4 | 51.4 / 58.3 / 52.8 | 领先幅度大 |
|
||
| BBH (EM, 3-shot) | 87.5 | 78.8 / 79.8 / 82.9 | 领先 |
|
||
| DROP (F1, 3-shot) | 89.0 | 80.4 / 80.6 / 86.0 | 领先 |
|
||
| MATH (EM, 4-shot) | 61.6 | 43.4 / 54.4 / 49.0 | 数学优势明显 |
|
||
| GSM8K (EM, 8-shot) | 89.3 | 81.6 / 88.3 / 83.5 | 领先 |
|
||
| CMath (EM, 3-shot) | 90.7 | 78.7 / 84.5 / 77.3 | 中文数学领先 |
|
||
| HumanEval (Pass@1) | 65.2 | 43.3 / 53.0 / 54.9 | 代码领先 |
|
||
| LiveCodeBench-Base (Pass@1) | 19.4 | 11.6 / 12.9 / 15.5 | 领先 |
|
||
| CRUXEval-O (EM, 2-shot) | 69.8 | 49.8 / 59.9 / 59.9 | 领先 |
|
||
| C-Eval (EM, 5-shot) | 90.1 | 81.4 / 89.2 / 72.5 | 中文领先 |
|
||
| CMMLU (EM, 5-shot) | 88.8 | 84.0 / 89.5 / 73.7 | 略低于 Qwen2.5 72B |
|
||
| MMMLU-non-English (EM) | 79.4 | 64.0 / 74.8 / 73.8 | 多语言领先 |
|
||
|
||
V3-Base 在绝大多数基准上最佳,数学与代码尤为突出:相较 Qwen2.5 72B 仅用约一半激活参数即占优(仅 CMMLU 例外),相较激活参数为其 11 倍的 LLaMA-3.1 405B 在多语言、代码、数学上明显更好。
|
||
|
||
### 4.2 对话模型(标准与开放式评测)
|
||
|
||
| 基准 / 任务 | DeepSeek-V3 | Claude-3.5-Sonnet-1022 / GPT-4o-0513 | 说明 |
|
||
|---|---|---|---|
|
||
| MMLU (EM) | 88.5 | 88.3 / 87.2 | 同级 |
|
||
| MMLU-Pro (EM) | 75.9 | 78.0 / 72.6 | 略逊于 Claude |
|
||
| GPQA-Diamond (Pass@1) | 59.1 | 65.0 / 49.9 | 仅次于 Claude,明显优于其他对手 |
|
||
| SimpleQA (Correct) | 24.9 | 28.4 / 38.2 | 落后,作者归因于中文学识的资源分配 |
|
||
| C-SimpleQA (Correct) | 64.8 | 51.3 / 59.3 | 中文学识领先 |
|
||
| DROP (3-shot F1) | 91.6 | 88.3 / 83.7 | 该类最佳 |
|
||
| IF-Eval (Prompt Strict) | 86.1 | 86.5 / 84.3 | 与顶级模型同级 |
|
||
| LongBench v2 (Acc.) | 48.7 | 41.0 / 48.1 | 同级最佳 |
|
||
| LiveCodeBench (Pass@1-CoT) | 40.5 | 36.3 / 33.4 | 领先 |
|
||
| Codeforces (Percentile) | 51.6 | 20.3 / 23.6 | 大幅领先 |
|
||
| SWE Verified (Resolved) | 42.0 | 50.8 / 38.8 | 略低于 Claude-Sonnet-3.5 |
|
||
| Aider-Polyglot (Acc.) | 49.6 | 45.3 / 16.0 | 领先 |
|
||
| AIME 2024 (Pass@1) | 39.2 | 16.0 / 9.3 | 大幅领先 |
|
||
| MATH-500 (EM) | 90.2 | 78.3 / 74.6 | 大幅领先 |
|
||
| CNMO 2024 (Pass@1) | 43.2 | 13.1 / 10.8 | 大幅领先 |
|
||
| Arena-Hard | 85.5 | 85.2 / 80.4 | 首个超过 85% 的开源模型 |
|
||
| AlpacaEval 2.0(长度控制胜率) | 70.0 | 52.0 / 51.1 | 领先约 18 个百分点 |
|
||
| RewardBench(平均) | 87.0(投票 maj@6 为 89.6) | 88.7 / 84.7 | 与最佳版本相当 |
|
||
|
||
V3 在数学(AIME 2024、MATH-500、CNMO 2024 均超第二名约 10 个百分点)与算法竞赛类代码上取得非长 CoT 模型的最优结果,开放式评测双双领先闭源模型;差距仍在英文事实性知识、SWE 任务及 GPQA、MMLU-Pro。
|
||
|
||
### 4.3 消融与效率
|
||
|
||
| 实验 | 设置 | 结果 |
|
||
|---|---|---|
|
||
| MTP 消融 | 小规模 15.7B(1.33T token)、大规模 228.7B(540B token) | 多数基准稳定提升,大规模 HumanEval 44.5 → 53.7、GSM8K 72.3 → 74.0 |
|
||
| 无辅助损失均衡消融 | 同上两规模,对比纯辅助损失基线 | 一致更优:大规模 HumanEval 40.2 → 46.3、GSM8K 70.7 → 74.5、MATH 37.2 → 39.6 |
|
||
| 批次级 vs 序列级均衡 | 1B / 3B MoE 验证损失 | 序列级 2.258/2.085;无辅助损失 2.253/2.080;批次级辅助损失 2.253/2.080 |
|
||
| FP8 vs BF16 | 约 16B(1.33T token)、约 230B(0.9T token) | 相对损失误差始终低于 0.25% |
|
||
| R1 蒸馏 | 基于 DeepSeek-V2.5 | LiveCodeBench-CoT 31.1 → 37.4,MATH-500 74.6 → 83.2,但响应长度显著增加(769 → 1510) |
|
||
| MTP 投机解码 | 第二 token 接受率 | 各主题下 85%–90%,解码速度达 1.8 倍 TPS |
|
||
|
||
成本:预训练 2664K H800 GPU 小时、上下文扩展 119K、后训练 5K,合计 2788K GPU 小时(约 5.576M 美元);每训练 1T token 仅需 180K GPU 小时,即在 2048 卡集群上约 3.7 天。
|
||
|
||
## 五、结论、局限与影响
|
||
|
||
- **结论**:DeepSeek-V3 是总参数 671B、激活 37B、在 14.8T token 上训练的 MoE 模型,以 MLA、无辅助损失负载均衡、MTP 与 FP8 训练压低成本,并从 DeepSeek-R1 蒸馏出推理能力;它已是当前最强开源模型,完整训练仅需 2.788M H800 GPU 小时。
|
||
- **局限性**(作者自述,集中于部署):推荐部署单元相对庞大,对小团队构成负担;端到端生成速度虽已超 DeepSeek-V2 两倍,仍有提升空间,作者认为这些局限有望随更先进硬件解决。上述成本仅含正式训练。
|
||
- **影响**:V3 把同性能训练成本压到百万美元量级并坚持开源,缩小了开源与闭源模型的差距;其 FP8 方案、DualPipe 调度与通信内核设计对后续训练系统与芯片设计有参考价值。未来将改进架构以逼近无限上下文、扩展数据与训练信号来源、拓展深度思考的推理深度,并建立更全面多维的评测方法。
|
||
|
||
## 六、关键术语对照表
|
||
|
||
| English | 中文 |
|
||
|---|---|
|
||
| Mixture-of-Experts (MoE) | 混合专家 |
|
||
| Multi-head Latent Attention (MLA) | 多头潜在注意力 |
|
||
| Auxiliary-Loss-Free Load Balancing | 无辅助损失负载均衡 |
|
||
| Multi-Token Prediction (MTP) | 多 token 预测 |
|
||
| Expert Parallelism (EP) | 专家并行 |
|
||
| Pipeline Parallelism (PP) | 流水线并行 |
|
||
| Node-Limited Routing | 节点受限路由 |
|
||
| DualPipe | 双向流水线调度算法(论文自研) |
|
||
| All-to-All Communication | 全对全通信 |
|
||
| FP8 Mixed Precision Training | FP8 混合精度训练 |
|
||
| Fine-Grained Quantization | 细粒度量化 |
|
||
| Group Relative Policy Optimization (GRPO) | 组相对策略优化 |
|
||
| Speculative Decoding | 投机解码 |
|
||
| Redundant Experts | 冗余专家 |
|
||
| Knowledge Distillation | 知识蒸馏 |
|