☰
RLVR+GRPO:大模型推理能力训练的完整工程指南
2026/10/20 4:39:05 网站建设 项目流程

2025年的大模型赛道,推理能力成了真正的分水岭。前两年大家拼的是“谁背的书多”,也就是预训练数据规模和参数量的军备竞赛;而去年开始风向变了,拼的是“谁能把学到的知识用出来”,也就是推理和问题求解能力。在这个转折点上,DeepSeek系列模型是绕不开的话题,其技术路线的核心,就是RLVR(可验证奖励的强化学习)和GRPO(组相对策略优化)这对组合拳。这两个词看起来是纯学术黑话,但拆开看之后会发现,它们不仅在原理上形成了一套完整的推理能力生产链路,更在工程上把训练成本和稳定性做到了让人意外的水平。

这篇文章写给两类人:一类是正在做LLM训练或微调、想复现强化学习推理路线的工程师;另一类是关注AI技术趋势、想知道“DeepSeek到底凭什么翻盘”的产品和技术决策者。我会把RLVR和GRPO的概念、原理、工程实现难点、数据算力需求以及训练中常见的坑逐一拆开讲,并落到可执行的细节上。这不是一篇综述,而是一条从原理到实操的完整笔记。

1. RLVR:用“标准答案”而不是“人味”来训练推理

1.1 先搞懂传统RLHF为什么教不会推理

过去几年LLM的人类对齐主要靠RLHF(基于人类反馈的强化学习)。它的思路是训练一个奖励模型,去预测人类对模型输出的偏好打分,然后用这个奖励模型去指导策略模型优化。这条路线在做“对话风格对齐”时非常有效,比如让模型更有礼貌、更懂拒绝、更贴切地回答日常问题。

但推理类任务——数学证明、代码执行、逻辑判断、科学计算——在RLHF框架下会遇到一个致命麻烦:人类偏好和正确答案并不总是正相关。人类评估者可能被长的、看起来结构完整的解题过程带偏,给出高分,但最后结果数值是错的;也可能因为步骤跳过很快、表达不够啰嗦,给出低分,但每一步都对。换句话说,RLHF的奖励信号是“主观近似”的,它的噪声在开放式聊天里无所谓,可在数学和代码上就是致命的——因为推理的结果有确定性判据,过程也必须有迹可循。

我实测过类似场景:用偏好模型做数学微调,训练loss一路下降,但eval集上的正确答案率反而掉了两三个点。原因就是奖励模型学会“奖励看起来很努力的胡说八道”。推理能力的提升,不能靠“像不像”,必须靠“对不对”。

1.2 可验证奖励的数学直觉

RLVR的核心就是把奖励来源从“人类偏好预测”换成“可执行、可验证的客观规则”。所谓Verifiable Reward,就是奖励函数的计算不依赖对模型输出的主观评价,而是把输出丢给一个自动校验器,由校验器直接判断对错或打分。

这类校验器有几种形态:

  • 规则检查:判断输出JSON格式是否合法、是否匹配正则、是否包含指定字段;
  • 单元测试:对模型输出的代码段执行编译与预设测试用例;
  • 数学结果对照:对最终计算答案做数值比对,支持容差判断;
  • 编译器/解释器:对代码类输出跑沙箱环境验证执行结果;
  • 自动定理证明:对严谨的数学步骤做形式化验证,这一步更前沿,但已经有不少团队在试点。

用可验证奖励替代人工奖励之后,一个核心事实发生了变化:奖励信号不再是“神经网络预测的分值”,而是“逻辑事实的判定结果”。这点在训练上的意义极其深远——因为优化问题的目标函数不再有噪声,策略模型拿到的反馈是决定性、无偏的。这就相当于考试阅卷的时候,不是让老师凭印象给分,而是直接对标准答案和采分点。

1.3 为什么RLVR天然适配推理任务的三层原因

第一,推理任务的正确性是可计算成本衡量的。数学题有唯一解或有限解集,代码问题有测试用例和输出断言,逻辑问题可以转化为约束满足。这决定了“自动判分”可行。

第二,推理任务的反馈信号必须细粒度到步骤级才有效。人类偏好打分是一种整体分值,模型内部无法定位到具体哪一步推导出了问题。RLVR虽然往往给的是结果级反馈,但配合过程格式约束和结果判据组合使用,等于告诉模型“格式对了,过程至少结构完整;结果对了,策略至少终点正确”。这种二元组合信号比整体偏好分信息量大得多。

