用途
Online-RLHF 由 RLHFlow 团队开发,是一个用于对齐大语言模型(LLM)的开源配方,专注于在线迭代 RLHF(在线迭代基于人类反馈的强化学习)和在线迭代 DPO(直接偏好优化)。近期 LLM 文献广泛报道,在线迭代 RLHF 显著优于其离线版本,然而现有开源 RLHF 项目大多局限于离线学习设定。本仓库旨在填补这一空白,提供详细且易于复现的在线迭代 RLHF 配方。
主要能力
- 完整的在线迭代训练流程:包含监督微调(SFT)、奖励建模(RM)、数据生成、数据标注和迭代训练等步骤。
- 预训练模型与数据集:提供多个 SFT 检查点(如 RLHFlow/LLaMA3-SFT、RLHFlow/LLaMA3-SFT-v2 等)、奖励模型(如 Bradley-Terry 模型、生成式成对偏好模型、多专家聚合的多头奖励模型)以及 RLHF 模型(多个迭代版本)。同时提供 SFT 数据集和提示集。
- 仅使用开源数据达到优异效果:使用该配方,仅用开源数据即可实现与 LLaMA3-8B-instruct 相当甚至更好的结果。
- 支持 VLLM 加速推理:数据生成阶段使用 VLLM 加速,并提供两种推理方式(直接推理和 API 服务器)。
使用方式
仓库提供分步指导:
- 环境安装:建议分别为推理和训练创建独立环境。注意 numpy 版本需小于 2.0。SFT 环境还需安装 wandb 并登录 Hugging Face 账户(以访问 Gemma);训练环境需安装 wandb 并登录 Hugging Face 账户(以访问 LLaMA3 模型)。
- 步骤 1:监督微调(SFT):将 SFT 数据处理为标准格式(参考 RLHFlow/RLHFlow-SFT-Dataset-ver2),可通过命令或修改 yaml 配置文件调整学习率、批大小等。若遇到内存不足,可使用 Gemma-2b-it 配合 deepspeed stage 3 和梯度检查点。
- 步骤 2:奖励建模:训练奖励/偏好模型,仓库提供了多个 SOTA 开源奖励模型(如 sfairXC/FsfairX-LLaMA3-RM-v0.1、RLHFlow/pair-preference-model-LLaMA3-8B、RLHFlow/ArmoRM-Llama3-8B-v0.1)。
- 步骤 3.1:数据生成:使用准备好的提示集(如 UltraFeedback 系列、迭代提示集),通过 VLLM 生成响应,可创建 test_gen.sh 并运行,或使用 API 服务器。
- 步骤 3.2:数据标注:调用步骤 2 训练的奖励/偏好模型对生成的响应进行排序。
- 步骤 3.3:训练:运行迭代训练,若遇到 CUDA 错误需根据 GPU 调整配置文件中的 num_of_process。
- 自动化迭代:仓库将所有步骤整合,可自动运行迭代训练(注意 sleep 1m 等待 API 注册,需根据环境调整)。
适用场景
适用于希望复现或改进在线迭代 RLHF 的研究人员、开发者,特别是那些关注大语言模型对齐、偏好学习、强化学习从人类反馈等方向的工作。也适合作为在线 RLHF 教学和实验的参考实现。
限制
- 需要较强的计算资源(训练和推理环境分开,建议使用 deepspeed 等优化)。
- 依赖特定软件版本(numpy<2.0),部分错误需调整 transformer 版本或配置。
- 目前仓库主要针对 LLaMA3-8B 等模型,其他模型可能需要适配。
- 详细的技术报告和 Hugging Face 仓库可进一步参考。