[BidClub_]
张小珺Jùn|商业访谈录 · · 201 min

91. 逐篇讲解DeepSeek关键9篇论文及创新点——“勇敢者的游戏”

张小珺何俊贤

YouTube
TL;DR
  • DeepSeek 的主线不是单一模型,而是围绕效率持续分叉的一套技术路线。 从 DeepSeek-MoE 的更多 expert、shared expert,到 MLA、GRPO、FP8 training 和 multi-token prediction,每一步都不是为创新而创新,而是为了降低成本、提高 efficiency,最终逐渐与主流路线 diverge。
  • R1 的关键路径是从奖励模型收敛到规则奖励。 何俊贤团队和其他团队曾尝试用 reward model 做 reasoning RL,但效果不理想;数学判断最终答案,coding 检查 unit test,往往比另一个模型打分更简单、更稳定。开放式任务仍可能需要 reward model。
  • V2 和 V3 展示了模型规模与成本可以脱钩。 V2 总参数 236B、激活参数 21B,训练算力比 DeepSeek 67B 节省 42.5%,KV Cache 降低 90% 以上,生成速度提高 5.76 倍;V3 使用 2,048 张 H800、训练 14.8T token,成本约 557 万美元,且没有 loss spike 或 rollback。
  • DeepSeek LLM 的价值不只是超过 Llama 2,而是把复现当成 science。 它重新研究 learning-rate schedule、hyperparameter scaling law、attention 的计算开销和数据质量,并通过 C-Eval 对照实验公开展示刷榜如何将分数从 47 分提高到 71 分。
  • GRPO 是 DeepSeek 降低强化学习成本的重要积木。 它去掉 PPO 所需的 value model,用同一问题的一组 response 的平均 reward 作为 baseline;DeepSeek-Math 还发现 online RL 比 offline 方法更好,同时诚实指出 RL 后 Pass@K 未同步提升,可能只是把原本能生成的正确答案排到了前面。
  • DeepSeek 的组织特征是低调、开放、详细且敢于承担试错风险。 何俊贤认为它很像高校实验室,论文公开大量细节,也不急于宣传或追逐榜单;不过他同时承认,公开论文主要呈现成功结果,背后必然还有未发表的失败尝试。
  • 基座模型仍有 scaling 空间,但高质量数据可能趋于饱和。 更大的模型和更多 token 仍可能带来提升,下一阶段也可能更多转向 synthetic data、强化学习 scaling 和 test-time scaling;R1 正是从预训练 scaling 延伸到 RL scaling 的例子。
Digest · the substance, structured for research

1. 类 R1 工作先于 R1 发布,真正收敛的是简单规则

  • 何俊贤团队在 DeepSeek-R1 发布前约两个月就开始了相关工作,R1 发布约五天后发布自己的结果;规模更小、方法相似,但他强调更准确的说法是“类 R1”,不能简单称为复现 R1。
  • 他们此前用 reward model 做 reasoning 强化学习,持续尝试了半年多,效果一直不理想。最后发现最简单的方式反而最 work:数学只检查最终答案,coding 通过 unit test 检查,不再让另一个模型负责打分。
  • 他认为 Kimi 1.5、DeepSeek 以及许多其他团队最后都收敛到了相近的方法。此前 community 追随 OpenAI 关于过程监督奖励模型的工作,可能走了一些弯路;何俊贤也认为,OpenAI 发表相关论文与实际做 o1 的方式未必完全一致。

2. 五千张 A100 让何俊贤在 DeepSeek 成立前注意到幻方

  • 2022 年底,ChatGPT 尚未出现、行业还没有形成大模型概念时,幻方开始宣传自己有约 5,000 张英伟达 A100。对一家规模可能只有一百多人的量化公司来说,算力规模和用途都很反常。
  • 幻方把暂时用不完的算力搭成集群,开发调度、分配和使用系统,免费开放给高校科研工作者。何俊贤最初怀疑这可能只是宣传或 PR,但亲自使用后认为系统非常成熟。
  • 他因此感受到,幻方虽然人数不多,却能自行搭建和维护超算系统,招聘人数少但 bar 高,报酬也比较丰厚。

3. DeepSeek 起步并不早,最初也没有被看好

  • 2023 年上半年、DeepSeek 尚未正式命名时,何俊贤已经听说幻方可能要孵化一家类似 OpenAI、探索 AGI 的公司。
  • 当时国内正处于百模大战,互联网大厂已经有 AI 积累,而幻方来自量化金融,做大模型的起步并不早。包括何俊贤在内的很多人起初并不看好,只觉得市场上又多了一家 startup。
  • 真正改变他判断的是第一篇 DeepSeek LLM 论文:模型和技术细节都公开,论文质量高,写法很像高校实验室,而不是只发布产品结果。

4. 低调、开放和相对低压的研究风格

  • 何俊贤认为 DeepSeek 很 unique:不仅开源,论文也写得 honest,公开大量 detail,整体气质不像一般商业公司,更像纯做科研的实验室。
  • 2023 年下半年到 2024 年初,行业频繁宣传模型超过 GPT、ChatGPT 或 GPT-4,但 DeepSeek 很少参与这种宣传,产品和 To C 动作也相对晚。
  • 他推测团队似乎没有处在“几个月内必须超过某个对手”的极高压环境中,因此愿意投入资源尝试尚未验证的架构。这个判断是从论文和团队表现得到的感受,并非 DeepSeek 公开确认的组织事实。

5. 两条连续的技术路线

  • 基座模型路线从 DeepSeek LLM 开始,经过 DeepSeek-MoE、DeepSeek-V2 到 DeepSeek-V3。何俊贤认为 V2 已经完成了很多关键创新,V3 更像是在此基础上的大规模训练和工程化。
  • reasoning 路线则从 DeepSeek-Coder、DeepSeek-Math 开始,经过 DeepSeek-Prover,最后到 DeepSeek-R1。
  • 他主要讲文本模态,没有展开过去一年的多模态论文,因为多模态并不是 DeepSeek 这一阶段的主要发力方向。

6. DeepSeek LLM:严谨的 Llama 2 复现

  • DeepSeek LLM 有 7B 和 67B 两个规模,使用约 2T token,之后进行 SFT 和 DPO。模型 architecture 和主要 training 方法基本 follow Llama 2,数据则更强调中英双语和质量。
  • 它超过 Llama 2 70B 并不让何俊贤意外:后来者可以改进数据质量,当时国内也有其他模型超过 Llama 2 70B。
  • 真正值得关注的是,DeepSeek 没有只照搬 configuration,而是继续研究训练背后的规律,把模型训练当成科学问题来处理。

7. Multi-step schedule 与 scaling law

  • 当时常见的 cosine learning-rate schedule 需要在训练开始前确定总 token 数。若训练中途增加新数据,原有曲线就不容易调整。
  • DeepSeek 改用 multi-step learning rate:先保持一个常数,到了阶段节点后突然降低,再以新的常数继续训练。实验显示最终 performance 与 cosine schedule 接近。
  • 它还研究 learning rate、batch size 等超参数的 scaling law,用小模型实验外推大模型的设置。此前 scaling law 更多讨论模型规模、数据规模和固定算力下的配置,DeepSeek 则进一步考虑 attention 带来的 computational overhead。
  • 论文也讨论 data quality 对最优模型规模和数据规模配置的影响。何俊贤认为,这体现了他们不是单纯堆资源,而是试图理解背后的 science。

8. 小模型实验预测大模型效果

  • 论文用较小算力训练出的模型拟合 performance 与 FLOPs 的关系,再预测更大算力下的效果;图中 7B 和 67B 模型的结果与预测较为接近。
  • 这种方法的意义在于,不必先完整训练一个大模型,便可以用较低成本判断大规模训练可能达到的水平。何俊贤将它与 GPT-4 论文中类似的预测图联系起来。

9. C-Eval 实验公开了刷榜机制

  • C-Eval 是何俊贤团队在 2023 年 5 月发布的中文榜单。榜单出现后,行业很快出现刷榜行为,分数越来越高,但实际能力未必同步提升,形成“高分低能”。
  • DeepSeek 做了对照实验,发现加入大量类似的多选题训练后,C-Eval 分数可以从约 47 分提高到 71 分,提升二十多分。
  • 何俊贤最尊重的是,DeepSeek 没有只公布刷榜后的高分,而是报告刷榜前的效果,也告诉读者如何刷以及可以刷到什么程度。
  • 何俊贤团队后来对国内外多个 base model 做 evaluation,认为 DeepSeek release 的 base model 没有明显刷榜行为;他把这与不少高分模型进行对比。

10. MoE 把总参数和单次计算拆开

  • Dense model 中,所有输入都会经过全部参数;MoE 则把 Transformer 中的 feedforward network 分成多个 expert,由 router 只激活其中少数,因此也称 sparse model。
  • 例如总参数为 100B、分成十个专家时,一次输入可能只使用约 10B 参数。模型可以储存更多知识,同时降低每次训练和推理的计算成本。
  • DeepSeek 并不是最早研究 MoE 的团队,Google 更早做过 GShard,行业也曾猜测 GPT-3.5 或 GPT-4 使用了 MoE。DeepSeek 的不同之处在于,较早把效率导向的 MoE 路线持续发展下去。

11. DeepSeek-MoE:更多 expert 与 shared expert

  • DeepSeek-MoE 更像一篇 study,而不是完整成熟的产品模型。大部分实验在较小规模上进行,最后尝试了 145B 模型,但没有完整训练结束。
  • 它的两个核心设计是增加 routed expert 的数量,以及加入 shared expert。论文使用 64 个 routed expert 和 2 个 shared expert,2B、16B 模型的激活参数约为 2.8B。
  • 传统 MoE 常使用 8 或 16 个 expert,DeepSeek 认为这种划分过粗,增加到更多 expert 后,知识可以有更细的分工。
  • shared expert 则负责所有输入都可能需要的通用能力,例如语言理解和常识;routed expert 仍由输入决定是否激活。
  • 论文结论是,约使用原来 40% 的 computation,便可以达到接近 7B dense model 的效果。145B 模型虽然只训练了 200 多 B token,远少于第一篇模型的 2T token,但约 22.2B 激活参数下的 benchmark 已与 67B 模型基本相近。

12. V2 把 MoE 设计扩大成完整模型

  • DeepSeek-V2 是 236B 总参数、21B 激活参数的 MoE 模型,训练使用 8.1T token,支持 128K context。
  • 相比 DeepSeek 67B,V2 的 training computation 节省 42.5%,KV Cache 节省 90% 以上,生成速度提高 5.76 倍;部署时还使用 FP8 等低精度处理,并对 KV Cache 做量化。
  • V2 延续了 shared expert 和大量 routed expert 的设计,使用 2 个 shared expert 与 160 个 routed expert。与 Mixtral 相比,它总参数更大,但激活参数更少,部署成本也更低。
  • 2024 年 5 月 V2 引发国内 API 价格战。何俊贤听说 DeepSeek 部署它并不是亏钱,只是利润不高;他也提到当时有人称其为“大模型界的拼多多”。