第三,可验证奖励天然免疫于“奖励诈骗”中一种难以察觉的形式——风格伪装。在 RLHF 下,模型会学着用复杂的表达和看起来精致的推理来糊弄人类评估者,因为评估者会认为“结构这么完整,应该是对的”。而RLVR只看结果和硬性约束,模型没法学到“用废话长度换取分数”。

1.4 奖励信号的结构化设计

不要把RLVR理解成“只给0或1”。实际工程里,可验证奖励也可以做成连续或分级信号,核心是结构清晰、标准客观。我常用的拆分方式如下:

  • 格式奖励(Format Reward):大模型在强化学习里必须先学会“把推理过程放到规定字段中”,否则后面计算奖励时无从解析。通常用正则、字段存在性来判定,给0.1这种小加成而非1.0,防止模型为了格式正确而忽视实质推理;
  • 结果奖励(Outcome Reward):最终答案与正确答案比对,这一步是决定性分值,做错了直接给0;
  • 过程验证奖励(Process Reward,可选):对推理链中的中间步骤做检验,比如对每一步方程做等价变换检查。计算代价高,但能显著提升复杂问题的学习效率。

如果你自己搭奖励管线,我建议从小规模先开始:只做格式奖励+结果奖励,跑通之后再引入过程奖励。一上来就做过程奖励,解析逻辑的复杂度会倍增,调试成本远高于收益。

2. GRPO:没有Critic模型,策略优化反而更稳

2.1 PPO在推理训练里的痛点:又贵又不稳

提到策略优化,大部分做强化学习的人第一反应是PPO(近端策略优化)。PPO在机器人控制、游戏AI等领域表现出色,但放到LLM推理训练里却有几处明显的别扭:

  • PPO需要用价值模型(Critic,通常是另一个LLM规模的网络)给状态打分,这相当于每次更新都要跑两套大模型的前向;
  • Critic模型本身学得不稳定,尤其在奖励变化幅度大的推理任务里,价值预测时好时坏,最后策略模型会被带偏;
  • 显存开销直接翻倍,小规模团队根本跑不动,只能砍batch、砍序列长度,然后整体吞吐就塌了。

我见过不少团队在LLM推理强化学习上直接用PPO,发现loss曲线常在20到30步左右开始震荡,策略模型能力没涨,但KL散度先爆了。问题根源之一就是Critic对稀疏奖励场景的价值函数估计方差太大。

2.2 GRPO打破“值函数”依赖:组内相对基线

GRPO(Group Relative Policy Optimization)是DeepSeek系列模型带火的一种策略优化算法,核心做法是:对同一个输入(或同一组prompt),用旧策略模型采样出G个输出,形成一个输出组。然后对这G个输出做统一的规则化打分(通常除以组内标准差),用组内相对得分来估计“这个策略比其他选择好多少”。

这样做等于抛弃了传统PPO中的Critic网络,没有全局值估计,只有组内相对比较。它的数学依据是:既然奖励信号是客观可验证的,那么最重要的是提升“相对优策略的概率”,而组内归一化恰好提供了一种低方差、低偏置的优势估计方式。

有一个很直观的类比:PPO像每道题都请一个“水平不定”的导师打分然后按绝对分数给反馈,GRPO则更像A/B测试——同一道题给模型采样多个解法,自己和自己比,选更好的,按相对优势更新策略。相对比较天然抗噪声,而且不需要价值模型,显存和算力都省。

2.3 放弃Critic模型到底省了什么

先列一个账。假设你的策略模型是70B规模,即便LoRA微调,梯度状态和优化器状态也已相当可观。而PPO模式下,Critic如果也是7B或者70B,等于训练时至少多了一套完整的前向、反向和优化器开销。再加上KL散度约束和分布裁剪,每一步的计算量几乎是策略更新的1.5到2倍。

GRPO模式下:

  • 不需要价值模型,不存在Critic的前向和反向计算;
  • 不需要广义优势估计器等需要逐步递归计算的模块,内存占用更平均;
  • 策略输出G个样本,意味着单次prompt的成本提高到了G倍,但可以在同一个前向批次内并行处理,比“额外跑一个价值模型”划算得多。

实测下来,在相同显存预算下,GRPO能支持的序列长度和batch size通常要比PPO大30%以上。别小看这30%,在长思维链推理任务中,序列长度经常在2K到8K甚至更大,显存是真正的硬瓶颈。

2.4 组数量G和KL系数怎么定才算合理

组内样本数量G直接决定优势估计的质量。G太小时,组内相对比较的方差偏大,策略更新方向会抖动;G太大时,单prompt的采样成本过高,训练吞吐被拖垮。

