简介:本文系统梳理大模型强化学习对齐的主流算法,包括经典PPO、免Critic的GRPO,以及DPO、DAPO、GSPO等衍生方案。面向开发者与技术负责人,从算法原理、目标函数、训练流程到选型建议逐层展开,帮助读者理解各方法的适用边界、关键配置与常见问题,并给出可落地的实施步骤与验证排查思路。
本教程面向已经完成或准备开展大模型对齐训练的开发者、算法工程师与技术负责人,帮助读者系统理解当前大模型强化学习(RL)对齐的主流算法族——PPO、DPO、GRPO、DAPO、GSPO——并在实际项目中完成算法选型、训练流程搭建、关键配置与效果验证。
读完后,你应当能够回答三个问题:
本教程不绑定任何特定训练框架或云平台,所给伪代码与配置均为通用示意,读者可映射到自有的训练基础设施上。
以下场景适合参考本教程:
如果尚未完成 SFT 阶段,建议先补齐基础模型与监督数据,再进入本教程的 RL 阶段。
在开始之前,建议具备以下条件:
基础环境
数据与模型
团队知识
通用概念约定:下文用 π_θ 表示当前策略(待训练的语言模型),π_ref 表示参考策略(通常是 SFT 模型),r 表示奖励,A 表示优势,ε 表示裁剪幅度,β 表示 KL 惩罚系数。
PPO(Proximal Policy Optimization)是最早被大规模用于语言模型对齐的强化学习方法。它把语言模型视为策略网络:给定 prompt x,模型生成回答 y,奖励模型对 (x, y) 打分,再用策略梯度更新参数。
PPO 的核心思想是“谨慎前进”——限制新策略相对旧策略的变化幅度,避免一次更新偏离过远导致崩溃。其裁剪目标函数为:
L_PPO(θ) = E[ min( r_θ · A, clip(r_θ, 1-ε, 1+ε) · A ) ]其中 r_θ = π_θ(y|x) / π_θold(y|x)
这里 r_θ 是新旧策略的概率比,A 是优势函数(通常为 reward 减去 baseline),clip 把概率比约束在 [1-ε, 1+ε] 区间,超出部分不再提供梯度。
在 RLHF 实践中,PPO 通常还会加入 KL 惩罚项,约束策略不要偏离 SFT 学到的语言分布,避免模型为刷奖励而输出不通顺甚至有害的内容。
优点:理论完备、表达能力强,能通过探索发现更优策略,是很多对齐方案的事实基线。
缺点:训练链路复杂,需要同时维护策略模型、参考模型、奖励模型和价值模型(critic);算力开销大;对学习率、裁剪系数、KL 系数等超参数极其敏感。
GRPO(Group Relative Policy Optimization)针对 PPO 的一个核心痛点做了改进:价值模型(critic)在大模型场景下难以训练且不稳定,它需要单独拟合每个 token 的期望回报,误差会传导到优势估计,进而污染策略梯度。
GRPO 的核心思路是不做绝对价值估计,只用同组样本的相对好坏。具体做法是:对同一个 prompt 采样 K 个回答,用奖励模型分别打分,再用组内平均分作为 baseline:
A_i = r_i - (1/K) · Σ_j r_j
这样优势函数只依赖组内相对排序,无需额外训练价值网络,显存占用和训练复杂度显著下降。当组内奖励方差较大时,相对优势能提供有效的学习信号;当所有回答得分接近时,优势趋近于零,梯度自然衰减,起到一定的自适应稳定作用。
GRPO 的目标函数沿用 PPO 的裁剪形式,只是把优势替换为组内相对优势,并同样保留 KL 惩罚。
DPO(Direct Preference Optimization)走的是另一条路线:它通过数学推导证明,带 KL 约束的奖励最大化问题存在闭式最优策略,从而可以把“先训练奖励模型再 RL”的两阶段流程,化简为直接在偏好数据上做分类式训练。
其损失函数形式大致为:
L_DPO(θ) = -E[ log σ( β · ( log(π_θ(y_w|x)/π_ref(y_w|x))- log(π_θ(y_l|x)/π_ref(y_l|x)) ) ) ]
其中 y_w 是偏好回答,y_l 是被拒回答。直观理解是:提高偏好回答相对参考模型的概率,同时压低被拒回答的概率。
优点:无需在线采样、无需奖励模型、无需价值模型,训练稳定、成本低,工程实现简单。
缺点:依赖静态偏好数据,缺少在线探索能力;对数据分布外的情况泛化有限;β 参数对效果影响较大。
DAPO(Decoupled clip And Dynamic sAmpling Policy Optimization)可视为对 PPO/GRPO 一类裁剪式算法在工程层面的系统性改进,主要针对大规模长序列训练中的几个实际问题:
这些改动不改变算法骨架,但能明显提升训练稳定性与样本效率,适合长链推理类任务的训练。
GSPO(Group Sequence Policy Optimization)关注的是 PPO 类方法中“token 级重要性比值”带来的方差问题。在长序列上,逐 token 计算概率比并裁剪,会使梯度方差随序列长度放大,训练容易抖动。
GSPO 的思路是把重要性比值从 token 级提升到序列级,用整条回答的序列概率比作为裁剪与加权依据,从而降低方差、提升长序列训练的稳定性。它与 GRPO 的组内相对优势结合使用时,可以在不引入 critic 的前提下进一步稳定训练。
需要说明的是,GSPO 属于较新的探索方向,具体实现细节在不同技术方案中可能有所差异,落地时应以自身训练框架的实现为准,并通过小规模实验验证收益。
| 算法 | 是否需奖励模型 | 是否需 Critic | 是否在线采样 | 主要优势 | 主要代价 |
|---|---|---|---|---|---|
| PPO | 是 | 是 | 是 | 表达能力强、基线成熟 | 链路复杂、显存与算力高 |
| GRPO | 是 | 否 | 是 | 去掉 Critic、降低成本 | 依赖组内奖励方差 |
| DPO | 否 | 否 | 否 | 简单稳定、成本最低 | 无在线探索、依赖数据质量 |
| DAPO | 是 | 否 | 是 | 样本效率与稳定性更好 | 实现细节较多 |
| GSPO | 是 | 否 | 是 | 长序列训练方差更低 | 较新、需实验验证 |
做什么:在动手前先确定优化目标——是提升回答有用性、减少有害输出,还是增强推理正确率。不同目标对应不同的奖励设计与算法偏好。
为什么:RL 算法只是优化器,目标定义错了,算法再好也会放大偏差。推理类任务更适合带可验证奖励的 GRPO/DAPO 类方法;通用对话偏好对齐则 DPO 或 PPO 均可。
注意:提前固定评估集与评估指标,避免训练中反复更换口径导致结论不可比。
做什么:整理 prompt 集合与偏好成对数据;若采用在线 RL,还需准备可调用的奖励模型。
为什么:DPO 直接消费偏好对,PPO/GRPO 系列需要奖励模型在采样后打分,两者对数据的要求不同。
注意:检查偏好数据是否存在位置偏差(总是偏好更长回答)、标注一致性低等问题,这类噪声会被 RL 放大。
做什么:按所选算法组装训练流程。
为什么:不同算法的模型数量与数据流不同,闭环搭错会直接导致显存溢出或梯度错误。
注意:参考模型必须冻结;采样与训练阶段要保证 prompt 分布一致。
做什么:设置裁剪系数 ε、KL 系数 β、组大小 K、学习率、批大小等。
为什么:这些参数直接决定训练稳定性。
通用取值思路(示意,需按实际实验调整):
# 通用示意配置,非特定框架参数clip_epsilon: 0.2 # 裁剪幅度,过大易崩溃,过小学不动kl_coef: 0.01 ~ 0.05 # KL 惩罚,偏大保稳定,偏小放开探索group_size_K: 4 ~ 16 # GRPO 类方法的组内采样数,越大 baseline 越稳但越贵learning_rate: 1e-6 量级 # RL 阶段通常远小于 SFTbatch_prompts: 依显存而定 # 按 prompt 数而非 token 数控制max_new_tokens: 按任务设定 # 长序列任务需配套长度处理策略
注意:不要一次性调多个参数;建议先固定 KL 与学习率,再调 K 与裁剪系数。
做什么:用少量 prompt 跑几十到几百步,观察奖励曲线、KL 散度、回答长度、重复率等指标。
为什么:RL 训练的问题往往在早期就暴露,小规模试跑成本低、定位快。
注意:重点关注奖励是否单调虚高而实际质量下降(奖励黑客的典型信号),以及 KL 是否持续膨胀。
做什么:试跑稳定后扩大 batch 与训练步数,按固定间隔在评估集上做离线评测与人工抽检。
为什么:在线奖励只是代理指标,最终质量必须用独立评估确认。
判断训练是否达到预期,建议从三个层面验证:
若三层结果不一致(如训练奖励上升但评估下降),优先怀疑奖励模型偏差或评估集泄漏。
问题一:奖励持续上升但人工评估变差
原因通常是奖励黑客——模型找到刷分捷径(如堆长度、堆套话)。排查:检查回答长度分布与高频模板;解决:加强 KL 惩罚、在奖励中加入长度/格式约束、定期用人工评估校准奖励模型。
问题二:训练早期即崩溃,损失爆炸
多与学习率过大、裁剪系数过大或数据异常有关。排查:降低学习率一个量级重跑,检查是否存在全同回答导致除零或数值不稳。
问题三:GRPO 组内优势全为零,学不动
原因是同一 prompt 的 K 条回答得分完全相同,相对优势为零。排查:统计组内奖励方差;解决:增大 K、提高采样温度、或采用动态采样过滤无信号样本。
问题四:显存不足
PPO 需四模型常驻,显存压力最大。排查:确认参考模型与价值模型是否必要;解决:改用 GRPO 类省去 critic、使用参数卸载与梯度检查点、减小 batch 或序列长度。
问题五:KL 散度快速膨胀
策略偏离参考模型过远。解决:提高 KL 系数、降低学习率、缩短每次更新的数据复用轮数。
本教程围绕大模型 RL 对齐的算法选型与落地展开:PPO 是理论完备但工程复杂的经典基线;GRPO 通过组内相对优势去掉 critic,显著降低训练成本;DPO 把 RL 转化为偏好分类,是最轻量的方案;DAPO 与 GSPO 则在裁剪策略、采样效率与序列级稳定性上做了针对性改进。实际选型应结合任务类型、数据条件与算力约束,先用小规模实验验证,再逐步放大。后续可继续关注奖励模型质量提升、长序列训练稳定性与离线评估体系建设三个方向。