同一套GRPO,为何三种结局

三款从零训练的LLM采用相同GRPO配方后,通用语言困惑度分别几乎不变、恶化52%和恶化5%。实验表明,参数规模和预训练损失都不足以预测强化学习效果。
同一套GRPO,为何三种结局
同一套GRPO训练配方,被用在三款从零训练的大语言模型上,却得到了三种截然不同的结果:353M模型基本不变,316M模型的WikiText困惑度恶化约52%,672M模型则恶化约5%。这组近日公开的实验没有证明“GRPO一定有害”,但它清楚地击中了一个常见误区:模型更大、预训练损失更低,并不意味着后训练阶段更稳定,更不意味着复制同一组超参数就能复制收益。
这项实验来自Reddit机器学习社区的一份开发记录,作者使用原生PyTorch从零训练了三款LLM,再依次进行监督微调和GRPO训练。三次实验采用相同的合成算术课程、奖励函数、超参数和KL系数,评估则统一通过lm-evaluation-harness完成,并保持任务版本与shot数量一致。
需要先强调的是,这是一份开发者实验报告,而不是经过同行评审的正式论文。它的价值不在于给GRPO下最终结论,而在于暴露了实际训练中最麻烦的问题:所谓“相同配方”,只能保证优化器表面的配置相同,不能保证三款模型面对的是相同的优化地形。

