
OpenRLHF
基于 Ray 的强化学习框架,让大规模 RLHF 训练又快又稳
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 10144
使用教程
环境要求
- 支持 NVIDIA GPU 的 Linux 机器,并已安装 NVIDIA 驱动与 nvidia-container-runtime
- Docker(README 推荐使用官方 PyTorch 镜像 nvcr.io/nvidia/pytorch:26.03-py3)
- Python 与 pip 环境(镜像内已自带,源码安装时需要)
- 建议安装 vLLM 0.29.0 及以上版本以获得最佳性能
- 需要 Ray 集群(提交任务时使用 Ray Job 地址 http://127.0.0.1:8265)
安装与启动步骤
-
1启动 Docker 容器
用 NVIDIA PyTorch 镜像起一个带 GPU 的交互容器,把当前目录挂载到 /openrlhf,后续命令都在容器内执行。
docker run --runtime=nvidia -it --rm --shm-size="10g" --cap-add=SYS_ADMIN -v $PWD:/openrlhf nvcr.io/nvidia/pytorch:26.03-py3 bash -
2安装 OpenRLHF
推荐用 pip 安装并带上 vLLM 依赖;追求性能可选 vllm,ring,liger 全套优化。
pip install openrlhf[vllm] -
3从源码安装(可选)
若需要改代码或使用最新版本,可克隆仓库后以可编辑模式安装,替代上一步的 pip 安装。
git clone https://github.com/OpenRLHF/OpenRLHF.git cd OpenRLHF pip install -e . -
4提交 PPO 训练任务
通过 Ray Job 提交训练,指定模型路径、提示数据集与自定义奖励函数脚本,其余参数按示例脚本调整。
ray job submit --address="http://127.0.0.1:8265" \ --runtime-env-json='{"working_dir": "/openrlhf"}' \ -- python3 -m openrlhf.cli.train_ppo_ray \ --actor.model_name_or_path meta-llama/Meta-Llama-3-8B \ --train.dynamic_batch_enable \ --reward.remote_url /path/to/reward_func.py \ --data.label_key answer \ --data.prompt_dataset your_prompt_dataset
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
--actor.model_name_or_path | 是 | 指定作为 Actor 的基座模型名称或本地路径 | meta-llama/Meta-Llama-3-8B |
--data.prompt_dataset | 是 | 训练用的提示词数据集路径或名称 | your_prompt_dataset |
--reward.remote_url | 否 | 自定义奖励函数 Python 文件路径,用于代码/数学等可验证任务 | /path/to/reward_func.py |
--data.label_key | 否 | 把数据集中该字段作为 labels 传给 reward_func | answer |
--train.async_enable | 否 | 开启异步流水线以提高吞吐,可能影响收敛稳定性 | --train.async_enable |
--train.colocate_all | 否 | 混合引擎模式,去掉 async_enable 时 GPU 利用率最佳 | --train.colocate_all |
如何确认成功
在 Ray Dashboard(http://127.0.0.1:8265)中能看到刚提交的 ray job 及其运行状态,容器内 pip 安装无报错。
常见问题
Q:pip 安装时该选哪个 vLLM 版本?
A:基础版用 pip install openrlhf;推荐 pip install openrlhf[vllm](vLLM 0.29.0);想追最新版用 [vllm_latest],需要全部优化则用 [vllm,ring,liger]。
Q:异步训练会不会让效果变差?
A:README 明确提示异步训练可能影响训练稳定性,只有在吞吐量关键且已验证收敛的情况下才使用。
Q:怎么用自定义奖励函数?
A:用 --reward.remote_url 指向奖励函数脚本,并用 --data.label_key answer 把数据集中的 answer 字段作为 labels 传入,适用于代码、数学、格式等可验证任务。
Q:怎么让 GPU 利用率最高?
A:使用混合引擎模式,加上 --train.colocate_all 并移除 --train.async_enable,可获得最佳 GPU 利用率。
Q:RingAttention 报错怎么办?
A:使用 --ds.ring_attn_size 前需要先安装 ring_flash_attn 依赖。
注意事项
- README 强烈推荐用 Docker 方式安装,可免去环境配置的麻烦。
- 推荐使用 vLLM 0.29.0+ 以获得最佳性能,可参考仓库 dockerfile/ 目录与 examples/scripts/nvidia_docker_install.sh。
- 异步训练会引入 off-policy 数据,partial rollout 场景下样本可能同时包含新旧权重生成的 token。
- 训练脚本示例见 examples/scripts/train_ppo_with_reward_fn.sh 等,参数细节以官方文档为准。
核心亮点
- 集成 vLLM 和 Ray,训练吞吐量显著优于同类框架
- 支持 PPO、DAPO、REINFORCE++ 等多种算法,适应不同场景
- 同时支持文本和视觉语言模型,扩展性强
不足之处
- 依赖 Ray 和 vLLM,部署环境相对复杂
- 文档和社区生态仍在成长中,部分高级用法示例不足
适用场景
- 大规模语言模型的 RLHF 对齐训练
- 视觉语言模型的强化学习微调
- 需要高吞吐、分布式训练的智能体 RL 实验
替代项目
TRL、DeepSpeed-Chat、RLHF-Reward-Modeling
同类项目推荐
oumi
开源
一条命令搞定 LLM 微调、评估与部署,让模型落地更简单。
Easily fine-tune (SFT/RL), evaluate, and deploy Qwen, Gemma, or any open agentic LLM···
vime
开源
用 vLLM 加速 LLM 强化学习后训练,采样更快、规模更大
An LLM post-training framework with vLLM for RL Scaling
onebitllms
开源
小显存也能训练1.58bit三值大模型
Lightweight toolkit package to train and fine-tune 1.58bit Language models
litgpt
开源
一条命令搞定大模型预训练、微调和部署,省时省力
20+ high-performance LLMs with recipes to pretrain, finetune and deploy at scale.
Visual-ERM
开源
训练视觉奖励模型,让AI输出更符合人类视觉偏好
[NeurIPS 2026] Official Implementation of "Visual-ERM: Reward Modeling for Visual Eq···
Awesome-Model-Merging-Methods-Th···
开源
一网打尽模型合并前沿,从理论到应用快速上手
Model Merging in LLMs, MLLMs, and Beyond: Methods, Theories, Applications and Opport···
nncf
开源
压缩模型,让 OpenVINO 推理更快更省资源
Neural Network Compression Framework for enhanced OpenVINO™ inference
Primus
开源
在 AMD GPU 上高效训练大模型,开箱即用
A flexible and high-performance training framework designed for large-scale foundati···
kg-llm
开源
用大模型补全知识图谱,论文级代码直接复现
Exploring large language models for knowledge graph completion. ICASSP 2025