【RL系列】StepFun之Open-Reasoner-Zero
1. 简介
开源了一个大规模RL训练框架之Open-Reasoner-Zero,仅使用vanilla PPO,GAE中参数
λ
=
1
,
γ
=
1
\lambda =1, \gamma =1
λ=1,γ=1,rule-based reward,不需要KL regularization就可以增加response length和benchmark上的指标。跟DeepSeek-R1-Zero表现差不多。
- 主要贡献:
- 开源了一个基于base LLM的large-scale RL的训练框架。
- 分享了实验分析及教训。
- 开源了完整的训练代码,参数,数据,模型权重等。
2. Basic Settings
- base model:Qwen2.5-7B,Qwen2.5-32B
- SFT:没有经过任务finetune
- 框架:基于openRLHF开发
- prompt:见下图
- Dataset
- 数据:考虑数据的数量(quantity) ,多样性(diversity)和质量(quality)。
- 搜集和清洗过程:
- 搜集包括AIME(up to 2023),MATH,Numina-Math,Tulu3 MATH,OpenR1-Math-220k等其他开源数据集。为了保证数据集的难度,在AMC,AIME,Math,Olympiads和AoPS等搜集数据作为难的prompts。
- 使用编程方式合成一些额外的推理任务数据。
- 过滤掉一些rule-based reward function评估不好的数据。
- 训练一些模型过滤数据,用来过滤通过比例过高或零通过的数据。
- 数据集大小:129K
- 通过训练一个模型辨别一些困难的样本(64次回答,回答对的个数少于4),搜集到了13k的prompts,然后用于模型最后的训练(100 additional steps)。
- Reward Function
- 只有rule-based reward,没有format rewards。rule-based reward计算是抽取之间的内容, 用于跟reference answer对比。对于跟reference answer完全一致的anser给1,其他给0。
- 虽然没有format reward,但是模型能够很快的学习到格式。并且实验证明,复杂的reward设计是没有必要的,甚至可能会造成reward hacking。
- RL算法
- 使用PPO算法,目标函数为:
- 使用PPO算法,目标函数为:
3. Key Finding
- RL Algorithm Key Implementations:vanilla PPO算法就能训练的很好,GAE参数在训练中很重要,当 λ \lambda λ=1.0, γ \gamma γ=1.0,训练稳定性和效果都是最佳。
- Minimal Reward Function Design:简单的reward设计效果就很好,可以避免reward hacking
- Loss Function:没有KL-based regularization。
- Scale up Training Data:scaling up data quantity and diversity至关重要。
4. 实验
- 训练细节:
- 用Qwen-2.5 base model初始化policy和critic model。
- value head 随机初始化 μ ( − 5 , 5 ) \mu(-\sqrt{5}, \sqrt{5}) μ(−5,5),without bias term。
- policy和critic在训练过程中,没有共享网络。
- policy和critic都使用AdamW with β = [ 0.9 , 0.95 ] \beta=[0.9, 0.95] β=[0.9,0.95] ,并且没有weight decay。
- learning rate:policy为 1 ∗ 1 0 − 6 1*10^{-6} 1∗10−6,critic为 5 ∗ 1 0 − 6 5*10^{-6} 5∗10−6
- learning rate scheduler:constant learning rate with linear warm-up of 50 optimizer steps。训练中采用sample packing。
- 每个生成步骤包含128个prompts,每个prompt生成64个responses。生成temperature和top-p为1。严格执行on-policy,每个生成对应一次optimization step。针对critic model,对off-policy updates不是很敏感,所以将experiences分成12个mini-batches,每个iteration执行12次optimization steps。
- 在训练中,使用batch level advantage normalization。
- 针对32B模型,采用退火机制,在训练最后阶段,使用上面提到的困难样本训练模型,learning rate采用linear decay schedule,在100个step降低到 3 ∗ 1 0 − 7 3*10^{-7} 3∗10−7
- 训练中,没有任何的KL-related regularization 或 entropy bonuses。
- 实验结果
- 从上面两个图中,可以看出模型随着训练突然变好,有突现的推理能力。
- 从上图中可以看出,模型是通过思考得到正确的答案。并且有Aha Moment。
- 从上图中可以看出,
λ
\lambda
λ参数和KL的消融实验结果。
- 从上图中,可以看出训练数据大小对效果的影响。
- 从上图中可以看出,模型大小对效果的影响。
- 从上面两个图中,可以看出模型随着训练突然变好,有突现的推理能力。
5. 总结
- The bitter lession:模型指标的改进主要靠scale of training data,model size及training iterations,而不是复杂的设计。最重要的事情是怎么设计一个简单有效的RL算法,然后scale up the training process。
- GAE中参数 λ = 1.0 , γ = 1.0 \lambda=1.0,\gamma=1.0 λ=1.0,γ=1.0比较好。
- 训练过程中,不使用KL散度和entropy bounses比较好。
- 简单rule-based reward比较好,容易避免reward hacking。
- 数据集的质量,多样性,数量对训练结果影响很大。
6. 资源:
- github:https://github.com/Open-Reasoner-Zero/Open-Reasoner-Zero
- huggingface:https://huggingface.co/Open-Reasoner-Zero