DeepSeek-V4 是新一代开源混合专家(MoE)模型,核心突破在于实现了极低成本的百万级长文本处理。

在这篇博客中,我们将了解 DeepSeek-V4,这一新的 open Mixture-of-Experts language models 家族。它原生支持一百万 token 的 context,同时大幅降低了 inference cost。
与 DeepSeek-V3.2 相比,DeepSeek-V4 将一百万 token context 的成本大约降到了原来的十分之一。它引入了一种新的 attention 设计、一种新的 residual connections 方式、一种新的 optimizer,以及一种新的 post-training pipeline。我们将逐一解析这些内容。
我们将涵盖以下内容:
我是 Amit Shekhar,来自 Outcome School,我在这里教授 AI 和 Machine Learning。
让我们开始吧。
在进入细节之前,我们先来看一下整体情况。
DeepSeek-V4 的目标是解决一个核心问题:让超长 context 变得便宜。现代 reasoning models 和 AI Agents 需要处理非常长的输入——长文档、长 tool histories、长 agent trajectories。Transformer 中标准的 attention 机制在输入变长时会变得非常昂贵。DeepSeek-V4 重新设计了 attention,使得即使是一百万 token 的输入也依然实用。
简单来说:
DeepSeek-V4 = DeepSeek-V3 + Hybrid Compressed Attention + 更好的 Residual Connections + Muon Optimizer + On-Policy Distillation.
我们用真实数字来直观理解一下。在一百万 token 的 context 下:
这是一次巨大的效率提升。现在,让我们逐一解析每一部分。
DeepSeek-V4 以两个模型形式发布。两者都是 Mixture-of-Experts (MoE) 模型。在 MoE 模型中,feed-forward layer 被拆分成许多小的 expert networks,router 每个 token 只选择其中少数几个 experts。这就是为什么总参数量可以非常大,而每 token compute 仍然保持很小。
为了便于你更好地理解,我把这两个模型的差异整理成表格,这样你就可以根据自己的 use case 决定使用哪一个。

