Lite PPO
简介
LitePPO是一种轻量级的近端策略优化算法,专为大语言模型的高效训练而设计。LitePPO 仅通过 token 级别的损失计算和"组内均值+批标准差归一化"来提高训练效率和稳定性。LitePPO 通过以下方式工作:
- Token 级别损失计算:在 token 级别计算损失,提高训练的细粒度和效率。
- 组级奖励归一化:使用"组内均值+批标准差归一化"来稳定训练过程。
- 去冗余设计:移除overlong filtering等非必要组件,保留PPO原始目标函数。
LitePPO 配置参数
在 ROLL 中,使用 LitePPO 算法特有的配置参数如下(roll.pipeline.rlvr.rlvr_config.RLVRConfig
):
# LitePPO core config
## normalization
reward_norm: group
## token-level loss
token_level_loss: true
div_std_global: true # coming soon
# ppo related,其他部分可以和GRPO/PPO等设置兼容
rollout_batch_size: 512 # prompt
prompt_length: 2048
response_length: 4096
adv_estimator: "gae"
num_return_sequences_in_group: 1
ppo_epochs: 1
use_kl_loss: true
kl_loss_coef: 0.001
loss_agg_mode: "seq-mean-token-sum"
whiten_advantages: true
advantage_clip: 2.0
reward_clip: ~
dual_clip_loss: true
lambd: 0.95
gamma: 1
pg_clip: 0.2
value_clip: ~
kl_penalty: "kl"
target_kl: ~
init_kl_coef: 0.2
kl_horizon: 10000
add_token_level_kl: false
# normalize
reward_shift: false
reward_scale: false
核心参数说明
reward_norm
: 奖励归一化类型,可选值为 "batch", "group", "running", null,默认值为 "group"token_level_loss
: 是否启用 token 级别的损失计算,默认值为 truediv_std_global
: 是否使用全局标准差进行归一化,此功能即将推出,默认值为 true
PPO 相关参数
以下参数是PPO类算法通用的配置项:
rollout_batch_size
: 每个rollout_batch_size prompt的数量,默认值为 512prompt_length
: prompt的最大长度,默认值为 2048response_length
: response的最大长度,默认值为 4096adv_estimator
: 优势估计器类型,可选值为 "gae", "reinforce", "grpo",默认值为 "gae"num_return_sequences_in_group
: 每个prompt生成的response数量(组大小),默认值为 1ppo_epochs
: 每个批次样本的优化轮数,默认值为 1use_kl_loss
: 是否使用 KL 散度损失,默认值为 truekl_loss_coef
: KL-loss系数,默认值为 0.001loss_agg_mode
: 损失聚合模式,默认值是"seq-mean-token-sum", 可选值为 "token-mean", "seq-mean-token-sum", "seq-mean-token-mean", "seq-mean-token-sum-norm"whiten_advantages
: 是否对优势值进行白化处理,默认值为 trueadvantage_clip
: 优势值裁剪范围,默认值为 2.0reward_clip
: 奖励值裁剪范围,默认值为 ~ (表示不设置)dual_clip_loss
: 是否使用双重裁剪损失,默认值为 truelambd
: GAE 估计器中的 lambda 参数,用于在偏差和方差之间进行权衡,默认值为 0.95gamma
: 折扣因子,默认值为 1pg_clip
: PPO 裁剪范围,默认值为 0.2value_clip
: 价值函数裁剪范围,默认值为 ~ (表示不设置)kl_penalty
: KL 惩罚选项,可选值为 "kl", "abs", "mse", "full",默认值为 "kl"target_kl
: 自适应 KL 控制的目标 KL 值,默认值为 ~ (表示不设置)init_kl_coef
: 初始 KL 惩罚系数,默认值为 0.2kl_horizon
: 自适应 KL 控制的范围,默认值为 10000add_token_level_kl
: 是否添加 token 级别的 KL 惩罚,默认值为 falsereward_shift
: 是否在奖励归一化中仅减去均值,默认值为 falsereward_scale
: 是否在奖励归一化中仅除以标准差,默认值为 false
参考文献
[1] Liu, Z.; Liu, J.; He, Y.; Wang, W.; Liu, J.; Pan, L.; Hu, X.; Xiong, S.; Huang, J.; Hu, J.; Huang, S.; Yang, S.; Wang, J.; Su, W.; Zheng, B. Part I: Tricks or Traps? A Deep Dive into RL for LLM Reasoning. arXiv August 11, 2025. https://doi.org/10.48550/arXiv.2508.08221.