演进地图 — V1 到 V4 改了什么
把四代 DeepSeek 的演进史压成一章。先看 V1 / V2 / V3 各自留下了什么,再把 V4 相对 V3.2 的六条改进主线列成一张表 —— 每一条都对应前代撞过的某一堵具体的墙。
1. 三代积淀:V4 站在哪些肩膀上
读 V4 之前必须把前三代的"留下来的东西"放回背景里。否则你会以为 V4 是凭空设计的 —— 实际上它的每条主线都在补前代的某个具体伤口,而非平地起高楼。
| 版本 | 发布 | 规模 | 核心贡献 | 留给后人的"地基" |
|---|---|---|---|---|
| V1 | 2024-01 | 67B 稠密 | 稠密 Transformer + GQA + 2T tokens;走完了"复刻 LLaMA 主流配方"的工程闭环。 | 训练框架、数据管线、tokenizer 这些"下水道"。 |
| V2 | 2024-05 | 236B / 21B 激活 | MLA(Multi-head Latent Attention)首次把 KV 沿头维做低秩压缩;DeepSeekMoE 首次引入"细粒度专家 + 共享专家"。 | "压缩 KV"和"细粒度 MoE"这两个 V4 母题在这里第一次被验证可行。 |
| V3 | 2024-12 | 671B / 37B 激活 | aux-loss-free 负载均衡用动态偏置替掉惩罚式 aux-loss;MTP(Multi-Token Prediction)让一个 hidden state 同时贡献多步监督;FP8 训练实战化。 | "不动主 loss 的负载均衡"与"不动模型架构的多步监督"这两条非侵入式工程哲学,被 V4 完整继承。 |
| V3.1 / V3.2 | 2025 | 同 V3 | 稳定性补丁与小幅扩长;DSA(DeepSeek Sparse Attention)作为 V4 CSA 的祖先在 V3.2 首次上线。 | 稀疏注意力的工程经验。V4 的 CSA 不是凭空冒出来的。 |
| V4 | 2026-04-24 | 1.6T / 49B(Pro) 284B / 19B(Flash) |
本书主角。围绕"把 1M 做成默认"重写五件套。 | — |
读这张表时记住一句话:V4 没有发明新东西,它把前三代每个"差一口气"的 trick 推到了能用的状态。MLA 是 V2 提的;DeepSeekMoE 是 V2 提的;aux-free 是 V3 提的;MTP 是 V3 提的;稀疏注意力是 V3.2 提的;FP8 是 V3 提的;FP4 训练在学界讨论了快两年。V4 的工作是把这些"已知能跑、但还不够好"的组件,集成到一个能在 1M 上下文上做日常推理的系统里。
2. V4 的根本目标转变:从"训长"到"训死 1M"
V1 / V2 / V3 都把"扩展上下文"当作训练后期的加长任务:先在 4K~32K 上预训练,再用 YaRN 之类的位置外推 + 长文本 SFT 把上下文撑到 128K。这种"训短部署长"的代价是:
- 外推后注意力质量明显劣化(PPL 不太涨,但 needle-in-haystack 大跌);
- 实际部署时 KV cache 本身就装不下,更别提算力;
- Reasoning 模型想"多想几步",每步都要把整段 trace 放进上下文 —— 128K 不够。
V4 把根本目标改了:从"训练时短,推理时拉长"改成"训练时直接到 1M,部署时也按 1M 算账"。要支撑这个目标,整张架构表都得重画 —— 这就是后面六条改进主线的统一动机。
位置外推(NTK / YaRN)在 32K → 128K 的尺度上还能工作,因为 RoPE 的频谱在这个区间还没崩。但要从 128K 推到 1M,相当于让 RoPE 跨 8 倍频谱外插 —— 语义保真度不够。 更要命的是:KV cache 与 FLOPs 在 1M 都是 $O(n)$ 与 $O(n^2)$ 的硬曲线,靠"训练时省"已经无解,必须在架构层把这两条曲线本身改掉。这就是为什么 V4 把"稀疏 + 压缩"从 trick 上升为主线。
3. 六条改进主线 · 一表说清
| # | 主线 | V3.2 的做法 | V4 的做法 | 解决了什么具体问题 | 详见 |
|---|---|---|---|---|---|
| ① | 注意力 | MLA + DSA(V3.2) | CSA × HCA 交替 | 1M 仍 $O(n^2)$ FLOPs;MLA 仅省 KV 不省算力 | Ch4 / Ch5 |
| ② | 残差通路 | 标准 pre-norm 残差 | mHC(Birkhoff 多面体上的 Hyper-Connection) | 深堆叠下谱范数发散、outlier 沿残差累积 | Ch3 |
| ③ | 优化器 | AdamW | Muon + Hybrid NS | AdamW 对矩阵参数做逐元素更新,丢失谱结构 | Ch6 |
| ④ | MoE 路由 | Sigmoid + 256 专家 + $M{=}4$ 节点上限 | Sqrt(Softplus) + 384 专家 + 取消上限 + Hash 早层 | 规模上来后 Sigmoid 饱和、节点上限扭曲路由 | Ch2 |
| ⑤ | 预训练长度 | 4K 训 → 128K 外推 | 4K → 16K → 64K → 1M 阶梯训练 | 外推到 1M 失真;32T tokens 配 Anticipatory Routing | Ch13~15 |
| ⑥ | 后训练 | SFT + 多阶段 RL(GRPO) | OPD(10+ 教师全词表 reverse KL 蒸馏) | 多阶段 RL 难收敛、reward hacking、能力此消彼长 | Ch18 / Ch19 |
| +1 | 量化 | BF16 / FP8 训练 | FP4 QAT | 权重显存 / 通信带宽再降一半 | Ch10 |
下面把每条主线的"前代撞过的墙"用一段话讲透。每一节只给动机与变更骨架;具体公式与符号留给后续专章。
4. 改动① 注意力:MLA → CSA × HCA
V2 的 MLA 解决了什么:把 KV 沿头维 $h$ 做低秩投影,KV cache 从 $O(n \cdot h \cdot d)$ 降到 $O(n \cdot d_c)$(其中 $d_c \approx h\cdot d / 4$)。显存省了,算力没省 —— $QK^\top$ 仍然是 $O(n^2)$。
它在 1M 上撞的墙:$n = 10^6$ 时 $O(n^2)$ 是 $10^{12}$ 量级 FLOPs / 层,每个 token 都要扫一遍全 1M 的 KV,算力本身成了瓶颈。MLA 在 32K~128K 是赢的;到了 1M,"显存省了,算力还是炸"。
V4 的 CSA × HCA 怎么破:在 KV 序列上做两次压缩 + 一次稀疏。
- CSA(Compressed Sparse Attention):每 $m{=}4$ 个 token 压成一个"超 KV";再用 Lightning Indexer 选 top-$k{=}1024$ 个超 KV 做精细注意力;这一支只看 $4{,}096$ 个有效细粒度 token。
- HCA(Heavy Compressed Attention):每 $m'{=}128$ 个 token 压成一个"重超 KV";不做 top-$k$,对全部 $n/m' = 8K$ 个重超 KV 做稠密注意力;管"全局摘要"。
- 层间交替:CSA / HCA 隔层穿插,由 mHC 残差通路把两支信号叠起来 —— 4K 局部细节 + 8K 全局粗视野互补。
同样上下文,FLOPs 从 $O(n^2)$ 降到 $O(n \cdot k)$;KV 从 MLA 的 $O(n \cdot d_c)$ 再压到 $O(n/m \cdot d_c)$。1M 上 KV 降到 V3.2 的 10%、单 token FLOPs 降到 27%。
5. 改动② 残差:vanilla → mHC
V1 / V2 / V3 的标准残差:$x_{l+1} = x_l + F_l(x_l)$。简单、可微;但深堆叠下谱范数会以 $\prod_l \|I + J_l\|$ 累乘 —— 一旦每层 $\|J_l\| > 0$,深度上去就谱发散。V3 在 671B / 61 层时已经在加 RMSNorm × 多处来摁住,但治标不治本。
它在 V4 规模上更难:V4-Pro 1.6T / 80+ 层,且引入了 CSA / HCA 这种"输出尺度对压缩比敏感"的注意力,谱稳定要求陡升。继续靠 RMSNorm 堆补丁,会把训练 loss 卡在某个台阶上不动。
V4 的 mHC(manifold-constrained Hyper-Connection):把残差从"加法"升级到"加权混合",并把权重矩阵 $\mathbf{M}_l$ 约束在 Birkhoff 多面体(双随机矩阵集合)上 —— 行和、列和都为 1、元素非负。这给出三个免费保障:
- 谱范数 $\|\mathbf{M}_l\|_2 \le 1$(Perron-Frobenius),层数堆多少都不发散;
- 行和为 1 让"信号能量"逐层守恒,没有指数衰减;
- 列和为 1 让 outlier 不能沿单一通道无限放大。
实现上用 Sinkhorn-Knopp 迭代把任意非负矩阵投影回 Birkhoff 多面体,训练全程在流形上跑,无需事后归一化。
6. 改动③ 优化器:AdamW → Muon
AdamW 哪里不够:把矩阵参数 $W \in \mathbb{R}^{m \times n}$ 当成 $mn$ 个独立标量更新(逐元素一/二阶矩)。这在 LLM 里有两个问题:
- 矩阵的谱结构(奇异值分布)被忽略 —— 大奇异值方向更新过激、小奇异值方向几乎没更新;
- 不同层的 $W$ 量级差几个数量级,AdamW 的 $\epsilon$ 与 $\beta$ 必须靠 LR warmup + 多套 schedule 凑。
Muon 的核心:把动量项 $M_t$ 做极分解取出方向矩阵,等价于让更新方向是"奇异值全为 1"的正交矩阵 —— 各方向同步收敛。直接做 SVD 太贵,Muon 用 Newton-Schulz 5 次多项式近似。
V4 的 Hybrid NS:经典 NS 系数让收敛"温和但慢";V4 用 8 步"激进系数"快速把奇异值推到 1 附近,再换 2 步"经典系数"精修,10 步固定迭代 —— 既快又准,符合"前期粗调 + 后期精修"的优化哲学。
7. 改动④ MoE 路由:五处补漏
V4 完全继承 V3 的 DeepSeekMoE 主干(细粒度专家 + 共享专家 + aux-free),但在 5 个细节上动了刀。这里只列结论,详见 Ch2:
| 子改动 | V3 | V4 | 动机 |
|---|---|---|---|
| 路由打分 | Sigmoid | Sqrt(Softplus) | 384 专家间饱和区无区分度 |
| 负载均衡 | 仅 aux-free | aux-free + 序列内 balance | 长序列内单序列偏置 aux-free 看不见 |
| 路由节点上限 | $M{=}4$ | 取消 | 路由质量被通信预算扭曲 |
| 头几层 FFN | Dense | Hash-Routed MoE | 避免学习型 router 早期不稳,又享受 MoE 红利 |
| MTP 权重 | 0.3 | 0.3 → 衰减期降 0.1 | 主 loss 后期减少 MTP 干扰 |
这五处合在一起,专家数从 256 涨到 384,激活专家从 8 涨到 9(Pro),总参数从 V3 的 671B 涨到 1.6T —— 规模上得去,路由不抖。
8. 改动⑤ 预训练:4K → 1M 阶梯式扩长
V3 的做法:4K 上预训练 14T tokens,再用 YaRN 把上下文外推到 128K,再做 long-SFT。训练时几乎不见长序列。
它的代价:YaRN 把 RoPE 频谱拉伸 32 倍后,远距离需要的"位置精度"丢了;同时模型的"能容纳长程依赖"能力没有真的训出来,只是被外推糊住了。
V4 的做法:
- 32T tokens 预训练(V3 是 14T,× 2.3 倍);
- 分四档阶梯:4K → 16K → 64K → 1M;每档单独训一段,让模型在每个尺度上都见过真长序列;
- 训长序列时引入 Anticipatory Routing(预读未来路由信号,避免长序列内 router 抖动)与 SwiGLU Clamping(防止 FFN 激活在长序列里飞)来摁住 loss spike;
- 1M 阶段配合 CSA / HCA,让"训得起 + 部署得起"同时成立。
9. 改动⑥ 后训练:混合 RL → OPD
V3 的后训练:SFT + 多阶段 RL(GRPO 等强化学习对齐方法),每个领域单独 RL 一遍再合并。难收敛、reward hacking、领域间能力此消彼长。
V4 的 OPD(On-Policy Distillation):训 10+ 个领域专家模型(数学、代码、推理、对话、安全等各一个),然后用统一的学生模型同时做"全词表 reverse KL 蒸馏"对齐到所有教师。三个关键设计:
- On-Policy:学生自己采样 rollout,教师对学生的 rollout 打 logit;不会像 SFT 那样陷入"学生看不见自己常犯的错";
- Reverse KL:mode-seeking,让学生聚焦教师的高概率区间,避免 forward KL 的"分布抹平";
- 全词表:不是只蒸 top-$k$ logit,全 152K 词表的 logit 一起蒸 —— 教师的"决策边界"完整传递。
OPD 把 V3 时代"多个 RL 流程互相打架"的乱局,改成"多教师 → 单蒸馏"的一次性收敛过程。详见 Ch18。
10. 额外改动:FP4 QAT
训练用 FP8 是 V3 已经实战化的;V4 进一步把权重量化到 FP4(4-bit 浮点)做 QAT —— Quantization-Aware Training。这一步把权重显存 / 节点间通信带宽再降一半,是把 1.6T Pro 模型塞进合理硬件的最后一块拼图。详见 Ch10。
11. 数字回报:V4 vs V3.2 / BF16-GQA8
把上面六条主线集成在一起,1M 上下文场景下的硬指标:
| 指标 | BF16 + GQA8 baseline | V3.2 | V4-Pro | V4-Flash |
|---|---|---|---|---|
| KV Cache(相对) | 100% | ~14% | 10% vs V3.2(~1.4% vs baseline) | 7% vs V3.2(~1.0% vs baseline) |
| 单 Token FLOPs | 100% | ~50% | 27% vs V3.2 | 10% vs V3.2 |
| 预训练 tokens | — | 14T | 32T | 32T 共享 |
| Putnam-2025(数学证明) | — | — | 120/120 | — |
| SimpleQA-Verified | — | — | +20pp vs 同档开源 / 逼近 Gemini-3.1-Pro | — |
| Codeforces Elo | — | — | 3206 | — |
12. 接下来怎么读这本书
读到这里,你应该已经能回答"V4 相对前代到底改了什么"。后面 19 章 + 两份附录就是把每条改动展开讲:
架构(Ch2-6)
MoE 五处补漏 / mHC / CSA / HCA / Muon —— V4 的"形"。
基础设施(Ch7-12)
MegaMoE / TileLang / 批不变 / FP4 QAT / 训推框架 —— V4 的"骨"。
预训练(Ch13-15)
32T 数据 / Anticipatory Routing / SwiGLU 钳位 —— V4 的"基"。
后训练(Ch16-20)
Specialist / GRM / Tool / OPD / DSec —— V4 的"魂"。
附录 A:评测结果
Benchmark 跑分 + 真实任务胜率 —— V4 的"果"。
附录 B:参数速查
L、d、专家数、压缩率等核心符号一表查清。
V4 = V3 + 六条改进主线 ×「把 1M 做成默认」。 注意力 MLA → CSA × HCA、残差 vanilla → mHC、优化器 AdamW → Muon、MoE 五处补漏、训练 4K 外推 → 1M 阶梯、后训练混合 RL → OPD,外加 FP4 QAT。 每一条都对应前代撞过的某一堵具体的墙,没有一条是为了"看起来高级"而引入的。