DeepSeek V4 源码剖析

面向 1.6T 稀疏 MoE 模型的源码剖析。

本专栏基于 DeepSeek-V4-Pro Preview(2026-04-24 在 Hugging Face 开源,MIT 许可)的官方推理实现 inference/model.py、config.json、官方 DeepSeek_V4.pdf 技术报告,以及 DeepSeek 长期维护的三个工程仓库——FlashMLA(MLA 解码 CUDA 内核)、DeepGEMM(FP4/FP8 GEMM 内核)、DeepEP(MoE all-to-all 通信库,2025-02 开源、服务 V3/R1;V4 自己的 EP 方案是 DeepGEMM 里的 MegaMoE),系统拆解 V4 在架构、精度、训练、部署四个维度上的全部设计决策。

flowchart TB
  IN[1M token 输入] --> ATT
  subgraph ATT [注意力 · KV cache 压到 V3.2 的 10%]
    direction LR
    MLA[MLA<br/>head_dim 512] --> CMP[Compressor<br/>滑窗 + KV 几何压缩]
    CMP --> IDX[Indexer<br/>选哪些 token 参与]
    IDX --> SPA[sparse_attn kernel<br/>inference/kernel.py · TileLang]
  end
  ATT --> HC[Hyper-Connections<br/>hc_mult=4 取代残差]
  HC --> MOE
  subgraph MOE [MoE · 384 routed + 1 shared · top-6]
    direction LR
    GATE[Gate<br/>sqrtsoftplus] --> HASH[前 3 层 hash 路由<br/>tid2eid 表]
    HASH --> EXP[Expert<br/>FP4 e2m1]
  end
  MOE --> MTP[MTP 多 token 预测]
  MOE -.通信.-> EP[EP 通信<br/>DeepEP / MegaMoE]
  EXP -.内核.-> GEMM[fp4_gemm / fp8_gemm<br/>FP4 e2m1 权重 · FP8 e4m3 激活]

这个专栏会回答你什么

读完你能做到什么

  1. 说清 1M 上下文是怎么撑住的。 MLA 的 head_dim 512 与 grouped O 投影、Compressor 的滑窗与 KV 几何压缩、Indexer 怎么挑 token、稀疏 attention 内核怎么落地,以及 YaRN/RoPE 在 1M 上的处理(第2章 MLA 进阶、第3章 Compressor、第4章 Indexer、第5章 稀疏内核、第6章 1M 上下文)。
  2. 理解一个 384 专家的 MoE 怎么才不崩。 Gate 为什么用 sqrtsoftplus、前 3 层为什么是 hash 路由(tid2eid 表怎么生成、怎么与学习路由协同)、专家本身怎么组织(第7章 Gate、第8章 hash 路由、第9章 Expert)。
  3. 看懂 Hyper-Connections 取代残差的数学。 hc_mult=4 的结构,以及它在 BF16 与 FP32 之间怎么稳定切换(第10章)。
  4. 掌握混合精度的工程细节。 FP4 e2m1 与 FP8 e4m3 的几何、ue8m0 scale、128×128 块大小,以及 DeepGEMM 内核与 QAT 激活量化(第12章 精度几何、第13章 DeepGEMM、第14章 QAT)。
  5. 跟完训练 pipeline。 Muon 优化器与 AdamW 的关键差异、32T+ tokens 预训练、两阶段后训练(领域 SFT/RL → on-policy 蒸馏)(第17章 Muon 预训练、第18章 后训练)。
  6. 把它跑起来。 并行策略、DeepEP 的 all-to-all 通信、从 DeepseekV4ForCausalLM 配置到 vLLM / SGLang 的对接路径(第15章 并行、第16章 DeepEP、第19章 部署、第20章 生态)。

源码版本

DeepSeek-V4 没有传统意义上的「源码仓库」——公开的是模型权重、配置与推理代码。本专栏分析的对象是它在 Hugging Face 上四月发布期的快照:

来源 版本 说明
deepseek-ai/DeepSeek-V4-Pro 2026-04-24 首发(Release DeepSeek-V4,HF 提交 0e1a0e5) config.json、encoding/encoding_dsv4.py 等;推理代码在前一天的 44572c0(add inference code)已上传
同上 2026-04-27 的 config.json / inference/model.py(HF 提交 4504094;本专栏核对所用的 ModelScope 镜像中对应提交为 32b28f9) 本专栏正文引用的配置基线;与首发的三处差异见下
DeepSeek-V3 技术报告 arXiv:2412.19437 V4 与 V3 的架构对照基准
vllm-project/vllm v0.8.5 第 5、6、11、13、19 章讲「V4 要落到 vLLM 上还缺什么」时,对照的就是这一版的现状
deepseek-ai/FlashMLA 71c7379 第 5 章的稀疏 kernel
deepseek-ai/DeepGEMM 891d57b 第 13 章
deepseek-ai/DeepEP 567632d 第 16 章的 all-to-all
# 跳过 LFS 权重(64 个分片约 865 GB),只取配置与代码
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro
cd DeepSeek-V4-Pro
git checkout 4504094   # 切到本专栏锁定的 04-27 快照

这个仓库此后仍在更新,本专栏的分析对应的是四月那一批文件。需要特别说明版本口径:4 月 24 日首发(Release DeepSeek-V4)时 index_topk 为 512,同日稍后的 Update config.json / Update inference/config.json 把它改成 1024;4 月 27 日又推了两条提交(Update inference/model.py、Update config.json),新增 expert_dtype: "fp4",并给 shared expert 补上 swiglu_limit。本专栏正文统一按 4 月 27 日那一版取值;凡是首发值与之不同的地方,正文会在括号里注明"首发 04-24 为 X"。读者拿到的如果是更晚的版本,配置项与推理代码可能已有出入——正文的结论以架构机制为主,具体字段以你 clone 到的 config.json 为准。

目录

开篇

第一篇:全景

第二篇:注意力革命

第三篇:MoE 引擎

第四篇:超连接与 MTP

第五篇:FP4 / FP8 训练栈

第六篇:分布式与通信

第七篇:训练与对齐

第八篇:生态与部署

适合谁读

学习建议

V4 的源码看似只有 827 行 inference/model.py,但每一行背后都压着一篇论文级的设计决策。建议按"第一篇 → 第二篇 → 第四篇 → 第三篇 → 第五篇 → 其他"的顺序读:

相关专栏

版权声明

本专栏内容为 杨艺韬 版权所有,保留一切权利。未经书面许可,不得全文或大段转载、改编、翻译,或用于任何商业用途(含以本专栏内容训练模型、生成衍生课程或商品)。

欢迎分享本专栏的链接。引用少量内容用于评论、教学或研究时,请署名 杨艺韬 并附上原文链接。

本专栏所引用的 DeepSeek-V4 源码遵循 MIT 许可,分析的版本为 Preview Release(HF 仓库 deepseek-ai/DeepSeek-V4-Pro,2026-04-24 首发、2026-04-27 快照)。后续随官方代码更新,相关章节会标注适用版本范围。