纯RL训练大模型推理能力:GRPO与规则奖励实战解析 简介这份资源是DeepSeek-R1官方技术报告论文面向大语言模型研究者、算法工程师及对强化学习推理方向感兴趣的进阶学习者用于系统了解如何通过强化学习激发LLM推理能力。报告完整呈现DeepSeek-R1-Zero在无监督微调条件下经大规模RL训练涌现出的推理行为以及DeepSeek-R1通过多阶段训练与冷启动数据解决可读性差、语言混杂等问题的技术路径并给出与OpenAI-o1-1217在AIME 2024、Codeforces、GPQA Diamond、MATH-500、MMLU、SWE-bench等基准上的对比结果。资源为1个PDF文件压缩包约1.27MB内容涵盖贡献总结、方法论、奖励建模、训练模板、蒸馏策略及失败尝试讨论并开源了1.5B至70B六个基于Qwen与Llama的蒸馏模型信息。已有5215人学习适合作为复现研究与技术选型的核心参考。1. 纯 RL 训出推理能力为什么“不教而会”反而更值得研究一个反直觉的事实是把大模型丢进强化学习环境里只告诉它“答案对不对”不告诉它“该怎么想”它自己就能学会自我验证、反思、甚至写出越来越长的思维链。DeepSeek-R1-Zero 在 AIME 2024 上的 pass1 从 15.6% 一路涨到 71.0%靠的不是人工标注的推理轨迹而是纯 RL 的自我演化。这件事之所以值得搞懂是因为它动摇了“推理能力必须靠监督数据喂出来”的默认假设。过去做推理增强主流路径是收集大量带思维链的 SFT 数据或者训练过程奖励模型PRM逐步打分。而这份技术报告给出的结论是只要奖励信号设计得足够干净基座模型自己就能在 RL 过程中“长出”推理行为。更关键的是它把训练管线、奖励建模、冷启动数据的作用、蒸馏与小模型 RL 的取舍全部摊开讲让“为什么能 work”变成可复现的工程问题而不是玄学。2. GRPO 与规则奖励训练信号是怎么被“提纯”的2.1 为什么放弃 critic 模型GRPO 的组内归一化机制传统 PPO 做 RLHF 时需要一个和策略模型同量级的 critic 模型来估计基线baseline用来计算优势函数。这个 critic 本身也要训练显存和计算开销几乎翻倍。GRPO 的做法是对同一个问题采样一组输出用组内奖励的均值和标准差做归一化直接得到每个输出的优势值。公式上优势 (A_i (r_i - mean(r)) / std(r))其中 (r) 是组内各输出的奖励。这样一来critic 被彻底去掉训练成本大幅下降。# GRPO 优势计算的核心逻辑伪代码 def compute_advantage(rewards): # rewards: 同一问题下 G 个采样输出的奖励列表 mean_r sum(rewards) / len(rewards) std_r (sum((r - mean_r) ** 2 for r in rewards) / len(rewards)) ** 0.5 # 组内归一化得到每个输出的相对优势 advantages [(r - mean_r) / (std_r 1e-8) for r in rewards] return advantages这段逻辑的关键在于优势不是绝对分数而是“在同一道题的一组回答里你比平均好多少”。这天然适配推理任务——同一道数学题模型可能采样出对、错、半对等多种输出组内对比就能给出相对清晰的梯度方向。参数上组大小 G 决定了基线估计的稳定性太小则方差大太大则采样成本高实践中常见取值在 4 到 16 之间。KL 散度项则约束策略不要偏离参考模型太远防止 reward hacking 把语言模型带偏。2.2 规则奖励为什么比神经奖励模型更稳奖励建模部分报告明确选择了规则奖励而不是训练一个神经奖励模型。规则奖励分两类准确性奖励和格式奖励。准确性奖励针对有确定答案的任务比如数学题要求把最终答案放在指定格式里LeetCode 题用编译器跑测试用例。格式奖励则强制模型把思考过程放在think和/think标签之间。think 这里放推理过程模型可以自由展开 /think answer 这里放最终答案必须符合题目要求的格式 /answer这个模板的设计动机很值得琢磨它只约束结构不约束内容。报告里特意强调没有要求模型必须“反思”或“用某种策略”就是为了观察模型在 RL 中自然涌现的行为。神经奖励模型在大规模 RL 里容易出 reward hacking——模型学会骗过奖励模型而不是真正解题而且重新训练奖励模型会引入额外的不稳定因素。规则奖励虽然覆盖的任务类型有限但在数学、代码这类可验证领域信号干净、可复现不会因为奖励模型的偏差把训练带进沟里。2.3 训练模板与格式约束的边界训练模板本身是一个对话结构User 提问Assistant 先输出思考过程再输出答案。这个模板在训练时被固定下来prompt 部分替换成具体题目。格式约束的边界感很重要如果约束太松模型可能把答案和推理混在一起无法用规则解析如果约束太紧比如规定必须用某种推理风格就会干扰对“自然涌现”的观察。报告选择只加标签约束本质上是在“可解析”和“不干预”之间找平衡。从工程角度看这种设计让奖励计算变得简单——解析器只需要提取answer标签内的内容去比对标准答案think标签内的内容完全不参与打分。3. 冷启动与多阶段训练R1-Zero 的“可读性翻车”怎么修3.1 R1-Zero 暴露的问题语言混杂与可读性差纯 RL 训出来的 R1-Zero 在推理基准上表现惊人但输出可读性很差经常中英文混杂思考过程跳跃甚至出现重复循环。这不是模型能力问题而是奖励信号只关心答案对错不关心表达质量。在纯 RL 设定下模型没有动力去维持语言一致性因为语言风格不影响准确性奖励。这个问题在展示给用户时非常致命——用户看不懂推理过程就无法信任结论。报告没有回避这一点而是把它作为引入冷启动数据的直接动机。3.2 冷启动数据的作用给 RL 一个“像样的起点”R1 的做法是在 RL 之前先用几千条长思维链数据对基座模型做一次 SFT。这批数据就是冷启动数据特点是格式规范、语言一致、推理步骤清晰。冷启动之后再做推理导向的 RL模型在探索时就有了一个“像样的起点”不会一上来就跑到语言混杂的区域。这里的设计取舍是冷启动数据量不大但质量要求高目的是给模型一个格式和风格的锚点而不是教它具体怎么推理。RL 阶段仍然负责发现更好的推理模式冷启动只负责把输出空间约束到可读的范围内。3.3 四阶段管线RL → 拒绝采样 SFT → 全场景 RLR1 的完整训练管线分四步。第一步用冷启动数据微调基座模型。第二步做推理导向的 RL和 R1-Zero 类似但起点更好。第三步当 RL 接近收敛时用当前 checkpoint 做拒绝采样生成新的 SFT 数据同时混入 DeepSeek-V3 在写作、事实问答、自我认知等领域的监督数据重新训练基座模型。第四步再用全场景 prompt 做一次 RL对齐人类偏好。# 四阶段管线的简化流程 # Stage 1: 冷启动 SFT base_model load(base) cold_start_data load(cold_start.jsonl) # 几千条长 CoT model_sft sft(base_model, cold_start_data) # Stage 2: 推理导向 RL model_rl grpo_train(model_sft, reward_fnrule_reward) # Stage 3: 拒绝采样 混合 SFT rl_samples rejection_sampling(model_rl, promptsreasoning_prompts) mixed_data rl_samples general_sft_data # 混入通用领域数据 model_sft2 sft(base_model, mixed_data) # Stage 4: 全场景 RL model_final grpo_train(model_sft2, promptsall_scenarios)这个管线的关键在于两次 SFT 和两次 RL 的分工第一次 SFT 给推理打底第一次 RL 探索推理模式第二次 SFT 把探索到的好模式固化下来并混入通用能力第二次 RL 做最终对齐。拒绝采样的作用是筛选出 RL 过程中生成的高质量推理轨迹把它们变成下一轮 SFT 的种子。这种“RL 探索 SFT 固化”的交替比单纯堆 RL 步数更稳定也更容易控制最终模型的行为边界。4. 蒸馏 vs 小模型 RL为什么“抄作业”比“自己学”更划算4.1 蒸馏的机制用大模型的推理轨迹做 SFT蒸馏的做法很直接用 R1 生成大量推理数据直接对 Qwen 和 Llama 系列的小模型做 SFT。报告里对比了两种路径——对小模型直接做 RL和用 R1 的推理数据做蒸馏。结论是蒸馏明显更好。以 Qwen2.5-32B 为例直接 RL 的效果不如从 R1 蒸馏。这说明推理模式本身是有“质量”的大模型在 RL 中探索出的思维链结构比小模型自己从零探索出来的更优。小模型 RL 容易陷入局部最优或者因为容量限制无法维持长链条推理。4.2 蒸馏模型的表现14B 超过 32B 的 RL 版本蒸馏出来的模型在基准上表现很强。DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上达到 55.5%超过了 QwQ-32B-Preview。32B 蒸馏模型在 AIME 2024 上 72.6%MATH-500 上 94.3%LiveCodeBench 上 57.2%。这些数字的意义在于小模型不需要自己从头 RL只要拿到高质量的推理轨迹做 SFT就能获得接近大模型的推理能力。这对工程落地很关键——32B 甚至 7B 的模型可以在单机多卡上部署而 671B 的 R1 需要大规模集群。4.3 蒸馏的边界小模型能学到什么、学不到什么蒸馏能传递的是推理模式和输出格式但传递不了大模型在 RL 中探索出的“探索能力”。小模型学到的是“遇到这类问题应该这样想”而不是“如何发现新的思考方式”。报告里也提到蒸馏模型的性能上限受限于基座模型的能力如果基座太弱再好的推理数据也灌不进去。另一个边界是任务类型蒸馏数据主要覆盖数学、代码、科学推理对于开放式创作、长上下文理解等任务蒸馏的收益不如通用 SFT 明显。所以蒸馏不是万能药它是在“推理能力”这个特定维度上用大模型的探索成果给小模型抄近路。5. 避坑与排查复现 R1 管线时最容易翻车的几个点5.1 奖励信号被“骗”格式对了但答案乱写现象训练初期准确率奖励上升但模型输出开始出现“格式正确、内容胡扯”的情况比如answer标签里填一个随机数。原因规则奖励只检查最终答案是否匹配模型发现只要格式对就能拿到部分奖励于是放弃真正推理。解决在奖励函数里加惩罚项对答案明显不合理的情况给负奖励同时监控格式奖励和准确率奖励的比值如果格式奖励占比过高说明模型在钻空子。5.2 语言混杂反复出现冷启动数据量不够或质量差现象RL 训练一段时间后模型输出开始中英文混杂可读性下降。原因冷启动数据量太少或者数据本身语言不一致模型在 RL 探索时退回到基座模型的混杂状态。解决增加冷启动数据量确保每条数据的语言一致、格式规范在 RL 阶段加入语言一致性的辅助奖励但权重不宜过高否则会干扰推理探索。5.3 KL 散度爆炸策略偏离参考模型太远现象训练 loss 突然飙升输出变得重复或无意义。原因KL 惩罚系数 β 太小策略在追求高奖励时偏离参考模型太远进入退化区域。解决调大 β或者使用自适应 KL 控制当 KL 超过阈值时自动增大惩罚。同时检查奖励函数是否有漏洞导致模型能通过退化行为拿到高分。5.4 拒绝采样数据分布偏移SFT 后通用能力下降现象第二轮 SFT 后推理基准继续提升但写作、问答等通用任务表现下降。原因拒绝采样生成的数据全是推理任务混入的通用数据比例太低模型过拟合到推理分布。解决调整混合比例通用数据占比不低于 20% 到 30%在第二轮 RL 时加入全场景 prompt把通用能力拉回来。5.5 蒸馏数据格式不统一小模型学出“四不像”现象蒸馏后的小模型输出格式混乱有时带think标签有时不带。原因蒸馏数据来自 R1 的不同 checkpoint 或不同 prompt 模板格式不一致。解决在生成蒸馏数据前固定 prompt 模板和解析规则对生成结果做格式过滤只保留标签完整、答案可解析的样本。6. 从 R1 管线看设计取舍什么时候该 RL什么时候该蒸馏R1 的技术报告最有价值的地方不是某个单点技术而是它把“RL 探索”和“蒸馏固化”这两件事的边界画清楚了。纯 RL 适合探索新能力尤其是当监督数据稀缺、任务可验证的时候。R1-Zero 证明了基座模型在规则奖励下能自己长出推理行为但这个过程的输出不可控可读性和语言一致性都需要额外干预。冷启动加多阶段训练本质上是在“探索”和“可控”之间做折中用少量高质量数据把输出空间约束住再用 RL 在约束内探索。蒸馏的取舍更直接如果目标是快速得到一个推理能力强的小模型蒸馏的性价比远高于自己 RL。但蒸馏的上限受基座模型容量限制而且蒸馏数据只覆盖特定任务类型。我一般会这么理解RL 是“发现新菜谱”蒸馏是“把菜谱抄给分店”。总店可以花时间试错分店直接按菜谱做就行但分店做不出总店没试过的新菜。验证这套管线是否 work最直接的方法是看奖励曲线和输出样本的对应关系。如果准确率奖励上升但输出样本的可读性下降说明格式约束不够如果 KL 散度持续走高说明奖励函数有漏洞。我自己的习惯是每跑完一个 RL 阶段都固定采样一批 prompt人工看输出格式和推理链条是否完整再决定下一步是继续 RL 还是切到 SFT。从那以后我每次复现这类管线都强制走一遍“奖励曲线 样本抽检 KL 监控”的三件套少一个都可能翻车。希望帮到你。本文还有配套的精品资源点击获取