DeepSeek V4 源码剖析

前言:1.6 万亿参数的工程美学

作者 杨艺韬 · 6,666 字

前言:1.6 万亿参数的工程美学

"Architecture is the thoughtful making of space." —— Louis Kahn

当一个 1.6 万亿参数的稀疏 MoE,在 1M token 上下文里,把单 token 推理 FLOPs 压到上一代的 27%,把 KV cache 压到 10%——这不是参数的胜利,是空间的胜利。


一、序幕:2026 年 4 月 24 日凌晨的那次推送

2026 年 4 月 24 日凌晨,杭州西溪园区某栋安静的办公楼里,DeepSeek 的工程师们把一个被命名为 DeepSeek-V4 的预览版模型推到了 Hugging Face 上。

凌晨四点,仓库 deepseek-ai/DeepSeek-V4-Pro 出现了第一条 commit。仓库里悄悄躺着六类文件——

DeepSeek-V4-Pro/
├── README.md                       # 13.2 KB,模型卡 + BibTeX
├── DeepSeek_V4.pdf                 # 4.48 MB,技术报告
├── LICENSE                         # 1.08 KB,MIT
├── config.json                     # 1.83 KB,架构配置
├── generation_config.json          # 170 B,推理默认值
├── inference/
│   └── model.py                    # ~800 行,完整推理实现
├── encoding/                       # 提示编码与 chat template
│   └── encoding_dsv4.py
└── model-{00001..00064}-of-00064.safetensors  # 64 个权重分片,总 865 GB(FP4 + FP8)

这是一份克制到近乎吝啬的发布:

但这份吝啬,给真正想懂 LLM 内核的人留下了世界上最干净的一份阅读材料

而恰恰是这种"克制"——一份可以一口气读完的源码 + 一份技术报告 + 一组配置文件——决定了这本书能成立。


一·补:V4 发布后的开源生态三条传导路径

V4 的影响力发布后沿着三条独立路径扩散——每一条都是可以观察到的公开事实,不需要任何内部资料:

第一条路径:推理引擎集成

V4 模型卡在 HuggingFace 上一个月内累计下载量达到 137,784 次(HF 页面统计),是 V3 系列发布同期可观测下载量的数倍。下游推理引擎(vLLM / SGLang / TensorRT-LLM 等)需要为 DeepseekV4ForCausalLM 这个新 architecture 适配 KV cache 结构、稀疏 kernel、路由器等组件——这是引擎社区在 V4 发布后的主要工作。这条路径上的关键词是"怎么把 V4 跑起来"。

第二条路径:价格基线下移

V4 Pro 的官方 API 单价是 $0.145 / M input + $3.48 / M output,V4 Flash 是 $0.14 / M input + $0.28 / M output(来自官方 API 文档)。这个价格组合把"开源 + 1M 上下文 + 接近 frontier 模型质量"的最低单价基线一次性大幅下移。这条路径上的关键词是"价格塌陷"——任何依赖闭源 LLM 的产品都需要重新评估"该不该把后端从闭源切到 V4"。

第三条路径:研究社区的可复现性

V4 把技术报告 + 完整源码 + 完整权重 + 配套 kernel 仓库(FlashMLA / DeepGEMM / DeepEP) 一起开源在 MIT 许可下。这意味着研究社区可以完整复现它的训练栈与推理栈,对 Hyper-Connections / sqrtsoftplus / FP4 expert 等设计做独立验证。这条路径上的关键词是"研究可复现"——开源的真正力量不只在于"用",更在于"可以被任何人挑刺与改造"。

这三条路径合起来,决定了 V4 不只是一次模型发布,更是一次开源生态的版本号 +1——所有跟 LLM 相关的工程决策、研究选题、商业模式,都需要把 V4 加入坐标系才能继续走。


二、三组数字:V4 真正颠覆了什么

打开 README.md,模型卡的开头写着三组数字。它们看起来像是营销话术,但只要你顺着源码读完一遍,就会发现它们是结构性突破的客观刻度:

