本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
超参数参考
下表列出了多回合 RL 训练作业的所有可配置超参数。食谱默认值包含在下面。
| 类别 | Params | 默认 | Choice | 说明 |
|---|---|---|---|---|
| Batch | global_batch_size | 128 | {32、64、128} | 每个训练步骤的唯一提示数。 |
| Batch | 群组规模 | 8 | [2, 32] | 每个提示的推出次数,用于计算基于组的优势(GRPO/RLOO)。 |
| RL | 优势方法 | 基于群组 | monte_carlo、group_based_per_turn、rloo、ronce_pp、ronce_pp_baseline、opo、grpo_passk、gpg | 计算推出优势的方法。 |
| RL | loss_fn | ppo | importance_sample、ppo、cispo | RL 损失公式。 |
| RL | 剪辑低阈值 | 0.8 | [0, 1] | 在代理损失中削减保单概率π_new/π_old的下限。 PPO-style |
| RL | 剪辑高阈值 | 1.2 | [1、10] | 在亏损中削减政策概率的上限。 |
| sampling_params | temperature | 1 | [0, 2] | 采样前应用于对数的采样温度。 |
| sampling_params | sampling_top_p | 1 | [0, 1] | Nucleus-sampling 截止。仅从累积概率≥ top_p 的最小代币集合中采样。 |
| sampling_params | 采样_max_tokens | 4096 | [512、8192] | 模型在推出期间每回合可以生成的最大代币。 |
| val_sampling_params | 采样_max_tokens | 4096 | [512、8192] | 模型在评估期间每回合可以生成的最大代币。 |
| val_metrics_config | pass_k _values | [1、2、4、8、16、32] | n/a | 用于计算 pass @k 指标的 k 值列表。 |
| val_metrics_config | 成功阈值 | 1 | n/a | 将推出计为 “成功” 的奖励门槛。 |
| Schedule | max_epochs | 1 | [1, 30] | 总计传递数据。 |
| Schedule | 最大步数 | 50 | [1, 1000] | 训练迭代次数总数。 |
| Schedule | val_every | 10 | [0, 100] | 评估间隔(步数)。 |
| 模型 | model_name_or_path | 必需 | 要微调的模型(例如,GPT-OSS-20B“”)。 | |
| 模型 | lora_rank | 32 | [16,64] | 控制适配器容量的 LoRa 适配器的等级。 |
| 模型 | 劳拉_alpha | 64 | [16,128] | LoRa 缩放系数。有效更新幅度 α alpha /等级。 |
| 模型 | learning_rate | 4.00 E-05 | (0, 1e-2] | 亚当的学习率。 |
| 模型 | adam_beta1 | 0.9 | [0, 0.999999] | 亚当中梯度(第一个时刻)的运行平均值的指数衰减率。 |
| 模型 | adam_beta2 | 0.95 | [0, 0.999999] | 亚当中平方梯度(第二矩)的运行平均值的指数衰减率。 |
| 模型 | adam_eps | 1.00 E-08 | [1e-16,1e-2] | 在亚当的更新规则中,在数值稳定性的分母中添加了小常数。 |
| 模型 | adam_weight_decay | 0 | [0, 1] | 解耦权重衰减系数 ()。AdamW-style |
| 模型 | adam_grad_clip_norm | 1 | [0, 100] | 最大全局梯度范数。 |
| 推出 | rollout_max_并发度 | 96 | [32、96] | 最大飞行中部署过程可以并行进行。 |
| 推出 | 推出超时 | 600 | [300、86400] | 故障处理:在此之后我们将其视为部署失败。 |
| 推出 | rollout_max_重试次数 | 3 | [1、10] | 部署失败后重试次数。 |
| 异步配置 | max_steps_off_policy | 3 | [0, 10] | 异步训练中的陈旧阈值。当为 0 时,表示同步训练。 |
调整超参数的最佳实践
当运行平缓或崩溃时,以下六个参数几乎可以解释所有解释。
学习率
learning_rate控制优化器在每次训练迭代时所走的步长。在多回合 RL 中,每步的梯度信号因任务而异:具有二进制结果的稀疏奖励环境会产生许多组,其中所有推出的分数相同,整个组的优势为零。只有结果混合的组才会产生梯度信号,因此每个步骤的有用梯度都会被稀释。需要降低学习速率才能与较弱的信号保持一致,否则跑步需要更多的步数。
在密集奖励环境中,小组内的轨迹可靠地获得不同的分数,在大多数小组中会产生一致的、非零的优势,而且默认的学习率通常已经足够了。
有效的步长还取决于LoRa的配置——实际的更新幅度是 learning_rate × alpha/rank ——因此,根据适配器的容量,固定的学习率会有所不同。
损耗函数和削波范围
如果您不熟悉 MTRL,那么在转向基于剪辑的高级算法之前,重要性采样 (importance_sampling) 是一个不错的起点。PPO 和 CISPO 使用clip_low_threshold和clip_high_threshold来限制概率比policy_new(action|state) / policy_old(action|state),即在单个训练步骤中允许更改多少策略。
比率1.0表示没有变化。较低的阈值(例如0.8)可防止策略主动取消学习其先前偏好的操作。上限阈值(例如1.2)可以防止它过度投入到一个批次中看起来不错的操作上。
-
PPO wit
(clip_low_threshold, clip_high_threshold) = (0.8, 1.2)h 是任何首次运行的安全基准。 -
CISPO 需要宽的非对称裁剪。从
clip_low_threshold = 1.0、开始clip_high_threshold = 6.0。CISPO 允许不良动作概率自由降低,并且仅依靠上限来防止不稳定性。
如果观察到训练失败或训练不足,建议调整剪辑阈值。
批量大小和群组规模
这两个参数共同决定了每个训练步骤接收多少有用的梯度信号。
global_batch_size控制一个优化器步骤中包含多少个唯一提示。较大的批次 (128) 会随着提示的增加而产生平均梯度,从而产生更流畅的奖励曲线和更稳定的更新。较小的批次 (32) 每步更便宜,对于快速迭代很有用,但产生的梯度噪音更大。对于生产运行,128 是一个不错的默认值;对于调试或超参数筛选,32 是可以的。
group_size决定为每个提示生成多少个独立的部署。将这些部署相互比较以计算出优势。如果所有推出都获得相同的奖励(全部成功或全部失败),则优势为零,并且该组不会产生梯度信号。默认值为 group_size = 8。如果您的群体中有足够的多样性,请减少它;如果环境要求更多的多样性,则增加多样性。
每步部署总数 =。global_batch_size × group_size在稀疏奖励设置中,大多数群组产生的信号为零,因此保持群组大小适中,改为增加批次大小或步数,通常效率更高。
Off-policy 陈旧
在异步训练中,max_steps_off_policy控制在放弃部署之前允许的过时程度。默认为3隐藏部署服务器尾部延迟。但是过时的推出的重要性比率与之有很大差异,当这些比率达到剪辑界限时1.0,它们不会提供梯度信号。
调试崩溃时设置为 0。异步陈旧与重要性加权更新相结合,可以掩盖根本原因。设置为0、稳定,然后在了解问题后重新启用。对于部署速度较快的环境,max_steps_off_policy = 1可能是更好的默认设置。
采样最大代币数量
sampling_max_tokens是每回合生成上限。如果上限太低,模型的响应会在思考中被截断,如果尝试不完整,它将获得奖励。然后,该策略学会了将这些截断的前缀与不良结果联系起来,从而抑制如果有更多空间本来可以成功的探索性行为。
默认值 4096 适用于大多数任务。对于响应过长的 thinking/reasoning 模型,请提高到 8192。尺码规则是:有一max_turns × (sampling_max_tokens + expected_tool_output) + prompt
≤ max_sequence_length定的边距。
诊断:显示器rollout/tokens/response_max。如果轨迹聚集在上限处,则模型将被静默截断,并且可能会失去信号。 val_sampling_params.sampling_max_tokens应该与训练相匹配。
推出配置
这些参数控制部署的生成方式以及培训师如何处理缓慢或失败的部署。
-
rollout_max_concurrency— 控制同时有多少部上线。默认值 96 适用于大多数设置。在异步模式下将其设置得太高会导致部署过时,并且可能会使推理引擎不堪重负。 -
rollout_timeout— 在将单次部署视为失败之前要等待多长时间(以秒为单位)。默认 600 的大小适用于典型的工具使用环境。将其设置得太低会截断如果有更多时间本来可以成功的部署。 -
rollout_max_retries— 控制部署失败时的重试尝试。如果永久失败率超过大约 1%,则问题出在环境设置上,而不是重试次数上。
支持参数
-
LoRa 容量 (
lora_rank和lora_alpha). 每步的有效更新幅度与成正比alpha/rank,后者充当学习率的乘数。默认值为lora_rank = 32, lora_alpha = 64(比例为 2:1)。只有在其他所有内容都经过良好调整并且奖励曲线仍处于停滞状态时,才考虑增加——将两者加倍(64/128),以增加容量,同时保持相同的有效学习率。 -
温度 = 1.0,sampling_top_p = 1.0 用于训练。对于 RL 训练,你希望小组内部的部署具有多样性,这样小组基线才有信号。温度 1.0 是一个很好的默认值。为了进行评估,请使用温度 = 0.0(贪婪的解码),这样评估曲线才是确定性的,并且在运行中具有可比性。
-
pass_k _值。Pass @1 是头条评估指标。Pass @G(其中 G = group_size)是一个有用的健全性检查:如果 pass @G 非常高,则大多数提示都太简单了;如果 pass @G 非常低,则大多数提示都太难了,群组信号稀少。
-
max_steps 和 max_epoch。
max_steps = 50用于筛选(足以查看曲线是否在移动),100 用于生产。CISPO 崩溃往往出现在步骤 40—80 之间。max_epochs = 1是默认设置;多个 epoch 在全新推出时重复使用相同的提示,如果提示集很小但有可能过度拟合到狭窄的提示分布,这会有所帮助。 -
adam_beta2 = 0.95。低于 SFT 默认值 0.999。在 RL 中,梯度统计是非平稳的,因此优化器需要更积极地跟踪最近的梯度方差。
-
weight_decay = 0.0。LoRa 已经通过低等级参数化来限制更新。添加权重衰减会使正则化变得复杂,而这在 RL 微调中尚未得到很好的表征。
-
adam_grad_clip_norm = 1.0。上限全局梯度范数。如果折叠与较大的预剪辑尖峰相关,则降至 0.5。如果许多步骤的标准正好为1.0,而奖励持平,那么片段可能是瓶颈——谨慎地提高到2.0。