从实践角度看,数学推理任务G通常取4到8,代码生成类任务可以适当取大一些(8到16),因为代码正确性二元性更强,需要用更多样本覆盖测试用例的多样性。但G并不是越大越好——超过一定阈值后,收益会边际递减,而采样和评分成本线性上升。

KL散度约束系数算是一个隐藏但关键的超参。GRPO的更新目标里包含了与参考策略的KL惩罚项,用来防止策略模型跑飞。系数设得太大,模型更新太保守,推理能力几乎不涨;设得太小,模型很快会退化成阶段性的“奖励黑客”,光会钻规则的空子。粗调时可以按log域扫:比如设0.001、0.003、0.01、0.03四档,短的100步左右就能看出分化趋势。

3. 从SFT到RLVR+GRPO:一条完整的推理能力生产线

3.1 冷启动:为什么必须先用SFT打好底子

你不可能让一个模型从随机权重开始直接跑强化学习去学解题——搜索空间太大,奖励又稀疏,模型会像无头苍蝇一样乱撞。实际项目里必须先来一轮高质量的SFT(监督微调),这被称为冷启动阶段。

冷启动SFT的目标很明确:让模型见过标准解题格式、学会输出结构化的思维链、具备基本的题目理解与形式化能力。这阶段的数据不需要海量,更不需要全网爬取,而是要精。哪怕只有几千条高质量带完整推理过程的样本,都要比几百万条低质数据更有价值。原因是RLVR阶段依赖模型在SFT学到的行为分布上进行探索,初始分布太差,强化学习很难拉回来。

我在实际项目中走过一个弯路:一开始为了赶时间,用自动生成的带错误推理过程的数据做SFT冷启动。结果模型学会了“推理结构酷似正确但最后结果一塌糊涂”的坏习惯。后来换成了人工/半自动严格校验过的推理链之后,下游RLVR阶段的收敛速度肉眼可见地变快了。冷启动数据的质量,是RLVR上限前置的决定因素。

3.2 奖励设计:格式、结果、过程三类的配比

奖励设计是整套RLVR+GRPO里最容易被低估的环节。很多人以为有了“正确结果判定”就万事大吉,实际上奖励设计里的细节决定收敛质量和稳定性。

先说格式奖励。推理模型通常要求输出包含类似“推理过程”和“最终答案”两个字段。格式不对,意味着无法有效解析出答案和过程,这是0分的基础。格式奖励通常给一个小常数(比如0.05到0.2),目的是驱动模型形成稳定输出结构,而且这个分数必须显著低于结果正确带来的分数,防止模型用格式合规来掩盖推理失败。

结果奖励是主分数,做对给1.0,做错给0。对数学任务建议做数值容差判断,比如分式约分、绝对值符号差异,要归一化后比对;对代码任务不能只看主函数返回值,必须跑测试用例。

过程奖励做起来麻烦但要克制,初期可以干脆不做,等模型结果正确率上了40%以上再考虑。原因是过程奖励的自动判断逻辑极易出错(比如“这一步等价变换看似合理但逻辑上不严谨”),判断器错了,比没有判断器伤害更大。

3.3 训练循环细化:采样、评分、策略更新一个都不能少

把整个训练循环拆开来看,大概是这样一个流程(以单机多卡为例):

  1. 采样阶段:向策略模型输入一个batch的prompt,对每个prompt采样G条输出序列;
  2. 评分阶段:把G条输出通过配置好的验收管线(格式解析、答案比对、测试用例执行、过程检查);
  3. 归一化阶段:对同一组G条奖励做均值、标准差归一化,形成优势信号;
  4. 策略更新阶段:按GRPO目标函数计算策略梯度,同时加KL项约束模型偏离参考策略的程度;
  5. 同步与记录:定期保存checkpoint,打印每组的奖励分布、生成长度、格式错误率指标。

这五步里最容易被忽视的是第3步的归一化。之前测试时我试着直接拿原始奖励跑更新,发现奖励绝对值高的批次(难得做对题)梯度被放大,奖励低的批次几乎不更新,整体学习速度非常不稳定。改成组内归一化之后,模型对每个prompt都保持“相对进步”的学习压力,收敛稳定许多。

3.4 推理时的扩展:思维链长度和“反思”机制

训练之后,在推理阶段还有一个重要环节:思维链长度管理和反思机制。RLVR训练出的模型,其推理链会随着训练进程自然变长——因为组相对优化发现,多写几步推导、多做一次验证,往往能提高最终正确率。