三款模型不只是大小不同
GRPO是Group Relative Policy Optimization的缩写,即“群组相对策略优化”,它通过比较同一提示下多条回答的相对奖励来估计优势,从而省去PPO通常需要的独立价值模型。直观地说,GRPO不是给每份答案设定一个绝对分数线,而是让同一道题的多份答案先进行组内排名,再强化相对更好的生成轨迹。
三款实验模型虽然共享24层这一设置,但它们在注意力结构、隐藏维度、训练Token数量和数据组成上均不相同。V1使用传统多头注意力,V2换成Differential Attention与4:1 GQA,V3则使用XSA与4:1 GQA,并把隐藏维度从1024提高到1536。
| 模型 | 参数量 | 隐藏维度 / 层数 | 注意力结构 | 预训练Token | 预训练数据 | |---|---:|---:|---|---:|---| | V1 | 353M | 1024 / 24 | MHA | 10B | FineWeb-Edu | | V2 | 316M | 1024 / 24 | Differential Attention + GQA 4:1 | 10B | FineWeb-Edu | | V3 | 672M | 1536 / 24 | XSA + GQA 4:1 | 30B | FineWeb-Edu、代码和数学 |
模型规模因此并不是这组实验中的唯一变量。V2甚至比V1少了约3700万参数,降幅约10.5%,但凭借不同的注意力结构取得了更低的预训练验证损失;V3不仅参数量接近V1的1.9倍,还多看了200亿Token,并加入代码和数学数据。
这意味着实验能够证明“同一GRPO配置无法跨模型稳定迁移”,却不能单独证明“某种注意力结构导致GRPO失败”。架构、数据、训练量和初始策略分布同时变化,任何单因素归因都超出了现有数据能支持的范围。
预训练曲线越好,GRPO结果未必越好
预训练验证损失从V1的2.8659下降至V2的2.7844,再下降至V3的2.5885,整体降幅约9.7%。如果只看预训练阶段,这是一条非常符合直觉的曲线:架构更新后损失降低,扩大模型并增加数据后损失继续降低。
WikiText基础模型困惑度也延续了相同趋势,从V1的32.86降至V2的31.28,再降至V3的22.30。困惑度是模型对测试文本不确定性的指数化指标,在评估设置一致时通常越低越好;它可以衡量语言建模能力,却不能直接等同于数学推理正确率或指令遵循能力。
真正的分化发生在后训练阶段。
| 模型 | Base困惑度 | SFT困惑度 | GRPO后困惑度 | SFT→GRPO变化 | GRPO后的判断 | |---|---:|---:|---:|---:|---| | V1 | 32.86 | 51.31 | 51.40 | +0.2% | 基本不变 | | V2 | 31.28 | 46.81 | 71.06 | +51.8% | 明显恶化 | | V3 | 22.30 | 32.11 | 33.65 | +4.8% | 小幅恶化 |
V2是最值得警惕的异常点。它的参数量最小,但基础困惑度优于V1;完成SFT后,它仍然优于V1;进入GRPO后,它却从46.81跳升至71.06,绝对增加24.25,成为三款模型中表现最差的一款。
V3则说明更大的模型可能更能承受策略更新,但规模没有把负面影响变成正收益。它经过GRPO后的困惑度只上升约4.8%,明显好于V2,却仍然没有在这项通用语言评估上得到改善。
V1几乎没有变化同样不能简单解释为GRPO“最适合旧架构”。0.2%的差异可能意味着更新被KL约束压得很小,也可能意味着奖励信号没有形成足够的有效梯度,还可能落在评估波动范围内;如果没有多随机种子实验、训练曲线和置信区间,就不能把51.31与51.40的差异视为确定的性能退化。
这组数字不能直接证明GRPO让模型变笨
WikiText困惑度恶化只能说明模型对WikiText分布的预测能力下降,不能单独说明其算术能力也下降。此次GRPO优化的是合成算术课程与对应奖励,而最终列出的指标是通用文本困惑度,训练目标和评估目标并不一致。
SFT阶段已经让三款模型的WikiText困惑度全部升高。V1从32.86升至51.31,增幅约56.1%;V2从31.28升至46.81,增幅约49.6%;V3从22.30升至32.11,增幅约44.0%。这表明明显的分布迁移在GRPO之前就已发生,后续强化学习只是让V2的迁移进一步放大。
因此,更准确的表述不是“GRPO毁掉了V2”,而是“在这套算术奖励和训练设置下,V2的通用语言建模困惑度出现了显著退化”。要判断这次训练是否彻底失败,还必须同时检查算术准确率、格式正确率、回答长度、奖励均值、KL散度、输出熵和未参与训练的推理基准。
一个现实场景可以说明这种区别:模型为了获得算术奖励,可能学会稳定输出短答案、固定推理模板或特定终止格式。这些变化会提高奖励函数命中率,却可能降低它预测百科式连续文本的能力;对于数学助手,这未必不可接受,但对于通用模型,它就是明确的能力代价。
相同超参数,不等于相同更新强度
KL系数相同并不代表三款模型受到的约束相同。KL散度衡量新策略与参考策略之间的分布偏移,而相同的惩罚权重作用在不同初始分布、不同输出熵和不同Token概率校准水平上,最终产生的有效约束可能相差很大。
GRPO的组内相对优势也高度依赖模型能否为同一道题生成“有差异且可比较”的答案。如果模型几乎总是答错,组内奖励可能全部相同,优势信号接近消失;如果模型偶尔答对但分布极不均衡,少数高奖励样本又可能制造尖锐梯度;如果模型已经经常答对,奖励饱和同样会减少有效学习信号。
V2可能处在一个特别不利的奖励方差区间。Differential Attention和GQA改变了模型的表示与生成分布,但训练仍沿用为其他架构设定的采样温度、组大小、学习率、裁剪范围和KL系数,这些表面一致的参数未必对应相同的探索程度与策略步长。
奖励函数本身也可能存在可利用的捷径。合成算术任务通常容易构造可验证奖励,但如果评分只检查最终答案或格式,模型可能通过缩短输出、重复模板、利用解析器边界行为等方式获得高分,而不是提升可泛化的推理过程。
长度偏置是另一项需要优先排查的变量。只要三款模型在SFT后的平均生成长度不同,相同的逐Token KL惩罚、序列级奖励和长度归一化方式就可能产生不同训练压力,最终让某个模型更快滑向短答案或重复输出。
参数量为什么没有提供稳定性保证
参数量只描述模型拥有多少可训练权重,不描述这些权重在后训练起点上形成了怎样的策略分布。强化学习真正更新的是输出概率,而不是参数数量这个静态指标;一个672M模型可以拥有更平滑的奖励响应,也可以因为更强的模式放大能力更快学会奖励捷径。
预训练损失同样不是强化学习适配性的充分指标。交叉熵关注下一个Token预测,GRPO关注采样答案在奖励函数下的相对排名,两者优化的对象不同,因此不存在“预训练损失低,GRPO一定更有效”的必然关系。
V3的优势还被额外训练数据混入了明显混杂因素。它训练了30B Token,是V1和V2的3倍,并额外接触代码和数学内容;它在GRPO阶段退化较小,可能来自参数规模,也可能来自数学先验、更多训练量、更好的校准或不同注意力结构。
这组结果真正推翻的是一种工程上的偷懒假设:只要模型更大或预训练指标更好,后训练配方就可以直接向上迁移。实际上,每次更换基础模型,都应该把GRPO视为一次新的控制系统调参,而不是把旧实验的配置文件原样复用。
开发者应该先检查什么
多指标联合评估是定位问题的第一步。至少需要同时报告目标任务准确率、WikiText困惑度、平均奖励、KL散度、输出长度、熵、格式通过率和重复率,否则无法分辨模型是在学习推理、适应格式,还是钻奖励函数的空子。
多随机种子复现是判断V2异常是否稳定存在的必要条件。单次训练可能受到初始化、数据顺序和采样随机性的影响,尤其是几亿参数的小模型;建议至少运行3个随机种子,并报告均值、标准差和最佳检查点,而不是只比较最终一步。
逐项扫描GRPO关键参数比整套复制更可靠。优先级最高的变量包括学习率、每个提示的生成数量、采样温度、PPO式裁剪范围、KL系数、每次rollout后的更新次数、最大生成长度和奖励归一化方法。
设置对照实验可以把问题从“猜测”变成“定位”。开发者至少应保留纯SFT对照、无KL对照、低学习率GRPO、不同组大小、不同奖励函数,以及从更早或更晚SFT检查点启动的实验。
检查奖励分布比只看平均奖励更重要。平均奖励上升可能掩盖模型多样性坍缩,因此应观察每个提示内的奖励标准差、全零奖励组比例、全满奖励组比例,以及正确答案是否只集中在少数固定模板中。
保留训练过程中的中间检查点也很关键。V2的困惑度可能在某个阶段先改善后恶化,如果只保存最终模型,就会把“过度优化”误判成“算法从一开始无效”。
对GRPO热潮的一次及时降温
GRPO最初因DeepSeekMath和后续推理模型实践而受到关注,它的主要工程吸引力是不用单独训练价值模型,从而降低PPO式训练的资源负担。DeepSeek-R1公开资料也让基于可验证奖励的强化学习成为模型开发中的热门路线,但算法更轻量并不等于超参数更容易跨模型复用。
当前越来越多的研究倾向于把GRPO理解为“强化模型已有倾向”的机制,而不是凭空注入新能力的通用推理引擎。模型在预训练或SFT阶段若已具备目标任务的初步能力,组内采样就可能产生有意义的好坏差异;如果基础策略没有形成相应能力,GRPO面对的可能只是低质量样本之间的相对排序。
这也解释了为什么预训练数据构成可能比参数规模更关键。一个见过数学表达、代码结构和多步解题轨迹的模型,更容易在rollout中偶尔生成正确路径,而这些少量正确样本正是组内相对优化能够放大的信号来源。
不过,此次实验中的V3并未展示GRPO带来的正向WikiText收益。它只是在通用语言能力上的损失更小,因此不能据此宣称数学与代码预训练已经解决GRPO稳定性问题;只有补齐目标算术基准,才能判断V3是否用4.8%的困惑度代价换来了值得接受的推理收益。
结论:规模是容量指标,不是训练保险
这组三模型实验最有价值的结论,是参数规模、预训练验证损失和基础困惑度都不能单独预测GRPO结果。V2以316M的最小参数量取得优于V1的预训练指标,却在相同GRPO配方下出现约52%的困惑度恶化;V3拥有672M参数和最低预训练损失,也只是把恶化控制在约5%。
同一套GRPO配方实际上作用于三个不同的策略起点,而不同模型的奖励方差、输出熵、KL响应、长度分布和可探索能力都可能不同。把学习率、KL系数和奖励函数写成相同数值,只能说明实验配置一致,不能说明训练动力学一致。
对开发者而言,最实际的判断是:GRPO不是一个打开就能稳定提升能力的后训练开关。每换一款基础模型,都需要重新建立奖励与KL曲线、做小规模参数扫描、同时测目标能力和通用能力,并用多随机种子确认结果;模型规模可以增加能力上限,但不会自动提供后训练稳定性。
参考来源
- Reddit:Same GRPO recipe on three from-scratch LLMs:本次三模型实验的原始开发记录,包含模型配置、预训练损失和WikiText困惑度结果。
- GitHub:EleutherAI lm-evaluation-harness:实验所使用的统一语言模型评估框架,可用于核对任务配置、shot设置与评估实现。
- GitHub:DeepSeek-R1:DeepSeek公开的R1模型说明与技术资料,介绍强化学习在推理模型训练中的应用背景。



