DeepSeek-V4: Towards Highly Efficient Million-Token Context Intelligence

作者: DeepSeek-AI(团队署名,无单独作者列出;完整作者名单见论文附录 A.1) · research@deepseek.com

来源: HuggingFace deepseek-ai/DeepSeek-V4-Pro,PDF 生成于 2026-04-24(A4 / 58 页 / pdfTeX-1.40.27)。本笔记基于该 PDF 直接解析(无 LaTeX 源码),图片通过 pymupdf 按 caption bbox 裁剪自页面。

阅读导航: § 1 Intro · § 2 Architecture (mHC + CSA + HCA) · § 3 Infrastructure (Muon + TileLang + FP4) · § 4 Pre/Post-Training · § 5 Evaluations · § 6 读后批判


TL;DR

DeepSeek-V4 是 DeepSeek-AI 在 2026 年 4 月放出的"预览"旗舰系列:两个 MoE 模型 V4-Pro(1.6T 总参,49B 激活)和 V4-Flash(284B 总参,13B 激活),都原生支持 1M token 上下文。论文主要声明三件事:(a) 混合注意力 CSA + HCA,让 1M context 的单 token 推理 FLOPs 降到 V3.2 的 27%、KV cache 降到 10%;(b) Manifold-Constrained Hyper-Connections (mHC) 把残差连接改造成 Birkhoff polytope 上的流形,用以提升建模能力和稳定性;(c) 整套训练用 Muon 优化器,并配套自研 TileLang DSL、FP4-QAT、确定性 kernel、on-disk 异构 KV cache 等工程。评测上 V4-Pro-Max 在 HLE、Apex Shortlist、MRCR 等任务上对标甚至逼近 GPT-5.4 / Claude-Opus-4.6 / Gemini-3.1-Pro,但作者也自承"距前沿仍有 3–6 个月差距",且在部分 agentic / 指令跟随任务上落后 Opus-4.5。这是一篇重工程、重系统的 tech report,算法创新点集中在注意力压缩和 hyper-connection 两处。

核心贡献(6 条)


1. 介绍与动机

1.1 为什么要做"百万 token 高效长上下文"

DeepSeek-V4 系列的立论起点非常明确:随着推理模型(reasoning models,如 DeepSeek-R1、OpenAI o 系列)的出现,LLM 社区进入了"测试时扩展(test-time scaling)"的新范式 —— 模型通过在推理阶段生成更长的思考链来换取更高的准确率。但是这个范式撞上了一堵墙:vanilla attention 的计算复杂度相对序列长度是二次的(quadratic),在超长上下文和超长思考链场景下,单 token 的 FLOPs 和累积的 KV cache 都会爆炸式增长,导致"多想一会儿"的成本变得不可承受。

与此同时,智能体(agent)工作流、跨文档分析等长程(long-horizon)任务也在持续涌现,它们天然需要模型能高效处理数十万到上百万 token 的上下文。论文认为,开源社区过去一年(Qwen、MiniMax、Kimi 等)在通用能力上进展显著,但这个底层架构效率问题一直是瓶颈,既限制了 test-time scaling 的进一步规模化,也阻挡了长程任务、乃至在线学习(online learning)等未来范式的探索。因此,DeepSeek-V4 把"让 1M context 成为常规可用配置"作为首要工程目标,而不是追求在短上下文 benchmark 上再挤几个点。

1.2 Pro 与 Flash:双模型策略

DeepSeek-V4 本次作为 preview 放出了两个 Mixture-of-Experts(MoE)尺寸:

两者都原生支持 1M token 的上下文长度,都走同一套架构与训练流水线;论文还定义了 -Max 这个模式名,表示"最大 reasoning effort"下的变体(V4-Pro-Max、V4-Flash-Max),对应在评估中给足思考预算的上限表现。这种双模型策略在 DeepSeek 系列中并不新鲜(V2/V3 时代就有 Lite 版),但这次 Flash 的定位更像是"用 13B 激活参数验证同一套长上下文架构的下沉能力",在报告中多次与 Pro 对比来论证架构通用性。

1.3 四项关键创新

论文将 V4 相对 V3 的改动归纳为四个独立模块,这里只作一句话铺垫,后续章节会各自展开:

  1. Hybrid CSA + HCA 注意力:混合使用 Compressed Sparse Attention(CSA)与 Heavily Compressed Attention(HCA) —— 前者在序列维做压缩后再叠加 DeepSeek Sparse Attention(DSA)保持稀疏选择,后者把 KV 压得更狠但回归 dense attention,两种层交替组合来平衡长上下文效率与建模质量。
  2. Manifold-Constrained Hyper-Connections(mHC):对传统残差连接(residual connection)的升级版,在流形约束下扩展超连接,以增强模型的表达能力,沿用自 Xie et al., 2026。
  3. Muon 优化器:首次在 DeepSeek 旗舰规模上替换 AdamW,带来更快的收敛和更好的训练稳定性(引 Jordan et al., 2024; Liu et al., 2025)。
  4. 32T+ tokens 的高质量预训练语料:V4-Flash 训练 32T,V4-Pro 训练 33T,相对 V3 的 14.8T 在数据规模上也是一次重要跃迁。

此外,架构仍然保留 V3 的两个核心:DeepSeekMoE 专家框架与 Multi-Token Prediction(MTP) 辅助训练目标。这是典型的"继承式升级"写法:改动集中在 attention 和残差,MoE 主干和训练目标不动。

1.4 效率数字:1M context 下的具体收益

图 1: 左 — DeepSeek-V4-Pro-Max 在主流 benchmark 上与 Claude-Opus-4.6-Max、GPT-5.4-xHigh、Gemini-3.1-Pro-High 的对比;右 — 单 token 推理 FLOPs 与累积 KV cache size 随序列长度的变化,DeepSeek-V3.2 对比 V4-Pro 与 V4-Flash。

Fig 1 的右半部分是本文效率主张的核心证据。以 DeepSeek-V3.2 为基线,在 1M token 上下文下:

另外,V4 系列的路由专家(routed experts)权重走 FP4 精度。虽然在当前硬件上 FP4×FP8 的峰值 FLOPs 与 FP8×FP8 持平(FP4 没吃到带宽红利外的额外算力),论文特意指出未来硬件理论上可把 FP4×FP8 做到快 1/3,留了一张"未来硬件友好"的期权。

1.5 各能力维度的自评

§1 的末尾给出了一份相当克制的自评(少见的是没有一味说自己 SOTA),大致分五档:

1.6 批判性短评

作为读者,有几点值得在进入正文前先挂在脑子里:

主要论点是否坚实:论文的中心论点 —— "通过 hybrid CSA+HCA 实现 1M context 下的 FLOPs 与 KV 大幅下降" —— 从 Fig 1 右图看证据直接、数量级明确,可信度高。但左图所用的 benchmark 成绩(SimpleQA、HLE、Codeforces Apex、SWE-Verified、Terminal-Bench 2.0、Toolathlon)高度依赖特定 reasoning effort 配置,而图中对手模型也都是自家标注为 "Max/High/xHigh" 的上限模式,等效成本其实并不容易对齐。

承重假设:(1)hybrid attention 的质量—效率权衡是否真的"免费午餐"—— CSA 已经把 KV 沿序列维压缩再做稀疏选择,HCA 压得更狠,虽然论文声称建模能力不降,但短上下文 benchmark 上有没有因 compression 损失细粒度信息,在介绍部分并没有正面回应,需要看 §2.3 和 §4.3 的消融。(2)32T 语料的质量与多样性是效率收益能转化为能力收益的隐含前提,语料细节放在 §4.1,但规模扩张本身是否有贡献难以从架构改动中剥离出来。(3)Muon 在 1.6T 规模上的稳定性主张,需要在 §2.4 和 §4.2.3 的训练稳定性讨论中找证据。

工程报告还是算法突破:坦白讲,§1 的叙事更像一份经过良好打磨的工程优化报告 —— mHC、Muon、DSA 都是引用他人工作,作者的原创性主要集中在 CSA、HCA 的具体设计与两者的混合调度,加上 TileLang、FP4 QAT、分层 KV cache 这些基础设施层面的整合。这并不贬低价值(把这些在 1M context 上整合出来本身非常难),但读者如果期待一个全新注意力范式或优化器理论突破,可能需要把预期调低;V4 的贡献更接近"把若干已知好想法在超大规模下一体化落地,并证明它们彼此兼容"。

2. 架构(核心)

DeepSeek-V4 仍然沿用 Transformer 主干以及 Multi-Token Prediction (MTP) 模块,但在 V3 的基础上叠加了三项关键升级:(i) 将常规残差连接替换为 Manifold-Constrained Hyper-Connections (mHC);(ii) 将注意力替换为 CSA + HCA 的 hybrid 架构;(iii) 用 Muon 替换 AdamW(本节不展开)。下面只讨论前两项。

图 2: DeepSeek-V4 整体架构,Hybrid CSA + HCA 作为注意力层,DeepSeekMoE 作为 FFN,mHC 加强残差

2.1 从 DeepSeek-V3 继承的设计