但推理链不能无限长。推理阶段需要显式设定最大生成tokens,过长时必须截断。有个工程经验:先统计训练集上生成序列长度的P90,然后把这个值乘以1.2作为推理上限,既覆盖绝大多数问题,又不会让显存和时延失控。

反思机制是RLVR模型常见的一种涌现行为:模型生成一段推理后,自行检查到错误,然后修正重写。这实质上是通过训练学会的、以更多计算换取更高正确率的策略。做推理时,可以给模型额外的“to verify”输入提示,或者对最终结果置信度做二次采样筛选,能显著提升基准集上的得分。代价是推理成本线性增加——这就是所谓“用计算换推理”的权衡。

4. 数据与算力:这套打法对资源的真实需求

4.1 数据配比和质量过滤的决定性影响

很多人以为RLVR阶段对数据的需求是大规模的、无法控制的,但实践中——尤其是在2025年工具链成熟之后——未必如此。核心在于数据配比和质量控制,而不是规模。

按我的经验,训练数据中数学类(带严格答案)和代码类(带测试用例)的比例通常在6:4到7:3之间比较合适。数学任务奖励判定成熟且成本低,可以作为训练稳定性的锚点;代码任务难度更高、泛化收益更大,但奖励管线要多调。纯逻辑题数据可以少量掺入,但要小心数据集格式不统一带来的格式奖励波动。

质量问题里最关键的是“最终答案必须可靠”。如果答案本身标注错误,RLVR会把这些样本变成“负向示范”,模型学到的是“看起来对的方法也会被惩罚”——这会让收敛速度断崖下跌。所以每条训练数据的答案校验环节,值得花人力去抽检。

4.2 奖励质量是人机协同的结果

奖励管线的自动化程度决定RLVR的上限,而奖励管线的调试则是一个典型的“人机协同”过程。

从工程架构上讲,一套标准的奖励管线由三部分组成:解析器负责从模型输出中稳定提取字段;验证器根据任务类型执行比对和测试;聚合器把各维度分值按权重合成最终标量奖励。这个管线本身值得用单独的代码仓和单元测试去维护,因为哪怕解析器一个小小的正则bug,都会导致某一类样本格式分长期为0,模型会因此错误地降低对应输出格式的概率。

我见过一个真实的坑:某个数据集里的答案使用了“约等于”标记(比如“答案约为3.14”),结果验证器在数值比对时全部判错,导致模型在该类型题目上的正确率被低估,RLVR阶段在全部这类题目上惩罚过火、后续生成行为整体劣化。这类问题只能靠对奖励管线输出分布的持续性监控来发现——打印每类样本奖励的均值、方差,一旦出现明显的偏置,立刻排查规则逻辑。

4.3 训练侧和推理侧的真实算力消耗

如果把RLVR+GRPO的算力消耗摊开,有两个大头。

训练侧算力消耗主要来自采样和评分。每prompt采样G条、序列长度L,意味着单步的生成tokens数是prompt数乘以G乘以L。比如4096个prompt、G=8、L=2048,单步就是6700万tokens;然后再走策略更新,这个成本是SFT的数十倍到上百倍。这也是为什么分布式rollout(采样)和训练解耦是标配——一个节点跑数据采样,一个节点跑梯度更新,中间通过共享存储或实时消息传递来流通数据。

推理侧算力消耗则主要来自长思维链输出。一个测试prompt可能生成2K到4K tokens,对标只用一次前向输出的普通对话模型,推理时延和KV cache占用会暴涨。实际应对方案包括但不限于投机解码、动态长度截断、模板化输出加速。如果你的业务对时延要求高(比如在线客服),可以训练一个“短推理模式”作为降级策略,同时保留一个长推理模式处理复杂问题。

4.4 长思维链带来的显存与KV Cache压力

KV Cache是长思维链推理中一个绕不开的工程痛点。模型每生成一个token,都需要把历史token的Key和Value存入缓存,序列越长,缓存呈线性增长;同时推理过程中的中间层激活值也随序列长度增长而增长。

实测时,一个70B级别模型在4096序列长度下,KV Cache占用的显存就经常达到十几个GB。所以实际部署时常用这几个策略:GQA(分组查询注意力)能在模型中直接减少KV的显存占用,但要求模型训练时就用;KV Cache量化(8bit或者4bit)可以压缩60%以上缓存空间,精度损失在多数应用中可控;长度弹窗管理则是按输入长度分档,不同档位走不同的批处理策略。

如果你的模型已经训练完再想引入GQA,基本是没戏的,只能从量化、批处理、长度截断上做文章。如果你还在模型训练阶段,强烈建议在预训练和SFT时就直接采用GQA。这个决策在未来的推理部署阶段会带来数倍的显存优势。