这里,“activated” 指的是每个输入 token 实际运行的参数。在 MoE 模型中,每个 token 只有一小部分 experts 处于 active 状态,因此 activated parameters 远小于 total parameters。
两个模型都原生支持一百万 token 的 context。两者都使用超过 32 trillion tokens 进行训练。
DeepSeek-V4-Pro 是更大、能力更强的模型。DeepSeek-V4-Flash 则更小、更快,也更具成本效率。
这是 DeepSeek-V4 中最重要的变化。我们先理解问题。
The Problem. 标准 attention 会将每个 query token 与其他每个 token 进行比较。假设输入中有 N 个 token,成本会按 N x N 增长。在一百万 token 时,这会变成整个序列上一万亿次比较。KV cache,也就是过去 keys 和 values 的记忆,也会随着 N 线性增长。对于长 context,这两者都会成为严重瓶颈。
我们有一篇关于 LLMs 中 KV Cache 的详细博客,解释了什么是 KV cache,以及它为什么重要。
The Solution. 这里就轮到 hybrid attention 设计登场了。DeepSeek-V4 引入了两种新的 attention 类型,并在不同 layers 中交替使用它们:
我们先解读这些名称。
CSA = Compressed + Sparse + Attention。
HCA = Heavily + Compressed + Attention。
学习这个最好的方式是通过一个例子。假设我们正在阅读一个拥有一百万页的巨大图书馆,并且要回答一个问题。标准 attention 就像在回答之前把每一页从头到尾都读一遍。它能工作,但慢得令人痛苦。
CSA 和 HCA 都能解决这个问题,但方式不同。我们会一直使用这个图书馆的例子来理解二者。下面逐个解析。
CSA 通过两步让 attention 变得便宜。
Step 1: Compress. CSA 不再为每个 token 保留 KV cache,而是使用 learned softmax weights 将每 m 个连续 tokens 合并成一个 compressed entry。为了便于理解,假设 m = 4。这样每 4 个 tokens 会合并成 KV cache 中的 1 个 entry。KV cache 会缩小 m 倍。
在我们的图书馆例子中,这就像把每 4 页分组为一张 summary card。我们不再需要读 100 万页,而是只需要查看 25 万张 summary cards。
Step 2: Select. 压缩之后,CSA 仍然不会查看每一张 summary card。它使用一个小型 Lightning Indexer 将每个 compressed entry 与当前 query 进行打分,然后只选择 top-k 个最相关的条目。Lightning Indexer 以 FP4 precision 运行,以降低这一打分步骤的成本。
在我们的图书馆例子中,这就像一个快速扫描员快速翻阅 25 万张 summary cards,为每张卡片评估相关性,然后只把最相关的几张交给我们。接着,我们只需要详细阅读这几张卡片。图书馆的大部分内容都会被完全跳过。
关于 attention 中 Q、K、V 的更深入背景,我们有一篇详细博客:Math Behind Attention: Q, K, V。
下面是一个简单的 ASCII 图:
All tokens: [t1][t2][t3][t4][t5][t6][t7][t8] ...
|__________| |__________|
group 1 group 2
| |
Compressed: [C1] [C2] [C3] ...
| | |
Lightning Indexer scores each one against current query
| | |
score=0.9 score=0.2 score=0.8
| | |
Top-k selection: [ C1 ] ( C2 ) [ C3 ]
picked skipped picked
| |
+-------------+-------------+
|
v
Attention runs only on [C1] and [C3]
(the picked compressed entries)
所以,CSA 先将许多 token 压缩成一个,然后只选择少数几个看起来最相关的 compressed entries。这就是 CSA 降低成本的方式。compute 和 memory 都得到了节省。
上面讲的是 CSA。现在我们来看 HCA。
HCA 采用了不同的 trade-off。它进行更激进的压缩,而且因为压缩后的序列已经很小,所以在其上做 dense attention 的成本也很低,不需要再做 sparse selection。
HCA 使用更大的 group size m',比 CSA 中的 m 大得多。对于 DeepSeek-V4,m' 设置为 128。也就是说,不再是把 4 个 token 合并成一个 entry,而是把 128 个 token 合并成一个 entry。KV cache 会进一步大幅缩小。
在我们的图书馆例子中,这就像把每 128 页分组为一张 summary card。现在总共只剩大约 7,800 张 summary cards。由于卡片数量已经很少了,我们每次就直接把它们全部读一遍。没有必要再去挑 top 几个。
因此,CSA 和 HCA 是在同一目标下的两种不同设计点——让长 context attention 变得便宜。CSA 采用轻度压缩加 sparse top-k selection。HCA 采用激进压缩加 dense attention。两者的结果都是:compute 很低,memory 也很低。
上面讲的是 HCA。现在我们来看看实际模型如何同时使用二者。
在 DeepSeek-V4 中,layers 是交错排列的。对于 DeepSeek-V4-Flash,前两层使用纯 sliding window attention,其余层在 CSA 和 HCA 之间交替。对于 DeepSeek-V4-Pro,前两层使用 HCA,其余层在 CSA 和 HCA 之间交替。这样,不同 layers 会以略有不同的方式处理长 context,而它们结合起来同时覆盖了细粒度选择(CSA)和广泛覆盖(HCA)。
现在,一个自然的问题出现了——如果压缩把非常近期 token 中的重要细节模糊掉了怎么办?
答案就是 sliding window branch。CSA 和 HCA 都会保留一小部分额外的最近未压缩 KV entries。对于 DeepSeek-V4,这个 window size 是 128 tokens。
在我们的图书馆例子中,这就像始终把刚刚读过的最后 128 页完整地放在桌上。压缩用于更早的页面,但最近的页面就在我们面前,保持未压缩并随时可读。这样可以确保局部的细粒度依赖不会丢失。
还有一个小而巧妙的技巧。在 CSA 和 HCA 的核心 attention 中,DeepSeek-V4 会在 softmax 的分母中加入一小组可学习的 sink logits。这使得每个 attention head 的 attention scores 总和可以小于 1。
这为什么有帮助?在标准 attention 中,scores 被强制加总为正好 1。这意味着每个 query token 都必须把所有 attention 分配到某个地方,即使 context 中没有任何内容真正相关。Attention sinks 允许模型说“这些现在都不重要”,从而减少整体 attention。
DeepSeek-V4 还会在核心 attention 步骤之前,对 queries 和 compressed KV entries 应用 RMSNorm。这能保持 attention logits 稳定,并防止它们爆炸。
Note:综合起来,CSA、HCA、Sliding Window 和 Attention Sink 共同实现了一种 trade-off:更少的 memory、更少的 compute,同时质量没有明显损失。这就是让一百万 token context 变得实用的原因。
上面讲的是 attention。现在我们来看看 Transformer 内部的 residual connections。
先解读这个名字。
mHC = Manifold + Constrained + Hyper + Connections。
在普通 Transformer 中,每一层都会把输出加到一个“residual stream”上——这是一个从模型底部流向顶部的共享信号。Hyper-Connections (HC) 通过 n_hc 的因子扩大这个 residual stream(在 DeepSeek-V4 中设为 4),将单一流变成多个并行流。三个可学习矩阵(A、B、C)会在每一层对这些流进行混合,从而让模型在信息流动方式上拥有更大的灵活性。
纯 HC 的问题在于,当我们堆叠很多层时,它会变得数值不稳定。信号可能会爆炸或塌缩,训练也会失效。
于是,mHC 登场解决这个问题。mHC 通过将 residual mapping matrix 约束在一个特殊的 manifold 上来修复该问题,这个 manifold 叫做 Birkhoff polytope——即 doubly stochastic matrices 的集合。一个 doubly stochastic matrix 是指每一行和每一列的和都为 1 的矩阵。这个简单约束将矩阵的最大拉伸因子(spectral norm)限制在 1,因此信号在经过几十层时不会爆炸。
结果就是,更深的堆叠可以稳定训练,同时模型表达能力也得以保留。它完全有效。
上面讲的是 mHC。现在我们来看 optimizer。
DeepSeek-V4 将大部分参数的 optimizer 从 AdamW 替换为 Muon。
Muon = 一种使用完整 gradient matrix 并对 update direction 进行 orthogonalization 的 optimizer。
这为什么重要?像 AdamW 这样的多数 optimizer 会把每个权重独立处理。而 Muon 则不同,它会查看完整的 gradient matrix,并在执行 weight update 前应用 orthogonalization 步骤。这种 orthogonalization 使用 Newton-Schulz iterations 来完成。它会将 update matrix 的所有 singular values 归一化到接近 1,这样更新中的任何单一方向都不会占主导。结果就是更快的 convergence 和更稳定的训练。
有几个重要点:
这让我们同时获得两方面的优势。Muon 在关键地方带来更快的 convergence,而 AdamW 仍保留在那些已经被证明效果良好的部分。
现在,我们来看看 DeepSeek-V4 如何让 inference 更快、更便宜。答案是 FP4 Quantization-Aware Training。
先解读这个概念。
DeepSeek-V4 将 FP4 应用于两个关键位置:
这里还有一个更巧妙的细节。FP8(E4M3)比 FP4(E2M1)多 2 个 exponent bits,因此它具有更宽的 dynamic range。正因为如此,FP4 block scale factors 在 dequantization 时可以完全吸收进 FP8 格式。这意味着 FP4 到 FP8 的 dequantization 是 lossless 的,并且现有的整个 FP8 training pipeline 可以直接复用,无需任何修改。
最终结果是 top-k selector 的速度提升 2 倍,同时保留了 99.7% 的 KV entries recall。没有明显的质量损失。
现在我们已经了解了 architecture 和 optimizer,是时候了解 pre-training 了。
Data. pre-training corpus 超过 32 trillion tokens。它包含数学内容、代码、网页、长文档、科学论文和多语言数据。团队特别重视长文档整理,因为该模型就是为长 context 构建的。
Sequence length scheduling. 训练并不是直接从一百万 token 开始的。首先,模型在 4K 的 sequence length 上训练。然后长度扩展到 16K,之后到 64K,最后到 1M。Sparse attention 也会逐步开启。模型首先用 dense attention 进行前 1T tokens 的 warm-up,然后在 64K 时引入 sparse attention,并在训练的剩余阶段保持开启。
Mitigating Training Instability. 训练 trillion-parameter MoE models 很难,loss spikes 会发生。但问题在于,简单回滚并不能阻止下一次 spike 的发生。DeepSeek 团队发现了两个实用技巧来解决这一问题:
有了这两个技巧,训练可以一路保持稳定。
到目前为止,我们已经了解了 pre-training。现在,是时候了解 post-training 了。
Post-training 是 DeepSeek-V4 与许多其他模型不同的地方。这个 pipeline 分为两个阶段。我们逐一解析。
对于每一个目标领域,比如 mathematics、coding、agent use、instruction following 等,DeepSeek 团队都会训练一个单独的 expert model。每个 expert model 都分两步构建。
首先,base model 在高质量、领域特定的数据上进行 Supervised Fine-Tuning (SFT)。这为该领域建立了基础能力。随后,使用 GRPO (Group Relative Policy Optimization) 进行 Reinforcement Learning,并由领域特定的 reward signals 引导。这样会进一步强化模型在该领域特定成功标准上的表现。
在这一阶段之后,团队会得到多个 specialist expert models——每个领域一个,并且每个都针对不同 reasoning efforts 进行训练——各自在自己的领域表现出色。
上面讲的是 Stage 1。现在我们来看 Stage 2。
现在,一个自然的问题出现了——我们该如何把这些 expert models 合并成一个最终统一模型?
答案就是 On-Policy Distillation (OPD)。
简单来说:
On-Policy Distillation = student model 自己生成输出,并学习匹配每个任务对应的正确 teacher expert 的概率分布。
让我们理解一下 OPD 与常规 distillation 的不同之处。
在常规 distillation 中,student 从 teacher 生成的数据中学习。但这里有一个问题——student 从未见过它在 inference 时真正会产生的那种输出。这会在训练和真实行为之间造成差距。
在 OPD 中,student 会采样自己的 trajectories。这就是“on-policy”的部分。student 写出自己的 drafts,而 teacher 通过提供它本会使用的完整 vocabulary distribution 来纠正每个 token。student 通过 reverse KL loss 被拉向 teacher 的 distribution。Reverse KL 是 mode-seeking 的——它会推动 student 将 probability mass 集中在 teacher 的 probability mass 集中的地方,而不是把概率分散到所有 teacher modes 上。这会带来更尖锐、更果断的输出。
此外,不同 teacher 会根据任务进行加权。对于数学任务,math expert 的权重更高。对于 coding 任务,coding expert 的权重更高。这样,所有 specialist knowledge 就被融合进一个统一的 student 中。
这一步替代了 DeepSeek-V3.2 使用的传统 mixed RL stage。团队发现,与 weight merging 或 mixed RL 相比,OPD 能带来更稳定、更忠实的 knowledge transfer,因此它成为 DeepSeek-V4 post-training pipeline 中的核心 consolidation step。
上面讲的是 post-training。现在,我们来看看 DeepSeek-V4 在 inference 时如何真正服务用户。
DeepSeek-V4 支持三种 reasoning modes,用户可以根据任务难度进行选择。为了便于你更好地理解,我把它们的差异整理成表格,这样你就可以根据自己的 use case 决定使用哪一个。