13. MLA 解决 KV Cache 的成本问题

  • 普通 Multi-head Attention 为每个 head 保存独立的 key 和 value。自回归生成时,新 token 需要与前文进行 attention,因此历史 K、V 会被保存为 KV Cache,以避免重复计算。
  • GQA 让多个 head 共享一组 K、V,MQA 则让所有 query 共享一组 K、V;缓存会变小,但表达能力可能下降,需要在成本和 performance 之间权衡。
  • MLA 不直接保存高维 K、V,而是先压缩成低维 latent 向量,需要使用时再映射回去。假设原本是 1,000 维,latent 只有 100 维,存储量便可以大幅下降。
  • 何俊贤认为 MLA 是 DeepSeek 自己提出的架构创新。它在达到类似 2.25 个 GQA group 的压缩程度时,performance 比简单减少 group 更好,并持续沿用到 V3。

14. MoE 的实际效率依赖工程平衡

  • MoE 不能让所有 token 都集中到少数 expert,否则其他 expert 和对应 GPU 会闲置。
  • 因此需要同时处理 expert balance、device balance 以及 GPU 之间的通信平衡,让整个集群保持较高 utilization。
  • 这些内容不一定像 MLA 一样显眼,却直接决定稀疏架构能否转化成真实的成本优势。V2 在 H800 集群上每 1T token 约使用 300K GPU hours,训练成本相比上一代进一步下降。

15. V3:671B 模型与低成本训练

  • DeepSeek-V3 于 2024 年 12 月发布,总参数 671B,训练 14.8T token,使用 2,048 张 H800,成本约为 557 万美元。
  • V3 延续 V2 的 MLA、shared expert 和大量 routed expert,但训练过程没有出现 loss spike,也没有 rollback。何俊贤认为,这说明背后有很强的工程和 infra 能力。
  • V3 的论文大量讨论训练稳定性、通信、精度和集群工程,不只是算法设计。对 671B 模型来说,2,048 张卡并不算多,这也是它受到关注的重要原因。

16. V3 的连续创新

  • V3 使用 1 个 shared expert 和 256 个 routed expert,延续了从 DeepSeek-MoE 到 V2 再到 V3 不断增加 expert 的路线。
  • 它采用 loss-free balancing,不额外加入 balancing loss,而是监控 expert 被选择的频率;某个 expert 过于频繁时,调整常数,让后续输入更少选择它。
  • V3 还采用 multi-token prediction。它不是 DeepSeek 首次提出的技术,但 DeepSeek 首次在如此大规模训练中使用并通过 ablation 验证了效果。
  • 该技术训练时可以提供更密集的 training signal,推理时也可能用于 speculative decoding。不过何俊贤不确定 DeepSeek 产品部署时是否真的采用了这一方式。
  • V3 还成功进行了大规模 FP8 mixed-precision training。部分中间变量仍需保留更高精度,否则会导致训练不稳定或效果下降;这是一项重要的工程优化。

17. V3 的效果与后训练

  • 对比 Llama 3.1 405B 时,Llama 仍是 dense model,激活参数接近 405B;V3 总参数 671B,但激活参数只有约 30B,部署成本低十倍以上。
  • V3 在英文上与 Llama 3 各有千秋,在 reasoning、code、math 和中文方面大幅超过 Llama 3 405B。
  • V3 的 SFT 只使用约 1.5M 条数据。其 reasoning data 使用内部 DeepSeek-R1 做蒸馏;R1 当时尚未发布,但已经作为基于 V3 的内部模型存在,之后又反过来帮助生成 V3 chat 所需的数据。
  • 他们还使用 DeepSeek-V2.5 生成 long reasoning data,并进行强化学习。数学和 coding 使用可验证的规则反馈,开放式问答则可能使用 reward model。
  • 何俊贤认为 V3 的后训练相对浅,没有特别执着于榜单优化,但他明确表示自己并不是百分之百确定,只是从论文和模型表现作此判断。

18. DeepSeek-Coder 是早期海外认知入口

  • DeepSeek-Coder 第一版是 dense model,规模从 1.3B 到 33B,架构基本延续第一代 DeepSeek LLM,训练数据主要是代码。
  • DeepSeek-Coder-V1.5 使用 continue pre-training:在已有 DeepSeek LLM 7B 基础上继续训练约 2T token,其中约 70% 是 code。
  • 何俊贤认为,海外用户早期对 DeepSeek 的印象很大程度来自 Coder。通用模型有许多替代品,而 V2 之后的模型总参数过大,普通开发者不易部署;Coder 的小中型版本更容易被使用。
  • Coding 也是早期大模型真正落地、提高程序员生产力的典型场景。

19. Coder V2 中奖励模型仍有现实理由

  • DeepSeek-Coder-V2 基于 DeepSeek-V2 的 checkpoint,继续训练约 6T token,因此本质上是 V2 的 code model。
  • 它在 coding reward 上仍使用 reward model,因为 unit test 覆盖可能不足,错误代码有时会碰巧通过测试,单纯的 0/1 规则反馈会比较 noisy。
  • 何俊贤认为,这并不意味着规则路线被否定:如果扩大 unit-test coverage,规则可以保持一致;reward model 则可能只在部分数据分布上有效,规模扩大后会暴露泛化问题。
  • 当时 DeepSeek 和 community 普遍认为 coding 需要 reward model,后来在数学和 reasoning 任务上才逐步收敛到规则奖励。

20. DeepSeek-Math 与 GRPO

  • DeepSeek-Math 是 7B 数学模型,基于 DeepSeek-Coder-Base-V1.5 7B,继续训练约 120B math token。当时它是较强的开源数学基座之一。
  • 论文提出 GRPO。PPO 通常需要 policy model、reward model、reference model 和 value model;GRPO 去掉 value model,针对同一个问题采样多个 response,再用这一组 reward 的平均值作为 baseline,计算各 response 相对平均值的 advantage。
  • 这样可以减少一个大型模型的显存和算力开销。GRPO 后来被 DeepSeek 在 V2、V3 和 R1 中持续使用,R1 发布后也在开源强化学习框架中广泛使用。

21. Online RL 与 Pass@K 的限制

  • DeepSeek-Math 研究了 online reinforcement learning。offline 方法先生成一批数据,再固定这批数据训练;iterative 方法训练一代后重新生成数据;online 方法则随模型更新持续生成新数据。
  • 论文发现 online 方法比 offline 方法更好,但它成本高、不稳定、难调,开源 community 当时也缺少成熟的 online RL codebase。
  • 论文还分析 Pass@K:对同一个问题采样 K 个 response,只要其中有一个正确就算通过。RL 后 K=1 的 benchmark 分数明显提高,但 K 增大时,RL 前后的差距缩小,某些情况下未使用 RL 的模型甚至更好。
  • 何俊贤认为,这可能表示 RL 只是把模型原本就能生成的正确答案排到了前面,并没有真正增强 fundamental ability。DeepSeek 把这一不利结论写进自己的论文,是其科学诚实的一部分。
  • 规则奖励的优点是泛化稳定:有标准答案的数学题,无论难度如何都能判断对错;缺点是奖励稀疏。过程奖励理论上上限更高,但目前很难做到足够准确且跨领域泛化。

22. DeepSeek-Prover:外部验证器提供规则反馈

  • DeepSeek-Prover 处理数学定理证明,使用 Lean 判断形式化数学语言中的证明是否成立。模型先把自然语言问题转成形式化语言,再交给 Lean 检查。
  • 第一阶段采用迭代式自我更新:生成证明,用 Lean 验证,删除错误结果,保留正确结果,再用这些数据继续训练。
  • Prover-V1.5 开始使用强化学习和 GRPO。由于定理证明的 0/1 reward 很稀疏,他们没有重新训练 reward model,而是删除那些几乎无法生成正确证明的过难数据。
  • 后续工作还尝试了 MCTS 变体。但何俊贤认为,R1 最终采用了更简单的方式,没有 MCTS,也没有复杂 decoding。

23. R1-Zero 与 R1

  • R1 的 reward 主要有 accuracy reward 和 format reward:前者判断答案对错,后者判断是否遵循指定格式,例如先输出 think 再输出答案,两者都属于规则奖励。
  • R1-Zero 不做前置 SFT,直接从 base model 开始 RL,也没有蒸馏、复杂 reward model 或 MCTS。在 AIME 等数学任务上,performance 从约 0.2—0.3 提高到约 0.7—0.8,思维链也逐渐变长,出现所谓的“aha moment”。
  • R1 则先进行 cold-start SFT,使用长序列数据,再进行强化学习;今天用户使用的 DeepSeek-R1 主要是这个版本。
  • R1 的论文相对简洁,是因为 V3 基座、GRPO、规则奖励以及此前对多条失败路线的探索已经完成。它不是凭空出现,而是前面成功和失败经验的集中组合。
  • 对 R1 的文本为什么优美、感性,何俊贤只提出两个猜测:DeepSeek 可能积累了较好的中文和人文数据,或者长推理训练带来的逻辑、反思能力迁移到了文科任务。他强调无法判断两者谁更重要。

24. 文化、资源与下一阶段

  • 何俊贤不清楚 DeepSeek 的最终商业动机:V3 以 MIT License 开源,也允许免费商用,不能据此断定它究竟更重视商业化、赚钱,还是单纯探索 AGI。
  • 他认为 DeepSeek 早期公开约 1 万张较老的 A100,V3 使用 2,048 张 H800;成本优势来自 MoE、MLA、GRPO 以及通信、负载平衡和精度处理等工程优化。
  • 他也提醒,论文只会发表成功的工作,DeepSeek 背后肯定还有没有公开的失败尝试。
  • 基座模型仍存在 scaling 空间,但高质量互联网数据可能逐渐接近上限。更大的模型和更多数据仍可能有效,只是边际收益或许趋于饱和;synthetic data、强化学习 scaling 和 test-time scaling 可能成为下一阶段重点。
  • 何俊贤对 DeepSeek 的总结是:它不是纯粹 follow Llama、Mistral 等权威路线,也不是为了创新而创新,而是在降低成本和提高 efficiency 的目标下不断做不同选择。GRPO、MLA、更多 expert、shared expert、FP8 和 multi-token prediction 的差异逐步积累,最终形成了与其他模型越来越不同的一套路线。
何俊贤

DeepSeek 的第一篇论文放出来,就是他们的第一个成果,也是 DeepSeek 的第一个大模型论文——DeepSeek LLM。今天等会儿我也会讲到那篇论文。

今天对他们论文的讲解主要分为两个方面:一个方面是基座模型的发展,另外一个方面是他们在 reasoning,也就是推理方面的工作。

总结一下,我觉得从很早的时候开始,DeepSeek 就有这样一种文化或者追求:不是纯粹地 follow 之前别人做的 practice。因为像 Llama、Mistral 这些都很权威,我觉得 DeepSeek 从一开始,包括最早从 DeepSeek-MoE 开始,就在探索更多的 expert。这种创新并不是为了创新而创新,更多是因为他们真的想压低成本,想让整个东西更 efficient,所以很勇敢地做了这些尝试。最后,他们就和别人 diverge 了,DeepSeek 到后面就跟别人越来越不一样。

