OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  OpenRLHF — 面向大模型对齐训练的 RLHF 框架

OpenRLHF — 面向大模型对齐训练的 RLHF 框架

 
  cargo ·  2026-02-17 23:25:48 · 6 次点击  · 0 条评论  
OpenRLHF logo

GitHub Contributors Issues Issues GitHub pull requests GitHub stars Ask DeepWiki
开源 / 全面 / 轻量 / 易用


[ English | 中文 | 日本語 ]

OpenRLHF 是首个结合 Ray + vLLM 分布式架构基于智能体的统一设计范式的高性能、生产就绪的开源 RLHF 框架,旨在实现可扩展、可扩展的人类反馈强化学习。

📚 了解更多: 文档 | 演示文稿 | 技术报告 | 视频

📖 目录


新闻

显示新闻 - [2026/2] [ProRL V2](https://developer.nvidia.com/blog/scaling-llm-reinforcement-learning-with-prolonged-training-using-prorl-v2/) 使用 REINFORCE++-baseline 通过延长 RL 训练训练了一个先进的 1.5B 推理模型。训练脚本:[train_prorlv2_math_hybrid_engine.sh](./examples/scripts/train_prorlv2_math_hybrid_engine.sh) - [2025/10] [ScaleRL](https://arxiv.org/abs/2510.13786) 验证了 REINFORCE++-baseline 在大规模训练场景中的有效性。发布了 [REINFORCE++ 演示文稿](https://docs.google.com/presentation/d/1stieP_3PM1z4Hq1YWR3GywFkxcHEAlstXMaS23KlGN4) - [2025/6] [Magistral](https://mistral.ai/static/research/magistral.pdf) 使用与 REINFORCE++-baseline 非常相似的方法训练推理模型。 - [2025/5] [MARTI](https://github.com/TsinghuaC3I/MARTI) 已作为 OpenRLHF 的一个分支发布。它旨在通过将集中式多智能体交互与分布式策略训练相结合,使用 RL 训练基于 LLM 的多智能体系统。 - [2025/5] OpenRLHF 0.8.0 通过 `--async_train` 支持异步 RLHF 训练,并通过 `--agent_func_path` 支持异步智能体 RLHF。可运行的示例参见 [train_reinforce_baseline_ray_agent_async.sh](./examples/scripts/train_reinforce_baseline_ray_agent_async.sh)。 - [2025/4] 发布博客 [使用 vLLM 加速 RLHF,来自 OpenRLHF 的最佳实践](https://blog.vllm.ai/2025/04/23/openrlhf-vllm.html) - [2025/4] 清理 OpenRLHF:基于单一控制器和统一打包样本重构了源代码。 - [2025/3] CMU 的 [高级自然语言处理 2025 春季课程](https://cmu-l3.github.io/anlp-spring2025/) 使用 OpenRLHF 作为 RLHF 框架教学案例。 - [2025/2] [Logic-RL](https://arxiv.org/abs/2502.14768) 和 [PRIME](https://arxiv.org/abs/2502.01456) 证明 REINFORCE++ 在训练中比 GRPO 更稳定,比 PPO 更快。 - [2025/2] [LMM-R1](https://github.com/TideDra/lmm-r1) 是 OpenRLHF 的一个分支,旨在为多模态任务上复现 DeepSeek-R1 提供高性能 RL 基础设施。 - [2025/2] MIT & Microsoft 使用 OpenRLHF 提出了 [关于 LLM 中思维涌现的研究 I:寻找正确的直觉](https://arxiv.org/pdf/2502.06773)。 - [2025/1] 香港科技大学使用 OpenRLHF 在小模型上复现了 [DeepSeek-R1-Zero 和 DeepSeek-R1 训练](https://github.com/hkust-nlp/simpleRL-reason)。 - [2024/12] 我们“提出”了 😊 [REINFORCE++:一种简单高效的对齐大语言模型的方法](https://www.researchgate.net/publication/387487679_REINFORCE_An_Efficient_RLHF_Algorithm_with_Robustnessto_Both_Prompt_and_Reward_Models)。 - [2024/12] 我们在 [Notion 博客文章](https://hijkzzz.notion.site/unraveling-rlhf-and-its-variants-engineering-insights#147d9a33ecc9806090f3d5c749d31f05) 中分析了 PPO、REINFORCE++、GRPO 和 RLOO。 - [2023/8] OpenRLHF 开源。

🏗️ 架构基础:Ray + vLLM 分布式

OpenRLHF 是首个基于 Ray + vLLM 分布式架构构建的 RLHF 框架,可高效协调跨 GPU 的多个组件:

OpenRLHF Architecture (Ray + vLLM)

核心基础设施组件

Ray - 分布式调度器与控制器
OpenRLHF 利用 Ray 实现高效的分布式调度。它将 Actor、Reward、Reference 和 Critic 模型分离到不同的 GPU 上,支持对高达 70B+ 参数的模型进行可扩展训练。

混合引擎调度:所有模型和 vLLM 引擎可以共享 GPU 资源——最大限度地减少空闲时间并最大化 GPU 利用率。这使得在有限的硬件上运行完整的 RLHF 流水线成为可能。

vLLM - 高性能推理引擎
RLHF 训练 80% 的时间用于样本生成。借助 vLLM 的自动张量并行 (AutoTP) 和流水线并行 (PP),OpenRLHF 提供了高吞吐量、内存高效的生成能力。

DeepSpeed - 内存高效训练
基于 DeepSpeed ZeRO-3、deepcompileAutoTP 和 RingAttention。无需重量级框架即可实现大模型训练,同时直接与 HuggingFace 模型协同工作。

Transformers - 模型接口
与 HuggingFace Transformers 原生集成,实现无缝的模型加载、状态管理和预训练模型的微调。

NCCL / CUDA IPC - 高速通信
高效的 GPU 间通信,用于分布式训练和推理。


🎯 设计范式:基于智能体的执行

在 Ray 分布式架构之上,OpenRLHF 是首个实现统一的基于智能体范式RLHF 框架。每次训练运行——无论是标准的 PPO 还是复杂的多轮推理——都遵循一致的智能体执行流水线。

为什么基于智能体?

OpenRLHF 通过令牌输入-令牌输出的智能体执行统一了生成和训练,确保了完美的一致性、易于单/多轮扩展以及零文本级不匹配。

智能体架构

                 ┌─────────────────────────────┐
                 │    AgentExecutorBase        │
                 │  (Token-in-Token-out Core)  │
                 └─────────────────────────────┘
                              │
                 ┌────────────┴────────────┐
                 ↓                         ↓
         SingleTurnExecutor        MultiTurnExecutor
                 │                         │
      ┌──────────┴──────────┐   ┌─────────┴──────────┐
      ↓                     ↓   ↓                    ↓
  Standard RLHF      Custom Reward   Multi-Step    External Env
  (One-shot gen)     Function      Reasoning     (OpenAI Agent Server)
      ↓                     ↓           ↓                ↓
      └─────────────────────┴───────────┴────────────────┘
                              │
                    Consistent Token Trajectories
                              │
                    ┌─────────┴─────────┐
                    │  RL Algorithms    │
                    │  (Decoupled)      │
                    │                   │
                    │  PPO, REINFORCE++ │
                    │  GRPO, RLOO, etc. │
                    └───────────────────┘

核心设计原则

显示核心设计原则 | 原则 | 描述 | 优势 | |-----------|-------------|---------| | **令牌输入-令牌输出** | 所有采样都产生令牌级轨迹 | 零文本级不匹配 | | **统一接口** | 所有模式使用相同的 `AgentExecutorBase` API | 通过一个标志切换模式 | | **算法无关** | RL 算法(PPO、REINFORCE++ 等)与智能体执行器解耦 | 任何算法可与任何模式配合使用 | | **可扩展** | 轻松插入自定义奖励/环境 | 快速实验 | | **生产就绪** | 支持同步/异步/混合引擎 | 从研究到部署 |

两种执行模式(与 RL 算法正交)

智能体执行模式独立于你选择的 RL 算法。你可以将任何算法(PPO、REINFORCE++、GRPO 等)与任何执行模式一起使用:

模式 使用场景 接口 复杂度
单轮 标准 RLHF,自定义奖励函数 可选的 reward_func() ⭐ 默认(99% 使用场景)
多轮 多步推理,交互式环境 reset() + step() ⭐⭐ 高级

🚀 先进的 RL 算法

OpenRLHF 实现了 PPO、REINFORCE++、REINFORCE++-baseline、GRPO、RLOO,并采用了受实践指南和社区最佳实践启发的高级优化技巧。

关键设计:RL 算法与智能体执行模式解耦。所有算法都能与单轮和多轮智能体执行器无缝协作,通过统一的令牌输入-令牌输出流水线运行,确保行为一致。

显示算法对比表 | 算法 | `--advantage_estimator` | 关键特性 | 最佳使用场景 | |-----------|------------------------|-------------|---------------| | **PPO** | (默认) | 完整的 Critic 网络 | 稳定训练,已验证结果 | | **REINFORCE++** | `reinforce` | 无 Critic 的 PPO 技巧 | 高效训练,内存占用少 | | **REINFORCE++-baseline** | `reinforce_baseline` | 平均奖励基线 | 推理任务 (RLVR),对奖励尺度鲁棒 | | **RLOO** | `rloo` | 每令牌 KL + PPO-clip | 多样本训练 | | **GRPO** | `group_norm` | 组归一化 | 基于批次的训练 | | **Dr. GRPO** | `dr_grpo` | 简化的 GRPO | 移除局部 `/std` 归一化 |

参考:知乎文章 | Notion 最佳实践


📋 全面功能

OpenRLHF 提供了一个完整的 RLHF 流水线,并具备基于智能体的灵活性:

🎯 基于智能体的 RL 训练(核心创新)

显示基于智能体的 RL 训练详情 **单轮模式**(默认 - 99% 使用场景) - 每个提示单次生成 - 适用于所有 RL 算法:[PPO](./examples/scripts/train_ppo_ray_hybrid_engine.sh)、[REINFORCE++/baseline/GRPO/RLOO](./examples/scripts/train_reinforce_baseline_hybrid_engine.sh) - [自定义奖励函数](./examples/scripts/train_ppo_with_reward_fn.sh) (`--remote_rm_url`) - [混合引擎](./examples/scripts/train_ppo_ray_hybrid_engine.sh) 实现最大 GPU 利用率 **多轮模式**(高级 - 交互式任务) - 与环境反馈进行多步交互 - 适用于所有 RL 算法 - [自定义智能体函数](./examples/scripts/train_reinforce_baseline_ray_agent_async.sh) (`--agent_func_path`) - OpenAI 兼容服务器:参见 `examples/python/agent_func_openai_server_executor.py`,这是一个将 vLLM 包装为本地 OpenAI Agent Server 的智能体执行器 - 异步流水线 (`--async_train`) 实现更高吞吐量:[train_reinforce_baseline_ray_agent_async.sh](./examples/scripts/train_reinforce_baseline_ray_agent_async.sh)

🎓 监督训练与偏好学习

显示监督训练与偏好学习表 | 方法 | 脚本 | 描述 | |--------|--------|-------------| | **SFT** | [train_sft.sh](./examples/scripts/train_sft.sh) | 带打包的监督微调 | | **DPO/IPO/cDPO** | [train_dpo_llama.sh](./examples/scripts/train_dpo_llama.sh) | 直接偏好优化 | | **奖励模型** | [train_rm.sh](./examples/scripts/train_rm.sh) | 训练奖励模型 |

⚡ 高级能力

显示高级能力 **效率优化** - 所有训练模式的样本打包 (`--packing_samples`) - vLLM 加速 (`--vllm_num_engines`) 实现快速生成 - DAPO [动态过滤](./examples/scripts/train_dapo_ray_hybrid_engine.sh) (`--dynamic_filtering`) - 🎲 动态采样:对于每个提示,生成多个响应,并根据你的奖励/智能体 **0–1 `scores`** 信号**过滤**它们 - 启用:`--dynamic_filtering` - 分数范围:`--dynamic_filtering_reward_range 0.0 1.0` - 要求:`--n_samples_per_prompt > 1` 且 `--remote_rm_url`
6 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 23 ms
Developed with Cursor