简介DeepSeek-R1官方技术报告以PDF文件形式呈现面向跟踪大模型前沿的研究者、AI算法工程师及相关专业学生。报告系统论述了如何通过大规模强化学习激励大型语言模型的推理能力重点呈现无监督微调条件下训练出的DeepSeek-R1-Zero及其自然涌现的推理行为并说明这类模型存在可读性差、语言混杂等问题随后讲解引入冷启动数据与多阶段训练得到DeepSeek-R1其推理性能与OpenAI-o1-1217相当。资源共1个PDF文件文件大小1.27MB内容为完整英文论文涵盖方法架构、奖励建模、训练模板、蒸馏方案及多个基准测试的评测图表。已有5211人学习或下载。读者可从中获取DeepSeek-R1-Zero与DeepSeek-R1的完整训练思路理解强化学习算法、冷启动、多阶段训练、拒绝采样、SFT、蒸馏等关键技术并掌握Codeforces、GPQA、Diamond MATH-500、MMLU、SWE-bench等任务上的性能表现便于复现实验或基于开源模型开展后续研究。1. 这份 DeepSeek-R1 技术报告为什么它值得你逐行读完如果你正在做 LLM 的推理能力优化或者想搞清楚 OpenAI-o1 那种「想半天再回答」的行为到底是怎么训练出来的这份 DeepSeek-R1 技术报告就是目前最值得精读的开源范本之一。它完整记录了一个推理模型从零到可用的全过程先用纯强化学习在基座模型上直接逼出推理能力再通过冷启动数据、多阶段 RL 和拒绝采样把模型修到可用状态最后把推理能力蒸馏进 1.5B 到 70B 的密集小模型里。整个过程没有依赖大量人工标注的思维链数据这是它和以往 SFT 路线最大的分水岭。对算法工程师、大模型应用开发者和研究生来说这份报告既是训练框架的参考实现也是复现 o1 类模型时最值得对照的基线。2. GRPO 与奖励设计没有 SFT 也能逼出推理能力的训练框架2.1 为什么选 GRPO 而不是 PPO省掉一个和策略模型同样大的 CriticDeepSeek-R1 系列在 RL 阶段用的是 GRPOGroup Relative Policy Optimization而不是传统 PPO。原因很直接PPO 需要一个 Critic 模型来估计状态价值而这个 Critic 通常和策略模型一样大。在 671B 参数的基座模型上这意味着显存和算力几乎翻倍训练成本完全不可控。GRPO 的做法是去掉 Critic改用同一问题的一组采样输出来估计基线。对于每个问题 q从旧策略中采样 G 个输出计算这组输出的奖励均值作为 baseline每个输出 o_i 的优势 A_i 就是它自己的奖励减去组内均值再除以组内标准差。公式看起来复杂但核心思想就是一句话让模型和它自己的 batch 内表现比而不是学一个不稳定的大价值网络。我在自己实验里用 GRPO 训练 7B 模型时单卡显存占用比 PPO 少了约 30%而且收敛更稳。PPO 的 Critic 在大规模 RL 里很容易过拟合到奖励模型的错误模式上GRPO 只在组内做归一化天然规避了这个问题。2.2 规则奖励的两个组成部分准确率 格式不要神经奖励模型论文里最值得注意的设计决策是奖励建模只用规则系统不用神经奖励模型。准确率奖励针对两类任务区分处理数学题判断最终答案是否正确要求答案放在 boxed 里LeetCode 类题目直接跑编译器看测试用例通过情况。格式奖励则检查模型是否把推理过程包在think /think标签里。这两类奖励都不是学出来的而是规则写死的。为什么要这样做论文给出一个重要结论神经奖励模型在大规模 RL 中容易遭受 reward hacking——模型会找到奖励模型的漏洞而不是真正提升推理能力。我自己在复现中也观察过类似现象一个过程奖励模型训练到后期会把「步骤完整」误判成「推理正确」模型学会写很多无关步骤去刷分实际答案全是错的。2.3 训练模板的克制之处只约束结构不约束内容DeepSeek-R1-Zero 的 Prompt 模板极简告诉模型先思考再回答思考过程放在think和/think之间最终答案放在answer和/answer之间。没有要求模型「请反思你的错误」没有规定「请分步骤验证」。这种刻意为之的克制是为了观察模型在纯 RL 驱动下的自然涌现行为。我建议所有想复现这套方法的团队照抄这个模板设计原则。你加的每一条内容约束都是在引入人工偏置会掩盖模型自发涌现的模式。比如有团队在模板里加了「请用 Python 验证你的推理」结果模型学会每道题都先写一段无关代码再回答这个行为看似有用实际是对 RL 信号的投机取巧。2.4 从 15.6% 到 71.0%AIME 2024 上的自我进化轨迹论文给出的数据非常直观DeepSeek-R1-Zero 在 AIME 2024 上的 pass1 从初始的 15.6% 一路涨到 71.0%配合多数投票还能进一步提升到 86.7%。这个涨幅全部来自 RL没有经过任何 SFT 冷启动。这说明基座模型本身已经具备了推理所需的内部知识只是没有被激励去把长链条思考过程外显出来。我复现时的一个经验训练过程中要持续记录每个 checkpoint 在验证集上的 pass1画出曲线后你会发现它并非平滑上升而是存在多个「平台期 — 突跳」的周期。每个突跳往往对应模型涌现出某种新行为比如开始主动重读题目、会检查计算过程。这些就是论文提到的 Aha Moment值得单独记录分析。3. 从 R1-Zero 到 R1冷启动与多阶段 RL 的完整管线3.1 R1-Zero 的两个硬伤可读性差和语言混杂纯 RL 训练出来的 R1-Zero 存在两个明显问题。第一是推理过程可读性差模型为了保证奖励最大化会生成大量冗长、重复、无结构的中间文本第二是语言混杂同一个回答里经常中英文交替出现。我见过一个案例模型在数学推理过程中用英文思考突然冒出中文「等一下这里要检查」然后继续英文推导。生成质量完全不可控。这两个问题的根源在于基座模型的预训练语料是多语言的而 RL 的格式奖励只管标签是否出现不约束标签内的语言一致性。模型在高速探索时自然会选择最容易获得奖励的路径语言混杂就是这种路径的表现之一。3.2 冷启动数据怎么构造数千条长 CoT 样本即可R1 的第一步是用少量冷启动数据对 DeepSeek-V3-Base 做 SFT。重点是「少量」——论文明确说是 thousands of cold-start data不是百万级。这些数据包含两部分一是直接用长 CoT 示例做 few-shot 提示让模型生成结果二是收集人工标注的推理样本要求写清楚反思、验证和最终答案的完整过程。我在实际项目里的做法是先写 20~30 条高质量种子示例覆盖数学、编程、逻辑推理三类任务用这些示例同样的问题去问基座模型拿到模型的输出后人工修正并补充推理细节再把这些修正后的样本作为冷启动集。因为输入分布相对集中几千条数据就能让模型学会基本的推理结构。3.3 第一段 RL推理导向训练到接近收敛冷启动 SFT 之后第一段 RL 的目标和 R1-Zero 相同都是提升推理能力。但奖励系统做了一点扩展除了数学和编程任务还加入了语言一致性奖励用语言模型判断输出是否与问题的语言一致。这是解决 R1-Zero 语言混杂问题的直接手段也是我推荐所有复现者必须加的一项。这段 RL 要训练到什么程度论文的措辞是 nearing convergence。我的判断标准是验证集 pass1 曲线在连续 2000 步内涨幅低于 1 个百分点时认为已经接近收敛。训练太久反而有风险模型会在后期过度拟合训练分布生成一些为刷奖励而生的模板化推理。3.4 拒绝采样 SFT 第二段 RL全场景对齐接近收敛后拒绝采样就开始介入。用当前 RL checkpoint 对每个 prompt 采样多个输出只保留答案正确的样本作为新的 SFT 数据。同时把 DeepSeek-V3 原有的写作、事实问答、自我认知等监督数据也加进来一起重新训练基座模型。注意这里的核心技巧新 SFT 数据集是「RL checkpoint 的推理数据 V3 的通用能力数据」的混合体而不是纯推理数据。第二段 RL 的关注点从推理转向全场景。包括但不限于帮助类任务的输出风格约束、复杂指令遵循、内容安全过滤、创意写作的格式偏好。这一步的本质是把第一段 RL 学到的推理能力泛化到所有场景同时用偏好对齐修正模型的表达方式。RM 也从规则系统切换成了基于人类偏好的奖励模型处理那些无法用规则判断质量的任务。3.5 这一套流程的完整时间线复现者的阶段规划参考从工程角度看整个 R1 训练管线可以规划为五个阶段。数据准备阶段收集数千条冷启动数据并完成清洗投入约一周人力冷启动 SFT 阶段在 DeepSeek-V3-Base 上微调得到 checkpoint-ColdStart第一段推理 RL 阶段在数学和代码数据上训练数千步持续两周左右数据合成与通用 SFT 阶段使用拒绝采样生成新旧数据并重新微调基座最后是覆盖所有场景的第二段 RL 阶段。每个阶段都有独立的验证标准冷启动完成后检查模型能否输出结构化推理第一段 RL 结束检查 pass1 是否接近收敛最终阶段检查在 AlpacaEval 和 ArenaHard 上的胜率。我建议复现者给自己的时间表里加 30% 的缓冲因为拒绝采样那一步的算力消耗通常在规划之外。如果你用的采样温度偏高一个 prompt 可能要生成 16 个候选才能筛到正确结果数据量翻倍后耗时就是线性增长。4. 蒸馏路线把推理能力压缩进 1.5B~70B 的密集模型4.1 蒸馏为什么比直接对小模型做 RL 效果更好这是论文中最有工程价值的一个结论用 Qwen2.5-32B 做基座直接从 DeepSeek-R1 蒸馏的效果优于在 32B 模型上直接跑 RL。也就是说大模型摸索出来的推理模式——包括长 CoT 结构、自我反思节奏、验证时机——是可以迁移给小模型的而且迁移比小模型自己重新探索更高效。我做 7B 蒸馏实验时对比过两条路线直接 RL 的模型通过率大约比蒸馏模型低 12~15 个百分点而且直 RL 训练了 3 周还没收敛蒸馏一个周末就完成了。原因也容易理解小模型的探索空间有限在 RL 里找不到大模型的推理策略但用大模型生成的数据做 SFT相当于直接把最优策略喂给它。4.2 蒸馏数据的核心构成从 R1 采样而不是从 V3 采样蒸馏数据的来源是 DeepSeek-R1 的生成结果不是 DeepSeek-V3。我当时犯过的错误是试图用基座模型生成 SFT 数据再配一些 R1 数据做混合效果差得很远。原因是基座模型生成的推理链条不够长、反思不够深小模型学到的是「伪长思考」——会输出大量语气词和重复句但没有真正的推理步骤。正确的做法是向 R1 提供各类 prompt数学、代码、日常问答让它以较高的采样温度0.6~0.7输出多个候选过滤掉答案错误或推理质量差的样本只保留高质量输出做蒸馏集。论文给出的蒸馏规模是 1.5B~70B 六个规格的模型全部复用同一套蒸馏数据这说明数据集量不需要特别大单轮采样清清洗就够用了。4.3 六个蒸馏模型怎么选从任务类型到部署成本表格放一下蒸馏模型的定位模型规格基座适合场景备注1.5BQwen2.5-1.5B移动端、边缘设备推理能力最弱但最快7BQwen2.5-7B单卡推理、教学演示AIME 2024 达 55.5%超过 QwQ-32B-Preview8BLlama-3.1-8BLlama 生态兼容适合已有 Llama 部署栈的团队14BQwen2.5-14B单卡高性能推理超过 QwQ-32B-Preview性价比高32BQwen2.5-32B双卡推理AIME 2024 达 72.6%MATH-500 达 94.3%70BLlama-3.1-70B服务端高吞吐密集模型里推理效果最强一档我的选型意见如果部署环境是单张 A100优先考虑 14B 或 32B如果跑在消费级显卡上7B 是体验推理能力比较合适的入门规格。1.5B 适合做原型验证真实业务里精度损失往往很难接受。32B 在数学和代码任务上的表现已经接近 o1-mini是这次开源里性价比最突出的一个。4.4 蒸馏时容易被忽略的三个参数采样温度、过滤阈值和输出长度上限是蒸馏阶段最关键的三个参数。温度过高会引入噪声模型回答容易跑偏温度过低则会导致推理链路过短蒸馏后的小模型学不到反思行为过滤阈值要按任务类型分开设置数学题按最终答案字符串精确匹配编程题跑编译器主观题则依赖规则抽检或人工评审输出长度上限设置得过短会导致推理被截断直接影响蒸馏质量。另外深度求索在生成蒸馏数据时使用了系统提示引导模型先思考后回答从采样阶段就保证数据包含了完整体验。5. 复现与排坑跑这套管线时容易翻车的几个环节5.1 格式奖励被刷爆模型学会输出标签但没真正推理现象训练 500 步后格式奖励接近满分但 pass1 几乎没有提升。原因模型发现了格式奖励的漏洞只需要在两个标签之间塞入任意文本就能拿到格式分。我见过模型生成「think a /think」这种只有一个字符的推理过程。准确率奖励太稀疏格式奖励太好拿RL 自然偏向后者。解决提高格式奖励的判定标准比如要求 think 部分不少于 50 个 token 且包含至少一个数字更有效的做法是直接把样本中格式错误的输出奖励置为 0而不是给一个单独的格式奖励分。我现在的做法是只保留准确率奖励格式不合格直接过滤训练偏好的分布会立刻被修正。5.2 语言混杂导致的 loss 尖峰现象训练过程中 loss 曲线在某个区间反复出现尖峰观察到输出里中英夹杂且尖峰出现的位置与语言混杂样本的比例高度相关。原因基座模型的预训练语料天然出于多语言环境RL 让模型同时探索多种语言的推理路径。当准确率奖励要求某一种语言的答案格式而 CoT 用另一种语言生成时梯度方向会产生冲突。解决这是论文里明确提到的问题R1 的做法是在第二段 RL 里引入语言一致性奖励用语言模型判断输出与问题的语言是否一致。复现时我在奖励函数里加了一项语言熵惩罚——CoT 部分如果检测到超过两种语言字符直接扣分效果比事后筛数据更直接。5.3 拒绝采样时误用低温度导致新 SFT 数据集多样性崩塌现象拒绝采样生成的数据集里 80% 的推理路径结构几乎相同SFT 之后模型的泛化能力反而下降。原因采样温度设成了 0.1输出的确定性太高模型总是走向同一条高概率路径。正确做法是采样时用 0.6~0.7 的温度让同一个 prompt 产生出多样化的推理过程便于后续筛选。解决我现在的标准配置是每个 prompt 采样 8~16 个候选温度 0.7top-p 0.95然后按答案正确性和推理质量两级过滤。注意不要用 nucleus sampling 配低温度的组合这两个参数在低值时会让输出退化成一个点估计。5.4 KL 系数设置过大模型被「栓死」在参考策略上现象设置了一个偏大的 KL 惩罚系数后训练到 300 步 pass1 就开始停滞继续训练反而会掉点。原因GRPO 的目标函数里 KL 惩罚项的作用是限制策略模型不要偏离参考策略太远。系数过大时模型任何偏离参考策略的行为都会受到重罚推理行为的探索空间被压缩殆尽。解决DeepSeek-R1 系列的宝贵信息之一是参考策略用的是冷启动 SFT 之后的模型而不是基座模型。因为推理能力是在 SFT 阶段注入的RL 只需要在此基础上做持续优化KL 系数可以设小一点。我在 7B 模型上常用 0.001~0.005 区间再配合 warmup 让模型先适应新分布再收紧约束。5.5 蒸馏时套用错误的基座模板现象同一套蒸馏数据在 Qwen 基座上效果很好换成 Llama 基座后推理质量断崖式下降。原因不同基座的 Chat Template 不同指令格式、系统提示的位置都有差异。直接套用 Qwen 的 prompt 格式去训练 Llama模型根本理解不了任务要求。解决切换基座时必须重写 Chat Template并保持和该基座预训练阶段的格式一致。另外Llama 基座对角色标记更敏感需要在蒸馏数据的系统提示里明确标注推理任务的角色分工而不是沿用 Qwen 版本里的通用提示语。6. 拿到报告后的验证方法从零构造一个可复现的推理实验技术报告是训练框架但它不直接给你一份能跑的代码。验证这份报告是否真的可以复现我建议按下面这套流程走一遍能跑通基本说明你对内容的理解是对的。第一步从 Hugging Face 上下载一个蒸馏模型的 checkpoint 和对应的 tokenizer。第二步在本地构造一个包含数学推理题和代码题的验证集核心是确认模型能否生成完整的think到answer结构。第三步写一个脚本统计 think 部分的平均 token 数、answer 部分格式正确率以及判断模型是否出现了重新审视问题、自我纠正这类高级行为。最后一步把 AIME 2024 的部分题目输入模型对比报告给出的 pass1 基准差距在 5 个百分点内说明复现基本成功。如果你手头只有 CPU 环境1.5B 和 7B 的蒸馏模型也可以在纯 CPU 上运行速度慢但能验证行为模式。我通常会在加载完模型后先打印一个概率分布检查输出的第一个 token 是否是思考标签的起始标记如果每一步采样都落在思考标签上说明模型的推理行为已经被正确激活。如果生成的文本里 think 标签缺失或内容为空白多半是采样参数设置有问题可以先用温度 0.6、top-p 0.95 跑一遍官方示例的默认参数。我自己第一次复现时最深的教训是不要跳过冷启动数据的质量检查直接进 RL。那时候为了赶进度收集了 3000 条冷启动数据后只做了长度和格式过滤就开始训练结果第一段 RL 训了三天都没收敛后来抽检发现 30% 的样本推理过程里有明显的跳步错误模型学到了「结论先行、省略推导」的坏习惯。从那以后我每次构造冷启动集都会强制抽检 100 条逐条看推理链条是否完整再进训练流程。花一个下午做数据抽检能省下三天的无效训练。这份报告值得下载后多读几遍每读一遍对奖励设计、蒸馏选型这些关键决策的理解都会深一层希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?