张小珺

Hello,大家好,欢迎收听张小珺商业访谈录,我是小珺,这是一档提供一手高密度信息的商业访谈节目。2025 年春节,DeepSeek 一举改写了全球 AGI 的大叙事。商业访谈录第八十九期节目中,我邀请加州大学伯克利分校人工智能实验室在读博士潘佳怡,对照讲解了 DeepSeek-R1 Zero、R1、Kimi 1.5 以及 OpenAI O1 的技术报告。今天这期节目邀请香港科技大学计算机系助理教授何俊贤,从 DeepSeek 的第一篇论文开始,阅读挑选的九篇论文,帮助大家理解 DeepSeek 及其复现与创新工作,也感受技术之美。

那何老师先给听众朋友们打个招呼。你可以介绍一下你的研究方向,以及在 R1 发布之后做的一些复现尝试。

何俊贤

大家好,我是香港科技大学的助理教授何君贤。我自己的研究方向主要是大模型,最近主要在做大模型相关的推理,所以跟 DeepSeek-R1 也非常 match。最近我们确实做过一些相关的工作,早期也做过大模型的 alignment 以及评测。

DeepSeek-R1 发布之后几天,我们发布了一个工作,可以看成是对它的复现。但实际上,这个工作我们在大概两个月之前就已经开始做了,刚好跟 DeepSeek-R1 使用的方法非常类似,只不过我们是在更小的规模上进行的。DeepSeek-R1 发布之后差不多 5 天,我们也发布了自己的工作,整体做下来还是比较顺利的,效果也不错。我们目前还在对 R1 做更多研究。

张小珺

所以你们的工作其实更早就已经开始了。这个整个工作过程有没有一些积累的 know-how 可以跟大家分享?

何俊贤

也不能叫复现 R1,更准确地说,是一个类 R1 的工作。

我们的 know-how 可能更偏技术导向。我觉得最后大家都收敛到了比较简单的东西上。这不光是我们,我知道很多其他团队,包括 Kimi 之前发布的 Kimi 1.5,最后大家做 reasoning 强化学习的方式基本上都是同一套,我们也是这样。

我们之前试过很多复杂的东西,其实都不是很 work。大概半年多以前,我们就已经在做这件事了,当时可能会使用奖励模型,也就是 reward model,去做强化学习,但发现效果一直不太理想。后来也经历了很多挫折,反复尝试都没有得到理想结果,最后发现最简单的方式反而最 work:不用奖励模型,只使用 rule-based reward。这最后反而成为 R1 的方式。

张小珺

最后收敛到了比较简单的方法。这个简单的方法具体展开一下。

何俊贤

R1 在做强化学习的时候,只使用所谓的规则。比如做数学题或者 coding,只需要检测最后答案对不对;coding 可能就是通过 unit test 检查它能不能 pass。这就是规则导向的方式,没有另外一个模型来帮助判断或者给奖励。

但是在很长一段时间里,不光是我们,我觉得整个 community,包括 DeepSeek 自己,之前也默认需要另一个模型,也就是俗称的奖励模型,来帮助判断模型生成得对不对,然后用这一套来做强化学习。差不多大半年,整个 community 都是这么做的。

但我觉得这套方法其实走了一些弯路。当然,这个弯路也可能跟 OpenAI 有很大关系。最早 OpenAI 在很早的时候发表过一篇论文,讲的是过程监督的奖励模型。从那之后,整个 community 相当于 follow OpenAI,开始做这件事。

但 turns out,OpenAI 自己最后做 o1 也并不一定是这么做的。OpenAI 发表这样的论文,可能跟他们实际上做的事情也不完全一样。一开始大家会觉得,既然 OpenAI 都发表了这样的论文,说明 OpenAI 也是这么做的,所以我觉得大家也受到了一些 OpenAI 的误导。

张小珺

那今天我们的节目形式是请何老师来主讲 paper,和我们之前第八十九期节目的形式一样,他会带着我们读 paper。中间如果我遇到不懂或者有疑惑的地方,我会作为观众的视角来提问,提问可能穿插在中间,也可能在节目的最后。我们的主要目的是希望帮大家共同学习一遍 DeepSeek 最一手、最前沿的 paper,从一个更延续和更长期的视角来理解 DeepSeek 这家公司,理解它是怎么一步步成长并且爆发成为今天的 DeepSeek 的,同时也希望让更多人真正感受到技术之美。

我知道你很早就开始关注 DeepSeek,并且你是 DeepSeek 的铁粉。你是什么时候开始关注这家公司的?是什么原因让你格外关注它?

何俊贤

我其实很早就开始关注 DeepSeek 了,大概是 2022 年底。那个时候 DeepSeek 还没有成立,因为 DeepSeek 是幻方下面的一家公司。那时我其实已经对幻方有一些了解,主要是因为当时找工作的原因,接触过一些幻方的东西。

虽然我之前对量化金融这个领域并不是很了解,但那个时候幻方做了一件很特别的事情:他们开始宣传自己有 5000 张英伟达 A100。可是大家也不知道具体用来做什么,因为当时还没有 ChatGPT,大家还没有大模型的概念。5000 张 A100 在当时是很多的,可能花了很多钱,所以我一直觉得这件事很奇怪。

后来幻方做了什么呢?那个时候还没有大模型,幻方可能自己也用不了那么多算力,于是搭建了一个集群,做了一套调度软件和系统,免费开放给高校科研工作者使用。

我一开始也没有用过,因为那时我差不多已经回到高校了。后来我接触了一下,也找幻方合作,尝试使用过他们的算力。我的感受非常 impressive。刚开始可能会觉得这更多是一种噱头:一个量化公司为什么要搞这么多卡,还免费帮助高校老师做科研?当时我也不知道他们具体的目的是什么,可能会觉得更多是宣传或者 PR。

但后来我真正尝试使用他们的算力系统,说实话,觉得非常 impressive。他们整个集群是自己搭建、维护的,也自己 develop 了一套独立的超算系统,包括算力的调度、分配以及使用方式。那个集群当时应该叫“萤火”。

我后来使用了一下,觉得非常厉害。幻方本身是一个规模很小的公司,可能只有一百多人,不像其他互联网大厂,但他们用 5000 张卡搭建了一个非常成熟的超算系统。我当时使用起来觉得非常成熟,就感觉他们的人很厉害。

我隐约也知道,幻方招人可能跟美国的量化公司差不多:招人不多,但 bar 很高,而且提供的报酬也比较丰厚。这是我一开始对幻方的了解。

到了 2023 年上半年,在 DeepSeek 成立之前,我大概就知道幻方要孵化这样一家公司了。当时还没有 DeepSeek 这个名字,但我从某些渠道知道,幻方可能打算做这件事。他们的定位可能是想孵化一家像 OpenAI 一样、探索 AGI 的公司,而且想自己孵化。

说实话,当时包括我在内的很多人都不是很看好。因为那时国内已经有很多公司在做大模型,也不乏很多大厂。我觉得幻方的起步其实有点晚了:国内大家已经开始跟进,而幻方作为一家量化公司,和互联网大厂不一样。很多互联网大厂本来就是做 AI 的,有很多积累,但幻方本身并没有太多 AI 经验,突然说要做大模型。

再加上那时国内正处于百模大战阶段,不管大厂还是小厂,很多人都在做。所以一开始,大家包括我在内,并没有特别看好,只是知道国内又多了一家 startup。

后来第一次让我真正觉得应该尊重他们的工作,是他们发布了第一篇论文,也就是 DeepSeek 的第一个大模型论文——DeepSeek LLM。那篇论文质量很高,而且开源。在当时,质量高又愿意开源的项目并不多,不管在国内还是全世界都不算多。

DeepSeek 完全开源,也把技术细节写在了论文里。这个在当时非常少见,因为大部分厂商不会写论文;会开源的,可能也不写论文;写论文的,很多也写得比较敷衍,不会公布很多具体内容。

但 DeepSeek 当时的论文和开源工作都非常像学术界的风格。他们也没有铺天盖地地做宣传,没有刻意制造流量,就很像高校实验室一样,踏踏实实做一篇论文,然后开源。从那时开始,我就觉得他们很强,也很喜欢他们的 style。

后来他们一路都做得很好。直到最近,我觉得他们才获得了应得的关注。之前他们其实一直做得很好,但在国内,尤其是普通用户中,大家可能没有太听说过他们。我觉得这跟他们不太喜欢宣传有关,而且他们的产品发得也比较晚,不太着重 to C 地做产品。

但在学界,在我们眼里,他们的影响力一直很大,一直做得很好。我觉得他们值得这样的影响力。

张小珺

你刚才说第一篇让你尊重的论文是 DeepSeek 的第一篇论文。那个时候已经到 2024 年 1 月了,对吧?你对 DeepSeek 做了很多研究。整体来说,DeepSeek 的研究工作有没有透露出这家公司一些底层基因,或者非常一致的共同特性?

何俊贤

有。我觉得 DeepSeek 是一家非常 unique 的大模型公司。

首先,它非常开放。不光是开源,他们写论文也非常 honest,会写很多技术细节,公开很多 detail。从这个角度看,我觉得它非常像高校实验室,不太像所谓商业化的公司。虽然他们现在也没有完全商业化,但可能跟一般公司很不一样,很像一个高校里纯做科研的实验室。这一点风格非常独特。

第二,他们作为一家大模型公司,在当时非常激烈的百模大战 context 下,并没有非常浮躁。尤其是 2023 年下半年到 2024 年初那段时间,国内大模型非常浮躁,彼此竞争也很激烈。大家经常能看到媒体宣传,突然又有什么 performance 超过 GPT 了,超过 ChatGPT 了,超过 GPT-4 了,感觉大家一直在超过 GPT-4。

但那个时候很少有媒体报道 DeepSeek 的工作。尽管他们有论文、有成果,国内一些知名公众号也很少报道 DeepSeek。现在大家每天都在讨论 DeepSeek,但当时其实非常少。我觉得这跟他们低调有很大关系。

他们的风格就是低调、开放,而且从我的感受来看,他们好像也没有处在特别高压的环境中,不是在一个非常高压的环境下做大模型。今天我可能会讲到,他们很多技术上的创新其实都非常勇敢。

大模型投入很大,你可能投入很多钱去做一个创新,如果最后失败了,这些钱相当于就白花了。在很多其他团队的模式下,这种事情是不被允许的。因为投资人或者公司的领导给你这么多资源,会有要求,比如三个月之后一定要做出什么东西,一定要超过谁,不然就不行。

所以我觉得,大模型团队在那段时间压力都很大。但 DeepSeek 给人的感觉是,他们的压力好像小一些。他们做得好了,也不会铺天盖地地宣传,而是非常踏实地继续做下一个模型,一直保持低调。这是他们比较 unique 的地方。

张小珺

能不能先讲讲,你会选择哪几篇 DeepSeek 的论文进行重点解读?

何俊贤

我今天对他们论文的讲解主要分为两个方面。