对于 Think Max mode,注入的 system prompt 本质上是在告诉模型:Reasoning effort 设置为绝对最大,不允许任何 shortcuts。要非常彻底,把问题分解到根本原因,严格地用所有 edge cases 和 adversarial scenarios 对逻辑进行压力测试,并明确写出每一个中间步骤、考虑过的替代方案以及被拒绝的假设。这个指令会把 reasoning 尽可能推到极限。
这样一来,当问题简单时,模型可以很便宜;当问题困难时,模型则可以慢但强大。我们可以根据自己的 use case 来控制 trade-off。
现在,让我们把所有内容串联起来,看看 DeepSeek-V4 如何端到端运行。
一句话概括:一个 token 进入 embedding layer,穿过多个 Transformer blocks(每个 block 都在 CSA/HCA attention 与 DeepSeekMoE feed-forward layer 之间交替,并由 mHC residual connections 包裹),最后通过 prediction head 和 MTP modules 输出。
下面是 DeepSeek-V4 中一个 Transformer block 的高层架构:
输入 Tokens
|
Embedding
|
+----------------|----------------+
| Pre-Block Mixing |
| | |
| CSA / HCA | <- Hybrid Attention
| | |
| Post-Block Mixing |
| | |
| Residual Mixing | <- mHC residuals
| | |
| Pre-Block Mixing |
| | |
| DeepSeekMoE | <- Mixture of Experts FFN
| | |
| Post-Block Mixing |
| | |
| Residual Mixing | <- mHC residuals
+----------------|----------------+
(repeat for L layers)
|
Prediction Head
|
MTP Modules <- Multi-Token Prediction
|
输出
在堆栈顶部,prediction head 和 MTP (Multi-Token Prediction) modules 生成输出。MTP 允许模型在训练期间一次预测多个 token,从而提升 data efficiency。
这就是 DeepSeek-V4 如何端到端运行的方式——将强大能力与一百万 token 的高效率结合起来。
让我们回顾一下已经解析过的内容:
这就是 DeepSeek-V4 系列如何为 open large language models 开启 million-length contexts 的新时代。
- 原文链接: x.com/amitiitbhu/status/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码