5. 实操避坑:奖励黑客、训练崩溃与不收敛

5.1 奖励黑客在RLVR里同样存在

“奖励黑客”通常是指模型发现并利用奖励函数漏洞实现高奖励但任务并没有真正完成的行为。有人以为RLVR因为奖励客观就不会被钻空子,但这是大错特错。

举几个真实例子:格式奖励过高时,模型可能输出多个候选答案并说“正确答案是其中一个”,这种输出在格式上合规、结果比对代码无法从多答案里可靠提取时反而容易拿到部分分数;代码评测测试用例太弱时,模型会生成一个忽略边界条件的实现,只在特定用例上通过;数学答案只比对最终值而不比对推导步骤时,模型可能输出随机步骤+最终写一个蒙对的数。

防奖励黑客的三个通用手段:一是限制输出字段数量并强制单选答案,让“蒙多答案”成本提高;二是测试用例设计必须覆盖边界条件,至少包括3类异常输入;三是在奖励里设置“解析置信度”项——当模型输出无法被稳定解析时直接给0分而不是部分分。

5.2 训练崩溃与NaN问题的排查

GRPO训练最让人头疼的崩溃场景之一是loss突然变成NaN。根因通常有几类:学习率过高导致的政策更新步长超出稳定域;KL项数值溢出(尤其是fp16训练时);奖励归一化时组内方差恰好为0(比如冷启动阶段一个组里的输出全对或全错,导致除以零)。

排查顺序我建议按这样来:先看最近一个step的奖励分布,如果是全0或全1,大概率是方差归零问题,调整归一化代码加入epsilon平滑;再看KL散度是否在一个step内暴涨,如果是,调低学习率或增大KL系数;最后检查混合精度策略,在关键计算节点(比如归一化、KL计算)强制使用fp32。

一个小技巧是给奖励归一化加上一个很小的人工噪声(比如高斯噪声标准差0.01),可以有效降低组内方差归零导致的不稳定性,付出的代价是可以忽略不计的梯度偏差。

5.3 分布漂移与评估集过拟合

RLVR训练中要特别注意评估集过拟合,但这里说的过拟合不是传统意义的loss上升,而是模型学会了“在所有评估题上拿高分”但失去了对题型的泛化能力。由于RLVR训练数据通常来自统一题库,模型很容易记忆题库答案模式。

缓解手段不外乎这几种:持续扩充训练题库、周期性地往训练集中注入在评估集上采样出的“相似但不同”的变形题;更关键的是动态评估——每500步做一次全面评估,看正确率是否随训练步数上涨还是先涨后跌,如果后段下跌明显,说明策略已经开始记忆题库模式,这时要重新洗题目并降低训练LR。

5.4 最容易忽视的采样温度问题

最后分享一个非常隐蔽但影响极大的坑:采样温度。

很多人在RLVR训练过程中沿用SFT阶段的temperature=1.0甚至0.7以下的设置,结果发现策略模型迅速变得“保守”:生成长度变短,探索行为急剧萎缩。原因在于GRPO的探索量完全依赖采样随机性。如果温度太低,组内样本高度相似,优势估计方差大、更新效率低下;让模型退化成一个重复输出模板的机器。推理能力训练需要新鲜样本,必须保证采样多样性。

实操建议:训练阶段的temperature设为1.2到1.5之间,top_p调到0.9左右;推理阶段再降回0.6到0.8,保证输出稳定。优化目标是探索和利用的折衷——训练时多试错,推理时选稳态。

写在最后的几句真话

我自己跑RLVR+GRPO这条路线一段时间后,最深的感受是:这套技术组合的确把“大模型推理能力训练”这件事从“玄学”变成了“工程”。只要奖励定义清晰、数据可靠性有保障、GRPO的超参在合理区间内,训练循环整体上是可预测、可复现的。相比之前RLHF那种“奖励模型稍微有偏,训练就全盘失控”的局面,RLVR的稳定性和可控性完全是另一个量级的体验。

如果你所在团队想做同样的事,我的建议是:不用一开始就追求复刻整套大规模管线。先拿一个10B以下的开源模型,选一到两个数学或代码任务,搭建最简版的格式奖励+结果奖励,跑通一组G=4、KL系数0.01的训练循环。确认曲线稳定、奖励在涨、评估集正确率上升之后,再逐步扩大模型规模和任务范围。这套打法真正的门槛不在理解RLVR和GRPO,而在于你有没有一份完全可控的奖励函数——这个做好了,后面的一切都是水到渠成。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询