内容提要
GRPO是一种大模型微调方法,通过组内多输出比较计算优势并迭代更新模型。每步计算当前、旧、参考模型的logits概率,得出目标值作为损失。关键超参数包括KL权重beta、迭代次数num_iterations、裁剪参数epsilon及参考模型同步设置sync_ref_model。冷启动时利用各输出优势推动参数更新,最大化目标值。
延伸解读
GRPO 的核心机制:组内比较与迭代更新
GRPO 不依赖单独的价值模型,而是对同一输入生成一组输出,通过组内比较计算每个输出的优势。每步需计算当前、旧、参考模型对每个 token 的 logits 概率,并据此计算目标值作为损失。旧模型每步更新,参考模型每轮更新,这种设计使训练更稳定,但计算开销随组大小和迭代次数增加。
关键超参数的作用与调优方向
beta 控制当前模型与参考模型的 KL 惩罚,增大可避免过拟合;num_iterations 决定每批数据的迭代次数,类似 LReps;epsilon 用于裁剪上下界,epsilon_high 可单独替换上界。sync_ref_model 开启后,参考模型会按 ref_model_sync_steps 与当前模型同步,混合系数 ref_model_mixup_alpha 默认 0.6,影响参考模型的更新速度。
冷启动与目标函数优化
冷启动时,第一步已知每个输出的优势,可直接推动参数更新以最大化目标值。目标函数中,G 是每组输出数量,O_i 是第 i 个输出,t 是 token 索引,q 是输入,pi 是模型参数。通过组内多输出比较,GRPO 能在不额外训练价值模型的情况下实现策略优化,但需注意 KL 权重和裁剪参数对稳定性的影响。
Q&A
GRPO是什么?它和传统的大模型微调方法有什么不同?
GRPO是一种大模型微调方法,它通过组内多输出比较来计算优势,并迭代更新模型。与传统方法不同,GRPO在每一步会计算当前、旧、参考模型的logits概率,并得出目标值作为损失。
GRPO的迭代步骤具体是怎样的?
GRPO的迭代步骤包括:对于每个输入,生成器G输出多个结果;对于每个输出,计算当前、旧、参考模型中每个token的logits概率;计算目标值作为损失;在每个步骤更新旧模型;在每个epoch更新参考模型。
GRPO的目标函数是如何定义的?
GRPO的目标函数基于组内多个输出的比较。其中G是每个输入组内输出的数量,O_i是当前组中第i个输出,t是O_i中token的索引,q是输入,O_i,t是第i个输出中的第t个token,pi是模型参数,KL值用于衡量当前模型与参考模型的差异。
GRPO有哪些关键超参数?它们的作用是什么?
GRPO的关键超参数包括:beta(KL权重,增加可避免过拟合)、num_iterations(每批迭代次数)、epsilon(裁剪下界和上界)、epsilon_high(当存在时替换epsilon用于裁剪上界)、sync_ref_model(是否同步参考模型)、ref_model_mixup_alpha(默认0.6,用于混合参考模型)、ref_model_sync_steps(默认512,需设置sync_ref_model=True)。
GRPO如何实现冷启动?
在第一步中,GRPO利用每个输出的优势来推动参数更新,以尽可能最大化目标值。
GRPO中参考模型是如何同步的?
GRPO通过设置sync_ref_model为True来启用参考模型同步。同步时,参考模型会按照ref_model_sync_steps指定的步数进行同步,并使用ref_model_mixup_alpha参数进行混合更新:π_ref = α * π_θ + (1 - α) * π_ref_prev。