Mixture-of-Experts. 与 V2/V3 一致,V4 仍以 DeepSeekMoE 作为 FFN:每层有一组细粒度路由专家(fine-grained routed experts)和共享专家(shared experts)。但在 V4 中作了三处局部改动:

Multi-Token Prediction (MTP). 完全沿用 V3 的 MTP 模块与目标函数,不作任何修改。其它未明确说明的超参和组件(如 tokenizer、部分 RoPE 配置等)均承袭 V3。

2.2 Manifold-Constrained Hyper-Connections (mHC)

动机:从 residual 到 Hyper-Connection. 朴素 Hyper-Connections (HC) 的做法是把残差通道从宽度 $d$ 扩展到 $n_{\mathrm{hc}} \times d$ :残差状态 $X_l = [x_{l,1}; \dots; x_{l,n_{\mathrm{hc}}}]^T \in \mathbb{R}^{n_{\mathrm{hc}} \times d}$ 被投影/混合后再送入第 $l$ 层 $\mathcal{F}_l$。具体而言,HC 定义三个线性映射:输入映射 $A_l \in \mathbb{R}^{1 \times n_{\mathrm{hc}}}$、残差变换 $B_l \in \mathbb{R}^{n_{\mathrm{hc}} \times n_{\mathrm{hc}}}$、输出映射 $C_l \in \mathbb{R}^{n_{\mathrm{hc}} \times 1}$,更新式为:

$$X_{l+1} = B_l\, X_l + C_l\, \mathcal{F}_l(A_l X_l), \tag{1}$$

其中 $A_l X_l \in \mathbb{R}^d$ 恰好是 $d$ 维的,因此层内部分(MoE / Attention)的形状并不受 $n_{\mathrm{hc}}$ 影响。HC 的吸引力在于它给残差流提供了一条与 hidden size 解耦的"宽度"维度,开销几乎可以忽略。然而 DeepSeek 团队观察到:当 HC 堆叠到足够多的层时,训练经常出现数值不稳定——残差路径可以被 $B_l$ 反复放大,最终在若干层后爆炸。这是 mHC 要解决的核心问题。

mHC 的关键想法:把 $B_l$ 约束在流形上. mHC 将残差变换矩阵 $B_l$ 限制在双随机矩阵构成的流形(Birkhoff 多面体)$\mathcal{M}$ 内:

$$B_l \in \mathcal{M} := \{M \in \mathbb{R}^{n \times n} \mid M\mathbf{1}_n = \mathbf{1}_n,\; \mathbf{1}_n^T M = \mathbf{1}_n^T,\; M \ge 0\}. \tag{2}$$

这相当于要求 $B_l$ 每一行、每一列都是合法的概率分布。在该流形上,矩阵的谱范数 $\|B_l\|_2 \le 1$,因此残差变换是非扩张的(non-expansive),前向信号与反传梯度都不会被放大。更重要的是,$\mathcal{M}$ 在矩阵乘法下是闭合的——深度堆叠 $B_L B_{L-1}\cdots B_1$ 仍然落在 $\mathcal{M}$ 里,稳定性具有合成性。这正是"流形约束"比"直接把 $B_l$ clip 到某个范数球"更优雅的地方。

对 $A_l,\,C_l$,团队用 Sigmoid 把它们约束到 $[0,1]$(或 $[0,2]$)之间的非负有界区间,避免"信号相消"。

动态参数化. 三个映射都由输入动态生成,并分解为动态项 + 静态项。先把残差张量展平并归一化:$\hat{X}_l = \mathrm{RMSNorm}(\mathrm{vec}(X_l)) \in \mathbb{R}^{1 \times n_{\mathrm{hc}} d}$,再由线性层生成未约束的原始参数:

$$\tilde{A}_l = \alpha_l^{\mathrm{pre}} \cdot (\hat{X}_l W_l^{\mathrm{pre}}) + S_l^{\mathrm{pre}}, \tag{3}$$

$$\tilde{B}_l = \alpha_l^{\mathrm{res}} \cdot \mathrm{Mat}(\hat{X}_l W_l^{\mathrm{res}}) + S_l^{\mathrm{res}}, \tag{4}$$

$$\tilde{C}_l = \alpha_l^{\mathrm{post}} \cdot (\hat{X}_l W_l^{\mathrm{post}})^T + S_l^{\mathrm{post}}. \tag{5}$$

其中 $W_l^{\mathrm{pre}}, W_l^{\mathrm{post}} \in \mathbb{R}^{n_{\mathrm{hc}} d \times n_{\mathrm{hc}}}$、$W_l^{\mathrm{res}} \in \mathbb{R}^{n_{\mathrm{hc}} d \times n_{\mathrm{hc}}^2}$ 负责动态分量;$S_l^{\mathrm{pre}}, S_l^{\mathrm{res}}, S_l^{\mathrm{post}}$ 是可学习的静态偏置(input-independent);$\alpha_l^{\mathrm{pre}}, \alpha_l^{\mathrm{res}}, \alpha_l^{\mathrm{post}} \in \mathbb{R}$ 是初始化为小值的可学习门控系数。换言之,初期 mHC 更接近"静态偏置主导"的稳态,训练中逐渐放开动态分量——这是经典的 gated residual 稳定训练技巧。

施加约束. 拿到原始参数后:

$$A_l = \sigma(\tilde{A}_l), \quad C_l = 2\sigma(\tilde{C}_l). \tag{6,7}$$

而 $\tilde{B}_l$ 需要被投影到双随机矩阵流形,做法是 Sinkhorn–Knopp 迭代:先取 $M^{(0)} = \exp(\tilde{B}_l)$(保证正性),再反复行列归一化

$$M^{(t)} = \mathcal{T}_r(\mathcal{T}_c(M^{(t-1)})), \tag{8}$$

最终 $B_l = M^{(t_{\max})}$,$t_{\max}=20$ 是论文采用的值。Sinkhorn 迭代可微,因此 mHC 的约束是在前向通过中"就地"满足的,不需要额外的正则项或后处理。

为什么要 manifold constraint 而不只是 HC? 直觉上,HC 把残差视作 $n_{\mathrm{hc}}$ 路并行流,$B_l$ 是它们之间的重新混合。若允许 $B_l$ 自由学习,就可能学到放大因子 $>1$,多层堆叠后爆炸;把它约束成"每行每列之和都等于 1 且非负"相当于强制每层都是一种概率重分配——把 $n_{\mathrm{hc}}$ 路的能量重新摊开但不创造新能量。这既保留了 HC 的表达能力(双随机矩阵集合的维度远高于正交矩阵,仍能学习非平凡的混合),又切断了指数爆炸路径。

2.3 Hybrid Attention (CSA + HCA)

上下文长度推到百万级之后,注意力成为纯粹的计算瓶颈。V4 针对不同层设计了两种注意力:Compressed Sparse Attention (CSA)Heavily Compressed Attention (HCA),并在层间交错组合。CSA 既压缩又稀疏;HCA 则压到更狠但保持稠密。二者的共同点是:先用 token-level compressor 把每若干个相邻 token 的 KV 聚合成一个"块级 KV 条目",再在压缩后的条目集合上跑注意力。两类层交错叠加后,V4 的长上下文 FLOPs 与 KV cache 相对 V3.2 大幅下降,使得 1M context 在工程上可行。开源 inference 实现则放在 HuggingFace 仓库的 inference/ 目录下(见原文脚注)。

2.3.1 Compressed Sparse Attention (CSA)

图 3: CSA 核心架构,先 token-level 压缩到 1/m1,再用 Lightning Indexer 选 top-k,最后做 shared-KV MQA

CSA 分两步:第一步压缩——把每 $m$ 个 token 的 KV 融合成一个压缩条目;第二步稀疏选择——再用 DeepSeek Sparse Attention (DSA) 的 Lightning Indexer 从压缩条目中选 top-k。

压缩 KV 条目. 设输入隐状态 $H \in \mathbb{R}^{n \times d}$,CSA 产出两套 KV 条目及各自的压缩权重:

$$C^a = H\cdot W^{aKV},\qquad C^b = H\cdot W^{bKV}, \tag{9}$$

$$Z^a = H\cdot W^{aZ},\qquad Z^b = H\cdot W^{bZ}, \tag{10}$$

其中 $W^{aKV},W^{bKV},W^{aZ},W^{bZ}\in\mathbb{R}^{d\times c}$ 可训练,$c$ 是 head 维度。接着,每 $m$ 个条目被压成一个;注意 CSA 采用了跨块重叠窗口——当前块的 $C^a$ 索引区间 $[mi, m(i+1)-1]$ 与前一块的 $C^b$ 索引区间 $[m(i-1), mi-1]$ 拼在一起做 softmax:

$$[S^a_{mi:m(i+1)-1};\, S^b_{m(i-1):mi-1}] = \mathrm{Softmax_{row}}\big([Z^a_{mi:m(i+1)-1}+B^a;\, Z^b_{m(i-1):mi-1}+B^b]\big), \tag{11}$$

