DeepSeek-V4 架构设计深度解析
从基础 Transformer 出发,逐组件剖析 DeepSeek-V4 的每一处创新 · Round 2
全景总览
DeepSeek-V4 是 DeepSeek-AI 于 2026 年发布的万亿参数级 MoE 语言模型,首次实现原生 100 万 token 上下文支持。
| V4-Pro | V4-Flash | |
|---|---|---|
| 总参数 | 1.6T | 284B |
| 激活参数/token | 49B | 13B |
| 上下文 | 1,000,000 tokens | |
| 预训练数据 | 33T tokens | 32T tokens |
| vs V3.2 FLOPs @1M | 27%(3.7x 降低) | 10%(9.8x 降低) |
| vs V3.2 KV Cache @1M | 10%(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:逐组件对比
标准 Transformer
全量 Softmax · O(n²)
DeepSeek-V4
384 专家 · 激活 6 个
压缩+稀疏 · O(n/m×k)
| 组件 | 标准 Transformer | DeepSeek-V4 | 改进类型 |
|---|---|---|---|
| 位置编码 | 绝对位置编码(可学习/正弦) | Partial RoPE(仅后 64 维旋转) | 升级 |
| 注意力 | 全量 MHA · O(n²) · 完整 KV Cache | CSA+HCA 混合:压缩 KV → 稀疏 top-k 选择 → MQA | 替换 |
| 残差连接 | x + f(x),固定系数 1 | mHC:4 路径、双随机矩阵约束、动态权重 | 替换 |
| 归一化 | Layer Norm(减均值+缩放) | RMSNorm(仅缩放,更快) | 升级 |
| FFN | Dense FFN(全参数激活) | DeepSeekMoE(384 专家取 6,稀疏激活) | 替换 |
| 输出头 | 单 token 预测 | MTP:主预测 + 额外 1 步预测 → 推理时投机解码 | 新增 |
DeepSeek-V4 完整架构图
下面我们按照 Transformer 的数据流从下到上,逐一讲解每个组件在 DeepSeek-V4 中的设计。
1输入 Embedding
DeepSeek-V4 使用标准的 Token Embedding,将输入 token ID 映射为 d 维向量。
- 词表大小:128K(沿用 DeepSeek-V3 的 tokenizer,略有扩展)
- 前几层特殊处理:V4-Flash 前 2 层使用纯滑动窗口注意力(SWA),V4-Pro 前 2 层使用 HCA
- 前 3 个 MoE 层:使用 Hash 路由(基于 token ID 哈希确定专家,而非学习型路由)
为什么前几层要特殊处理?
模型最底层的特征还不够语义化。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:
所有头独立 KV
所有头共享 1 套 KV
分组共享 KV
低秩潜变量压缩
稀疏+重度压缩
各方案 KV Cache 对比(H=32, head_dim=128, BF16)
| 方案 | 每层每 token | 1M token @32层 | 相对 MHA |
|---|---|---|---|
| MHA | 16,384 B | ~500 GB | 100% |
| GQA-8 | 4,096 B | ~131 GB | 25% |
| MQA | 512 B | ~16 GB | 3% |
| 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 将残差流宽度从 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(双随机矩阵流形)上:
双随机矩阵的三条铁律
- 每行之和 = 1(每个目标层从历史层总共接收 100% 信息)
- 每列之和 = 1(每个历史层总共向后续层贡献 100% 信息)
- 所有元素 ≥ 0
关键性质:谱范数 ‖Bl‖2 ≤ 1(非膨胀性),且双随机矩阵集合对乘法封闭——不论堆叠多少层,累积映射的谱范数始终 ≤ 1。
实现方式:Sinkhorn-Knopp 算法(交替行/列归一化,迭代 20 次),将学习到的权重矩阵投影回双随机流形。
5前馈网络层:DeepSeekMoE
DeepSeek-V4 沿用 DeepSeekMoE 的细粒度专家架构:
| V4-Pro | V4-Flash | |
|---|---|---|
| 共享专家/层 | 1 | 1 |
| 路由专家/层 | 384 | 256 |
| 激活专家/token | 6 | 6 |
| 专家中间维度 | 3072 | 2048 |
| 总层数 | 61 | — |
- 路由:前 3 层 Hash 路由(确定性、均匀分配),其余层学习型路由
- 亲和度激活:Sqrt(Softplus(·))(区别于 V3 的 Sigmoid)
- 负载均衡:辅助损失无关策略 + 序列级均衡损失(权重 0.0001)
- 激活函数:SwiGLU = x₁ ⊙ (x₂ · σ(x₂))
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-Max | Claude Opus 4.6 | GPT-5.4 | Gemini 3.1 Pro |
|---|---|---|---|---|
| SimpleQA-Verified | 57.9 | 46.2 | 45.3 | 75.6 |
| HLE | 37.7 | 40.0 | 39.8 | 44.4 |
| Codeforces Rating | 3206 | — | 3168 | 3052 |
| Apex Shortlist | 90.2 | 85.9 | 78.1 | 89.1 |
| Putnam-2025 | 120/120 完美分(与 Axiom 并列) | |||
长上下文效率
| vs V3.2 FLOPs | vs V3.2 KV Cache | vs GQA-8 KV Cache | |
|---|---|---|---|
| V4-Pro @1M | 27% (3.7×↓) | 10% (9.5×↓) | ~2% |
| V4-Flash @1M | 10% (9.8×↓) | 7% (13.7×↓) | ~0.5% |
Agent 能力
| 指标 | V4-Pro-Max | 最佳竞品 |
|---|---|---|
| SWE-Verified | 80.6% | Claude Opus 4.6: 80.8% |
| TerminalBench 2.0 | 67.9% | GPT-5.4: 75.1% |
| MCP Atlas Public | 73.6% | Claude Opus 4.6: 73.8% |
关键发现
- V4-Flash-Base 以仅 13B 激活参数(V3.2 的 36%)在多数基准上超越 V3.2-Base(37B 激活),有力证明架构创新的效率增益
- Codeforces Rating 3206 为所有对比模型最高(人类排名前 23)
- 长上下文下 KV Cache 仅为 GQA-8 基准的 2%——原来 100 GB 的需求被压缩到 2 GB
- 知识密集型评测(SimpleQA)仍落后 Gemini 约 18 个百分点,反映参数知识密度的极限
基于 DeepSeek-V4 论文 (DeepSeek-AI, 2026) 及相关前置研究整理 | 整理日期:2026-04-27 | Round 2