DeepSeek-V4 架构设计深度解析

从基础 Transformer 出发,逐组件剖析 DeepSeek-V4 的每一处创新 · Round 2

全景总览

DeepSeek-V4 是 DeepSeek-AI 于 2026 年发布的万亿参数级 MoE 语言模型,首次实现原生 100 万 token 上下文支持。

V4-ProV4-Flash
总参数1.6T284B
激活参数/token49B13B
上下文1,000,000 tokens
预训练数据33T tokens32T tokens
vs V3.2 FLOPs @1M27%(3.7x 降低)10%(9.8x 降低)
vs V3.2 KV Cache @1M10%(9.5x 缩小)7%(13.7x 缩小)
vs GQA-8 KV Cache @1M~2%~0.5%

1M token 是什么概念? 约等于 75 万英文词 / 50 万中文字,相当于将 10 本 500 页的教科书一次性输入模型。截至 2026 年,Claude Opus 4.6 = 1M,Gemini 3.1 Pro = 2M,GPT-5.5 = 1M。DeepSeek-V4 的意义在于:不仅支持 1M 长度,而且效率远超同行。

标准 Transformer vs DeepSeek-V4:逐组件对比

相同/继承 V4 升级 V4 新增 V4 替换

标准 Transformer

Output Head → Next Token
× N 层
Layer Norm
FFN (Dense)
+ 残差
Layer Norm
Multi-Head Attention
全量 Softmax · O(n²)
+ 残差
绝对位置编码 + Embedding
Input Tokens

DeepSeek-V4

MTP 模块 + Prediction Head
× 61 层
mHC (Post/Residual Mixing)
DeepSeekMoE (稀疏 FFN)
384 专家 · 激活 6 个
mHC 残差
mHC (Pre-Block Mixing)
CSA / HCA 混合注意力
压缩+稀疏 · O(n/m×k)
mHC 残差
Partial RoPE + Embedding (128K)
Input Tokens
组件标准 TransformerDeepSeek-V4改进类型
位置编码绝对位置编码(可学习/正弦)Partial RoPE(仅后 64 维旋转)升级
注意力全量 MHA · O(n²) · 完整 KV CacheCSA+HCA 混合:压缩 KV → 稀疏 top-k 选择 → MQA替换
残差连接x + f(x),固定系数 1mHC:4 路径、双随机矩阵约束、动态权重替换
归一化Layer Norm(减均值+缩放)RMSNorm(仅缩放,更快)升级
FFNDense FFN(全参数激活)DeepSeekMoE(384 专家取 6,稀疏激活)替换
输出头单 token 预测MTP:主预测 + 额外 1 步预测 → 推理时投机解码新增

DeepSeek-V4 完整架构图

MTP 模块 (Multi-Token Prediction)
Prediction Head (预测头) → LM Loss
× L 层 Transformer Block
Post-Block Mixing (mHC)
DeepSeekMoE (FFN)
Residual Mixing (mHC)
Pre-Block Mixing (mHC)
Post-Block Mixing (mHC)
CSA / HCA (混合注意力)
Residual Mixing (mHC)
Pre-Block Mixing (mHC)
Embedding (128K 词表)
Input Tokens

下面我们按照 Transformer 的数据流从下到上,逐一讲解每个组件在 DeepSeek-V4 中的设计。


1输入 Embedding

DeepSeek-V4 使用标准的 Token Embedding,将输入 token ID 映射为 d 维向量。

为什么前几层要特殊处理?

模型最底层的特征还不够语义化。CSA 的 Lightning Indexer 需要基于语义进行稀疏选择,在底层效果有限。同理,学习型路由在底层的 token 表征差异不够大,Hash 路由反而更稳定均匀,不会在训练初期引发路由震荡。


2位置编码:RoPE 及其 Partial 应用

2.1 为什么需要位置编码

Transformer 本身不处理序列顺序。不加位置信息,"猫吃鱼"和"鱼吃猫"对模型完全相同。位置编码给每个 token 的表示向量注入位置信息。

2.2 RoPE 的核心思想

RoPE(Rotary Position Embedding)用"旋转"编码位置。每个 token 的向量被视为若干个二维子空间上的指针,根据其位置旋转不同角度:

RoPE(x, p) = R_p · x    (R_p 是位置 p 对应的旋转矩阵)