一个方面是基座模型的发展,主要从最早的第一篇 DeepSeek LLM 开始,然后到后面的 MoE 模型 DeepSeek-MoE,再到 DeepSeek-V2。V2 是一篇非常重要的论文,因为他们从那时开始做了更多创新。然后是 V3。V2 到 V3 的 gap 已经很小了,V3 的很多创新其实在 V2 时就已经完成,所以会重点讲 V2,再讲 V3。V3 就是最近的模型,也是 R1 的基座。

另外一个方面是 reasoning,也就是推理。最早可以从 DeepSeek-Coder 开始,到 DeepSeek-Math。DeepSeek-Math 也是一篇很重要的论文,因为 GRPO 就是在这篇论文中提出的。之后可能会简单讲一下 DeepSeek-Prover,也就是他们做的定理证明,最后讲到最近的 R1。

这也是我觉得 DeepSeek 的两条线:一条是基座模型的发展路线,另一条是专注于推理的发展路线。

张小珺

听起来它的技术路线有高度的一致性,也有线性外推的逻辑性和延续性。这些论文能多大程度帮助我们理解 DeepSeek 这个公司或者 lab?

何俊贤

我觉得这些论文可以帮助我们理解很多。因为他们的论文写得很详细,从论文一步一步的创新来看,也可以看出这是一个有很强创新氛围的 team。

张小珺

DeepSeek 被海外人士称作一股来自东方的神秘力量。在你看来,DeepSeek 神秘吗?

何俊贤

我觉得没有那么神秘。海外很多人可能最近才开始关注他们,所以觉得他们怎么突然做出了很强的东西。但作为业内人士,他们的论文都是公开发表的。过去这一年,他们其实是踏踏实实、一步一步走到今天的,所以我觉得没有那么神秘。

张小珺

那接下来我们就把主场交给何老师,一起进入论文的学习时间。

何俊贤

我主要从基座模型和推理两方面来分享 DeepSeek 的工作。今天主要是科普性质,所以会挑一些重点讲,尽可能让大家在 high level 上理解。

今天的讲解主要关注文本,也就是文本模态。DeepSeek 在过去一年也发表过几篇多模态论文,但多模态并不是过去一年 DeepSeek 主要发力的方向。因为时间关系,今天不会讲多模态,主要讲文本这一块。

有些论文我会简单 share 一下屏幕,方便大家理解。先从第一篇 DeepSeek LLM 开始。

这项工作的定位很简单:这是 DeepSeek 横空出世的第一个大模型,也是开源的。它没有太多特别的创新,大家可以把它看成是对 Llama 2 的一次复现。

当时 Llama 2 刚刚发布,DeepSeek 作为一家初创公司,一开始先尝试复现 Llama 2 的 performance,是非常合理的。这个工作的绝大部分内容都 follow Llama 2,当然 data 不一样。DeepSeek 是中英双语模型,数据准备上可能质量更高,但整个 model architecture 以及 training 方法,基本都跟 Llama 2 一样。

这个模型主要有两个 size:7B 和 67B,对标 Llama 2 的 7B 和 70B。之后使用了 2T token,基本上也和 Llama 2 对齐。然后做了 SFT、DPO,这些都属于后训练。

在 evaluation 上,他们最后超过了 Llama 2 70B,这也很正常,因为 Llama 2 先发布,后续工作通常会提高数据质量。在当时,国内也有不少模型超过了 Llama 2 70B。

这篇论文我主要想讲几个体现他们严谨科学态度的地方。具体的 architecture 跟 Llama 2 一样,都是 Transformer,这里就不细讲了。模型 size 也和 Llama 2 差不多。

其中一个区别是 learning rate schedule。当时大家训练大模型一般使用 cosine learning rate schedule,也就是 learning rate 按照 cosine 函数逐渐变小。但这样有一个问题:一开始就要指定训练多少 token,而实际训练过程中,数据量可能动态变化。比如先训练了一部分,后来突然准备了一份新数据,想继续加入,这时 cosine schedule 就不太好改,因为开始训练之前就已经确定好了。

这篇论文用了一个不一样的 learning rate scheduler,叫 multi-step learning rate。开始时 learning rate 可能是一个常数,训练到某个阶段之后突然降低,再按照一个常数继续训练,不是一个平滑的 cosine 函数。

虽然这个改动很小,但他们发现最终 performance 和 cosine schedule 差不多,所以就采用了这种方式。

第二个很大的区别是,他们对 scaling law 做了非常仔细的研究。

张小珺

何老师,能不能稍微解释一下什么叫超参数的 scaling law?

何俊贤

大模型训练会涉及一些超参数,比如应该使用多大的 learning rate、多大的 batch size。batch size 简单来说,就是把数据喂给 GPU 时,一次喂多少条。

这些参数设置会影响训练效果。通常大家会参考之前某篇论文的设置,直接采用类似的经验值。但大规模实验很昂贵,不可能训练很多个大模型,分别尝试不同设置。

Scaling law 的意义是:比如在 1B、2B、3B 这样的小模型上做实验,找到合适的超参数,然后外推到 70B 模型,预测它最佳的设置。

比如说,我做了一系列小模型实验,发现训练算力规模和 batch size 之间大概呈现 power law 的关系。虽然实际只做了小模型,但通过拟合出的函数,就可以预测当算力变大、模型规模变大时,参数应该怎么设置。

之前的 scaling law 更多关注模型大小和数据大小。比如 Chinchilla scaling law 要解决的问题就是:给定固定算力,应该训练多大的模型、使用多少数据,才能得到最好的效果。

假设我有 1000 张卡,只能训练 3 个月,之后卡就被收回,那么算力是固定的。在算力固定的情况下,就存在一个最优配置:应该训练多大的模型、使用多少数据,才能得到最好的效果。

Chinchilla scaling law 拟合了一个经验公式。比如训练 70B 模型,可能应该配 2T token;如果算力更多,就应该训练更大的模型,同时数据量也会变化。这就是模型规模、数据规模和算力之间的最优配置关系。

但 DeepSeek 这篇论文在某种程度上 challenged 了之前的 scaling law。因为他们认为,之前的 scaling law 在把参数量转化为算力时,没有充分考虑 attention 的 computational overhead,所以估计比较粗糙。

他们提出了一个新的估计方法,把 attention 等因素也考虑进去。最后虽然公式看起来跟之前很像,但后面的一些细微差别,会导致对 scaling law 的理解以及外推方式出现不同。

我觉得这体现了 DeepSeek 的态度。他们完全可以 follow Llama 2 或其他公司的 configuration,直接把数据做好一点,训练出一个效果不错的模型。但他们会真正去理解背后的 science,发现之前工作中有不够精细的地方,就尝试修复它。

而且之前这些工作都来自非常权威的机构,比如 Chinchilla scaling law 是 Google DeepMind 做的,Llama 2 是 Meta 做的。但 DeepSeek 仍然会像一个学者一样,去 review 背后的 science,认为别人做得粗糙,就尝试把它做得更精细。这不是盲目 follow 别人、调出一个好效果,而是想理解背后的原理。

Scaling law 的意义会体现在 Figure 5。GPT-4 的论文也画过一张非常类似的图。

横坐标可以理解为算力,也就是 FLOPs,多少次浮点数运算。可以粗略理解为从左到右,可能是 1000 张卡训练 1 个月、2 个月、3 个月。纵坐标是 performance,越低越好。

灰色的点是实际训练过的点,通常在左边,代表使用较小算力训练的小模型。通过这些点拟合出一条虚线,就可以预测当算力增加到很右边时,比如 1000 张卡训练半年,模型大概会达到什么效果。

这个预测意义非常大,因为不用真正训练半年,就可以用较小的代价预测半年之后模型的效果。

GPT-4 论文曾经展示过类似的结果,在训练 GPT-4 之前就相对精准地预测了它的效果。DeepSeek 这张图也展示了他们对 scaling law 的理解:他们用小模型的实验,精准预测了最终训练出来的大模型。

右边大的五角星是 67B 模型,小的五角星是 7B 模型,左边的灰色点是使用少量算力训练出来的模型。这说明他们对背后 science 的理解以及训练过程都非常正常,能够比较精准地预测大模型的效果。

除此之外,这篇论文还讨论了 data quality 对 scaling law 的影响。比如他们认为,数据质量不同,最优的模型规模和数据规模配置也不一样。之前大家知道数据质量重要,但可能没有充分考虑它对最优配置的具体影响。

我觉得这体现了他们希望建立理论模型,更好地理解这个问题,而不是把它当成一个纯经验问题。Scaling law 本质上可以看成一个理论模型,因为它有一个数学函数。

这也是他们风格的体现:用严谨的态度去理解背后的科学,帮助未来 develop 更好的东西,而不是纯粹把资源堆上去,训练一个模型,效果不错就结束。

后面的 performance 基本上就是跟 Llama 2 对比。英文上和 Llama 2 各有千秋,中文上肯定更好,因为 Llama 2 本身不太强调中文能力,而 DeepSeek 从一开始就强调中文能力。

7B 和 67B 模型都是开源的,在当时已经是国内最强的开源模型之一。虽然大家当时可能不太熟悉,但它其实很强。

这篇论文最后还有一个我非常 respect 的地方:他们非常开诚布公地讲了刷榜。

当时中文榜单 C-Eval 是我们做的,2023 年 5 月发布,是大模型中文领域比较早的榜单。榜单发布后,很快出现了非常疯狂的刷榜行为。

做 evaluation 的目的,是帮助大家评价大模型的表现。比如分数高,说明模型能力可能更强。刚开始这很标准,也很正确。但后来因为有了榜单,虽然不是我们的本意,却直接或间接加速了国内大模型刷榜。

C-Eval 当时基本上是唯一的中文榜单,大家开始刷榜,分数越来越高,之后就出现了高分低能的现象:榜单分数很高,但实际能力并不强。

很多公司或多或少都有刷榜行为,但大家不会公开讲。DeepSeek 却做了一个非常严谨的对照实验,把这件事情写进论文里。

这些榜单基本都是多选题,比如高中、大学、考研数学,以及物理、生物等题目。DeepSeek 发现,如果想刷榜,只要使用大量类似的多选题进行训练,榜单分数就可以瞬间提高 20 多分。

比如 C-Eval 本来只有 47 分,刷一下就可以到 71 分,gap 非常大。

这件事让我感触很大。DeepSeek 明明可以刷榜,把分数做得很高,但他们不这么做,而是报告刷榜之前的效果,同时告诉大家如果刷榜,可以刷到什么程度,以及具体应该怎么刷。

在当时,没有人公开写这件事。DeepSeek 却把它当成一篇论文,做成一个严谨的对照实验。这家公司非常诚实,也不太追求宣传,真的很像学术论文。

张小珺

学术圈一般会这么写吗?

何俊贤

学术圈会。比如我想专门研究刷榜,就会做变量实验,然后把结论写出来。但对于公司来说,可能不希望别人知道模型是刷上去的,而希望别人觉得模型本身就这么强。

DeepSeek 却把这个事情写出来了。同期还有一篇类似的论文,是 Skywork,也就是昆仑万维做的。这两篇工作我都非常尊重,算是同期较早公开讨论刷榜行为的论文。

