25-2-14同步
目录
- 整体背景与DeepSeek的独特文化
- 基座模型发展线
- DeepSeek LLM (24年1月)
- DeepSeekMoE (24年1月)
- DeepSeek-V2 (24年5月)
- DeepSeek-V3 (24年12月)
- 推理模型发展线
- DeepSeek-Coder系列
- Math-Shift与GRPO的诞生
- DeepSeek-Math
- DeepSeek-Prover定理证明
- DeepSeek-R1
- 技术总结
一、背景与文化
起源
- 时间线:2022年底,何俊贤教授通过使用幻方(DeepSeek母公司)的萤火超算集群开始关注这家公司
- 初步印象:幻方用5000张英伟达A100搭建了一套非常成熟的超算系统,免费开放给高校科研工作者使用
- 转折点:2023年上半年得知幻方要孵化DeepSeek,最初并不被看好(国内百模大战已很激烈)
| 特性 | 具体表现 |
|---|---|
| 极度开放 | 完全开源,论文写作非常详细诚实,公布大量技术细节 |
| 非常诚实 | 在第一篇论文中主动揭露刷榜行为,做对照实验说明如何刷榜 |
| 低调务实 | 不做铺天盖地的宣传,不像公司更像是高校实验室 |
| 追求效率 | 从MoE开始就极度关注成本,从MLA到GRPO都是降本增效的体现 |
为何DeepSeek能成功?
“他们不是纯粹的follow之前别人做的practice。虽然像LLaMA这些都很权威,但DeepSeek从一开始就有包括从DeepSeek MoE开始就开始探索更多的expert,也不是为了创新而创新。我觉得这种创新更多的是他们真的想压低成本,想让整个东西更efficient。然后很勇敢的做了这些尝试,最后就跟别人越走越不一样”
二、基座模型发展线
2.1 DeepSeek LLM
论文:《DeepSeek LLM Scaling Open-Source Language Models with Longtermism》
定位:DeepSeek的第一篇大模型论文,是对LLaMA2的复现,7B和67B两个规模
贡献
1. Multi-step Learning Rate Schedule
背景:之前大家都用cosine learning rate schedule,但需要在训练前就指定好总的token数。如果要动态调整数据量就不太好改
创新:使用multi-step schedule,先用常数学习率,训一段时间后变低,再按常数调整。这样可以更灵活地动态变化数据量。
# 伪代码说明lr=initial_lr# 常数forstepintraining_steps:ifstepinstep_points:lr=lr*decay_factor# 继续训练2. 更严谨的Scaling Law研究
创新点:之前的scaling law(如Chinchilla、Google的工作)没有考虑attention的计算开销,估计比较粗糙。DeepSeek提出了更精细的公式:
- 第一个scaling:超参数(batch size、学习率)与算力的关系
- 第二个scaling:模型大小、数据大小与算力的关系
公式:
- 新的公式M考虑了更多因素,包括attention overhead
- 发现不同data quality会影响最优配置
3. 开诚布公揭露刷榜行为
对照实验:用选择题数据训练可以刷高榜单分数
| 数据配置 | 分数提升 |
|---|---|
| 正常训练 | 47分 |
| 刷榜后 | 71分 |
| 提升 | 24分 |
“他们明明可以刷榜,但他们不讲。他们就是要报他们刷之前的效果,然后去讲他们如果刷可以刷了这么多。那个时候是没有人写这个事情。”
2.2 DeepSeekMoE
论文:《DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models》
定位:开始做MoE架构,验证Expert数量增多和Shared Expert设计的有效性
MoE基础概念
Dense Model vs MoE:
- Dense Model:每个token经过所有FFN层
- MoE(稀疏):
把FFN分成多份(专家),每个token只激活部分专家
为什么做MoE:
- 模型参数大(如100B),但每次推理只激活一小部分参数
- 训练和推理成本大幅下降
- GPT-4据传也是MoE架构
创新
创新1:Expert数量大幅增加
| 对比 | 之前工作 | DeepSeekMoE |
|---|---|---|
| Expert数量 | 8或16个 | 64个(后来验证到128个) |
原理:
- Expert越多,分割越细,每个Expert学到的东西越不一样
- 从N个Expert选K个,选中比例从 N/K 变得更稀疏
- 128选2只选了1/64,8选2选了1/4,稀疏度大幅提升
创新2:引入Shared Expert(共享专家)
┌─────────────────────────────────────────────────────────┐ │ Architecture设计演进: │ │ │ │ A: 传统MoE ───→ B: Expert数量翻倍 ───→ C: 加Shared Expert │ │ [E₁ E₂ E₃] [E₁ E₂ E₃ E₄ E₅ E₆] [共享E][E₁ E₂ E₃ E₄] │ └─────────────────────────────────────────────────────────┘- Shared Expert:不管什么query都需要经过的专家(如基本语言理解、常识)
- 专有Expert:根据query类型选择性激活
实验结果
- 16B MoE模型,激活参数只有2.8B
- 达到与7B Dense模型相近的效果
- 计算量只用了原来的40%
“这种尝试,作为公司来说,投入很多来说,是很少见的。在业界。”
2.3 DeepSeek-V2
论文:《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》
发布:2024年5月
核心数据:
- 总参数量:236B
- 激活参数:21B(仅为总数的约9%)
- 支持128K context
- 训练成本节约42.5%
- KV Cache压缩93%
- 生成速度提升5.76倍
MLA(Multi-head Latent Attention)——核心创新
背景:推理时需要存储KV Cache,占用大量GPU内存
现有方案对比:
| 方法 | 头数 | KV Cache | 问题 |
|---|---|---|---|
| MHA (Multi-head Attention) | 多 | 很大 | 显存占用高 |
| GQA (Group Query Attention) | 减少 | 减少 | 效果下降 |
| MQA (Multi-query Attention) | 1 | 最小 | 效果大幅下降 |
MLA的解决方案:
- 不直接存储K和V,
存储一个低维的compressed latent C - 计算时通过
矩阵映射得到高维的K和V - 实现"多头的灵活性 + MQA的低存储"
存储内容:低维向量 C (如100维) ← 替代 → 高维K/V (如1000维) 存储空间:减少约90%公式:
C = 压缩后的低维向量 K = W_K × C V = W_V × CMoE配置升级
- Shared Expert:2个
- 专有Expert:160个
- 相比DeepSeekMoE的64个专家更进一步
工程优化
- Device Balance:确保不同GPU的负载均衡
- Expert Balance:确保不同Expert被使用频率均衡
- 通信平衡:不同GPU间通信均衡
- 目的:最大化集群利用率,避免资源浪费
效果对比
| 模型 | 总参数量 | 激活参数 | 部署成本 |
|---|---|---|---|
| DeepSeek-V2 | 236B | 21B | 最低 |
| Mixtral 8×22B | ~176B | ~44B | 较高 |
| LLaMA3 405B | 405B | 405B | 极高 |
“从这个开始,国内的大模型价格战就开始了。DeepSeek用比较差的GPU,用很便宜的价格部署一个大模型,结果还有利润。”
2.4 DeepSeek-V3
论文:《DeepSeek-V3 Technical Report》
发布:2024年12月
核心数据:
- 总参数量:671B
- 训练token:14.8T
- GPU数量:2048张H800(而非最先进的H100)
- 训练成本:557万美元
- 对比:LLaMA3 405B训练成本约3000万美金(约6倍差距)
- 训练稳定性:整个过程无任何roll back
架构继承
- MoE:继承V2设计,1个Shared Expert + 256个专有Expert
- MLA:继承V2的多头潜在注意力机制
创新
1. Multi-token Prediction (MTP)
来源:不是DeepSeek原创,引用了一篇学术paper
核心思想:训练时不只预测下一个token,同时预测后面多个token
传统:输入 → 预测"今天" MTP:输入 → 预测"今天天气"好处:
- 训练信号更密集
- 模型学习到更远的依赖关系
- 可用于Speculative Decoding(一次预测多个token加速推理)
2. FP8 Mixed Precision Training
挑战:低精度训练容易导致训练不稳定或效果下降
解决方案:
- 对大部分中间变量使用FP8
- 对某些敏感变量保持FP16/BF16
- 经过大量实验验证,找到最优配置
“虽然之前在部署时很多人做量化,但在真正的大规模训练上几乎没有成功的案例。V3是最早公开的大规模成功案例。”
后训练策略
| 阶段 | 数据量 | 说明 |
|---|---|---|
| SFT | 1.5M token | 数据量非常小(对比LLaMA3用了20M) |
| RL | DeepSeek-R1数据 | 基于内部版R1蒸馏 |
| 验证数据 | 2.5M | 类似DeepSeekMath的数据 |
- 对刷榜不执着,后训练做得很"浅"
- 相比之下很多公司对刷榜非常执着
三、推理模型发展线
3.1 DeepSeek-Coder系列
DeepSeek-Coder(24年1月)
- 从DeepSeek LLM继续预训练
- 1.3B到33B规模全部开源
- 在代码生成领域获得广泛使用
DeepSeek-Coder-V2(24年)
- 基于DeepSeek-V2(MoE架构)继续训练
- 6T token代码数据
- 当时仍在使用reward model做RL
“在当时整个社区都在用reward model,大家觉得这个是正确的方法。后来R1证明了用
规则reward反而更简单有效。”
3.2 Math-Shift与GRPO的诞生
论文:《DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models》
OpenAI发布了《Let’s Verify Step by Step》,提出基于过程监督的奖励模型(Process-supervised Reward Model, PRM)
PRM vs ORM:
- ORM (Outcome Reward Model):只判断最终答案对错
- PRM (Process Reward Model):判断推理的每一步是否正确
Math-Shift的创新
问题:OpenAI的PRM需要人类标注(80万条数据),成本极高
Math-Shift解决方案:
- 让模型从某个中间步骤继续生成多个解
- 统计这些解最终得到正确答案的比例
- 如果多数能推出正确答案 → 该步骤正确
- 如果几乎都推不出 → 该步骤错误
步骤S → 生成N个解 → 统计正确比例 - 正确比例 > 阈值 → 步骤S是正确的 - 正确比例 < 阈值 → 步骤S是错误的GRPO的提出
PPO的问题:需要4个模型(Policy、Reward、Value、Reference),每个都很大,资源占用极高
GRPO的改进:
- 去掉Value Model
- 用采样多个response的平均值作为baseline计算advantage
PPO: - Policy Model - Reward Model - Value Model - Reference Model GRPO: - Policy Model - Reward Model - Reference Model - (无Value Model)减少一个超大模型的显存占用- 训练效率大幅提升
- 后续DeepSeek-R1等全部使用GRPO
3.3 DeepSeek-Math
论文:《DeepSeek-Math: Towards Mathematical Reasoning in Open Language Models》
- 基于DeepSeek-Coder-V2继续训练
- 7B规模
- 很长时间是开源数学模型中7B最强的
实验发现
- Pass@k招标:sample k个response,里面有多少包含正确答案
- 衡量模型"探索正确解"的能力
发现:
- 做RL后,k=1时分数提升明显
- 但当k增大时,探索能力反而可能下降
- 说明
RL可能只是把正确答案排到更前面,而不是真正提升基础能力
“DeepSeek在paper里主动泼冷水,承认RL可能没有想象中那么work。”
两个改进方向:
- 提高奖励模型的泛化能力
- (采用方案):完全不用奖励模型,只用规则
规则 vs 奖励模型:
规则具有universal性质(小学题、大学题都用同一规则判断)- 奖励模型泛化能力有限,在训练数据分布外的题目上效果差
3.4 DeepSeek-Prover
论文:《DeepSeek-Prover: Formal Theorem Proving via Reinforcement Learning》
特殊之处
- 使用形式化语言(Lean等)做定理证明
- 有外部验证引擎(Lean)可以提供确定性反馈
- 这是最早的"用规则reward做RL"的尝试之一
V1.5版本
- 开始使用GRPO做强化学习
- 对于特别难的题目(无法判断对错),选择移除
- 开始脱离奖励模型
3.5 DeepSeek-R1
论文:《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》
Pipeline架构
┌─────────────────────────────────────────────────────────┐ │ DeepSeek-V3 基座 │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ GRPO (不用Value Model) │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Reward: 只有两类规则 │ │ 1. Accuracy Reward:最终答案是否正确 │ │ 2. Format Reward:是否按照指定格式输出(如先Think后Answer)│ │ (无任何Reward Model!) │ └─────────────────────────────────────────────────────────┘DeepSeek-R1-Zero
创新点:无需SFT,直接从基座模型做RL
- 之前所有方法(包括DeepSeek自己)都是先做SFT再做RL
- R1-Zero直接跳过SFT
- 结果:在AIME上从0.3提升到0.8+
- 模型自发展现出self-reflection、milic思维链等能力
DeepSeek-R1
- 先生成一批长思维链数据做SFT(蒸馏)
- 再做GRPO强化学习
- 效果更好
最终结论
“O-one可能也是这么做的。之前大家做O-one复现,有人做蒸馏、有人做MCTS、有人做各种复杂方法。但没有人这样做——直接简单地从基座做RL,不要奖励模型,不要MCTS。”
四、总结
贡献
| 创新 | 类型 | 影响力 |
|---|---|---|
| MLA (Multi-head Latent Attention) | 算法原创 | 显著降低KV Cache,部署成本大幅下降 |
| GRPO (Group Relative Policy Optimization) | 算法原创 | 被广泛采用,成为做RL的主流方法 |
| 多Expert MoE设计 | 工程创新 | 从8/16个扩展到64/128/160/256个 |
| Shared Expert机制 | 工程创新 | 通用能力与专业能力分离 |
| MTP (Multi-token Prediction) | 工程创新 | 首次大规模成功应用 |
| FP8 Mixed Precision Training | 工程创新 | 大幅降低训练成本 |
“从很早的时候开始,DeepSeek就有这样一种文化或者追求——不是纯粹的follow之前别人做的practice。虽然像LLaMA这些都很权威,但DeepSeek从一开始就有包括从DeepSeekMoE开始就开始探索更多的expert。也不是为了创新而创新。这种创新更多的是他们就真的想压低成本,想让整个东西更efficient。然后很勇敢的做了这些尝试。最后他就跟别人越走越不一样。”
弯路与收敛
走过的重要弯路:
- 很长时间
使用reward model做RL→ 发现效果不好 尝试PPO做online RL→ 难以调参,不够稳定- 用过程监督奖励模型 → 泛化能力差
最终收敛到的简单方案:
- 不用奖励模型
- 只用规则(答案对错)
- 直接做GRPO
- 效果反而最好
复现
“我们从两多月前就开始做类似的工作,当时试过很多复杂的东西。其实都不是很work。我们在可能半年多以前就在做这个事,用奖励模型做强化学习,发现效果一直不太理想。后来经过了很多挫折,最后发现最简单的东西就是可能不用奖励模型,就只用rule-based reward,最后反而是最work的。”
影响:
- 让学术界重新认识强化学习在推理任务上的潜力
GRPO成为开源RL框架的主流选择- 证明了"简单方案可以work"