核心性质:
  RoPE(q, t)^T · RoPE(k, s) = q^T · R_{s-t} · k
  → 注意力分数只依赖相对位置 (s-t),不依赖绝对位置

RoPE 的多频率机制:不同维度对使用不同频率的旋转角,就像时钟的时针、分针、秒针以不同速度转动。这确保即使经过一个"周期",不同维度的组合模式也不会重复,从而区分远距离的不同位置。

与绝对位置编码的本质区别:绝对位置编码直接在输入上加常数向量,注意力分数 q·k 依赖的是 t 和 s 的绝对值;RoPE 通过旋转矩阵的乘法结构,使注意力分数自动退化为只依赖 (s-t)。这是数学结构带来的本质差异,而非近似。

2.3 DeepSeek-V4 的 Partial RoPE

DeepSeek-V4 只对每个向量的最后 64 维应用 RoPE,其余维度不施加旋转。

为什么只用部分维度?

维度类型是否旋转编码内容作用
前 (c-64) 维不旋转纯内容信息不管距离多远,只要语义匹配就能关联
后 64 维施加 RoPE位置信息使注意力分数随距离衰减

64 是经验调出的超参数,在"位置感知"和"内容感知"之间取得平衡。

输出上的负位置 RoPE 抵消技巧:在 CSA/HCA 的 MQA 中,压缩 entry 同时充当 Key 和 Value。Value 也带了 RoPE 旋转,导致注意力输出携带了 KV entry 的绝对位置信息。解决方案:对输出 ot,i 施加 RoPE(position = -t),把绝对位置"反转"掉,留下的就是相对位置差值。类似信号处理里的"调制→解调"。


3注意力机制:CSA + HCA 混合架构

注意力机制是 DeepSeek-V4 最核心的创新点。下面从"为什么要改"开始,逐步展开。

3.1 KV Cache 压缩路线的演进

标准 Softmax 注意力的计算量为 O(n²)。当 n = 1,000,000 时,n² = 1012,无论从计算还是内存角度都不可承受。历代方案逐步压缩 KV Cache:

MHA
所有头独立 KV
MQA (2019)
所有头共享 1 套 KV
GQA (2023)
分组共享 KV
MLA / V3.2
低秩潜变量压缩
CSA+HCA / V4
稀疏+重度压缩
各方案 KV Cache 对比(H=32, head_dim=128, BF16)
方案每层每 token1M token @32层相对 MHA
MHA16,384 B~500 GB100%
GQA-84,096 B~131 GB25%
MQA512 B~16 GB3%
MLA (V3.2)~1,600 B~50 GB~10%
V4-Pro (CSA+HCA)~2.6 GB~0.5%

FLOPs 和 KV Cache 是什么?

FLOPs(Floating Point Operations)= 模型做一次推理需要的浮点运算次数。越大代表越慢、越费电。

KV Cache = 推理时存储已处理 token 的 Key/Value 矩阵所占的 GPU 显存。上下文越长,KV Cache 越大。当 KV Cache 超出 GPU 显存,模型就无法运行。

同期的另一条路线是 MiniMax (2025) 的线性注意力混合方案:用核函数 φ 近似 softmax,将 O(n²) 降到 O(n),但牺牲精确性。DeepSeek-V4 选择了不同的哲学——保持精确计算,但只对少量关键 token 做计算

3.2 Compressed Sparse Attention (CSA)

CSA 是 V4 的主力注意力层,分三个阶段:压缩 → 稀疏选择 → 注意力计算

阶段一:双路重叠 KV 压缩

将每 m=4 个连续 token 的 KV 项压缩为 1 个条目:

双路压缩:
  C_a = H · W_KV_a    (当前窗口 m 个 token)
  C_b = H · W_KV_b    (前一个窗口 m 个 token)

第 i 个压缩 entry = Σ(S_a ⊙ C_a[当前窗口]) + Σ(S_b ⊙ C_b[前一窗口])
                                ↑ 2m 个元素一起做 softmax 归一化 ↑

关键设计:跨窗口重叠压缩 → 边界处信息不断裂
结果:序列长度 n → n/m (压缩 4 倍)

阶段二:Lightning Indexer 稀疏选择

n/m 个压缩 entry 还是太多。Indexer 进一步筛选出 top-k 个最相关的 entry。