后来我们在 2024 年上半年也做了一些新的 evaluation,试图杜绝刷榜,看看哪些模型刷榜、哪些模型没有刷榜。我们评估了国内外多个模型,包括 DeepSeek。最后发现,DeepSeek release 出来的 base model 其实没有刷榜。

相比之下,国内不少模型虽然榜单分数很高,但看起来存在刷榜行为。这是另一个让我 respect DeepSeek 的地方:在国内非常浮躁、大家都刷榜的那半年,他们坚持没有做,而且还把这个事情写进论文,做了对照实验。

这就是 DeepSeek LLM:第一篇论文是对 Llama 2 的复现,同时公开了刷榜行为,并且严谨地揭露了刷榜的方式。在当时的环境下,这是非常不一样的地方。

接下来是第二项工作,DeepSeek-MoE。

DeepSeek-MoE 是第二个基座模型。从这个模型开始,DeepSeek 就开始做混合专家模型,也就是 MoE。第一个模型还是 dense model,稠密模型,因为它 follow Llama,而 Llama 一直做稠密模型。

张小珺

能不能给大家解释一下 dense model 和 MoE 的不同?

何俊贤

Dense model 是一个普通的 Transformer。Transformer 有 attention,每一层经过 attention,再经过普通的 feedforward network,也就是神经网络。无论输入什么内容,所有参数都会参与计算,所以它叫稠密模型。

MoE 的一个很大区别是,把 Transformer 里的神经网络分成好几份。每一份可以通俗地理解为一个 expert,所以叫混合专家。

比如有一个专家擅长数学,一个专家擅长物理,一个专家擅长文学。输入一道数学题时,可能只需要使用数学专家,其他专家不需要参与。

这就是混合专家模型。它也叫稀疏模型,因为虽然有很多 expert,但每个输入只激活其中少数几个,其他专家没有参与计算。

稠密模型则是无论输入什么,所有参数都在发挥作用,所以是 dense 的。

为什么要做 MoE?DeepSeek 并不是第一个做 MoE 的。很早之前,ChatGPT 出来之前,Google 就有 MoE 模型,当时叫 GShard。

在 DeepSeek 做 MoE 之前,业内也有很多传言,说 GPT-4 和 GPT-3.5 是 MoE 模型,所以它们才能把成本做到那么低。因为如果 ChatGPT 真的是一两百 B 的 dense model,在当时的价格下大家会觉得不可能,所以推测它可能是 MoE,可以在 inference 时降低成本。

MoE 的重要性在于:模型整体可以很大,但每次输入只激活少数参数。比如模型总共有 100B 参数,分成 10 个专家,每次只用一个专家,那么每次预测实际只使用 10B 参数。

这就是所谓的激活参数。MoE 模型虽然总参数很大,但激活参数可能只有全部参数的十分之一,因此训练和推理成本都可以显著下降。

它相当于让模型可以 scale up,模型总规模变大,但推理成本仍然比较低。模型看起来可能有 100B,但每次只计算其中一两部分,不需要计算其他参数。

所以 MoE 是一种非常有吸引力的架构。后来很多模型也开始转向 MoE。

张小珺

他们算是比较早做 MoE 的吧?

何俊贤

算比较早。DeepSeek-MoE 是 2024 年 1 月发布的,而且里面确实有一些不一样的东西。

不过这篇论文不像 DeepSeek LLM 那样,是一个完整、成熟的产品模型。它更像一个 study,研究不同算法和策略。我认为它是在为 DeepSeek-V2 铺路,只是把前期实验结果写成论文发布出来。

这篇论文大部分实验使用的都是 2B 模型,规模很小。DeepSeek 最后还尝试了一个 145B 模型,但并没有训练完,只训练了一小部分,发现效果还不错,于是也写进论文。

他们的目的是验证自己的观点和想法。DeepSeek-MoE 主要需要理解两点:第一,为什么要做 MoE;第二,他们具体做了什么创新。

MoE 的好处是,模型拥有很多 expert,但每次只激活少数几个,因此训练和推理成本降低,同时模型总参数仍然很大。你可以把所有知识和能力存到整个模型中,但每次面对一个 query,只激活相关的一小部分。

DeepSeek-MoE 的 Figure 1 展示了这一点。纵坐标是效果,越高越好;横坐标是激活参数。Dense model 的激活参数等于全部参数,而 MoE 模型虽然总参数更大,但激活参数可能很小。

比如 Llama 2 7B 的激活参数就是 7B,位于图的右侧。DeepSeek-MoE 是 16B 模型,但激活参数不到 3B。也就是说,它的推理成本跟 2B、3B 模型差不多,但 performance 接近 7B 模型。

这是一个很漂亮的结果。论文的核心结论是:只使用之前模型 40% 的 computation,DeepSeek-MoE 达到了接近 7B 模型的效果。也就是部署成本降到了原来的 40%。

从这篇论文开始,DeepSeek 的论文里就不断出现成本和效率的考虑。后来到 V3,这种思路达到了比较完整的状态。

这篇论文有两个主要创新。

第一个是增加 expert 的数量,也就是他们所谓的 knowledge hybridity。之前大家做 MoE,一般只有 8 个或者 16 个 expert。但 DeepSeek 认为,8 个或 16 个专家分得太粗,希望分成 64 个甚至 128 个 expert,使其更 fine-grained。

假设总模型 size 一样,8 个专家选 2 个,相当于激活四分之一;128 个专家选 2 个,只激活六十四分之一,所以模型变得更稀疏。

同时,专家数量少时,不同 expert 之间区分不明显。比如 8 个专家可能都要学习很多共享内容,彼此差异不大。分成 128 个专家后,粒度更细,每个专家可能学习到更不一样的东西。

这篇论文发布后,业内就讨论是不是应该像 DeepSeek 一样使用更多专家,而不是传统的 8 个或 16 个。这是 DeepSeek 很大的创新点。

第二个创新是 shared expert。他们认为,如果 128 个专家彼此完全不同,有些基本能力,比如语言理解和常识,对所有 query 都有用,那么应该设置一些 shared expert。

因此,模型既有专有专家,也有共享专家。共享专家无论输入什么都要经过,专有专家则由路由机制选择。

Figure 2 从左到右展示了这个过程。最左边是以前的做法,有 n 个专家;从 A 到 B,DeepSeek 把专家数量增加;从 B 到 C,又加入 shared expert。蓝色的是 routed expert,绿色的是 shared expert。绿色专家无论输入什么都要经过,蓝色专家则按输入进行选择。

张小珺

Shared expert 可以理解成负责更通用的知识吗?

何俊贤

可以。比如常识、对中文或英文语言的基本理解,不管输入什么都可能用得到。

这个设计听起来很 intuitive,但真正做这个尝试是很勇敢的。因为你需要在很大规模上投入大量算力。以前大家已经做过 MoE,通常是 8 个 expert,效果也不错。直接 follow 别人的方案风险低,为什么要自己做不一样的东西?

学校做不一样的东西,可能是为了创新、发论文。但对 DeepSeek 来说,发论文和所谓的创新并不是最重要的,他们仍然敢于尝试,我觉得这很难得。

而且这个思路在 V2、V3 里是一脉相承的。后面 V2 和 V3 都采用了 Figure 2C 的设计。

张小珺

如果要做这样一个实验,成本大概有多高?

何俊贤

这篇论文的实验还好,因为是在 2B、16B 这样的较小规模上验证。最后他们尝试训练 100 多 B 的模型,成本就非常高。

而且小模型上验证有效,不一定能迁移到大模型。2B 模型很便宜,做出来效果不错,但你把它放大到 200B,未必一样 work。

尤其是这套方案没有人做过。你训练一个没人做过的东西,总会有风险;follow 别人,风险就低很多。如果在 100B、200B 的规模上做,最后效果不好怎么办?

所以我觉得这些尝试非常勇敢。作为公司,在业界投入这么多资源去做没有验证过的东西,是很少见的。

这篇论文的创新就是两点:增加 expert 的数量,以及加入 shared expert。

论文中使用了 64 个 routed expert 和 2 个 shared expert。模型本身是 2B 和 16B,激活参数只有 2.8B。和原来的 7B dense model 相比,效果差不多,但 computation 只有 40%。

最后他们还训练了一个 145B 的模型,但没有训练完。只训练了 200 多 B token,而第一篇论文的模型训练了 2T token,少了大约 10 倍。

尽管没有训练完,145B 模型的激活参数只有 22.2B,约为之前 67B 模型激活参数的三分之一,但 benchmark 效果基本差不多,有些好一点,有些差一点。

所以他们认为这条路线很 promising,设计也很 promising,于是继续做 DeepSeek-V2。V2 就是在这个基础上把规模真正做上去,训练出一个完整的大型 MoE 模型。

接下来就是 DeepSeek-V2。

DeepSeek-V2 的 title 是“强大、经济、高效”。它基本上是刚才那篇论文的 scale up,但有一个非常重要的新东西:Multi-head Latent Attention,也就是 MLA,多头潜在注意力。

DeepSeek-V2 是一个 236B 的 MoE 模型,总参数 236B,但激活参数只有 21B。因此部署时所需的算力大概相当于 21B 模型。

它支持 128K context。相比 DeepSeek 67B,performance 更好,训练算力节约了 42.5%。KV Cache 节约了 90% 以上,生成速度提高了 5.76 倍。

也就是说,它的模型规模接近之前 67B 模型的 4 倍,但训练算力更少,部署时生成速度更快,效果还更好。

Figure 1 里,DeepSeek-V2 的激活参数只有 20B 左右,但 performance 最高。它的模型更大,效果更好,推理速度更快,成本也更低。

V2 延续了 DeepSeek-MoE 的设计:两个 shared expert,以及 160 个 routed expert。之前 DeepSeek-MoE 是 64 个 routed expert,V2 直接变成 160 个。

这不是一蹴而就的,而是在小规模实验中先验证,再扩大规模。之前大家做大模型通常只有 8 个、16 个专家,DeepSeek 突然使用 160 个,差异非常大。

MLA 是 DeepSeek 自己提出的创新。MoE 仍然是在前人工作基础上的改进,而 MLA 是 DeepSeek 首次提出的架构。

先解释一下普通的 Multi-head Attention。Transformer 中有很多个 head,每个 head 都有自己的 key 和 value,然后和 query 做 attention。因为每个 head 都是独立的,所以每个 head 都要保存自己的 key 和 value。

这会带来一个问题:推理部署时需要保存 KV Cache。

比如 ChatGPT 或 DeepSeek 生成文本时,是一个 token 一个 token 地生成。每生成一个新 token,都需要和前面所有 token 做 attention。如果输入包含 5000 个词,之后又生成 5000 个词,那么新生成的每一个词都要和之前的 5000 个词进行 attention。

前面的 token 已经计算过 key 和 value,不希望每次重新计算,所以通常会把它们存下来。这样可以节省计算时间,但需要占用 GPU memory,这就是 KV Cache。

普通的 Multi-head Attention 会保存很多 key 和 value,所以 KV Cache 很大。