$$C^{\mathrm{Comp}}_i = \sum_{j=mi}^{m(i+1)-1} S^a_j \odot C^a_j + \sum_{j=m(i-1)}^{mi-1} S^b_j \odot C^b_j, \tag{12}$$

其中 $B^a,B^b\in\mathbb{R}^{m\times c}$ 是可学习的位置偏置;$i=0$ 时前一块用 $-\infty$ 和 0 作 padding。每个压缩条目由 $2m$ 个原始 KV 聚合,但由于重叠窗口,总压缩比仍是 $1/m$ 而不是 $1/(2m)$。重叠的作用是让压缩块边界附近的 token 不至于被硬切开,缓解块边界处的信息割裂。

Lightning Indexer 做稀疏选择. 拿到压缩条目后,CSA 再做一层轻量化的稀疏选择——直接把 DSA 搬到"压缩条目"这一级。具体而言,先对 $H$ 用同样的 compressor 得到压缩 indexer key $K^{I\mathrm{Comp}}\in\mathbb{R}^{(n/m)\times c_I}$;query 侧用低秩方式生成 $n_h^I$ 个 indexer query:

$$c_t^Q = h_t\cdot W^{DQ}, \tag{13}$$

$$[q_{t,1}^I;\dots;q_{t,n_h^I}^I] = q_t^I = c_t^Q \cdot W^{IUQ}, \tag{14}$$

$$w_t^I = h_t\cdot W^w,\qquad I_{t,s} = \sum_{h=1}^{n_h^I} w_{t,h}^I \cdot \mathrm{ReLU}\!\big(q_{t,h}^I \cdot K^{I\mathrm{Comp}}_s\big). \tag{15,16}$$

得到 query token $t$ 对每个压缩块 $s$ 的 index score 后,用 top-k 保留若干个块:

$$\mathcal{C}_t^{\mathrm{SprsComp}} = \{C^{\mathrm{Comp}}_s \mid I_{t,s}\in\mathrm{Top\text{-}k}(I_{t,:})\}. \tag{17}$$

Shared-KV MQA + Grouped output projection. 被选中的 $\mathcal{C}_t^{\mathrm{SprsComp}}$ 同时充当 attention key 与 value(shared-KV,典型 MQA 风格),query 则从共享的 latent $c_t^Q$ 通过 up-proj $W^{UQ}\in\mathbb{R}^{d_c\times cn_h}$ 展开为 $n_h$ 个 head。核心 attention 产出 $o_{t,i}\in\mathbb{R}^c$ 后,由于 $cn_h$ 非常大,直接投影回 $d$ 维代价可观,作者采用分组输出投影:$n_h$ 个 head 分成 $g$ 组,先在组内把 $c\cdot n_h/g$ 投到 $d_g

评论:双重稀疏会丢什么? CSA 本质上是两级稀疏——第一级把 $m$ 个 token 压成一块(信息在块内被加权平均),第二级再在块的粒度上做 top-k。从 retrieval 视角看,这既是效率来源也是它的短板:如果目标 token 在某个块的"非主导位置",第一级压缩就已把其贡献稀释;第二级 top-k 若漏选该块,目标 token 就彻底消失。这种盲区在"大海捞针"式任务中最容易暴露。作者引入的 sliding-window 分支(见 §2.3.3)弥补了最近 $n_\mathrm{win}$ 个 token 的未压缩访问,但更远距离的精确召回仍靠 indexer 的选择质量。

2.3.2 Heavily Compressed Attention (HCA)

图 4: HCA 核心架构,重压缩到 1/m' 但保持 dense attention

HCA 更激进:把每 $m'$ 个 token($m' \gg m$)压成一个条目,但不再做稀疏选择——所有压缩条目都参与稠密注意力。压缩过程与 CSA 类似但更简单(不再有 $a/b$ 双通道和重叠):

$$C = H\cdot W^{KV},\quad Z = H\cdot W^Z, \tag{20,21}$$

$$S_{m'i:m'(i+1)-1} = \mathrm{Softmax_{row}}(Z_{m'i:m'(i+1)-1}+B), \tag{22}$$

$$C^{\mathrm{Comp}}_i = \sum_{j=m'i}^{m'(i+1)-1} S_j\odot C_j. \tag{23}$$

序列长度被压缩到 $1/m'$ 倍。Query 侧仍是 MLA 风格的低秩展开 $c_t^Q = h_t\cdot W^{DQ}$,$q_t = c_t^Q\cdot W^{UQ}$,再与 $C^{\mathrm{Comp}}$ 做 shared-KV MQA,最后同样走分组输出投影。

为什么"重压缩 + 稠密"在长上下文仍值得? 当 $m'$ 足够大,$n/m'$ 已经非常小,即便 dense attention 也不构成瓶颈;更重要的是,dense 保留了"每个 query 都能看到全局每一块"的能力,避免稀疏选择器漏选。换言之,CSA 用稀疏换精细度(块很小但只看 top-k),HCA 用压缩换全局性(块很粗但全看)。两者的分工可以从图 2 读出:V4 在层间交错叠 CSA 与 HCA——一些层提供"精细但稀疏"的局部-到-可选远距依赖,另一些层提供"粗粒度但稠密"的全局摘要。两类层互相补,使得每个 query 都至少在若干 HCA 层里获得完整的全局视野,从而缓解 CSA 单独使用时的召回盲区。

2.3.3 Other Details

