Group Sequence Policy Optimization (GSPO)
简介
Group Sequence Policy Optimization (GSPO) 是阿里巴巴Qwen团队提出的一种强化学习算法,用于训练大语言模型[^1]。GSPO通过以下方式工作:
- 序列级优化:与GRPO等算法不同,GSPO在序列级别而非token级别进行重要性比率计算、奖励分配和优化。
- 组采样:对于给定的问题,模型生成多个可能的解决方案,形成一个"组"的输出。
- 奖励分配:每个解决方案都会被评估并分配一个基于其正确性或质量的奖励。
- 基线计算:组的平均奖励作为基线。
- 策略更新:模型通过将每个解决方案的奖励与组基线进行比较来更新其参数。
GSPO 配置参数
在 ROLL 中,使用GSPO 算法特有的配置参数如下:
# GSPO related
adv_estimator: "grpo"
importance_sampling: seq
rollout_batch_size: 64 # prompt
num_return_sequences_in_group: 8
prompt_length: 2048
response_length: 4096
# ppo related
ppo_epochs: 1
use_kl_loss: true
kl_loss_coef: 0.001
loss_agg_mode: "seq-mean-token-mean"
# advantage
whiten_advantages: false
advantage_clip: 2.0
dual_clip_loss: true
# clip
reward_clip: 10
# normalize
norm_mean_type: ~
norm_std_type: ~
# reward
add_token_level_kl: false
核心参数说明
adv_estimator: 优势估计器类型,设置为 "grpo"importance_sampling: 重要性采样方式,设置为 "seq" 表示序列级采样rollout_batch_size: 每个rollout_batch_size prompt的数量num_return_sequences_in_group: 每个prompt生成的response数量(组大小),每个pipeline step训练的总样本数是(rollout_batch_size * num_return_sequences_in_group)prompt_length: prompt的最大长度response_length: response的最大长度
PPO 相关参数
以下参数是PPO里常见的参数,但在 GSPO 中同样适用:
ppo_epochs: 每个批次样本的优化轮数use_kl_loss: 是否使用 KL 散度损失kl_loss_coef: KL-loss系数loss_agg_mode: 损失聚合模式,默认值是"seq-mean-token-sum", Literal["token-mean", "seq-mean-token-sum", "seq-mean-token-mean", "seq-mean-token-sum-norm"]whiten_advantages: 是否对优势值进行白化处理advantage_clip: 优势值裁剪范围dual_clip_loss: 是否使用双重裁剪损失reward_clip: 奖励值裁剪范围norm_mean_type: 奖励归一化均值类型,可选值为 "batch", "group", "running", None,默认值为Nonenorm_std_type: 奖励归一化标准差类型,可选值为 "batch", "group", "running", None,默认值为Noneadd_token_level_kl: 是否添加 token 级别的 KL 惩罚