每层组件标记 · 参数 Shape · 完整前向传播链路 · 总量交叉校验
基于 DeepSeek-V3 Technical Report (arXiv:2412.19437)
| 超参 | 符号 | 值 | 说明 |
|---|---|---|---|
| 词表大小 | V | 129,280 | 扩展 BPE 词表 |
| 隐藏层维度 | d | 7,168 | embedding / residual stream 维度 |
| Transformer 层数 | N | 61 | MLA + MoE block 重复次数 |
| 注意力头数 | nₕ | 128 | 每头维度 dₕ = 128 |
| KV 压缩维度 | d_c | 512 | MLA 低秩 KV 隐向量 |
| Q 压缩维度 | d'_c | 896 | MLA 低秩 Q 隐向量 |
| RoPE 维度 (每头) | dₕᴿ | 64 | 解耦旋转位置编码 |
| 路由专家数 | Nᵣ | 256 | 细粒度 MoE 路由专家 |
| 共享专家数 | Nₛ | 1 | 始终激活的共享专家 |
| 激活路由数 | Kᵣ | 8 | Top-K 门控选择数 |
| 专家中间维度 | d_ff | 2,048 | 每个专家的 SwiGLU FFN hidden |
| MTP 深度 | D | 1 | 额外预测 token 数 |
| 总参数 (Main) | — | ≈671B | 官方公布 Main Model |
| 每 token 激活参数 | — | ≈37B | 稀疏推理时激活量 |
参数量:129,280 × 7,168 = 926,604,800 ≈ 926.6M
归一化后送入 MLA。参数:7,168 (仅 scale γ, 无 bias)
① KV 低秩压缩(Down Projection)
参数量:512 × 7,168 = 3,670,016 ≈ 3.67M
② KV 上投影(Up Projection)
W_UK 参数:16,384 × 512 = 8,388,608 ≈ 8.39M
W_UV 参数:16,384 × 512 = 8,388,608 ≈ 8.39M
③ 解耦 RoPE Key
参数量:64 × 7,168 = 458,752 ≈ 0.46M
最终 key: k_i = [k_i^C(128); k^R(64)] = 192 维/头
④ Q 低秩压缩(Down Projection)
参数量:896 × 7,168 = 6,422,528 ≈ 6.42M
⑤ Q 上投影(Up Projection)
W_UQ 参数:16,384 × 896 = 14,680,064 ≈ 14.68M
W_QR 参数:8,192 × 896 = 7,340,032 ≈ 7.34M
最终 query: q_i = [q_i^C(128); q_i^R(64)] = 192 维/头
⑥ Attention 计算
缩放因子:√(dₕ + dₕᴿ) = √(128 + 64) = √192 ≈ 13.86
⑦ 输出投影
参数量:7,168 × 16,384 = 117,440,512 ≈ 117.44M
⑧ 残差连接
📊 MLA 单层参数汇总:
W_DKV(3.67M) + W_UK(8.39M) + W_UV(8.39M) + W_KR(0.46M) + W_DQ(6.42M) + W_UQ(14.68M) + W_QR(7.34M) + W_O(117.44M) = 166.79M
💡 KV Cache 仅缓存 c_t^KV(512) + k^R(64) = 576/token vs 标准 MHA 的 32,768/token → 压缩比 56.9×
归一化后送入 MoE FFN。参数:7,168
① Gate Network(路由决策)
Expert Centroids E: 256 × 7,168 = 1,835,008 ≈ 1.84M
Bias Terms b: 256 ≈ 0.0003M
路由逻辑:s_i = σ(x·e_i), Top-8(s+b) → 归一化得 g_i
② Shared Expert(1 个,始终激活,SwiGLU)
Gate Proj: 2,048 × 7,168 = 14,680,064 ≈ 14.68M
Up Proj: 2,048 × 7,168 = 14,680,064 ≈ 14.68M
Down Proj: 7,168 × 2,048 = 14,680,064 ≈ 14.68M
Shared Expert 合计:44.04M
③ Routed Experts(256 个,选 Top-8,SwiGLU)
单专家参数:3 × (2,048 × 7,168) = 44,040,192 ≈ 44.04M
256 专家总计:256 × 44.04M = 11,274,289,152 ≈ 11,274.3M
每个专家结构:SwiGLU(x) = (SiLU(W_g·x) ⊙ W_u·x) · W_d
④ MoE 输出 + 残差
📊 MoE 单层参数汇总:
Gate(1.84M) + Shared(44.04M) + Routed_256×(11,274.3M) + Norm(0.007M×2) = ≈11,320.2M
⚡ 每 token 实际激活: Gate(1.84M) + Shared(44.04M) + 8×Expert(8×44.04M=352.32M) + Norm(0.014M) = ≈398.2M
LM Head 参数:129,280 × 7,168 = 926,604,800 ≈ 926.6M
通常与 Token Embedding 共享权重(tie),此时不额外增加参数量
| # | 组件 | Shape | 参数量 (M) | 激活模式 |
|---|---|---|---|---|
| 1 | RMSNorm₁ (pre-attn) | (7168,) | 0.007 | ✅ 全部 |
| 2 | W_DKV | (512, 7168) | 3.67 | ✅ 全部 |
| 3 | W_UK | (16384, 512) | 8.39 | ✅ 全部 |
| 4 | W_UV | (16384, 512) | 8.39 | ✅ 全部 |
| 5 | W_KR | (64, 7168) | 0.46 | ✅ 全部 |
| 6 | W_DQ | (896, 7168) | 6.42 | ✅ 全部 |
| 7 | W_UQ | (16384, 896) | 14.68 | ✅ 全部 |
| 8 | W_QR | (8192, 896) | 7.34 | ✅ 全部 |
| 9 | W_O | (7168, 16384) | 117.44 | ✅ 全部 |
| MLA 小计 | 166.79 | |||
| 10 | RMSNorm₂ (pre-MoE) | (7168,) | 0.007 | ✅ 全部 |
| 11 | Gate Centroids E | (256, 7168) | 1.84 | ✅ 全部 |
| 12 | Gate Bias b | (256,) | ~0 | ✅ 全部 |
| 13 | Shared Expert (3×mat) | 3×(2048,7168) | 44.04 | ✅ 全部 |
| 14 | Routed Experts (256×3×mat) | 256×3×(2048,7168) | 11,274.29 | ⚡ 仅 8/256 |
| MoE 小计 | 11,320.18 | |||
| 单层总计 | ≈11,487.0 | ~565M 激活 | ||
| 组件 | 计算公式 | 参数量 | 占比 |
|---|---|---|---|
| Token Embedding | 129,280 × 7,168 | 926.6M | 0.13% |
| 61 × MLA 全部矩阵 | 61 × 166.79M | 10,174.2M | 1.45% |
| 61 × Shared Expert | 61 × 44.04M | 2,686.4M | 0.38% |
| 61 × Routed Experts (256) | 61 × 11,274.29M | 687,731.7M | 97.65% |
| 61 × Gate Network | 61 × 1.84M | 112.2M | 0.02% |
| 61 × 3 × RMSNorm | 61 × 3 × 7,168 | 1.3M | ≈0% |
| Final RMSNorm | 7,168 | 0.007M | ≈0% |
| LM Head | 7,168 × 129,280 | 926.6M | 0.13% |
| 总计 (LM Head 独立) | — | ≈702.6B | 100% |
| 总计 (LM Head tie embedding) | — | ≈701.7B | 100% |
📌 官方公布:671B (Main Model)
我们估算 ≈702B,差异约 ~4.6%。可能原因:
• 实际某些层的专家数可能不均匀(早期层更少专家)
• 671B 可能排除了 gate bias、norm 等极小参数
• HuggingFace checkpoint: Main Model 671B + MTP Module 14B = 685B
• 精确数字需以开源权重的 state_dict keys 为准
| 组件 | 计算 | 激活量 |
|---|---|---|
| Token Embedding | 129,280 × 7,168 | 926.6M |
| 61 × MLA (全部激活) | 61 × 166.79M | 10,174.2M |
| 61 × Shared Expert (全部激活) | 61 × 44.04M | 2,686.4M |
| 61 × 8 Routed Experts | 61 × 8 × 44.04M | 21,491.5M |
| 61 × Gate (全部激活) | 61 × 1.84M | 112.2M |
| 61 × 3 × RMSNorm | 61 × 3 × 7,168 | 1.3M |
| Final RMSNorm | 7,168 | 0.007M |
| LM Head | 7,168 × 129,280 | 926.6M |
| 每 Token 激活总计 | — | ≈36.3B |
📌 官方公布:37B 激活参数
我们估算 ≈36.3B,差异 <2%,基本吻合 ✅
剩余差距来自:可能的额外 bias 项、未计入的小参数等。
• 标准 MHA: KV cache = 2 × 128 × 128 = 32,768/step
• MLA: KV cache = 512 + 64 = 576/step
• 压缩比 56.9×,长上下文推理显存大幅降低
• 代价:增加了 8 个低秩投影矩阵 (166.79M/层)
• 总参数 671B,但每 token 只激活 ~37B (5.5%)
• 256 个专家中只选 8 个,稀疏度 96.9%
• 1 个共享专家保证基础能力不退化
• Aux-loss-free 策略避免负载均衡损害性能
• 97.65% 的参数在 routed experts 中
• MLA 仅占 1.45%,embedding/output 各占 0.13%
• 绝大多数参数是"暗物质"——每次推理只用一小部分
• 这就是 MoE "大而不贵"的本质
• 首个在超大规模模型上验证 FP8 混合精度 训练
• FP8 存储 optimizer states + gradients
• BF16/FP32 保留 master weights
• 节省显存 + 加速训练,不影响收敛
MTP 模块用于预训练时同时预测后续 D=1 个额外 token,增加训练信号密度。
| 组件 | Shape | 参数量 | 说明 |
|---|---|---|---|
| MTP Embedding | (129280, 7168) | 926.6M | 与主模型共享或独立 |
| MTP Transformer Block | ≈11.5B/层 | ≈11.5B | 1 层 MLA + MoE |
| MTP LM Head | (7168, 129280) | 926.6M | 辅助输出头 |
| MTP 总计 | — | ≈13.4B | 官方报告 ≈14B ✅ |