flowchart LR
  V32["DeepSeek-V3.2 基准<br/>(1M context)"]:::base
  V4Flops["V4 推理 FLOPs<br/><b>= 27% × V3.2</b>"]:::win
  V4KV["V4 KV Cache<br/><b>= 10% × V3.2</b>"]:::win
  V4Price["V4 Pro Decode 价格<br/><b>= 大约 V3.2 的 1/3</b>"]:::win

  V32 -->|混合注意力 CSA + HCA| V4Flops
  V32 -->|Compressor + Indexer + sparse_attn| V4KV
  V32 -->|FP4 experts + FP8 linear + Muon 训练栈| V4Price

  classDef base fill:#1f2937,stroke:#475569,color:#e2e8f0;
  classDef win fill:#312e81,stroke:#6366f1,color:#fafafa;

第一组数字,关乎可以负担——之前要 8 张 H800 才能塞下的 1M 上下文推理,现在 2-3 张就行; 第二组数字,关乎可以扩展——KV 的 10% 不是简单加压缩,而是把序列从"线性 KV 增长"改造成"分层稀疏 KV"; 第三组数字,关乎可以普及——一个对标 GPT-5.5 / Claude Opus 4.7 的开源模型,把 token 价格压到了不到对手的三分之一。

后两组数字本质上来自前一组:FLOPs 降下来 → KV 降下来 → 显存利用率提高 → 单卡并发提高 → 单 token 成本下来。一切的源头,都是那条"混合注意力"流水线——也就是 V4 在源码层面真正动了大手术的地方。

这本书会一行行带你看,那条流水线长什么样,每一段为什么要这么写。


二·补 在 V4 发布第 4 天就动笔,是不是太急了

写一本"V4 源码剖析"在 V4 发布第 4 天动笔,会有几个明显的风险:

但选择"现在写",是基于三个判断:

  1. 越早写、越能保住读者的"第一手感"——V4 发布后 1-2 个月,市面会涌现大量二手解读。这些解读里多数是"读了别的解读之后写的解读",第一手的源码视角反而被稀释。在第一手材料还在 HF 仓库 main 分支的此刻动笔,能把"原始源码"这一手感传递给读者。
  2. GA 与 Preview 的差异,可以用版本号注释处理——本书每一处源码引用都标注了 commit hash 与 HF revision。如果 GA 版本与 Preview 有差异,本书会在对应章节加一个版本号注释,而不是推倒重来。这是工程上可以承受的代价。
  3. V4 的"反常识"设计在源码里都已经定型——HC、Compressor、Indexer、grouped O、FP4 expert 这些核心设计在 Preview 版的源码里已经写死。后续无论 GA 还是社区适配,这些核心都不会变。这本书写的就是这些核心。

换句话说——这本书赌的是"V4 的核心设计已经稳定",而不是"V4 的所有数字都已经稳定"。前者比后者重要得多。


二·补·补 为什么"800 行源码"是黄金标准

很多大模型框架的代码量动辄数十万行——HuggingFace transformers 主仓库 60 万+ 行、vLLM 主仓库 30 万+ 行、Megatron-LM 也有 10 万+ 行。但 DeepSeek-V4 的全部推理实现只有约 800 行——压在 inference/model.py 一个文件里。

这种"小而完整"对学习者来说是稀缺的:

类比一下:读 Linux kernel 的网络栈需要先理解 kernel 整体架构,读 PostgreSQL 的查询规划器需要先吃透整个 PG 编译流程;但读 V4 的推理实现,直接打开文件就行

这种黄金标准在历史上能找到几个对应物:

V4 把 1.6T MoE 的推理压在 800 行的同一类作品里。这本书所做的,就是带你一行一行读这 800 行——告诉你每一行背后的设计选择、它的上下游、它在前作里是什么样、为什么 V4 这样改。


三、这本书写给谁

如果你属于以下任何一种身份,这本书就是为你准备的:

身份 你最关心什么 本书在哪里给你
vLLM / SGLang 内核工程师 V4 怎么对接 PagedAttention?sparse_attn 内核长什么样? 第 5、19 章
大模型预训练工程师 384 专家、Muon 优化器、32T tokens 的预训练 pipeline 长什么样? 第 7-9、17 章
后训练 / 对齐工程师 两阶段(领域 SFT/RL → on-policy 蒸馏)实操怎么走? 第 18 章
AI 基础设施 / 量化工程师 FP4 e2m1 + FP8 e4m3 + ue8m0 scale 在 1.6T 模型上为什么能稳? 第 12-14 章
算法研究者 MLA → Compressor → Indexer 这条稀疏注意力研究主线背后的数学逻辑 第 2-4 章
架构师 / 决策者 把 V4 与 V3 / Llama 4 / Qwen3 / Mistral / Gemini Flash 横向对比,做选型与落地判断 第 1、20 章

如果你刚开始接触 LLM,建议先把官方技术报告读完一遍,再回来跟着源码读这本书——本书不会从"什么是 attention"讲起,那些前置知识是可以从《PyTorch 内核源码剖析》《vLLM 推理内核深度解析》两卷打底拿到的。


三·补 看完这本书你能"会"什么

源码书的价值不在于"知道",而在于"会"。读完这本书你应该具备以下五项可验证的能力:

能力一:能在 vLLM / SGLang 主仓库读懂任何 V4 相关 PR

V4 上线后下游引擎会持续合并 V4 适配 PR——KV cache 形状改造、稀疏 kernel 集成、YaRN 长上下文调优、grouped O 投影的 fused kernel 等等。这些 PR 的改动通常涉及"多个引擎模块的非平凡协作"。读完本书,你不需要任何额外资料就能直接打开 PR 描述、扫一遍 diff、判断它是否正确。

能力二:能从 V4 的 config.json 反推出该尺寸的 KV / FLOPs / 显存占用

第 1 章的动手实验给了你这套反推方法。掌握之后,下次任何一个新 MoE 模型发布——不管是 V5 / Qwen4-MoE / Llama 5——你都能在 5 分钟内从 config 反推出"它在 1M context 下大概要几 GB KV、单 token decode FLOPs 是多少",从而判断它的工程经济性。

能力三:能独立写一个简化版的 384-expert + Hash-routing + sparse-attention 模型

第 2-9 章的源码逐行剖析给了你重构所需要的全部模块。结合 PyTorch(这本书系列另一卷讨论的)和 nanoGPT 模式的训练 loop,你能用 200-500 行代码实现一个"能跑、有 V4 关键创新"的 toy model——尺寸缩小到 100M 总参,可以在单卡 A100 上训练数小时见效果。

能力四:能识别其他论文 / 开源项目里"看起来新颖"实则是 V4 同源思路的设计

V4 在架构层做的几个创新(HC、Compressor、Indexer、grouped O、attn_sink)会被其他模型陆续 copy。读过本书后,看到任何论文 / 模型说"我们引入了 X 机制",你能立刻判断它与 V4 的对应模块是否同源、做了哪些扩展或改造。这种"识别同源思路"的能力是在快速演进领域里"不被概念噪音淹没"的关键。

能力五:能跟资深 LLM 架构工程师做实质对话

在这个领域,所有人都在吃 V4 的源码。读完本书,你跟任何一个资深 LLM 工程师讨论"V4 的哪个设计你觉得不够好"、"V5 如果出可能会怎么改"、"V4 在某种特殊负载下会有什么 bug"——这些对话你都能加入并贡献观点。这是一种**"加入领域核心圈"**的工程身份。


四、本书的写作方法:源码原教旨主义

写一本"源码剖析",最容易掉进的坑是把源码贴上来后用一段抽象文字复述一遍。读者读完,得到的还是 抽象的二手描述——离真相又远了一层。

这本书坚持三条铁律:

4.1 真实代码,标到行号

凡是引用源码,全部以官方仓库为准,并在引用处给出"文件路径:行号"标注,例如:

inference/model.py:459Attention.__init__ 中,self.wq_b = ColumnParallelLinear(self.q_lora_rank, self.n_heads * self.head_dim) 表明 Q 投影矩阵被切分到 TP 多卡。

我不会"凭印象写出类似的代码"。如果一段细节没法在 HF 仓库里被精确定位,本书宁可不写。

4.2 设计意图先行,源码居中,工程实践收尾

每一节都遵循"为什么 → 怎么做 → 实战代价"的递进:

4.3 图先于文字

V4 的源码里有大量"看起来很普通的张量操作",但只要画一张图,结构就会跳出来。本书每章至少 2 个 Mermaid 图(架构图、序列图、状态图、数据流图)或对比表格。文字写得再清楚,也不如一张正确的图能帮读者建立脑内模型。

flowchart TB
  subgraph 读者期望["读者真正需要的"]
    A1["1. 这段代码在<b>什么位置</b>"]
    A2["2. 它<b>为什么</b>这样写"]
    A3["3. 它给<b>谁</b>用"]
    A4["4. 它<b>不能</b>怎么写"]
  end
  subgraph 普通源码书["普通源码书提供的"]
    B1["✓ 贴源码"]
    B2["✗ 复述源码"]
    B3["✗ 偶尔讲设计"]
    B4["✗ 不讲约束"]
  end
  subgraph 本书做法["本书坚持的"]
    C1["✓ 源码 + 行号"]
    C2["✓ 设计意图先行"]
    C3["✓ 用 Mermaid 标位置"]
    C4["✓ 工程代价 / 不能怎么写"]
  end
  普通源码书 -.->|读完仍困惑| 读者期望
  本书做法 -->|读完能复述| 读者期望

四·补 一本源码书的工程纪律

源码书在工程上的纪律,归根到底就两条:真实密度

真实意味着:

密度意味着:

杨艺韬讲堂的 21 本书都遵循这两条纪律。这本书是第 22 本——纪律没有任何放松。


四·补·补 给不同读者的精读路径

如果你时间紧、想在 1-2 周内吃透 V4 的核心,按你的身份选一条路径:

推理工程师(vLLM / SGLang / TensorRT-LLM 内核侧)

00 前言 → 01 全景 → 02 MLA → 03 Compressor → 04 Indexer
   → 05 sparse_attn 内核 → 19 部署 → 20 生态

主线是"模型架构 → 引擎对接"。重点章是 5、19——一个讲 V4 的稀疏 kernel 长什么样,一个讲 vLLM / SGLang 怎么把这些 kernel 接进 PagedAttention / 调度器。读完这条线,你应该能在 vLLM 主仓库里看懂任何与 V4 相关的 PR。

训练与对齐工程师

00 前言 → 01 全景 → 07 Gate → 08 Hash → 09 Expert
   → 10 HC → 11 MTP → 17 Muon → 18 后训练 → 14 QAT

主线是"参数空间 → 训练栈 → 后训练"。重点章是 10、17、18——HC 让你理解 V4 的"残差替代品"为什么稳定,Muon 让你理解 V4 的优化器选型,后训练让你理解 V4 的"领域专家 + 蒸馏"两阶段。读完这条线,你应该能独立设计一个简化版的 384-expert MoE 训练 pipeline。

算法研究者(架构与稀疏注意力方向)

00 前言 → 01 全景 → 02 MLA → 03 Compressor → 04 Indexer
   → 05 sparse_attn → 06 YaRN → 10 HC

主线是"V2 / V3 / V3.2 → V4 的算法演进"。重点章是 4、10——Indexer 是稀疏注意力研究的最新工业实证,HC 是"残差以外的 path mixing"研究方向的工业实证。读完这条线,你能看清 V4 在"稀疏 + 残差替代"这两个学术热点上的工程选择。

量化 / 精度工程师

00 前言 → 01 全景 → 12 FP4/FP8 几何 → 13 DeepGEMM
   → 14 QAT → 15 分布式 → 16 DeepEP

主线是"精度选择 → kernel 实现 → 分布式开销"。重点章是 13、14——DeepGEMM 是 V4 FP8/FP4 GEMM 的核心实现,QAT 章节讲的 act_quant 路径决定了 V4 在生产中精度损失的来源。

架构师 / 决策者

00 前言 → 01 全景 → 11 MTP → 18 后训练 → 19 部署 → 20 生态

主线是"全景 → 训练 → 部署 → 选型"。这条路径不深入源码细节,但能让你做出"该不该用 V4"、"用 Pro 还是 Flash"、"自建还是用 API"这些战略决策。


五、源码版本锁定(重要)

V4 当前为 Preview Release,2026-04-24 在 Hugging Face 首次提交,源码、配置、权重都可能在正式版释出前继续微调。本书所有源码引用基于以下版本:

资产 仓库 版本锁定
推理实现 model.py huggingface.co/deepseek-ai/DeepSeek-V4-Pro 2026-04-27 提交(仓库 main 分支)
配置 config.json 同上 2026-04-27 提交
权重 safetensors 同上 64 个分片,总 865 GB(FP4 + FP8)
技术报告 PDF 同上 2026-04-24 首次发布版
FlashMLA 内核 github.com/deepseek-ai/FlashMLA 2026-04-27 commit
DeepGEMM 内核 github.com/deepseek-ai/DeepGEMM 2026-04-24 commit
DeepEP 通信库 github.com/deepseek-ai/DeepEP 2026-04-24 commit

取源命令(建议读者跟读时同步拉到本地):

# 1. 模型仓库(含 inference/model.py、config.json、权重清单)
#    注意:如果你只读源码,加 --no-checkout-lfs 跳过 865 GB 权重
git clone https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro
cd DeepSeek-V4-Pro
git lfs install --local
# 只拉取小文件,不拉权重:
git lfs pull --include="*.json,*.py,*.md,*.pdf"

# 2. 三个工程仓库
git clone https://github.com/deepseek-ai/FlashMLA.git
git clone https://github.com/deepseek-ai/DeepGEMM.git
git clone https://github.com/deepseek-ai/DeepEP.git

如果未来 V4 GA(正式版)的代码与本书引用版本出现实质差异,本书会在每章页眉补一行"V4 GA 适配差异:xxx"。


五·补·补 本书所引用事实的"五级证据"

为了让读者能信任这本书的每一个断言,所有内容按"证据强度"分五级处理:

A 级 - 源码可验证:可以直接 git clone https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro 后用 grep 找到。例如"Indexer 类有自己的 Compressor"——任何人 5 秒能确认。本书的源码引用全部是 A 级。

B 级 - 配置可验证:可以从 config.json / generation_config.json 直接读出。例如 "hc_mult=4"、"n_routed_experts=384"。这些数字不会变(除非 GA 调参)。

C 级 - 官方文档可验证:可以从 README / 技术报告 PDF 找到。例如"V4 用 Muon 优化器"、"32T+ tokens pretrain"。如果 PDF / README 后续更新,本书会同步更正。

D 级 - 论文可追溯:依赖外部已发表论文(YaRN / GQA / Streaming LLM 等)。引用时给 arXiv / DOI。

E 级 - 工程推断:基于源码 + 配置做的推断(如"为什么是 16 组 group"、"为什么前 3 层 hash")。本书会显式标注"这是基于 X 的工程推断"。这一级别是本书写作中最容易出错的地方——读者发现错误请联系作者,会在再版中修正。

本书严格不做的事情:

读到 D / E 级别时请保持适度怀疑,欢迎反馈。


六、阅读路径推荐

V4 的源码不长,但信息密度极高。强行从第 1 章读到第 20 章是可行的,但更建议按你最关心的入口切入:

flowchart LR
  Start(["开篇 / 第 1 章<br/>架构总览"])
  Att["第 2-6 章<br/>注意力革命"]
  HC["第 10-11 章<br/>HC + MTP"]
  MoE["第 7-9 章<br/>MoE 引擎"]
  Prec["第 12-14 章<br/>FP4 / FP8"]
  Dist["第 15-16 章<br/>分布式"]
  Train["第 17-18 章<br/>训练与对齐"]
  Deploy["第 19-20 章<br/>部署与生态"]

  Start --> Att --> HC --> MoE --> Prec --> Dist --> Train --> Deploy

  Start -.推理工程师快路径.-> Att -.-> Deploy
  Start -.训练工程师快路径.-> MoE -.-> Train
  Start -.精度 / 量化工程师快路径.-> Prec -.-> Dist

六·补 一段写在卷首的"开源伦理"声明

V4 的开源是 MIT 许可——意味着你可以商业使用、修改、分发,无需付费、无需归属于 DeepSeek 团队。这种慷慨在 LLM 商业化白热化的 2026 年是反常的。

本书的态度是:配得上这份慷慨,最起码的方式是认真写

具体来说:

这些都不是"特别高的标准",而是"写源码书应有的最低标准"。本书会守住这个最低标准。


七、丛书定位:V4 这本在大版图里的位置

杨艺韬讲堂目前已经覆盖三大领域共 21 本开源专著,本书是 AI Agent / LLM 卷的第 9 本:

AI Agent / LLM 卷:
  ├─ Claude Code 源码剖析
  ├─ Harness Engineering
  ├─ MCP 协议剖析
  ├─ LangChain
  ├─ LangGraph
  ├─ RAG 工程实践
  ├─ vLLM 推理内核                ◀── 本书第 5、19 章会反复引用
  ├─ LLM 评估工程(Evals)         ◀── 本书第 18 章会引用
  ├─ DeepSeek V4 源码剖析(本书)
  └─ PyTorch 内核源码剖析          ◀── 本书第 12-13 章会引用

它与 vLLM 卷形成"模型 ↔ 引擎"的对偶——

它与 PyTorch 卷形成"算法 ↔ 框架"的对偶——

它与 Evals 卷形成"训练 ↔ 评估"的对偶——

每写 3 章,本书会主动给读者拉一条到丛书其他卷的钩子。这些钩子不是"交叉营销",而是让你知道这部分知识在更大版图里的位置


八、我对读者的承诺

这本书不会出现以下内容:

这本书会出现以下内容:

字字如黄金,不堆形容词,不凑字数,不重复结尾。


八·补 这本书与杨艺韬讲堂"风格连贯性"的关系

杨艺韬讲堂的 22 本书都遵循一致的写作风格——这种连贯性对系列读者很重要。本书在以下细节上与前 21 本保持一致:

章节结构

源码标注

跨卷引用

章节命名

Mermaid 风格

这些一致性不是束缚,而是为了让系列读者不需要重新学习每一本书的"读法"——把认知开销留给真正的技术内容。


九、致谢与版权

感谢 DeepSeek 团队把这份 1.6T MoE 完整开源,并在 README 第一行写下"License: MIT"——开源世界因这种慷慨而能继续生长。

感谢 vLLM、SGLang、FlashAttention、ColossalAI、Megatron-LM、HuggingFace transformers 这些社区——本书引用的几乎所有"对比基准",都来自它们多年积累的工程语料。

本书所有正文采用 CC BY-NC 4.0 许可,引用源码部分遵循 DeepSeek 与对应仓库的 MIT 许可。


下一章,我们从 V2 那个 236B MoE 起步,沿着 V3 / V3.2-Exp 一路走到 V4——看 DeepSeek 是怎么用四代模型把"稀疏 + 长上下文 + 低精度"这条路一寸寸磨出来的。

第 1 章:V4 之路:从 V2 / V3 / V3.2 到 V4 的架构演进 →