$$s_{h,i,j} = \frac{\exp(z_{h,i,j})}{\sum_k \exp(z_{h,i,k}) + \exp(z_h')}. \tag{27}$$

这样 head 可以合法地"总注意力不等于 1"甚至"几乎为 0",避免非要把注意力摊到无关 token 上。

2.3.4 Efficiency Discussion

论文把效率收益归因于四点叠加:

  1. KV 混合精度存储. RoPE 维度用 BF16,剩余维度用 FP8。仅这一项就把 KV cache 相对纯 BF16 砍到约一半。
  2. Lightning Indexer 使用 FP4. Indexer 的注意力计算降到 FP4 精度,极长上下文下的 indexer 代价被进一步压低(只用于"挑 top-k",对精度相对宽容)。
  3. 更小的 attention top-k. 相对 DeepSeek-V3.2,V4 采用更小的 top-k 值,因此在短/中长度文本上的 FLOPs 也同步下降。
  4. CSA + HCA 协同压缩. 这是最根本的:KV cache 与 attention FLOPs 都从 $O(n)$ 量级变成 $O(n/m)$ 或 $O(n/m')$ 量级。

作者给出一个具体对照:以 BF16 + GQA8 + head dim 128(当前主流开源长上下文配置之一)为基线,在 1M context 时,DeepSeek-V4 的 KV cache 体积可以被压到约基线的 2%(注:原文为 "approximately 2% times of that baseline")。

批判短评.

§2.4 Muon Optimizer 与 §3 General Infrastructures

架构再漂亮,如果优化器不稳、EP 通信堵死、kernel 开发两周起步、KV cache 管理跑不动长上下文,上限也就那样。DeepSeek-V4 把 Muon + 一整套基础设施放一起讲,本质在说:架构和基础设施是"同一套系统共同演化",把 CSA/HCA/mHC 这些新模块落到 FP8/FP4 训练栈里才是真正的难点。


§2.4 Muon Optimizer

Algorithm 1 的核心循环

论文给出的 Muon 更新(Algorithm 1,权重按"逻辑独立矩阵"$W\in\mathbb R^{n\times m}$ 逐个处理)可以压缩成下面这段伪代码:

for each training step t:
    for each logically independent weight W in R^{n×m}:
        G_t = ∇_W L_t(W_{t-1})                               # 梯度
        M_t = μ · M_{t-1} + G_t                              # 动量缓存
        O_t' = HybridNewtonSchulz( μ·M_t + G_t )             # Nesterov + 混合 Newton-Schulz
        O_t  = O_t' · sqrt(max(n, m)) · γ                    # 按矩阵大小 rescale 更新的 RMS
        W_t  = W_{t-1} · (1 - η·λ) − η · O_t                 # 权重衰减并更新

关键区别于 AdamW 在第 5 行:Muon 不做 element-wise 自适应,而是把动量矩阵 $\mu M_t+G_t$ 近似正交化,再按矩阵 shape 把 update 的 RMS 缩放到可复用 AdamW 超参的量级。之所以 rescale,是因为正交化结果 $UV^\top$ 每个奇异值都是 $1$,Frobenius 范数与 $\min(n,m)$ 成正比,与 AdamW update 量级对不上;乘 $\sqrt{\max(n,m)}\cdot\gamma$ 后 $\eta, \lambda$ 等超参可直接从 AdamW 迁移。

Hybrid Newton-Schulz:为什么要两阶段

Newton-Schulz 的标准做法是:给定 $M=U\Sigma V^\top$,先做 $M_0 = M/\|M\|_F$ 让最大奇异值不超过 1,然后反复迭代

$$M_k = a\,M_{k-1} + b\,(M_{k-1}M_{k-1}^\top)M_{k-1} + c\,(M_{k-1}M_{k-1}^\top)^2 M_{k-1}.$$

这是作用在奇异值上的多项式 $f(\sigma)=a\sigma+b\sigma^3+c\sigma^5$。标准 Newton-Schulz 常用 $(1.5,-0.5,0)$ 或接近 $(2,-1.5,0.5)$ 的"收敛到 1 不超调"系数,在 $\sigma\approx 1$ 附近二阶收敛,但 $\sigma$ 很小时 $f'(0)$ 不够大、收敛慢。

DeepSeek-V4 把迭代分成两段,一共 10 步:

这种"激进收敛 + 稳态精修"在训练数十万步下 BF16 数值仍稳定,也意味着 Newton-Schulz 可以批量化、用 BF16 GEMM 实现(§3.5.1)。

为什么不需要 QK-Clip

Moonshot 版 Muon(Liu et al., 2025)引入 QK-Clip 控制 logits 爆炸 —— Muon update 的 spectral norm 大,容易把 QK 内积推到 softmax 饱和区。DeepSeek-V4 的 attention 里 query 和 KV entry 各自都过了 RMSNorm(§2.3 CSA/HCA),logits 有上界,于是直接省掉 QK-Clip

哪些模块不用 Muon

仍用 AdamW 的模块:embedding、prediction head(梯度极稀疏,正交化无意义)、mHC 的静态 bias / gating factor(标量向量)、所有 RMSNorm 权重(一维 scale)。其余 attention 投影、expert SwiGLU 三联等走 Muon。这种"矩阵走 Muon、向量走 AdamW"后来也是 Muon 社区默认做法,DeepSeek-V4 把它写成正式配方。


§3 General Infrastructures

§3.1 EP 的细粒度通信-计算重叠

Fig 5 | EP 方案对比:(a) 朴素串行、(b) Comet、(c) DeepSeek-V4 的 wave-based 细粒度 pipeline

MoE 跑 EP 的根本矛盾:dispatch/combine 通信-bound,Linear-1/Linear-2 计算-bound,串行会让通信瓶颈支配端到端吞吐。DeepSeek 的做法是把通信和计算 fuse 到同一个 pipelined kernel,开源成 DeepGEMM 的 MegaMoE2。

与 Comet(Zhang et al., 2025b)关键区别:Comet 是 stream 层调度,Dispatch 和 Linear-1 并行、Combine 和 Linear-2 并行,理论上限 ~1.42×;DeepSeek-V4 把专家切成 wave,稳态下同时进行:当前 wave 的 Linear-1/2 计算、下一 wave 的 dispatch all-to-all、上一 wave 的 combine all-to-all。每个 wave 只需自己那部分 experts 的 dispatch 完成就能进计算,同步点从"一 MoE 层一次"降到"每 wave 一次",关键路径只剩最后 combine 尾巴。理论上限 1.92×,实测普通 inference 1.50~1.73×,RL rollout / 低延迟 agent 最高 1.96×。在 NVIDIA GPU 和 HUAWEI Ascend NPU 都验证,对 RL rollout 的"长尾小 batch"收益尤其明显。

作者还推导硬件参考:只要 $C/B\le V_\text{comp}/V_\text{comm}=2d$(V4-Pro 约 6144 FLOPs/Byte),通信就能完全藏掉 —— 每 1 GB/s 互联够藏 6.1 TFLOP/s 算力,超过就是浪费硅。顺带给硬件厂商四点建议:调 C/B 平衡点;给 power headroom(fusion 后三总线同时高负载,throttling 成新瓶颈);低延迟跨 GPU signaling 使 push-based 可行;用比 SwiGLU 更便宜的激活降低 post-GEMM。

§3.2 TileLang:DSL 路线的工程折衷

V4 架构里 CSA indexer、HCA 压缩、mHC fused 残差、FP4 QAT、batch-invariant decoding 双 kernel,都是"写 CUDA 要好几周但架构天天改"的组件。全用 Torch ATen 会变成几百个细粒度算子,launch overhead 就吃掉几十个百分点。

选择 TileLang(Wang et al., 2026)这个 tile-level DSL。和 Triton 的区别:TileLang 把 layout、线程块映射、memory hazard 都当一等公民,有更强的形式化基础;和 CUTLASS 的区别:不是模板库而是编程语言,更适合快速原型 attention 变体。三件关键工程:

  1. Host Codegen:痛点是 kernel 20μs 但 Python host 的 shape/rank/stride 检查几十~几百μs。TileLang 在 IR 层同时生成 device kernel 和 host launcher,contract check lower 成基于 TVM-FFI 的 C++。实测CPU 侧 validation 从几十~几百μs 降到 <1μs
  2. SMT 辅助整数分析:layout inference、barrier 插入、向量化本质是证整数不等式。把 TileLang 整数表达式翻成 Z3 的 QF_NIA(非线性整数算术),让 Z3 证明,"动态 shape 下也能向量化"这类场景不用再手写特化,代价是编译多几秒。
  3. Numerical / bitwise reproducibility:fast-math 默认关;T.__exp/__log/__sin 等近似必须显式 opt-in;严格 IEEE-754 的地方有 T.ieee_fsqrt/fdiv/add 带明确 rounding mode;algebraic simplification 对齐 NVCC,T.annotate_layout 钉死累加顺序,最终和手写 CUDA 逐比特相同

把"bitwise reproducibility"当默认、近似反而 opt-in —— 在"loss spike 排查一周"的现实里,这是对的折衷,也直接服务下一节。

§3.3 Batch-Invariant & Deterministic Kernel

Batch invariance:token 的 forward 不应依赖它在 batch 里和谁拼。这对训练-推理对齐至关重要 —— RL 里 rollout 和 update 用同一 model 但不同 batching,如果算子 batch-dependent,policy 就漂。两个难点:

Determinism(两次 run bit-by-bit 一致)的真凶是 atomicAdd —— 浮点加法不满足结合律:

叠起来,pre-training / post-training / inference 三套 pipeline 做到 bit-wise 对齐。对 RL 和 OPD 这类"训练-推理反复切换"的工作流是调试利器 —— loss spike 时,重跑同 prompt 即可确认偏差来自模型本身而非 kernel。

§3.4 FP4 QAT

FP4(MXFP4,Rouhani et al., 2023)比 FP8 再减半,但动态范围小得多,直接 post-training quantize 通常掉点严重。V4 对两类走 FP4 QAT:MoE expert SwiGLU 权重(GPU 显存占用大头);CSA indexer 的 QK 路径(FP4 cache、load、乘,直接加速长上下文 attention score)。

关键 trick 是 forward-equivalent 的 FP4→FP8 lossless dequant。FP32 master weight 先量化到 FP4(1×32 tile),再 dequant 到 FP8(128×128 tile)。因为 FP8(E4M3)比 FP4(E2M1)多 2 位指数,只要 FP4 子块间 scale factor 最大/最小比不超过阈值,整个 128×128 块可用一对 (FP8 权重, FP8 scale) 精确表示,empirical 满足。于是 QAT 完全复用现有 FP8 训练框架,不改 forward kernel,不重新量化 transposed 权重。

反向用 STE:梯度相对 FP8 forward 权重计算,直接传回 FP32 master,等价于把 quantize 当恒等映射。配合 lossless dequant,forward 没误差、STE 也没偏差。

Index score $I_{:,:}$ 从 FP32 降到 BF16:top-k selector 加速 2×,KV entry 召回率仍 99.7%。

RL rollout 阶段直接用真实 FP4 权重(非 simulated)——rollout 无反向,不需 master weight,加载 FP4 kernel 与线上部署行为一致,显存和 kernel load 同步下降,解决 QAT 经典的"训练假量化 / 部署真量化" behavior mismatch。

§3.5 训练框架

§3.5.1 Muon 与 hybrid ZeRO

ZeRO 是为 AdamW 这种 element-wise 优化器设计 —— 权重矩阵拆到多 rank 各自更新。Muon 不行,Newton-Schulz 需要整个矩阵 $W$ 的全梯度才能算 $MM^\top$,拆了要 all-gather 回来,得不偿失。折衷是 hybrid ZeRO bucket:

两个 trick:rank 上同 shape 连续参数自动合并,批量跑 Newton-Schulz 提升 GEMM 效率;Newton-Schulz 在 BF16 稳定,于是 MoE 梯度跨 DP rank 同步前 stochastic round 到 BF16 通信量减半,为避免 BF16 累加误差,不走 tree/ring reduce-scatter,而是 先 all-to-all 交换、rank 本地 FP32 求和

§3.5.2 mHC 的 fused kernel + 选择性 recomputation

mHC(§2.2)把 residual 从"只连上一层"扩展到"连若干层",activation 和 pipeline 通信都变多。三件套:(1) training/inference 都有 fused kernel,把若干 linear 和 mHC 加权合并融合成一个算子;(2) recompute 大多数 hidden state + 所有 normalized layer input,但不重算 compute-intensive GEMM;(3) 改 DualPipe 1F1B 方案,让 mHC 部分操作和 pipeline 通信并发。最终 mHC 占 overlapped 1F1B stage 仅 6.7% wall time。

§3.5.3 两阶段 Contextual Parallelism

传统 CP 按 $s$ 个 token 切 rank,对 CSA/HCA 压缩 KV 有两个麻烦:训练样本是多序列 packed,每序列独立按 $m$ 压缩,trailing 不足 $m$ 丢弃,每 rank 压缩 KV 长度不等;更糟是压缩需要 $m$ 个连续 KV,可能跨 rank 边界。对策两阶段通信:

§3.5.4 Tensor-level activation checkpointing

传统 checkpoint 以 module 为粒度,粒度太粗。V4 做张量级:forward 里只标注某几个 tensor,用 TorchFX 追 concrete execution graph,对每个标注 tensor 反向遍历抽出重算最小子图("recomputation graph"),插到 backward 对应位置之前。重算时直接释放原 tensor 显存、存储指针指向重算结果,无 memcpy;因能追踪每个 tensor 的底层 storage pointer,共享 storage 的 reshape 等操作自动去重。开发体验和普通 autograd 一样,粒度到 tensor。

§3.6 推理框架

§3.6.1 异构 KV cache 布局

Fig 6 | KV cache Layout:State Cache(SWA + 未压缩 tail) vs. 经典 Block-based KV Cache(CSA/HCA 压缩 entries)

Hybrid attention 让 KV cache 变成"异构动物园":CSA/HCA 的 KV 按 $1/m$ 和 $1/m'$ 压缩,每层 size 不同;CSA lightning indexer 要额外存 QK 维度(embedding size 和主 attention 不同);SWA 层有自己 cache hit/eviction 策略;压缩分支 tail tokens(凑不够 $m$)要连同 hidden state buffered,本质是依赖 positional context 的 sequence state。

PagedAttention 的"每层 KV 同构、cache 策略统一"假设彻底崩。方案是把 KV cache 拆两类:

高性能 sparse attention kernel 假设每 block 固定 $B$ 个压缩 token。$\text{lcm}(m,m')$ 对齐让 CSA/HCA 共享同一 block 结构,不同层只是 token-per-block 数值不同,配合 cache-line padding 再拿一笔 kernel 性能。

§3.6.2 on-disk KV cache:shared-prefix 与长上下文服务

线上服务里,shared-prefix(system prompt、长 RAG 文档前缀)重复 prefill 是硬成本。V4 把 KV cache 存盘,命中 prefix 的请求直接读盘复用。

三档是 "zero-recomputation → balanced → zero-storage" 连续光谱,按 SSD 容量 / throughput / 是否长上下文主导来选。对**长上下文服务(百万 token 文档当 system prompt)**意义特别大:prefix 命中一次,后续所有变种 query 都省掉 prefill。


一点批判

基础设施做得很完整,也的确是 V4 能同时塞下 CSA/HCA/mHC/Muon/FP4 的必要条件。但也暴露出"DeepSeek 内部自洽"的问题:

  1. TileLang 的开源和生态:大量 kernel 依赖它的 Host Codegen、SMT 整数分析、IEEE-754 intrinsics,而 TileLang 是 2026 年的工作,生态未成熟。外部团队想复刻 batch-invariant 双 kernel,没有等价 DSL 只能回到手写 CUDA,工作量不在一个量级。MegaMoE2 开源到 DeepGEMM 是加分,但只是 EP kernel 一个组件。
  2. FP4 QAT 的可移植性:FP4→FP8 lossless dequant 依赖"FP4 子块 scale ratio 不超过 FP8 动态范围"的经验事实,DeepSeek 自家权重满足不等于其他 checkpoint 满足。MXFP4 原生 tensor core 要到 Blackwell 才有,Hopper/Ampere 需要单独验证;Ascend NPU 只讲了 EP kernel,FP4 支持没明说。
  3. Bit-wise reproducibility 的隐性成本:为 deterministic,split-k 大量砍掉,MoE backward 用 per-rank buffer + 全局 deterministic reduce。论文说"negligible"但没给数字。小规模训练里这些 overhead 可能被放大。
  4. Hybrid ZeRO 的复杂度:Muon 不能直接 FSDP 是事实,但 hybrid ZeRO + knapsack + BF16 + stochastic round + all-to-all-then-FP32-sum 落地下来,训练框架复杂度陡增。对大厂内部 ok,对开源社区推广 Muon 是门槛。
  5. On-disk KV cache 三档策略本身不新(vLLM/SGLang 讨论过),但和 CSA/HCA/SWA 异构结构统一管理需要 cache 层联合设计,没有配套 block-level kernel,SWA 8× volume 绕不过去。

总的来说,§3 是典型的"全栈模型公司"的产物:架构不管 kernel 没法活、kernel 不管 optimizer 会踩坑、optimizer 不管 pipeline 和 determinism 一调就崩。能把这些拼到一起跑大半年,是 V4 能出来的前提,也是它最难被单独复现的那一块。

§4 Pre-Training 与 §5.1–5.2 Post-Training 流水线

§4.1 数据构造

DeepSeek-V4 的预训练语料建立在 V3 的基础上继续扩张与净化,最终规模达到超过 32T tokens,覆盖数学、代码、网页、长文档以及其他高质量类别。与 V3 相比,几个关键的构造动作值得单独拆开:

值得注意的是,论文并未披露网页 / 代码 / 数学 / 多语言之间的精确比例,也没有点名所谓"DeepSeek-Math / Code 数据集";它把配方藏在"继续优化 V3 的 pipeline"这样一句陈述后面,这部分对外界仍是黑箱。

§4.2 预训练设置与稳定性缓解

§4.2.1 Model Setups

DeepSeek-V4 系列同时发布两个规模。

V4-Flash(284B 总参 / 13B 激活):

V4-Pro(1.6T 总参 / 49B 激活):

一个值得点出的细节:Flash 激活 13B vs Pro 激活 49B,约 3.8x 差距;总参 284B vs 1.6T,约 5.6x;这说明 Pro 不仅加宽了专家池,也相应增加了每 token 的计算量,并非"只扩容不加激活"。

§4.2.2 Training Setups

两者使用基本一致的优化器与调度:

§4.2.3 Mitigating Training Instability

万亿参数 MoE 训练的 loss spike 是老大难。论文直言 V4 "也不例外",并给出了相当诚实的结论:简单回滚无效,因为不消除复发机制。他们把 spike 来源定位到 MoE 层的 outlier,并进一步指出路由本身会放大 outlier,于是从两个方向干预:

1. Anticipatory Routing(预判路由)。 核心想法是让骨干网络与路由网络的参数更新解耦:第 t 步做前向时,特征用当前 θ_t 计算,但路由索引用历史 θ_{t-Δt} 计算。为避免两次加载模型的开销,他们在 t-Δt 步就提前 fetch 第 t 步的数据并"预判"地缓存好路由索引。关键工程细节是:

2. SwiGLU Clamping。 直接对 SwiGLU 输出做数值夹取:线性分支夹到 [-10, 10],gate 分支上限 10。论文坦承"理论上为什么起作用还是开放问题",但在 Flash 和 Pro 的整段训练里都用了,且未观察到性能损失。

这两招合在一起的价值,是把"打断训练 + 回滚"这种被动处理升级成了可预防 + 可自动恢复的主动策略,并且都被设计成"不伤性能"的旁路式修复。

§4.3 预训练评测(Table 1)

Table 1 把 V3.2-Base(37B 激活 / 671B 总参)、V4-Flash-Base(13B / 284B)、V4-Pro-Base(49B / 1.6T)放在同一评测框架下直接比较。几个最具信号量的数字:

最关键的 efficiency story 在 Flash 上:13B 激活 / 284B 总参,比 V3.2 的 37B / 671B 少近 3x,却在绝大多数 benchmark 上超过 V3.2,只在 BigCodeBench、MATH、BBH 等少数项目小幅落后。换句话说,架构(CSA+HCA+mHC)、数据、训练三方面的改进加起来,足以让一个只激活 1/3 参数的模型整体上胜过上一代旗舰——这是 DeepSeek 在"Pareto 前沿左移"这件事上给出的最硬证据。

§5 Post-Training

§5.1 Post-Training Pipeline

V4 的 post-training 骨架沿用 V3.2,但做了一个方法论级别的替换:原先那段 mixed RL 被完全换成 On-Policy Distillation (OPD)。整个流程可以概括为"先各自把 specialist 训到极限,再用 OPD 把它们压进一个统一模型"。

Figure 7: Thinking management of DeepSeek-V4 series.

§5.1.1 Specialist Training

对每一个目标能力维度(code、math、search、agent、chat……)都独立走一条 pipeline:domain SFT → 带领域 prompt 与 reward 信号的 RL。RL 沿用 GRPO(Group Relative Policy Optimization),超参与 DeepSeek-R1 / V3.2 时期保持一致。

三档 reasoning effort(Table 2)。 论文明确,V4-Pro 与 V4-Flash 都支持三种 reasoning 模式:

切换机制完全依赖 <think></think> 这对 special token 与 system prompt 的 prefix——也就是说,一个模型权重里同时容纳三档,在推理时通过格式控制调用。

Generative Reward Model (GRM)。 对那些难以用规则或单测验证的任务(写作质量、对话风格等),V4 不再训练独立的标量 reward model,而是让 actor 自己当 GRM,RL 同时优化"生成"和"评判"两个角色。这样一方面模型的推理能力直接渗透到打分逻辑里,另一方面只需要少量多样化的人工标注就能泛化到复杂任务。这是 V4 post-training 上最重要的一次简化:"一个模型同时是 policy 和 reward model"

Tool-Call Schema(Table 4)与 Interleaved Thinking。 V4 换了工具调用协议,采用基于 <|DSML|> 特殊 token 的 XML-like 嵌套格式(<|DSML|tool_calls> / <|DSML|invoke name="…"> / <|DSML|parameter name="…" string="true|false">…</|DSML|parameter>),string 参数保留原文、其他类型一律 JSON。相比 JSON 内嵌字符串,XML 结构显著降低转义失败与 tool-call 解析错误率。

Interleaved Thinking 是对 V3.2 的精修:

论文同时提醒:像 Terminus 这种"通过 user message 模拟工具交互"的框架不会触发 tool-calling 路径,因此也不会从思考持久化里获益,推荐这种架构继续用 non-think 模型。

Quick Instruction(Table 5)。 在 chatbot 里往往要在出主答案前做一堆辅助判断——是否要搜、生成什么 query、domain 分类、是否抓 URL……传统做法是跑一个独立小模型,KV cache 无法复用。V4 把这些任务折成一组 special token(<|action|> / <|query|> / <|title|> / <|authority|> / <|domain|> / <|extracted_url|> / <|read_url|>),直接追加在输入序列里,完全复用已计算的 KV cache 来跑。好处是消灭了冗余 prefill,部分任务还能并行(例如 query 生成与 authority 判别),显著压低 user-perceived TTFT,同时省掉额外小模型的维护成本。

§5.1.2 On-Policy Distillation

在每个领域都有了 specialist 后,V4 用多教师 OPD把它们合并到最终模型。学生 π_θ 从自己产生的 trajectory 上采样,目标是最小化

LOPD(θ) = Σ_i w_i · D_KL( π_θ ‖ π_{E_i} )

其中 w_i 是每个 teacher 的权重。由于 KL 是在学生自己的 on-policy 轨迹上算的,学生会自适应地"谁相关就向谁学"——数学题靠数学 specialist,代码题靠代码 specialist——从而避免 offline SFT 那种"盲学专家答案,但自己根本不会走到那种轨迹上"的分布错位。最终这一步用了十几个 teacher

关键工程选择:full-vocabulary logit distillation。 以往同类做法常把 full-vocab KL 简化成 per-token KL 估计,复用 RL 框架把 sg·log(π_E/π_θ) 当 advantage 代入 policy loss。这确实省资源,但梯度方差大、容易不稳。V4 选择完整保留词表层面的 logit 分布再算 reverse KL,梯度更稳、知识转移更忠实——代价由下面 §5.2.2 的基础设施承担。

OPD 相比两条对照路线的优势:

§5.2 RL 和 OPD 基础设施

V4 的 post-training 基础设施基于 V3.2 的分布式训练栈与 rollout 引擎,又新增了五块关键能力。

§5.2.1 FP4 量化集成

动机:rollout 和 teacher/reference 的 inference-only 前向是整段 RL/OPD 最贵的部分,把这些前向压到 FP4(MXFP4)能大幅降低显存带宽和采样延迟。做法:rollout 与 inference 直接用 native FP4 权重;训练步通过无损 FP4→FP8 反量化接回现有 FP8 混合精度框架(FP32 master weight),反向通路不动。这样一行代码都不用动 backward 就拿到了 rollout 的加速。

§5.2.2 全词表 OPD 的 Teacher 调度

动机:上面说过 OPD 要走 full-vocab logit,而 |V| > 100k,十几个 teacher 且每个可能有万亿参数,朴素实现在 I/O、DRAM 和 GPU 显存三个维度都会爆。做法有三层:

  1. Teacher 权重全量 offload 到中心化分布式存储,forward 时按需加载,ZeRO-风格分片 — 降低 I/O 与内存压力。
  2. 不缓存 logits,只缓存最后一层 teacher hidden state;训练时取出再过对应的 prediction head 现算 full logits,重算开销小,但彻底绕开了 logits 物化的显存黑洞。
  3. teacher index 排序样本,保证同一 mini-batch 内每个 teacher head 只加载一次,任意时刻 GPU 上至多一个 teacher head;所有 load/offload 后台异步不挡 critical path。最后用专用 TileLang kernel 算 KL。

§5.2.3 可抢占容错 Rollout Service

动机:集群用的是全局可抢占调度器,任何 RL rollout 任务随时可能被高优先级任务挤掉;大集群硬件故障本就是常态。做法:对每个生成请求维护 token 粒度的 Write-Ahead Log (WAL),每吐一个新 token 就写 WAL;被抢占时暂停 inference 引擎并保存未完成请求的 KV cache;恢复时用 WAL + KV 直接续解;即使硬件 fatal error,也可以从 WAL 重跑 prefill 重建 KV。

论文特别提醒了一个正确性坑:从头重生成被打断的 request 是数学上错误的,因为短 response 更容易存活,久而久之会让模型偏向生成更短的序列——也就是引入长度偏差。虽然在 batch-invariant 且确定性的 inference stack 下可以靠固定 RNG seed 修复,但这仍需要重跑 decode,不如 token-granular WAL 高效。

§5.2.4 百万 Token Context 的 RL Framework

动机:当上下文扩到 1M,rollout 数据动辄几 GB/条,简单的分布式 shuffle 和 dispatch 会在 CPU/GPU 内存上双线崩盘。做法:把 rollout 数据拆成轻量 metadata + 重量 per-token 字段:

§5.2.5 Agentic AI 的 Sandbox 基础设施(DSec)

动机:agentic 训练需要执行海量代码 / shell / VM 操作,要求高并发、低冷启动、强隔离,还要能跟 GPU 训练的抢占 / 恢复节拍同步。做法:自研 Rust 组件 DeepSeek Elastic Compute (DSec),由 Apiserver / Edge / Watcher 三件套组成,跑在 3FS 分布式文件系统之上,单集群可管数十万并发 sandbox

核心四设计:

批判性评价

  1. Specialist + OPD 合并 vs. 单一 RL(R1 路线):复杂度与可扩展性的权衡。 V4 这条流水线要串起 domain SFT、domain RL(含 GRPO)、GRM 自评、十几个 teacher 的 on-policy KL,再叠上 FP4、WAL、DSec 等一整套基础设施,工程复杂度远超 R1 那种"base → 一把 RL"的直线。优点是每个 specialist 在自己的战场可以用最激进的 reward 和 length penalty,不怕把 chat 能力训坏;缺点是合并阶段成了新的 scaling 瓶颈——教师数量线性增长会直接挤爆 DRAM 和 I/O,而且 teacher 之间分布不一致时 OPD 的 KL 也未必收敛到帕累托最优。从 scalability 看,单一 RL 更干净,但需要极其稳的 reward 设计和超长 horizon 信用分配;specialist + OPD 是"把难题切成可控小块"的务实工程解,在当前 reward hacking 难题没根治前更稳,但每加一个能力维度就要再走一遍专家训练,规模继续扩到几十个 domain 时不见得比 R1 路线更经济。

  2. OPD 作为 on-policy distill 的本质。 OPD 可以理解成把多 teacher 的知识压进学生参数空间,同时用学生自己的轨迹作为采样分布,这就同时避开了两个问题:一是 offline SFT 的train-test 分布错位(学生在推理时根本不会生成老师的那种 trajectory);二是 weight averaging / task arithmetic 式合并在异质专家间常见的干涉性退化。它的代价是 reverse KL 可能出现 mode seeking,学生遇到多 teacher 分歧大的样本时倾向挑一个拟合而丢多样性——论文用 per-expert weight w_i 和"学生自适应选择专家"的说法把这一点淡化了,但没有给出多 teacher 意见冲突下的 ablation。

  3. 百万 Token Context 下的 RL 是缓解还是解决? 明确是缓解。§5.2.4 解决的是工程可运行性:用 metadata/payload 拆分、shared-memory loader、token 粒度 WAL 让 1M 序列的 rollout 与训练在真实集群上跑得动、被抢占也能恢复;但它没有回答算法层面的 open problem:在百万 token 下 advantage 估计如何保持低方差、长序列 credit assignment 如何不坍塌、length bias 如何系统性校正(token-granular WAL 也只是把这个 bias 从"按序列"压到"按 token",并没消除)。换句话说 V4 把"万 token 想都别想"变成了"百万 token 现实可跑",这是非常扎实的基础设施功,但要谈"解决",还差一个数学层面的 long-horizon RL 收敛理论。

§5.3–§6:标准评测、真实任务与结论

§5.3 标准 Benchmark 评测

§5.3.1 Evaluation Setup

DeepSeek 将评测划分为四大类:知识与推理、1M 长上下文、代码/通用 Agent、搜索 Agent,各自有不同的 benchmark 套件与评测协议。

知识与推理一侧的 benchmark 覆盖 MMLU-Pro、GPQA-Diamond、HLE(Human Last Exam)、SimpleQA-Verified、Chinese-SimpleQA、LiveCodeBench-v6、一个内部构造的 Codeforces 榜、HMMT 2026 Feb、Apex 与 Apex Shortlist、IMOAnswerBench,以及形式化数学的 PutnamBench。内部 Codeforces 榜由 2025 年 5 月 – 11 月 14 场 Division 1 比赛共 114 题构成:每题采样 32 个候选解,然后无放回抽 10 个,按随机顺序组装成提交序列,采用 OpenAI(2025)的惩罚方案——每道解出题目给模型"在相同前置失败次数下解出该题的人类选手的中位分",再按标准 Codeforces 评级系统换算 Elo,最终模型 rating 是 14 场比赛 expected rating 的平均。这是一个相对严肃的竞赛级估计,比"Pass@N"更贴近真实天梯。

推理模式的协议:知识推理任务用 temperature=1.0,上下文窗口分别给到 Non-Think 模式 8K、High 模式 128K、Max 模式 384K。数学任务统一用 {question}\nPlease reason step by step, and put your final answer within \boxed{} 模板;DeepSeek-V4-Pro-Max 做数学题时换成一个"证明 + 答案一并给出"的更深推理模板。形式化数学则在 Lean v4.28.0-rc1 的 agentic 环境下评测,最多 500 次工具调用,并且额外跑一条"先做自然语言解 + self-verification 过滤 → 把保留的解作为指导喂给 formal agent"的 compute-intensive pipeline;只有在严格校验器 Comparator 通过时才计为正确。论文承认 K2.6 和 GLM-5.1 的若干项留空,原因是"他们的 API 太忙不给响应",这点稍后的批判里会提。

1M 长上下文单独用 OpenAI MRCR 和 CorpusQA 评,并且专门"把 Claude Opus 4.6 和 Gemini 3.1 Pro 在这两项上重新跑一遍,把配置对齐";GPT-5.4 因为 API 响应问题直接没测。

Agent 包含 Terminal Bench 2.0、SWE-Verified、SWE-Multilingual、SWE-Pro、BrowseComp、MCPAtlas 公评集、GDPval-AA、Toolathlon。代码 agent 与搜索 agent 均使用内部开发的 harness:代码任务的工具只给 bash + file-edit,最多 500 步,上下文 512K;搜索任务工具给 websearch + Python,同样 500 步 / 512K。对 Terminal-Bench 2.0,论文承认 GLM-5.1 指出过的环境问题,但为了一致性仍报原数据集分数——并且披露在 Verified 子集上 V4-Pro 约为 72.0。BrowseComp 沿用 V3.2 的 "discard-all" 上下文管理策略。

§5.3.2 Evaluation Results

主对照表 Table 6(DeepSeek-V4-Pro-Max 对 Opus-4.6-Max / GPT-5.4-xHigh / Gemini-3.1-Pro-High / K2.6-Thinking / GLM-5.1-Thinking)里几个关键数字:

Table 7 展示 V4 系列内部的三档 reasoning 模式差距:以 DeepSeek-V4-Pro 为例,HLE 从 Non-Think 的 7.7 → High 34.5 → Max 37.7,Apex 从 0.4 → 27.4 → 38.3,Apex Shortlist 从 9.2 → 85.5 → 90.2——Non-Think 和 Think 之间是数量级差异,High 到 Max 在简单题上边际递减、在 Apex / Codeforces 这类极难题上还能再收一截。V4-Pro 对 V4-Flash 的 gap 也很诚实:SimpleQA-Verified Max 模式 57.9 vs 34.1,HLE 37.7 vs 34.8,HMMT 95.2 vs 94.8,LiveCodeBench 93.5 vs 91.6——知识侧 Flash 掉得多,数学/代码侧反而比较接近。

Fig 8:形式化数学推理 Figure 8 | 左:Putnam-200 Pass@8 的 practical regime,DeepSeek-V4-Flash-Max 拿到 81.00,相比 Seed-2.0-Pro 的 35.50、Gemini-3-Pro 与 Seed-1.5-Prover 的 26.50 是断层式领先;右:Putnam-2025 的 frontier regime 用 hybrid formal-informal + 大规模 compute scaling,DeepSeek-V4 拿到 proof-perfect 120/120,与 Axiom 并列,超过 Aristotle(100/120)和 Seed-1.5-Prover(110/120)。

Fig 9:MRCR 8-needle 随上下文长度的表现 Figure 9 | 8-needle 设置下 V4-Pro-Max 从 8K 到 128K 基本稳定在 0.87–0.94 区间,256K 开始掉到 0.82、512K 0.76、1M 0.66;V4-Flash-Max 在长尾段下降更明显,1M 掉到 0.49。论文由此主张 "128K 以内稳定,超过后有可见下滑但 1M 处仍强"。

Fig 10:HLE 与 Terminal Bench 随 reasoning effort 扩展 Figure 10 | HLE 和 Terminal Bench 2.0 随 total tokens 的 Pareto 曲线,对比 V4-Pro、V4-Flash 与 V3.2。核心论点:(i) Max 模式(更长上下文 + 更小长度惩罚)在最难的题上优于 High;(ii) V4-Pro 在 HLE 上的 token 效率比 V3.2 更优——同样的推理预算下 V4-Pro 拿到更高 Pass@1。

§5.4 Real-World Tasks

作者承认标准 benchmark "往往无法捕捉真实任务的复杂性",因此专门造了一批内部指标,针对 DeepSeek API 和 chatbot 的核心用例——中文写作、搜索、白领任务、代码 agent。

§5.4.1 Chinese Writing

功能性写作(Table 12):3170 个 prompt,DeepSeek-V4-Pro vs Gemini-3.1-Pro——总胜 62.65% / 负 34.10% / 平 3.25%。把 Gemini-3.1-Pro 拿出来做对照是因为"它是我们评测里最强的外部中文写作模型"。细粒度上几乎所有子类都赢:商务写作 65.16%、生活文本 69.49%、学术写作 63.43%,比较接近的是公文文本 54.78% 和媒体文本 57.96%,唯一被压的是 Dialogue(40.00%)——论文认为 Gemini 在中文场景里经常"让自己的风格偏好压过用户的显式要求"。

创意写作(Table 13),2837 条,两轴评分:指令遵循 60.03 vs 39.44,写作质量 77.48 vs 22.35——质量维度差距巨大。子类里 DeepSeek 在 Fiction(小说故事)、Fan Fiction、Narrative、Prose 都显著赢,但歌词(Lyrics)指令遵循只有 26.67%,Gemini 反手 73.33——作者没解释原因,大概是韵律/句式约束在 Gemini 这边更敏感。

复杂指令跟随 + 多轮(Table 14):这是论文自己承认输了的一项——196 个"最困难"的 prompt,DeepSeek 45.9%、Claude Opus 4.5 52.0%、平 2.0%。Complex Instruction Following 子类 46.9% vs 53.1%,Multi-Turn 45.6% vs 51.7%。论文承认"在高复杂度约束或多轮场景下,Claude Opus 4.5 仍保有优势"。

Fig 11:白领任务胜率对比(放在此处是因为白领评测同时出现在中文写作 §5.4.3 的讨论里) Figure 11 | 白领任务(非中文写作本身)中 V4-Pro-Max vs Opus-4.6-Max:analysis 55.0/8.0/37.0、generation 52.0/10.0/38.0、editing 47.0/18.0/35.0、overall 53.0/10.0/37.0——"non-loss rate 63%"的说法由此而来。

Fig 12:维度细分 Figure 12 | 四个维度打分:Task Completion(98.32 vs 96.68)和 Content Quality(88.88 vs 87.76)是 V4 的强项,Formatting Aesthetics 83.32 vs 78.00 也领先;Instruction Following 只有 76.68 vs 86.52 是唯一输的项,与 Table 14 的发现一致。

Fig 13:联名营销提案示例 Figure 13 | 让模型起草"某奶茶品牌 × 北京地铁"的联名营销方案,是白领任务中 generation 场景的典型例子。由于输出过长,figure 只截取部分页面。

§5.4.2 Search

搜索是 chatbot 的核心能力,分 RAG(non-think 模式)和 Agentic Search(thinking 模式)。

Agentic vs RAG(Table 9):869 条跨难度 × 客观/主观 Q&A,agentic 总胜率 61.7%,RAG 18.3%,平 20.0%;Hard-Subjective 尤其拉开——agent 68.5 vs RAG 14.7。成本(Table 10):agentic 平均 16.2 次工具调用,prefill 13649 tokens、output 1526 tokens;RAG 分别是 10453 / 1308——多出的开销"仅略高于标准 RAG",但大多数工具调用可以并行。

V4-Pro vs V3.2(Table 11):956 条 Q&A,V4 28.1% / V3.2 10.4% / tie 61.5%——tie 占大头(因为很多问题两家都答得对或都答得平平)。最拉开差距的:Single-value Search(37.9 vs 10.5)和 Planning & Strategy(34.8 vs 12.0);相对持平的是 Comparison(29.2 vs 20.8)和 Recommendation(27.4 vs 20.0),作者自己点出这表明 V4-Pro 在"多视角、平衡推理"类场景还有改进空间。

Fig 14:纳斯达克两种定投策略对比 Figure 14 | 需要跑数据、对比两种定期投资策略的任务,测试模型在"数据检索 + 定量分析 + 结构化总结"链路上的综合能力。

Fig 15:2020-2025 诺贝尔科学奖分析 PDF Figure 15 | 需要模型检索、整理、生成分析性 PDF 的长程研究型任务。以上两个 figure 都在"白领/search 混合"语境里被用作 qualitative 证据。

§5.4.3 White-Collar Task

这部分与 Fig 11/12 配套:作者从 13 个行业(金融、教育、法律、科技等)构造了 30 个高阶中文职业任务,覆盖信息分析、文档生成、文档编辑,在内部 agent harness 里用 Bash + web search 作为基础工具。因为自动指标无法衡量质量,全部用人工盲评,DeepSeek-V4-Pro-Max 对 Opus-4.6-Max——结果见 Fig 11/12。论文的定性解释:V4 强在 Task Completion 与 Content Quality,会"主动补充隐含用户意图、加自验证步骤",长文生成不像 Opus 那样喜欢堆要点;严格遵守中文层级编号等正式规范;但在精确 formatting 约束、长文压缩摘要、PPT 视觉设计上不如 Opus。

§5.4.4 Code Agent

作者从 50+ 内部工程师收了 200 个真实 R&D 任务,覆盖 feature 开发、bug 修复、重构、诊断,涉及 PyTorch / CUDA / Rust / C++,严格质检后留 30 题作为评测集。Table 8 的 pass rate:Haiku-4.5 13、Sonnet-4.5 47DeepSeek-V4-Pro-Max 67、Opus-4.5 70、Opus-4.5-Thinking 73、Opus-4.6-Thinking 80——论文的自评是"显著超过 Sonnet 4.5、逼近 Opus 4.5"。另外对 85 个 DeepSeek 内部开发者做了问卷——"是否愿意把 V4-Pro 当做日常默认主力编码模型":52% 说 yes、39% 倾向 yes、不到 9% 说 no;受访者反馈的主要问题是"小错误、对含糊 prompt 的误解、偶尔 over-thinking"。

§6 Conclusion, Limitations, and Future Directions

主要贡献(作者自述精炼):DeepSeek-V4 系列通过 CSA(Compressed Sparse Attention)+ HCA(Heavily Compressed Attention)的混合注意力,加上配套基础设施优化,让"1M tokens 原生上下文"在效率上站得住,为未来的 test-time scaling、长程任务、online learning 铺垫基础;V4-Pro-Max 在开源模型里重新定义了 SOTA——知识显著领先、推理逼近前沿闭源、agent 能力有竞争力;V4-Flash-Max 在更小参数量下能拿到接近顶级闭源的推理成绩,同时保持极低的推理成本。

作者承认的局限:

  1. 架构复杂。"为了最小化风险,我们保留了许多已初步验证的组件和 trick",结果整体架构不够 elegant,未来要做更有原则的消融以精简到"真正必要的设计";
  2. 训练稳定性的机理不明。Anticipatory Routing 与 SwiGLU Clamping 被证明有效但"底层原理理解不足",未来要加强稳定性的基础研究和内部指标监控,追求"原则化、可预测"的大规模训练;
  3. V4-Flash 在复杂任务上显著落后 V4-Pro,尤其是 Terminal Bench、Apex 这类重推理/重 agent 的场景——论文直接写 "DeepSeek-V4-Flash underperforms DeepSeek-V4-Pro on coding tasks";
  4. hybrid attention 的质量代价在 1M 极长上下文上有可见下滑(Fig 9,1M 处 Flash 掉到 0.49);
  5. 复杂指令跟随和多轮仍被 Claude Opus 4.5 反超(Table 14);
  6. Instruction Following 维度相对 Opus-4.6 处于劣势(Fig 12 76.68 vs 86.52)。

未来方向:


全局批判(读者视角)

一、选择性披露 / cherry-pick 的嫌疑确实存在。SimpleQA-Verified 上 DeepSeek 相比开源 baseline 领先"20 个点"被当做亮点反复强调,但被 Gemini-3.1-Pro 压 18 个点的事实也在段落末尾"trails the leading proprietary model"一笔带过。Apex 完整集 38.3(被 GPT-5.4 54.1 / Gemini 60.9 压得很狠)只在表中出现、正文没做多余讨论;反而 Apex Shortlist 的第一被突出——Shortlist 是经过筛选的子集,两个指标的叙事地位明显不对等。HLE 37.7 同样在正文被"reasoning 逼近前沿"一语包装,但实际上落后 Gemini 近 7 个绝对点。GPT-5.4 的长上下文、部分知识列因"API 太忙"没跑,K2.6/GLM-5.1 同样有空栏——这对比较的公允性是实实在在的风险。

二、"Internal Evaluation" 的可复现性问题。§5.4 几乎所有关键数字(Chinese Writing 胜率、Search Q&A 胜率、White-Collar 胜率、R&D Coding pass rate、85 人内部问卷)都来自作者自己构造、自己标注的内部数据集,没有公开 prompt、没有公开标注者 guideline、没有公开 pairwise judge 的具体 rubric。第三方基本无法复现这些胜率。更微妙的是,多处胜率评测把"平局"算成一个独立的 25%–65% 的大桶,然后在正文里只强调 "win 62%"——如果把 tie 的分布一并考虑,差距感会缩水。Codeforces 的内部榜也是自建的:contests 来自 2025 年 5–11 月的 Division 1,选题、打分规则、采样方式都自定,与官方天梯并不直接可比,"排第 23 位"这个叙事需要在"内部模拟"的前提下理解。

三、跨厂商比较的协议差异。作者在 SWE-Verified / Terminal Bench / BrowseComp 全都用自家 harness,工具集、最大步数(500)、最大上下文(512K)都是自己定的;GPT-5 / Claude / Gemini 同样在这套 harness 里跑,但每家官方公布的成绩通常依托各自更贴合自家模型的 scaffold(比如 Claude 的 SWE-bench 成绩常依赖特定 agent 框架)。因此"Terminal Bench 2.0 V4-Pro 67.9"和 Anthropic 官方报告的 Opus 4.6 成绩不一定严格可比。论文自己也承认 Terminal-Bench 2.0 有环境 issue、Verified 子集上 V4-Pro 其实是 72.0——但主表里还是用 67.9。这种"既报问题又报原数"的做法算负责任,但也给叙事留出了回旋余地。

四、1M 上下文的实用价值问题。架构层面 27% FLOPs、更小 KV cache 的宣传是硬指标,但"27% 相对"在 1M 绝对规模下仍意味着巨大算力——单次 1M 推理的成本即便压到 1/4,对绝大多数业务也是负担不起的。Fig 9 显示 V4-Flash-Max 在 1M 的 MRCR 上只有 0.49,连 V4-Pro-Max 也只有 0.66,意味着**"能跑 1M"和"1M 上可靠"之间仍有差距**。CorpusQA 1M 62.0 的绝对分数也不算高。真实业务里极少有任务必须一次塞 1M(长文档常可用 RAG 拆段处理),1M 更多是"能力证明"和"给未来 test-time scaling / long-horizon agent 留空间",而不是当下主流用例的 unlock。换句话说,这是一个面向未来的押注,不是一个当下就能变现的能力,评估它的真正 ROI 需要等多轮 agent、online learning 这些应用形态真正稳定下来。


7. 开放问题与相关性

对读者来说,这篇报告值得追的三条线索:

  1. Hybrid attention 会不会成为新的 default? CSA+HCA 的组合已经把 KV cache 压到 V3.2 的 10%,而 MiniMax M2、Qwen 的 Block Attention、Google 的 Titans 等都在做类似方向。如果 V4 的路线在独立第三方复现中跑得通,那么**"dense attention + KV cache 线性增长"这个默认值可能在 2026 下半年被替代**。值得持续关注 Apex/Codeforces 等强推理 benchmark 在 hybrid attention 模型上的质量损失到底有多少。

  2. mHC 的 "manifold" 抽象有没有普适价值? Birkhoff polytope + Sinkhorn-Knopp 投影的这套机制本质是给 hyper-connection 的矩阵加了一个"非扩张"约束。这和 orthogonal RNN、spectral norm regularization 是一脉的。如果 mHC 的确能稳住上千层、上千 branch 的训练,它可能是残差连接自 2015 年以来第一个有理论支撑的升级。但论文目前只给出了经验结果,缺乏对 why manifold 的严格分析

  3. "能跑 1M" ≠ "1M 上可靠". Figure 9 显示 V4-Flash 在 1M MRCR 上只有 0.49,V4-Pro-Max 83.5 是 V4 系列的最好成绩但仍低于 Gemini-3.1-Pro 的 89.2。长上下文的 retrieval 正确率依然是 open problem。论文强调的是"成本可接受地支持 1M",而不是"1M 上跟 32K 一样准"。

对从业者来说,可操作信号:

对研究者来说,值得挑的短板:

本笔记的局限: