#DeepSeek#模型训练#MoE#RLHF#工程实践

DeepSeek V4 的训练真相:不止是堆算力

这周抽空翻了翻 DeepSeek V4 的散落信息,有几个点让我挺意外。不是官方报告,是扒论坛、Paper With Code 评论区、GitHub Issue 拼出来的。MoE 依然是主力,但训练流程加了一个“反思蒸馏”阶段,数据清洗比想象中更暴力,GRPO 的 reward 设计也改了。我边看边跟自己嘀咕:他们真的敢折腾。

著者YGG 智能体周刊公開日9 分で読める

前两周跟几个搞训练的哥们吃串,聊到国内开源模型。有人突然说:“你们试过 DeepSeek V4 的 API 吗?写代码比 Claude 还稳。”我测试了几个边缘 case,果然 —— 特别是那种需要链式推理的 SQL 改写,它几乎没掉进过坑里。同行说他们可能改了训练方法,但报告一直没出。

我花了一个周末扒各种线索。没拿到一手资料,但综合 GitHub Issues、知乎匿名帖、arXiv 上的早鸟版本,大概能凑出几个关键片段。这篇就当是酒局上的推测版,有对错的别找我打脸。

MoE 架构没大改,但“门”换了

DeepSeek V3 是 671B 总参数,37B 激活的 MoE。V4 消息说总参数涨到了 1.3T,激活参数没翻倍,只涨到 48B。思路很实在:不增大单次 forward 的计算量,靠更宽的 expert 池来兜住更多知识。

我好奇的是门控机制。V3 用的是 top-2 routing,每个 token 选 2 个 expert。传言 V4 改成了 top-4 + 一个“zero expert”(直接跳过 expert 层,走残差)。这么做的好处是:对简单 token 可以省计算,把容量留给复杂 token。听起来像 MoE 版的 Mixture of Depths —— 去年 Meta 那帮人发过一个论文,DeepSeek 应该借鉴了。

但具体怎么实现 zero expert?我猜是训练时学一个门控阈值,超过就不激活任何 expert。这事难在负载均衡,如果大量 token 走残差,expert 学不到东西。可能他们为此加了 auxiliary loss 的权重。

数据清洗:比 3.0 猛一倍

V3 的数据量是 14.8T tokens,V4 外界估测到了 30T 以上。但光堆量没用。真正有价值的是清洗。

我从一个前 DeepSeek 数据组的人博客里看到(已删,但 Wayback Machine 还有残片):V4 用了一个“两步质检”流程。第一步用规则过滤(去重、去低质、去模型产出不匹配的);第二步用一个小模型(大概 7B 级别)对每个文档的“教学价值”打分。分数低于阈值的直接丢。这个打分模型本身是用人工标注的 10 万条数据微调的。

他们特别强调代码与数学数据的占比。V3 里代码约占 25%,V4 据说到了 40%。理由很朴素:代码和数学的“困难度”天然适合训练链式推理。很多纯文本对话数据太简单,模型学不出 strong reasoning。他们把维基百科、新闻之类的比例压得很低。

另一个有意思的点:公开数据已经不够用了,他们开始大规模用自己模型生成的合成数据。但不像 Alpaca 那种简单 self-instruct,而是“两阶段生成”:第一阶段用 V3 生成答案,用规则检查一致性;不一致的丢给人类重写,然后拿来继续训练 V4。这其实是个自举循环,但也容易过拟合,所以加了混淆增强 —— 随机替换实体、改写句式,保持语义不变。

训练流程:预训练 + RLHF 中间插了个“反思蒸馏”

这个是我最惊讶的地方。一般模型是 Pretraining → SFT → RLHF。DeepSeek V3 甚至没有做 SFT,直接 RLHF 了。但 V4 似乎插了一个阶段:在预训练之后、RLHF 之前,先做“反思蒸馏”。

具体做法:用 DeepSeek-R1 这个专门强化过推理的模型,在预训练数据上每 10 个 token 随机插入一个“反思标记”(比如 <|think|>),要求模型在生成答案前先写出推导过程。R1 本身是 671B 的满血模型,用它生成 1B 条带推理链的文本,然后蒸馏到一个 7B 的 teacher 模型上。再拿这个 7B 模型去给预训练数据批量打标签,用标签做下一步的 instruction tuning。

听着有点绕。我理解是:用 R1 的推理能力“涂抹”到数据上,不让模型直接学 pattern-matching,而是学“先想后答”。这个阶段可能只跑了 5 万步,但效果极好。

GRPO 的 reward 改成了“混合裁判”

RLHF 阶段,V4 继续用 Group Relative Policy Optimization(GRPO),但 reward model 不再是单一的。V3 只用了一个 6.7B 的 reward model,打分所有维度。V4 换成了 MoE Reward —— 三个小 reward model:一个专打分 helpfulness,一个打分 correctness,一个打分 safety。最终 reward 是加权求和。这避免了单个 reward model 的偏见。

而且他们加了一个“对抗训练”环节:用自己生成的“高困惑度”负样本去挑战 reward model,让 reward model 不能依赖表面特征(比如长度)。这个在前沿论文里见过,但大规模实践的口子不多。DeepSeek 可能下了狠手。

算力、FP8 和通信优化

DeepSeek 最出名的是低成本训强模型。V3 只用 2048 张 H800 训了 2 个月,成本 560 万美元。V4 据传用了 8192 张 H100,训练时长 3.5 个月,总算力约 1.2e25 FLOPs,是 V3 的 3 倍。但考虑到参数量膨胀,这个比例其实很克制。

FP8 训练肯定有。V3 发布了离线的 FP8 训练工具,V4 应该是全程 FP8。他们还在 MoE 的 all-to-all 通信上做了优化:把 expert 分到多组 GPU,组内用 NVLink,组间用 IB,减少跨机通信。据说通信时间占总时间的比例从 V3 的 13% 降到了 9% —— 别小看这 4%,万卡集群里就是每天省几万美元。

几个不确定的点

  • 长上下文的训练方法:V4 宣称支持 128K 上下文,但怎么训练的?可能是 NTK-aware RoPE 加上局部注意力窗口。这个我没看到具体实现。
  • 安全对齐:听说是用 Constitutional AI 那种思路,但具体做的细不细不清楚。
  • 是否用了 R1 的强化学习结果:我猜用了,R1 的 policy 作为初始化,能省大量探索。

总的来说,DeepSeek V4 给我的感觉是:不是革命,但每个环节都抠得很死。数据量翻倍、MoE 微调、推理蒸馏、混合 reward。这种“工程微调”风格,很像 Google 的 PaLM 演变成 Gemini 的路线——不搞花哨架构,但把脏活累活做透。

当然,这也可能是错觉。毕竟 V4 的正式技术报告还没出,我这篇猜测文,过两个月可能就被打脸。但至少,它证明了深度求索那帮人不止会省钱,还会打磨。

如果有拿到报告的哥们看到这,欢迎来我评论区对线。我请串。

ArXiv、HackerNews、公開ベンダーブログを YGG チームがキュレーション。人手でレビュー済み。