Step 1: 压缩 Indexer Key(维度 c_I < c,更轻量)
  K^IComp = 与 C^Comp 同样的压缩操作,但输出维度更小

Step 2: 低秩生成 Indexer Query(先降维再升维,节省参数)
  c^Q_t = h_t · W_DQ          (d → d_c 降维)
  q^I_t = c^Q_t · W_IUQ       (d_c → c_I×n_h^I 升维)

Step 3: 打分(ReLU 激活 + 加权求和)
  I_{t,s} = Σ_h w_{t,h}^I · ReLU(q^I_{t,h} · K^IComp_s)
              ↑ 可学习头权重    ↑ 允许精确为 0 的稀疏性

Step 4: 选出 top-k 个压缩 entry
  V4-Pro: k=1024    V4-Flash: k=512

为什么用 ReLU 而非 Softmax?

Softmax:所有输出 > 0 且和为 1,没有任何输出能精确等于 0。公式:Softmax(z)i = exp(zi) / Σj exp(zj)

ReLU:z < 0 → 精确输出 0;z ≥ 0 → 透传。公式:ReLU(z) = max(0, z)

大量不相关块的点积为负值 → ReLU 后精确为 0 → top-k 自然不选它们。Softmax 做不到真稀疏。

低秩分解为什么节省参数? 以 d=3072, cI=128, nhI=128, dc=512 为例:

直接投影:3072 × 128 × 128 = 50,331,648 参数

低秩(先降后升):512 × (3072 + 128×128) = 9,961,472 参数 → 节省 ~80%

阶段三:Shared KV MQA + 分组输出投影

被选中的 k 个压缩 entry 同时充当 Key 和 Value(MQA 设计,源自 Shazeer 2019),所有 Query 头共享同一套 KV:

o_{t,i} = CoreAttn(query=q_{t,i}, key=C_t^SprsComp, value=C_t^SprsComp)

由于 c×nh 维输出太大,采用分组输出投影:将 nh 头分为 g 组(Pro: g=16, Flash: g=8),每组先降维到 dg=1024,再合并投影回 d 维,降低计算量。

3.3 Heavily Compressed Attention (HCA)

HCA 比 CSA 更激进:更大压缩率,但不做稀疏选择

CSA中等压缩 + 稀疏

  • 压缩率 m = 4
  • 双路重叠压缩
  • Lightning Indexer top-k 稀疏选择
  • 最终 attend k 个 entry + 滑窗
  • 角色:精确捕捉重要历史

HCA重度压缩 + 全量

  • 压缩率 m' = 128(远大于 m)
  • 单路非重叠压缩
  • 无 Indexer,对所有压缩 entry 做注意力
  • 最终 attend n/m' 个 entry + 滑窗
  • 角色:超长程粗粒度背景

两者在模型中交替排列(interleaved),形成互补:CSA 精确检索重要信息,HCA 覆盖全局背景。

3.4 辅助机制

滑动窗口补充分支 (Sliding Window)

纯压缩注意力有一个盲区:query 无法访问自己所在压缩块内的其他 token(因果性要求只能看前面的完整块)。但最近的 token 往往最重要。

解决:每个 query 额外看最近 n_win=128 个未压缩 token。最终输出 = 压缩注意力 + 滑窗注意力。

Attention Sink(注意力水槽)

什么是 Attention Sink? Softmax 强制所有注意力权重加和 = 1。即使上下文中没有相关内容,query 也必须把注意力"花出去"。这会产生噪声。

Attention Sink 在 softmax 的分母里加入一个可学习的常数 exp(z'h):

s_{h,i,j} = exp(z_{h,i,j}) / ( Σ_k exp(z_{h,i,k}) + exp(z'_h) )

这相当于多选题里加入"以上都不对"选项——模型可以选择"什么都不关注",把多余的注意力流入虚拟水槽,输出接近零向量,而不是被迫分配给不相关的内容。

RMSNorm 归一化

为什么注意力 logit 会爆炸? 标准缩放 1/√d 假设 q 和 k 的每个分量方差 ≈ 1。但压缩 entry 是多个 token 的加权平均,方差可能远小于 1(取决于 softmax 权重的集中程度),与 √c 的缩放不对齐。

RMSNorm 直接归一化向量到已知 RMS,绕开这个不确定性:

RMSNorm(x) = x / RMS(x) × γ,  其中 RMS(x) = √(mean(x²))

归一化后 logit 有上界,softmax 不会退化为 near-one-hot,梯度不会消失。


4残差连接:mHC(流形约束超连接)

4.1 标准残差连接的局限

标准残差:output = x + f(x)    (系数固定为 1,不可调)

在 61 层的极深网络中,梯度需穿越所有层,容易爆炸或消失。且所有层"贡献权重"相同,缺乏灵活性。

4.2 Hyper-Connections (HC) → mHC

标准残差
x + f(x)
HC (2025)
多路径 + 可学习权重
mHC (2026)
+双随机矩阵约束

HC 将残差流宽度从 Rd 扩展为 Rnhc×d(nhc=4),通过三个可学习映射 Al, Bl, Cl 控制信号流动:

X_{l+1} = B_l · X_l + C_l · F_l(A_l · X_l)

mHC 的核心创新:将 Bl 约束在 Birkhoff polytope(双随机矩阵流形)上:

双随机矩阵的三条铁律

关键性质:谱范数 ‖Bl2 ≤ 1(非膨胀性),且双随机矩阵集合对乘法封闭——不论堆叠多少层,累积映射的谱范数始终 ≤ 1。

实现方式:Sinkhorn-Knopp 算法(交替行/列归一化,迭代 20 次),将学习到的权重矩阵投影回双随机流形。


5前馈网络层:DeepSeekMoE

DeepSeek-V4 沿用 DeepSeekMoE 的细粒度专家架构:

V4-ProV4-Flash
共享专家/层11
路由专家/层384256
激活专家/token66
专家中间维度30722048
总层数61
Hash 路由 vs 学习型路由

Hash 路由(Roller et al., 2021):根据 token ID 用预定义哈希函数直接映射到专家编号。零计算开销、天然均匀分配,但不考虑语义——"猫"这个词可能只因 ID 尾数是 3 就被分到"专家 3"。适合底层(特征不够语义化)。

学习型路由:用一个小网络根据 token 的语义特征决定发给哪个专家。灵活但增加计算开销,且存在负载不均衡问题。适合中高层(语义已充分分化)。


6输出层:Multi-Token Prediction (MTP)

标准语言模型只预测"下一个 token"。MTP 在主干之上附加额外预测头,同时预测未来多步的 token:

主预测头:预测 t+1 的 token(标准 LM Loss)
MTP 头 1:预测 t+2 的 token(额外监督)
训练时:Teacher Forcing(用真实 token 作为条件)

DeepSeek-V4 设置 MTP 深度 = 1(额外预测 1 步),损失权重 0.3(衰减后 0.1)。

MTP 块是训练专用的吗? 不是!推理时 MTP 头可以用于投机解码(Speculative Decoding)

一次前向传播同时获得草稿:
  主干 → 主预测头 → 草稿 token t+1
  MTP Block → 头1  → 草稿 token t+2

并行验证:
  全部正确 → 一次计算产出 2 个 token ✓
  t+1 错误 → 只产出 1 个(退化为普通推理)

效果:1.5~2× 推理吞吐提升,质量无损(有验证兜底)

7核心结果

知识与推理

指标V4-Pro-MaxClaude Opus 4.6GPT-5.4Gemini 3.1 Pro
SimpleQA-Verified57.946.245.375.6
HLE37.740.039.844.4
Codeforces Rating320631683052
Apex Shortlist90.285.978.189.1
Putnam-2025120/120 完美分(与 Axiom 并列)

长上下文效率

vs V3.2 FLOPsvs V3.2 KV Cachevs GQA-8 KV Cache
V4-Pro @1M27% (3.7×↓)10% (9.5×↓)~2%
V4-Flash @1M10% (9.8×↓)7% (13.7×↓)~0.5%

Agent 能力

指标V4-Pro-Max最佳竞品
SWE-Verified80.6%Claude Opus 4.6: 80.8%
TerminalBench 2.067.9%GPT-5.4: 75.1%
MCP Atlas Public73.6%Claude Opus 4.6: 73.8%

关键发现


基于 DeepSeek-V4 论文 (DeepSeek-AI, 2026) 及相关前置研究整理 | 整理日期:2026-04-27 | Round 2