后来有了 Grouped Query Attention,也就是 GQA。它让多个 head 共享一组 key 和 value。比如原来有 8 组,现在变成 4 组,每两个 head 共用一套 key 和 value,这样 KV Cache 可以降低 50%。

Llama 2 和 DeepSeek LLM 第一版都使用了 GQA。

再激进一些是 Multi-Query Attention,也就是 MQA,让所有 query 共享同一个 key 和 value。这样 KV Cache 更小,但会损失 performance,因为多个 head 的灵活性降低了。

从 MHA 到 GQA 再到 MQA,成本越来越低,但效果也可能越来越差,所以这里需要权衡。

DeepSeek 提出的 MLA,就是 Multi-head Latent Attention,试图在两者之间取得平衡。

它的核心思路是:不直接保存高维的 key 和 value,而是把它们压缩成一个低维的 latent 向量。之后需要使用 key 和 value 时,再从这个 latent 向量映射回去。

比如原本 key 和 value 是 1024 维,现在先压缩成 100 维,在 100 维空间里计算,再用矩阵映射回高维。这就是 low-rank 的思路。

在公式里,输入先计算出一个压缩后的 C,也就是 latent。K 和 V 都从 C 映射出来。

这样做的好处是,部署时只需要保存 compressed latent KV,也就是 C,而不需要直接保存完整的 K 和 V。假设 K 和 V 是 1000 维,C 只有 100 维,那么存储空间直接变成原来的十分之一。

因此 KV Cache 大幅缩小,部署所需的 memory 也大幅减少。DeepSeek-V2 的 KV Cache 降低了 93%,生成成本和速度都得到改善。

张小珺

MLA 能不能从人的角度做一个形象的比喻?比如怎么理解 key 和 value?

何俊贤

Key 和 value 可以这样理解。

Attention 可以看成:我现在要生成下一个词,需要理解它跟之前说过的哪些词有关系。之前的 context 中,哪些部分对现在生成下一个词的影响最大?

之前每个词都有一个 key。现在要生成的新词,会通过这些 key,计算它和之前每个词之间的依赖关系。比如某个词依赖 90%,另一个词依赖 10%,还有的词几乎不依赖。

计算出依赖关系之后,还要知道这些词具体包含什么内容,以及它们如何影响当前生成,这就是 value 的作用。

所以之前每个词都有自己的 key 和 value,这些都要保存下来,占用 GPU 空间,这就是 KV Cache。

MLA 可以理解为:原来每个词的 key 和 value 用很长的向量表示,现在用一个短很多的向量来表示。向量变短,存储空间就小很多,KV Cache 也就变小了。

当然,MLA 还涉及 rotary position embedding,也就是 RoPE、旋转位置编码等技术细节,这里不展开。

DeepSeek 提出的 MLA,在 KV Cache 上相当于 GQA 只使用了 2.25 个 group。普通 GQA 如果把 group 降到 2.25,效果可能会很差,但 MLA 在达到类似压缩程度的同时,performance 更好。

这就是 MLA 的主要直觉。

MoE 训练还涉及专家之间的 balance。不能让所有数据都依赖其中两个专家,其他专家从来没有被使用,否则 MoE 就失去了意义。

同时还要做 device balance,也就是不同 GPU 之间的负载平衡,以及不同 GPU 之间通信的平衡。只有这些都平衡,整体 efficiency 才能最大化。

MoE 的一个优势是天然适合分布式实现。不同专家可以放到不同 GPU 上。如果某两个专家被过度使用,就会导致对应 GPU 负载很高,其他 GPU 几乎没有工作,整个集群的 utilization 就很低。

因此,需要从工程上充分利用所有 GPU,避免算力和金钱浪费。这些听起来不一定是算法创新,但对最终的成本控制非常重要,也是 DeepSeek-V3 能把成本压低的原因之一。

DeepSeek-V2 使用了 236B 总参数、21B 激活参数、2 个 shared expert 和 160 个 routed expert。训练使用了 8.1T token。

在这么大规模的训练中,第一次使用自己提出的 MLA,以及和以前完全不同的专家配置,是非常大胆的事情。同期公开的大模型基本没有人在这么大的规模上做如此大的创新。

这说明 DeepSeek 对 efficiency 的追求非常坚定,也有勇气承担可能失败的风险。

V2 还做了 long context extension,支持 128K context,这部分基本上是跟随已有技术。它使用了 efficient training 和 RoPE extension 等方法。

结果上,DeepSeek-V2 在中文 benchmark 上表现非常好,英文上也和 Mixtral、Llama 3 等模型接近甚至更好。

Mixtral 是 Mistral 做的 MoE 模型,使用 8 个专家,每个专家 22B。总参数一百多 B,但它的专家之间区分度可能并不高。

DeepSeek-V2 使用 160 个专家,专家粒度更细。总参数比 Mixtral 大约多 90B,但激活参数更少。Mixtral 激活参数大约 39B,DeepSeek-V2 只有 21B,因此部署成本甚至低于 Mixtral。

与当时的 Llama 3 相比,DeepSeek-V2 的效果差不多,但训练 token 少很多。总体来说,DeepSeek-V2 使用 21B 激活参数,达到了开源模型中比较 top 的 performance。

在 H800 集群上,每 1T token 约使用 300K GPU hours。它的训练成本相比 DeepSeek 67B 节省了 42.5%,生成速度快了 5.76 倍。部署时还会把参数转换成 FP8,降低表示精度;KV Cache 也会量化,进一步减少成本。

DeepSeek-V2 是 2024 年 5 月的工作,当时引发了国内的价格战。因为它是一个很大的模型,但由于 MoE 和 MLA,部署成本非常低。听说当时 DeepSeek 部署这个产品还不是亏钱,只是利润不高。

他们每百万 token 的价格非常低,比 OpenAI 低很多,也比国内其他厂商低好几倍,甚至不在一个数量级上。

当时很多人很震惊:DeepSeek 用相对差一些的 GPU,以很低的价格部署一个很大的模型,结果还不是亏钱,仍然有利润。那时有人称他们是“大模型界的拼多多”。

张小珺

你觉得他们是以什么目标来做这些工作的?他们心里的动机可能是什么?

何俊贤

说实话,我不太清楚,也很难揣测。

他们是不是真的为了 AGI 在做努力?比如这些模型都开源,V3 也是以 MIT License 开源,也没有特别强调商业化,没有把技术保留成商业护城河。模型做了很久,投入了很多钱,最后却免费开源,别人还可以免费商用。

我非常尊重他们,因为这很了不起。但他们之后是不是真的想商业化、想赚钱,还是觉得有幻方可以赚钱,其他事情不重要,只想做 AGI,这些我不清楚,也很难判断他们的动机。

张小珺

那我们进入基座方面的最后一篇论文,DeepSeek-V3。

何俊贤

DeepSeek-V3 是 2024 年 12 月发布的工作,关注度已经很高了。

这个模型总参数 671B,比 V2 大接近 3 倍,训练了 14.8T token,最终使用了 2048 张 H800,成本约为 557 万美元。

V3 大部分内容 follow V2,包括 MLA、很多 expert、shared expert 等设计。它的规模很大,但训练非常稳定,整个训练过程中没有出现 loss spike,也没有进行 rollback。

过去的大模型预训练中,loss spike 很常见。可能因为 GPU 或机器故障,或者其他不可知原因,loss 突然变大,需要停下来重新 rollback,再重新训练。

DeepSeek-V3 的训练一次完成,没有任何 rollback,这背后一定有非常好的工程优化和工程团队。V3 的论文大量篇幅都在写工程,和之前论文的风格不一样。这也有点像是在展示他们的 infra 能力。

V3 只使用了 2048 张 H800。对于 671B 模型来说,这个数量并不多。国外很多公司有上万甚至数十万张 H100,国内大厂的卡也远多于这个数字。

DeepSeek 早期的 5000 张、1 万张卡在国内算比较大的规模,但到了后来,它的卡并不算多。V3 训练成本低,引起了很多关注,也让更多人开始认真研究 DeepSeek-MoE 和 MLA。

V3 相比 V2 有几个不同点。

第一个是 loss-free balancing。以前平衡专家通常要加入一个额外的 loss,在训练过程中一起优化。V3 不使用额外的 loss,而是设置一个常数,监控专家被使用的次数。如果某个专家使用过于频繁,就调整这个常数,让未来更少选择它。

第二个是 multi-token prediction。这个技术不是 DeepSeek 首次提出,而是来自一篇较新的论文。传统语言模型训练时预测下一个 token,但 multi-token prediction 会让模型同时预测后面多个 token。

这样做的直观好处是 training signal 更密集,模型不只学习预测下一个词,也学习预测更远的未来。它可能让模型提前规划,提升对未来多个 token 的预测能力。

这个想法听起来很直觉,但真正把它用到如此大规模的训练中仍然很勇敢。此前相关论文只在不大的规模上验证过,没有人真正大规模使用。

DeepSeek 完全可以 follow V2,把规模直接做大,为什么还要加入一个新的、未经大规模验证的技术?我觉得这体现了 DeepSeek 的文化:不停尝试新的东西,只要觉得可能 work,就愿意把它做进去。

他们最后做了 ablation,发现加入 multi-token prediction 确实能提升效果。

这个技术还有另一个好处:训练时一次预测多个 token,推理时也可以选择一次预测多个 token。虽然仍然可以保持一个 token 一个 token 地生成,但也可以把 MTP module 用于 speculative decoding,进一步提高生成速度。

语言模型部署慢,是因为它是 autoregressive 的,必须先生成第一个 token,才能生成第二个。Multi-token prediction 让模型有可能一次预测后面的多个 token,再由另一个机制决定接受或拒绝这些 token。

张小珺

这是不是意味着我们使用 DeepSeek 产品时,它输出得比其他产品更长、更快?

何俊贤

他们具体部署时有没有真的采用这个方式,我不确定。但 V3 具备了这样做的能力。是否实际采用,还需要研究它会不会影响效果。

V3 还使用了 FP8 training,也就是低精度训练。过去很多人会在部署阶段做量化,但很少有人真正成功地在大规模训练中使用 FP8。

低精度训练可以让训练更快、更 efficient,但也有很大 challenge,因为精度降低可能导致训练不稳定,或者效果变差。

DeepSeek 进行了非常仔细的对照实验,发现有些中间变量仍然必须使用原来的精度,否则训练会出问题。通过这些处理,他们成功实现了大规模混合精度训练。

这不是一个纯粹的算法创新,但它对降低成本非常重要。V3 的论文里还写了很多 infra、通信、精度处理的内容,这也是之前论文中比较少见的。

V3 使用了 1 个 shared expert 和 256 个 routed expert。V2 是 2 个 shared expert 和 160 个 routed expert。随着模型变大,专家数量继续增加。

从 DeepSeek-MoE 到 V2,再到 V3,他们始终坚持使用更多专家,这和其他模型很不一样。

和 Llama 3.1 405B 对比时,Llama 3.1 仍然是 dense model,激活参数接近 405B;DeepSeek-V3 总参数 671B,但激活参数只有 30B,部署成本低了 10 倍以上。

效果上,DeepSeek-V3 在英文上和 Llama 3 各有千秋,在 reasoning、code、math 以及中文上都大幅超过 Llama 3 405B。

