DeepSeek-R1 多阶段训练详解
·
DeepSeek-R1 多阶段训练详解
根据论文内容,DeepSeek-R1的完整训练流程可以分为五个阶段(Zero、Dev1、Dev2、Dev3、R1),下面逐阶段详细梳理数据构建、训练方法和优化目标。
阶段0:DeepSeek-R1-Zero(纯RL探索阶段)
目标
验证"无需SFT,纯RL即可激发推理能力"的假设,观察模型自然演化出的推理模式。
训练数据
- 来源:仅使用推理类Prompt(数学、代码、逻辑),不使用任何人工标注的CoT数据
- 无冷启动SFT:直接在DeepSeek-V3-Base上做RL
训练方法
- 算法:GRPO(Group Relative Policy Optimization),无需Value Model
- 超参数:
- 学习率3e-6,KL系数0.001,采样温度1.0
- 每题采样16个输出,8.2k步前max_len=32768,之后65536
- Batch size=512(32题×16样本),每400步更新一次reference model
- 模板:仅约束
<think>... </think> <answer>...</answer>格式,不做内容限制
奖励设计(Rule-based Reward)
Reward_rule = Reward_acc + Reward_format
- 准确率奖励:数学答案匹配、代码编译测试用例通过
- 格式奖励:是否规范使用think/answer标签
- 不使用神经网络奖励模型,避免reward hacking
关键现象
- AIME准确率从15.6%→77.9%(cons@16达86.7%)
- 自然涌现"aha moment"、反思词汇(wait等)频率上升5-7倍
- 问题:可读性差、中英文混杂(language mixing)
阶段1:DeepSeek-R1-Dev1(冷启动+第一次RL)
目标
解决R1-Zero的可读性和语言混杂问题,引入人类对话式思维风格,同时保持语言一致性。
数据构建(Cold-Start Data)
- 收集少量高质量长CoT数据(数千条)
- 生成流程:
- 用DeepSeek-R1-Zero(温度1.0)对精选prompt生成多条推理轨迹
- 过滤:保留答案正确 + 格式可读的样本(用sympy校验数学答案)
- 用DeepSeek-V3改写:将推理过程转为第一人称、自然对话风格,解决语言混杂(指令"Translate thinking process to same language as question")
- 人工标注员先转写风格示例,再让LLM模仿改写,最后人工二次校验
- 代码数据特殊处理:从Codeforces/AtCoder收集7655题,用DeepSeek-V2.5生成对抗性测试用例(两阶段筛选:先排除错误用例,再挑选能区分正确/错误提交的用例集)
训练方法
- SFT:基于Cold-Start数据微调DeepSeek-V3-Base,作为RL初始actor
- 第一阶段RL:
- 与R1-Zero参数基本一致(lr=3e-6, KL=0.001, clip ε=10)
- 新增语言一致性奖励:
Reward_language = Num(Words_target) / Num(Words) - Reward = Reward_rule + Reward_language
结果特点(对照Table 3)
- IF-Eval、ArenaHard大幅提升(指令遵循能力增强)
- 但因冷启动数据量小,AIME等推理能力略有下降(59.0 vs Zero的77.9)
阶段2:DeepSeek-R1-Dev2(推理能力强化)
目标
在Dev1基础上继续推理导向RL训练,大幅提升数学/代码/STEM能力。
数据
- 沿用Reasoning RL数据:数学26K、代码17K(含8K bug-fix)、STEM 22K、逻辑15K
- 数据筛选严格保证可验证性(rule-based reward可判定)
训练方法
- 继续第一阶段RL的设置(该阶段实为R1完整pipeline中第一阶段RL的延续/迭代,未引入通用数据)
- 核心仍是rule-based reward(准确率+格式+语言一致性)
结果
- 相比Dev1,Codeforces、LiveCodeBench、AIME、MATH-500全面提升(如AIME 59.0→74.0,Codeforces percentile 84.5→90.5)
- 但AlpacaEval2.0等通用任务基准仅小幅提升,说明推理RL对通用能力提升有限
阶段3:DeepSeek-R1-Dev3(拒绝采样+SFT,融合推理与非推理数据)
目标
通过大规模SFT同时增强推理能力与写作、通用问答等非推理能力。
数据构建(约800K SFT样本,Table 5)
Reasoning数据(~600K):
- 从Dev2 checkpoint做拒绝采样(Rejection Sampling)生成推理轨迹
- 筛选标准扩展:不仅rule-based,还引入生成式奖励模型(把ground-truth和预测喂给DeepSeek-V3判定,见Listing 4 Prompt)
- 后处理:过滤语言混杂、超长段落、代码块混杂的CoT
- 每个prompt多次采样,只保留正确答案对应的轨迹
Non-Reasoning数据(~200K):
- 复用DeepSeek-V3 SFT pipeline(写作、事实问答、自我认知、翻译)
- 新增软件工程数据(bug修复、前端开发)
- 简单查询(如"hello")不加CoT;复杂查询调用DeepSeek-V3生成CoT垂直预热
训练方法
- 纯SFT:基于DeepSeek-V3-Base,2-3 epoch
- 超参数:cosine decay lr(5e-5→5e-6),max_len=32768,batch=128
结果
- 相比Dev2:AlpacaEval2.0、Aider-Polyglot显著提升(受益于非推理语料和代码工程数据)
- 推理类benchmark基本持平或小幅提升
阶段4:DeepSeek-R1(第二次RL,对齐人类偏好)
目标
在保持推理能力基础上,进一步提升helpfulness和harmlessness,对齐人类偏好。
奖励模型构建(Model-based Rewards)
Helpful Reward Model:
- 用arena-hard格式让DeepSeek-V3生成偏好对(4次独立打分消除位置偏差,取平均且Δ>1才保留)
- 66,000条偏好数据,仅针对最终summary打分(不干扰推理过程)
- 训练:batch=256, lr=6e-6, 1 epoch, max_len=8192
Safety Reward Model:
- 106,000条prompt,标注safe/unsafe(point-wise,非pairwise)
- 评估整个响应(含推理过程+summary)
训练数据(Diverse Prompts)
- 沿用Reasoning RL数据(数学/代码/STEM/逻辑)
- General数据66K(helpfulness)+ 12K(harmlessness)
训练方法
- 基于Dev3 checkpoint继续RL
- 温度降至0.7(避免生成不连贯)
- 总计1700步,最后400步才引入通用指令数据+偏好奖励(避免reward hacking)
奖励公式
Reward = Reward_reasoning + Reward_general + Reward_language
Reward_reasoning = Reward_rule
Reward_general = Reward_reward_model + Reward_format
结果(Table 3对比Dev3→R1)
- AlpacaEval2.0: 62.1→87.6(+25%)
- ArenaHard: 75.6→92.3(+17%)
- 数学/代码基准仅小幅提升(因为前期RL已充分优化)
五阶段核心逻辑总结表
| 阶段 | 核心动作 | 数据规模/类型 | 优化目标 | 关键技术 |
|---|---|---|---|---|
| Zero | 纯RL无SFT | 推理prompt(无标注CoT) | 验证RL自发涌现推理能力 | GRPO + Rule Reward |
| Dev1 | 冷启动SFT+RL | 数千条人类风格CoT | 可读性+语言一致性 | Cold-start + Language Reward |
| Dev2 | 继续推理RL | 复用推理prompt集 | 强化数学/代码/STEM能力 | 同Dev1 RL设置迭代 |
| Dev3 | 拒绝采样+大规模SFT | 800K(600K推理+200K非推理) | 兼顾推理与通用/写作能力 | Rejection Sampling + Generative RM筛选 |
| R1 | 第二次RL对齐 | Diverse Prompts+66K偏好对+106K安全数据 | Helpfulness+Harmlessness,同时保持推理 | Model-based RM + Rule Reward混合 |
训练成本汇总(H800 GPU)
- R1-Zero训练:101K GPU小时
- SFT数据制作:5K GPU小时
- R1训练(Dev1→R1完整RL+SFT流程):41K GPU小时
- 总计:147K GPU小时(约$294K)
这个五阶段设计体现了论文核心洞察:纯RL能激发推理但牺牲可读性和通用性,需要SFT+RL交替迭代来平衡推理深度与人类偏好对齐。
更多推荐
所有评论(0)