本文档提供了各种人类偏好对齐算法的训练脚本。若您希望深入了解更详尽的算法信息及其选择方法,请参考文档
人类偏好对齐训练一般需要
其中KTO算法的数据比较特殊,只需要
超参
beta
:KL正则系数,值越大表示对偏离参考模型的惩罚越大。默认为0.1
建议在开始DPO训练之前,使用偏好数据集中的偏好回答部分进行SFT训练,以确保数据符合DPO算法的分布要求。
我们也在DPO loss中混合了sft loss来稳定训练,你可以通过设置超参rpo_alpha
来调整sft loss的系数,默认为1.
.
训练脚本参考这里.
RLHF中的Reward Modeling阶段
使用sft训练后的base model或者instruct model作为基底模型, 增加value head, 使用偏好数据集训练为reward model
TOOD
增加的value head权重会保存在value_head.safetensors
或 value_head.bin
文件中
RLHF中的PPO(proximal policy optimization)阶段, 涉及到四个模型
- model: 训练模型, sft训练后的base model或者instruct model
- ref_model: 参考模型, 默认为 model
- reward_model: 奖励模型, 由RM阶段训练得到
- value_model: 价值模型, 由reward_model初始化, 在训练中同步更新
超参
- local_rollout_forward_batch_size: 每次数据采样的批量大小, 默认为64
- whiten_rewards: 对奖励进行归一化处理, 默认为False
- kl_coef: KL散度项的系数, 默认为0.05
- cliprange: PPO策略损失函数中的clip范围, 默认为0.2
- vf_coef: 价值损失函数系数, 默认为0.1
- cliprange_value: PPO价值损失函数中的clip范围, 默认为0.2
- gamma: 累计奖励的折扣因子, 默认为1.0
- lam: GAE中的lambda系数, 默认为0.95
- num_sample_generations: 训练过程中生成的调试样本数量, 默认为10
TODO
注意: 训练base model时, 需要先sft后再进行rlhf, 指定chat template, sft_type建议使用full
训练中的指标解释参考文档
超参
- beta: KL正则系数,值越大表示对偏离参考模型的惩罚越大。默认为0.1
- desirable_weight :损失函数中的$\lambda_D$项,偏好回答样本的损失权重, 默认为1.0
- undesirable_weight :损失函数中的$\lambda_U$项,拒绝回答样本的损失权重,默认为1.0
用
训练脚本
使用
训练脚本参考这里.
论文arvix 超参
- beta:隐含奖励前的系数,默认为0.1
- cpo_alpha: nll loss系数, 默认为1.0
训练脚本参考这里.
超参
- lambda: Odds Ratio loss系数
注意:ORPO使用参数--beta
传入超参lambda
训练脚本参考这里.
论文arvix 超参
- beta:隐含奖励前的系数,默认为2.0
- simpo_gamma:reward margin项,默认为1.0
- cpo_alpha: 混合CPO nll loss提高训练稳定性, 默认为1.0, 设置0.0使用原始SimPO算法
训练脚本参考这里.