这就是技术路线的差异。DeepSeek 从很早开始做 MoE,Llama 从 Llama 1 到 Llama 3 都主要做 dense model,所以部署成本非常高。

V3 还做了很多 ablation study,这种写法很像学术界:设计一个东西,然后验证它是否有效。比如比较使用 multi-token prediction 和不使用的效果,发现使用后确实更好。

V3 的后训练也很值得讲。它的 SFT 只使用了 1.5M 条数据,对于 671B 模型来说非常少。Llama 3 的后训练数据大约是千万级甚至更多。

V3 的 reasoning data 使用了 DeepSeek-R1 做蒸馏。那个时候 R1 还没有发布,是内部已经存在的模型。也就是说,他们基于 V3 基座开发 R1,之后又用 R1 反过来生成数据,帮助训练 V3 的 chat 模型。

此外,他们使用了 DeepSeek-V2.5 生成 long reasoning data,之后也做了强化学习。

这里的强化学习已经体现出 DeepSeek 策略的变化。对于数学和 coding 这类可验证问题,他们用规则给 feedback:做对还是做错,不使用奖励模型。对于开放式问答,仍然可能使用奖励模型。

V3 的后训练做得相对浅,没有特别针对榜单进行优化。很多国内外公司对刷榜都很执着,会刻意优化榜单数据,甚至把相关数据加入基座模型,让榜单分数看起来尽可能高。

但据我了解,DeepSeek-V3 在这方面没有那么极端。当然我也不是百分之百确定,只是从论文和模型表现来看,他们似乎并不太执着于榜单。这可能跟他们短期内没有那么在乎产品使用有关。

基座模型的发展路线,到这里基本讲完了。接下来讲 reasoning。

DeepSeek 最早的 reasoning 工作之一是 DeepSeek-Coder。2024 年初,DeepSeek-Coder 是一个专门做代码的模型。Mistral、Llama、千问等大模型公司基本都有 code 版本,因为 coding 模型可以帮助开发者写代码,本身很有用。

Coding 也是 reasoning 的一部分,所以这是 DeepSeek 很早开始做 reasoning 的方向。

DeepSeek-Coder 第一版是 dense model,基本跟 DeepSeek LLM 第一版一样,只是训练数据主要是代码。它有 1.3B 到 33B 的多个规模,全部开源。

后来 DeepSeek-Coder-V1.5 采用了 continue pre-training,也叫 additional pre-training。比如先有 DeepSeek LLM 7B,再在这个基础上继续训练 2T token,其中 70% 是 code,其他是不同类型的数据。

从头训练 code model 叫 pre-training,从已有模型上继续训练叫 continue pre-training。

DeepSeek-Coder 早期在国外获得知名度,很大程度上是因为 coding 模型。DeepSeek LLM 有很多平替,国外用户可能不太在意中文;DeepSeek-MoE 和 V2 模型又太大,一般开发者部署不了。

但 DeepSeek-Coder 从小模型到中等规模都有,效果很好,所以使用很多。很长一段时间,国外用户对 DeepSeek 的印象就是 DeepSeek-Coder 很强。

张小珺

这个时候 DeepSeek 已经开始做 reasoning 了。2024 年初开始做 reasoning,是一个比较 unique 的事情吗?还是大家其实都在做?

何俊贤

我觉得那个时候没有很 unique。因为当时已经有 Code Llama,Llama team 已经有官方的 code 模型了,开源 community 也已经有 StarCoder,国内也有一些专门的 coding 模型,所以不是很稀奇。但 DeepSeek-Coder 的效果确实做得比较好,所以大家用得很多。

张小珺

大模型在 coding 领域能够较早落地,是因为 coding 相对来说比较容易设置规则吗?

何俊贤

我觉得一个原因是 coding 可以帮助开发人员,应用更广,可以帮助各种各样的程序员和开发人员写代码。Coding 是早期大模型真正落地、提高生产力的一个典型应用。相比之下,早期的 chat model 更多只是聊天、好玩,并没有真正落到实际工作上。

DeepSeek-Coder-V2 则开始使用 MoE。它基于 DeepSeek-V2 的 checkpoint,继续训练 6T token,因此本质上是以 DeepSeek-V2 为基座的 code model。

这里有一个值得注意的地方:他们在 coding 的 reward model 上仍然使用了奖励模型。虽然代码有 unit test 这样的规则,但他们认为 unit test 覆盖不够,0/1 feedback 可能 noisy,所以仍然训练了 reward model。

当时整个 community 都在这么做,大家认为需要 reward model。他们还做了对照实验,发现 reward model 的效果更好。

但这个实验可能有两个问题。第一,unit test 的 coverage 不够,代码可能本身是错的,但刚好通过了某个 test case,于是被判断为正确。增加更多 unit test,可能会改善这个问题。

第二,reward model 在规模扩大时有自身弊端。规则只要设计正确,scale up 之后仍然稳定;额外训练的 reward model 可能在某些数据上有效,在另一些数据上效果不好。

但在当时,无论是 DeepSeek 还是整个 community,基本都认为需要 reward model。

另一个重要的工作是 DeepSeek-Math。DeepSeek-Math 是一个 7B 的数学模型,基于 DeepSeek-Coder-Base-V1.5 7B,继续训练 120B math token 得到。

当时 DeepSeek-Math 7B 是很长一段时间里最好的开源数学基座模型之一,效果超过了 Mistral、Llama 等数学模型,甚至超过 34B 的 Llama。

这篇论文真正重要的地方,是提出了 GRPO。

PPO 本身没有问题,是 OpenAI 最早使用的经典强化学习方法。它的问题是成本高。PPO 需要 policy model、reward model、reference model 和 value model,一共 4 个模型。

其中 policy model、reward model、value model 通常都很大。如果 policy model 是 100B,reward model 和 value model 也可能接近这个规模。训练时这些模型都要放在机器上,所以资源占用非常大。

GRPO 的出发点是降本增效。它去掉了 value model。PPO 需要 value model 来计算 advantage,但 GRPO 一次 sample 多个 response,给每个 response 打 reward,再用这些 reward 的平均值作为 baseline,计算每个 response 相对于平均值的 advantage。

这样就少了一个很大的模型,训练时节省了大量 memory 和算力。

GRPO 后来被 DeepSeek 一直沿用,包括 V2、V3 和 R1。R1 发布后,GRPO 也在开源强化学习框架中广泛使用。

DeepSeek-Math 还有一个我很喜欢的部分:它研究了 online reinforcement learning。

当时 community 主要在做蒸馏、SFT 和 rejection fine-tuning,还没有广泛做 online RL。强化学习更像是一种自我提升,而不是蒸馏。

这篇论文发现,online 的方式比 offline 更好。Offline 是先用模型生成一批数据,训练一遍就结束;online 是模型一边训练、一边更新,再用更新后的模型生成新数据。

Iterative 的方式介于两者之间:训练一代,再用新模型生成一批数据,再训练下一代,通常做几代。但真正的 online RL 可能要持续很多代。

DeepSeek-Math 很早就尝试了 online RL,但当时 community 并没有把它做成主流。原因包括训练成本高、需要更多卡、不稳定、难调,以及开源 community 缺少成熟的 online RL codebase。

很多公司可能也在做,但不会公开。DeepSeek-Math 把这些实验写进论文,所以很有价值。

论文中还讨论了为什么 RL 有效,以及如何让 RL 更有效。Figure 7 是一个很重要的图。

它讨论 Pass@K。Pass@K 是指对一个问题 sample K 个 response,其中有没有正确答案。比如 Pass@16 是在 16 个 response 中是否至少有一个正确。

这个指标衡量模型有没有能力探索出正确答案。如果模型根本生成不出正确答案,强化学习可能就没什么帮助。

论文发现,RL 之后在 K=1 的 benchmark 上分数提高很多,但当 K 增大时,RL 之前和 RL 之后的差距缩小,甚至没有 RL 的模型在某些情况下更好。

这说明 RL 可能只是把模型本来就能生成的正确答案 rank 到前面,并没有真正增强模型的 fundamental ability。

DeepSeek 甚至在自己的论文中给自己泼冷水,说明这个结果可能没有大家想象中那么好。我觉得这非常有科学精神。

他们进一步讨论怎样让 RL 真正有效,包括提高数据质量、改进 inference、改进 algorithm,以及提高 reward model 的泛化能力。

今天回头看,一个非常重要的答案可能是:不要使用 reward model,只使用规则。规则的泛化能力更强。

比如数学题,无论是小学、初中、大学还是研究生,只要有标准答案,规则就可以判断对错。但如果使用 reward model,它可能只在小学和初中数据上训练过,遇到大学数学题就判断不准。

这就是泛化能力的区别。Reward model 对数据分布敏感,规则则更 robust。

当然,对于开放式写作、开放式问答等没有明确正确答案的任务,仍然需要 reward model。自动驾驶也可能设计规则,比如是否撞到人、是否闯红灯、是否在车道内,但复杂场景下规则奖励可能非常 sparse。

规则奖励的缺点是稀疏。比如数学和 coding 通常只有最终结果的奖励,没有过程奖励。过程奖励模型理论上上限更高,但目前很难做到足够好。

之后 DeepSeek 还做了 DeepSeek-Prover 和 DeepSeek-Prover-V1.5。

Prover 是数学定理证明模型。它使用一个叫 Lean 的定理证明引擎,可以判断形式化数学语言中的证明是否成立。

模型要把自然语言的非形式化数学问题,转换为形式化语言,再交给 Lean 检查。这就提供了一个规则化的 verifier,不依赖额外的神经网络奖励模型。

DeepSeek-Prover 先采用迭代式自我更新:生成数据,用 Lean 检验,错误的丢掉,正确的保留,再用这些数据继续训练,反复迭代。

V1.5 开始使用强化学习,采用 GRPO。因为定理证明的 0/1 reward 非常 sparse,他们没有重新训练奖励模型,而是删除那些特别难、几乎无法生成正确证明的数据。

他们后续还尝试了 MCTS,也就是 Monte Carlo Tree Search,在生成时展开一棵树,而不是一步一步生成。DeepSeek-Prover-V1.5 的结果中包括他们自己的 MCTS variant。

但到最后,DeepSeek-R1 采用的是大道至简的方式,没有 MCTS,也没有复杂的 decoding。

DeepSeek-R1 的 reward 主要有两个:accuracy reward 和 format reward。

Accuracy reward 判断答案对不对;format reward 判断输出是否遵循指定格式,比如先输出 think,再输出答案。两者都是规则,不使用奖励模型。

R1-Zero 之所以叫 Zero,是因为它没有做前置 SFT,而是直接拿 base model 做 RL。此前无论是 Llama、DeepSeek 还是其他工作,通常都会先做 SFT,再做 RL。

R1-Zero 直接从 base model 开始强化学习,也没有蒸馏,没有复杂的奖励模型,没有 MCTS,但在 AIME 等数学任务上效果不断提升。

在 AIME 这类很难的数学任务上,它的 performance 从 0.2、0.3 涨到 0.7、0.8,而且 loss 也一直在涨。模型自己逐渐生成更长的思维链,出现了所谓的“aha moment”。

这让很多人觉得,o1 可能也采用了类似的技术路线。后来 OpenAI 的技术人员也在 Twitter 上承认,DeepSeek 可能用了和 o1 类似的技术。之前大家尝试通过蒸馏、MCTS 等复杂方式复现 o1,但 DeepSeek-R1-Zero 的方法非常简单:直接用规则做强化学习,让模型自己逐渐形成长思维链。

当然,R1 不只处理数学和 coding。对于其他没有明确规则的任务,仍然可能使用奖励模型。

R1 和 R1-Zero 的区别在于,R1 先进行了一定的 cold start,使用长序列数据做 SFT,然后再进行强化学习。今天大家使用的 DeepSeek-R1,主要就是这个版本。

R1 的论文是今天讲的这些论文里写得最简单的一篇。因为它前面依赖的很多东西已经完成了:V3 的基座、GRPO、规则奖励,以及之前对各种失败路线的探索。

它只是把这些东西组合起来,然后 scale up,最后取得了非常好的效果。

所以 R1 并不是凭空出现的,而是 DeepSeek 之前成功和失败经验的集大成。

张小珺

他们的论文发布时间基本集中在 2024 年到 2025 年初。对于学术界来说,这样的发论文频率是不是非常高?

何俊贤

对,对于学术界来说当然很高。但他们是一家公司,资源多、人也多,不是只有一个小实验室,所以也可以理解。

张小珺

像 DeepSeek 这样以公司形式存在,却做了很多 science 工作,对学术界冲击大吗?对你们科研有没有影响?

何俊贤

影响当然有,但我觉得帮助大于影响。

很多公司发布模型时,不会讲太多 science。但 DeepSeek 很多工作帮助我们理解了很多东西,风格很像学术界发表论文。

张小珺

DeepSeek 的产品让人 impressive 的地方,可能还不只是 math 或 coding,而是它的生成文本很像人,文字优美,也有很多感性的表达。

回顾它的论文,它做的更多是理工科工作,为什么最后生成的文本却非常像文科生?

何俊贤

我觉得有两个猜测。

第一个,DeepSeek 的基座是 V3,R1 的强化学习也不只做 math 和 coding,还做了通用任务。通用任务有相应的数据和奖励模型,但具体数据来源没有讲得很详细。

我猜他们在偏文科的数据上可能有比较好的积累。之前也有传闻说 DeepSeek 有中文系的学生,可能有人参与数据标注,帮助模型提高文学能力。当然这只是猜测,不知道是不是主要原因。

第二个猜测是,R1 的长推理训练可能对文科任务有一定泛化帮助。虽然训练的是数学和 coding,但模型在过程中学会了更有逻辑地思考、反思和进行长推理。这种能力可能迁移到其他任务,包括文科任务,让模型思考得更充分。

这两个因素到底哪个作用更大,我们并不清楚,只能说是可能的解释。

张小珺

在你们看来,模型已经有意识了吗?

何俊贤

本着严谨的科学态度,我们一般不会做这样的 statement,也不会认真讨论这个问题。

张小珺

为什么呢?

何俊贤

这跟意识的定义有关。有些人跟模型聊天,觉得它像一个人,就认为它有意识;也有人觉得模型只是把训练数据重新排列组合,仍然是机器,不像人的大脑那样拥有意识。

但模型到底是不是简单地排列组合训练数据,我们也不清楚。它在很多场景下显然不只是简单重复训练数据,尤其是现在这么强的模型。

它背后的泛化到底是机械的、程序式的生成,还是某种真正类似人的智能,很难验证。业内很多理工科研究者不太喜欢讨论意识和智能,因为这会涉及哲学问题,所以通常不会讨论。

张小珺

听你讲完,我感觉 DeepSeek 过去一年走得相对顺利。基本原理搞懂以后,后面的复现和创新都比较顺畅。

何俊贤

从论文发表来看,我觉得是这样。但他们背后肯定也有很多失败的尝试,只是失败的不会写进论文,发表出来的通常是成功的工作。

相对来说,他们确实走得比较顺。一年多时间里发表了很多论文,最后这些大模型也基本都取得了成功。

张小珺

能不能看出来他们一共花了多少钱、用了多少卡?

何俊贤

钱需要仔细算,我没有算过。卡的资源从公开信息来看,其实没有很多。

DeepSeek 自己也公开过,他们有大约 1 万张比较老的 A100。V3 训练使用了 2048 张 H800,大概就是这些资源。

张小珺

总结一下,为什么 DeepSeek 可以追得这么快,成本又可以这么低?

何俊贤

成本低当然跟工程优化有关,比如 MoE、MLA、GRPO 等。但如果总结一下,我觉得从很早开始,DeepSeek 就有一种文化和追求:不是纯粹 follow 别人之前的 practice。

Llama、Mistral 都很权威,如果完全 follow 它们,很难完全超过它们。DeepSeek 从一开始就会尝试不一样的东西。

比如最早从 DeepSeek-MoE 开始,他们就探索更多 expert。这样的创新不是为了创新而创新,而是因为他们真的想压低成本,让整个系统更 efficient,所以勇敢地进行尝试。

最后,他们和别人 diverge,越来越不一样,逐渐形成自己的一套逻辑。比如 GRPO,在它出名之前也没有很多人使用,但 DeepSeek 一直在使用自己发明的 GRPO。

MLA 也是一样。DeepSeek 发明之后,早期很少有人采用,但后来随着 DeepSeek 受到关注,越来越多人开始使用。

他们每个阶段可能只有一个小地方跟别人不一样,但这些创新不断积累,最后就形成了 V3 和 R1。今天大家会发现,V3 有很多地方都和其他模型不同,但其实每一步都只是增加了一点创新。

这也是为什么今天大家真正认识到 DeepSeek 做了很多创新,而不只是 follow 别人。

张小珺

如果说纯原创,一个是 MLA,一个是 GRPO,还有别的吗?

何俊贤

如果只说算法上的纯原创,我觉得主要是这两个。

但我也认为很多其他东西同样算创新。比如 DeepSeek 第一次在 MoE 中使用大量 expert,并加入 shared expert。它可能没有 GRPO 或 MLA 那么明显,但依然是很新的设计。

V3 第一次大规模使用 multi-token prediction。虽然这篇论文不是他们原创的,但他们第一次把它大规模加入训练并且做成功。

他们也是较早在大规模训练中成功使用 FP8 的团队之一。FP8 不是他们发明的,但之前没有人真正成功地在这么大的训练中使用,他们把它做成功,并且公开了经验。

这些也都是创新。

张小珺

你觉得他们是纯原创成分更多,还是组合式创新更多?

何俊贤

我觉得是一系列创新,不能简单叫“小创新”。

当然,如果完全不用 Transformer,做一个完全不同的架构,大家可能会认为是大创新。但 OpenAI 的模型也还是基于 Transformer。语言模型预训练、scaling、预测下一个 token,这些都是既定框架,很难完全革命。

在这个框架下能做的创新,更多就是这些算法、架构和工程方面的改进。

所以可以说,有两个比较明显的原创算法创新,也有很多工程化创新。但 GRPO 和 MLA 不只是工程化创新,它们也属于算法创新。

张小珺

基座模型现在走到 V3 了。你觉得再往后,智能水平提升的空间还有多大?还需要训练更大的模型吗?

何俊贤

我觉得 scaling law 应该仍然存在。

现在基座模型相比之前确实有一点饱和,因为大家使用的 token 越来越多,模型越来越大,而高质量数据本身可能很难继续增加。

互联网数据很多,但其中相当一部分不够好、不够 clean。高质量数据可能很难大幅增加。如果模型继续变大,但数据质量和数量跟不上,基座模型的发展就会出现一定收敛。

Ilya 之前在 NeurIPS 也讲过,数据可能逐渐接近极限,接下来可能需要 scale data,比如使用 synthetic data,也就是合成数据。

但基座模型肯定还有空间。模型做得更大、使用更多数据,仍然可能变得更好,只是相比一年前,增长趋势可能会更饱和。

现在大家可能更关注如何让模型在关键能力上大幅提升。DeepSeek-R1 是一个例子:它不是单纯 scale 预训练,而是 scale 强化学习。

过去 scaling law 主要讨论预训练算力的 scaling,现在大家也会讨论测试时间 scaling、强化学习 scaling。强化学习能不能继续 scale,让模型获得更多提升,是接下来比较热门的方向。

张小珺

你是什么时候开始研究强化学习的?在学界,强化学习一直是非常主流的分支吗?

何俊贤

强化学习有自己的主流分支,但在语言模型,也就是自然语言处理领域,一直不是特别主流。

在大模型出现之前,很多人做过自然语言处理中的强化学习,但效果并不理想。强化学习一直给人一种很难有效的感觉,所以很多传统 NLP 研究者并不相信强化学习。

它在自然语言处理领域逐渐成为主流,主要是从 OpenAI 做 InstructGPT 开始。OpenAI 使用人类反馈强化学习,大家知道 ChatGPT 是这么做的,于是越来越多人研究如何用强化学习让模型对齐人类价值观。

这是一个分界点。在此之前,强化学习在语言处理里一直不太受待见,因为很多人有过失败的尝试。

但那时强化学习主要用于价值对齐、社会价值观对齐,并不是主要用来做 reasoning。真正用强化学习做 reasoning,很长时间都没有成为主流。

我自己在 2023 年底开始研究强化学习时,最早也是做 alignment。当时大家做 DPO,因为 DPO 是 offline 的,算力要求不高,比较容易训练,在和用户偏好对齐方面效果也很好。

后来我们第一次尝试用强化学习做 reasoning,大概是在半年多以前。那时使用过程监督奖励模型,甚至直接使用 DeepSeek 开源的奖励模型,做 online PPO。

但效果很不理想。我们调了两三个月,在数学任务上怎么做都不 work,最后失败了。

后来我们放弃了强化学习,转而做 iterative 的自我进化,也就是生成数据、筛选数据,再训练模型。这种方法比较 work,项目也完成了。

但项目完成之后,我们觉得 online RL 还是更有前途,所以又重新开始做 PPO。到 2024 年底,我们重新做 PPO 时就开始 work 了。

和之前的区别是,不再使用奖励模型。我们发现不用奖励模型之后,强化学习变得容易 work。这跟整个 community 最后收敛的路线一致:大家发现奖励模型不太好用,于是最终收敛到规则奖励。

张小珺

整体来看,你觉得 DeepSeek 的论文 style 是什么样的?它有自己的 style 吗?

何俊贤

我觉得有。他们的论文很像学校的论文。

当然,学校通常做不了这么大的模型,但 DeepSeek 拿着业界级别的资源,写出来的论文风格却很像高校:低调、详细、不浮夸,也不太到处宣传。

我觉得这跟其他业界公司的风格很不一样。他们的团队模式可能天然有利于做这件事,因为是自己孵化的公司,所以形成了一个比较特别的团队。

91. 逐篇讲解DeepSeek关键9篇论文及创新点——“勇敢者的游戏” | BidClub