2. 競合するパッケージをクリーンアップ
June 8, 2026 · View on GitHub
OpenRLHFは、Ray + vLLM分散アーキテクチャと統一エージェントベース設計パラダイムを組み合わせた最初の高性能で本番環境対応のオープンソースRLHFフレームワークです。
📚 詳細はこちら:ドキュメント | スライド | 技術レポート | 動画
📖 目次
- 🗞️ ニュース
- 🏗️ アーキテクチャ基盤 - Ray + vLLM + DeepSpeed分散インフラ
- 🎯 設計パラダイム - 統一エージェント実行パイプライン
- 🚀 RLアルゴリズム - PPO、REINFORCE++、GRPO、RLOO
- 📋 機能概要 - 完全なRLHFパイプライン機能
- 🎬 クイックスタート - インストールと一般的なワークフロー
- 🎓 学習ガイド - SFT、報酬モデル、RL学習
- 🎯 シングルターンエージェント - カスタム報酬関数
- 🤖 マルチターンエージェント - 複雑な環境
- 🔧 高度なトピック - LoRA、パフォーマンスチューニング
ニュース
ニュースを表示
- [2026/2] ProRL V2 がREINFORCE++-baselineを使用して長期RL学習で最先端の1.5B推論モデルを学習。学習スクリプト:train_prorlv2_math_hybrid_engine.sh
- [2025/10] ScaleRL が大規模学習シナリオにおけるREINFORCE++-baselineの有効性を検証。REINFORCE++スライドをリリース
- [2025/6] Magistral がREINFORCE++-baselineと非常に類似した手法を用いて推論モデルを学習。
- [2025/5] MARTI がOpenRLHFのフォークとしてリリース。集中型マルチエージェント相互作用と分散ポリシー学習を統合することで、LLMベースのマルチエージェントシステムをRLで学習することを目的としています。
- [2025/5] OpenRLHF 0.8.0は
--train.async_enableによる非同期RLHF学習と、--train.agent_func_pathによる非同期エージェントRLHFをサポートし、クラスベースのエージェントAPIを再設計。実行可能な例は train_reinforce_baseline_ray_agent_async.sh を参照してください。 - [2025/4] ブログ記事 Accelerating RLHF with vLLM, Best Practice from OpenRLHF を公開
- [2025/4] Clean OpenRLHF:単一コントローラと統一パッキングサンプルに基づいてソースコードをリファクタリング
- [2025/3] CMUのAdvanced Natural Language Processing Spring 2025コースでOpenRLHFがRLHFフレームワーク教材として採用されました。
- [2025/2] Logic-RL と PRIME が、REINFORCE++がGRPOと比較してより安定し、PPOよりも高速であることを実証。
- [2025/2] LMM-R1 がOpenRLHFのフォークとしてリリース。マルチモーダルタスクにおけるDeepSeek-R1の再現のための高性能RLインフラを提供することを目的としています。
- [2025/2] MITとMicrosoftがOpenRLHFを使用して On the Emergence of Thinking in LLMs I: Searching for the Right Intuition を提案
- [2025/1] HKUSTがOpenRLHFを使用して小規模モデルでのDeepSeek-R1-ZeroとDeepSeek-R1学習を再現
- [2024/12] 私たちが"提案"しました😊 REINFORCE++: A Simple and Efficient Approach for Aligning Large Language Models。
- [2024/12] PPO、REINFORCE++、GRPO、RLOOを Notionブログ記事 で分析しました。
- [2023/8] OpenRLHFがオープンソース化されました。
🏗️ アーキテクチャ基盤:Ray + vLLM分散
OpenRLHFは、Ray + vLLM分散アーキテクチャをベースに構築された最初のRLHFフレームワークであり、GPU全体で複数のコンポーネントを効率的にオーケストレーションします:
コアインフラストラクチャコンポーネント
Ray - 分散スケジューラとコントローラ
OpenRLHFはRayを活用して効率的な分散スケジューリングを実現します。Actor、Reward、Reference、Criticモデルを異なるGPUに分散させ、最大70B+パラメータのモデルのスケーラブルな学習を可能にします。
ハイブリッドエンジンスケジューリング:すべてのモデルとvLLMエンジンがGPUリソースを共有でき、アイドル時間を最小化し、GPU使用率を最大化します。これにより、限られたハードウェアでフルRLHFパイプラインを実行できます。
vLLM - 高性能推論エンジン
RLHF学習では**時間の80%**がサンプル生成に費やされます。自動テンソル並列化(AutoTP)とパイプライン並列化(PP)を備えたvLLMにより、OpenRLHFは高スループットでメモリ効率的な生成を提供します。
DeepSpeed - メモリ効率的な学習
DeepSpeed ZeRO-3、deepcompile、AutoTP、RingAttentionをベースに構築されています。重量級フレームワークなしで大規模モデルの学習を可能にし、HuggingFaceモデルと直接連携します。
Transformers - モデルインターフェース
HuggingFace Transformersとのネイティブ統合により、シームレスなモデル読み込み、状態管理、事前学習済みモデルのファインチューニングを実現します。
NCCL / CUDA IPC - 高速通信
分散学習と推論のための効率的なGPU間通信。
🎯 設計パラダイム:エージェントベースの実行
Ray分散アーキテクチャの上に、OpenRLHFは統一エージェントパラダイムを実装した最初のRLHFフレームワークです。標準的なPPOでも複雑なマルチターン推論でも、すべての学習実行は一貫したエージェント実行パイプラインに従います。
なぜエージェントベースなのか?
OpenRLHFはtoken-in-token-outエージェント実行を通じて生成と学習を統一し、完璧な一貫性、簡単なシングル/マルチターン拡張、ゼロテキストレベルのミスマッチを保証します。
エージェントアーキテクチャ
┌─────────────────────────────┐
│ AgentExecutorBase │
│ (Token-in-Token-out コア) │
└─────────────────────────────┘
│
┌────────────┴────────────┐
↓ ↓
SingleTurnExecutor MultiTurnExecutor
│ │
┌──────────┴──────────┐ ┌─────────┴──────────┐
↓ ↓ ↓ ↓
標準RLHF カスタム報酬 マルチステップ 外部環境
(ワンショット生成) 関数 推論 (OpenAI Agent Server)
↓ ↓ ↓ ↓
└─────────────────────┴───────────┴────────────────┘
│
一貫したトークン軌跡
│
┌─────────┴─────────┐
│ RLアルゴリズム │
│ (分離) │
│ │
│ PPO, REINFORCE++ │
│ GRPO, RLOO等 │
└───────────────────┘
コア設計原則
コア設計原則を表示
| 原則 | 説明 | 利点 |
|---|---|---|
| Token-in-Token-out | すべてのサンプリングがトークンレベルの軌跡を生成 | テキストレベルのミスマッチゼロ |
| 統一インターフェース | すべてのモードで同じAgentExecutorBase API | 1つのフラグでモード切替 |
| アルゴリズム非依存 | RLアルゴリズム(PPO、REINFORCE++等)がエージェント実行器から分離 | 任意のアルゴリズムが任意のモードで動作 |
| 拡張可能 | カスタム報酬/環境を簡単にプラグイン | 迅速な実験 |
| 本番環境対応 | 同期/非同期/ハイブリッドエンジンサポート | 研究から展開まで |
2つの実行モード(RLアルゴリズムと直交)
エージェント実行モードは選択したRLアルゴリズムと独立しています。任意のアルゴリズム(PPO、REINFORCE++、GRPO等)を任意の実行モードと組み合わせることができます:
| モード | 使用ケース | インターフェース | 複雑さ |
|---|---|---|---|
| シングルターン | 標準RLHF、カスタム報酬関数 | オプションのreward_func() | ⭐ デフォルト(99%のユースケース) |
| マルチターン | マルチステップ推論、インタラクティブ環境 | reset() + step() | ⭐⭐ 高度 |
🚀 最先端のRLアルゴリズム
OpenRLHFは、実践ガイドとコミュニティのベストプラクティスに触発された高度な最適化トリックを用いて、PPO、REINFORCE++、REINFORCE++-baseline、GRPO、RLOOを実装しています。
重要な設計:RLアルゴリズムはエージェント実行モードから分離されています。すべてのアルゴリズムは、統一されたtoken-in-token-outパイプラインを通じて実行され、シングルターンとマルチターンの両方のエージェント実行器とシームレスに連携し、一貫した動作を保証します。
アルゴリズム比較表を表示
| アルゴリズム | --algo.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正規化の削除 |
参考:Zhihu記事 | Notionベストプラクティス
📚 詳細はこちら:スライド | 技術レポート | ドキュメント
📋 包括的な機能
OpenRLHFは、エージェントベースの柔軟性を備えた完全なRLHFパイプラインを提供します:
🎯 エージェントベースのRL学習(コアイノベーション)
エージェントベースRL学習の詳細を表示
シングルターンモード(デフォルト - 99%のユースケース)
- プロンプトごとに1回の生成
- すべてのRLアルゴリズムで動作:PPO、REINFORCE++/baseline/GRPO/RLOO
- カスタム報酬関数(
--reward.remote_url) - GPU使用率を最大化するハイブリッドエンジン
マルチターンモード(高度 - インタラクティブタスク)
- 環境フィードバックとのマルチステップ相互作用
- すべてのRLアルゴリズムで動作
- カスタムエージェント関数(
--train.agent_func_path) - OpenAI互換サーバー:vLLMをローカルOpenAIサーバーとしてラップするagent executorの例として
examples/python/agent_func_openai_server_executor.pyを参照 - スループット向上のための非同期パイプライン(
--train.async_enable)
🎓 教師あり学習と選好学習
教師あり学習と選好学習の表を表示
| 手法 | スクリプト | 説明 |
|---|---|---|
| SFT | train_sft.sh | パッキング付き教師あり微調整 |
| DPO/IPO/cDPO | train_dpo_llama.sh | 直接選好最適化 |
| 報酬モデル | train_rm.sh | 報酬モデルの学習 |
⚡ 高度な機能
高度な機能を表示
効率の最適化
- すべての学習モードでのサンプルパッキング(
--ds.packing_samples) - 高速生成のためのvLLM加速(
--vllm.num_engines) - TIS(vLLM 重要度サンプリング補正)/ ICEPOP:
--algo.advantage.is_correction_enable、--algo.advantage.is_correction_threshold 0.5 5.0、--use_icepop(PPO のみ) - DAPO 動的フィルタリング(
--algo.dynamic_filtering_enable)- 🎲 Dynamic Sampling:各プロンプトに対して複数の応答を生成し、報酬関数/エージェントが返す 0–1
scoresに基づいてフィルタリング- 有効化:
--algo.dynamic_filtering_enable - スコア範囲:
--algo.dynamic_filtering_range 0.0 1.0 - 要件:
--rollout.n_samples_per_prompt > 1、かつ--reward.remote_url(報酬関数)または--train.agent_func_path(エージェント)を指定 - 例:
./examples/scripts/train_dapo_ray_hybrid_engine.sh
- 有効化:
- 🎲 Dynamic Sampling:各プロンプトに対して複数の応答を生成し、報酬関数/エージェントが返す 0–1
スケーラビリティ
- DeepSpeed AutoTP(テンソル並列化)は、学習スクリプト内の
--ds.tensor_parallel_sizeを参照 - 長文脈のためのRingAttention(
--ds.ring_attn_size) - SLURMを使用したマルチノード学習
モデルサポート
- LoRA/QLoRA(
--ds.lora.rank、--ds.load_in_4bit) - 専門家混合(MoE)(
--actor.aux_loss_coef) - FlashAttention(
--ds.attn_implementation) - HuggingFaceチャットテンプレート(
--data.apply_chat_template)
オプティマイザ
- AdamW(デフォルト):
--{actor,critic}.optim adam --{actor,critic}.adam.lr 2e-6 - Muon(DeepSpeed ≥ 0.18.2 が必要、2D 重みのみ対象;embedding / head / 1D パラメータは補助 AdamW 経路):
--{actor,critic}.optim muon --{actor,critic}.muon.lr 1e-4 --{actor,critic}.muon.momentum 0.95。Newton-Schulz 出力はスケール不変なので、--{actor,critic}.max_norm 0でグローバル勾配クリップを無効化してください(Adam のデフォルト1.0だと Muon の更新が消えてしまいます)。
本番環境機能
- Wandb(
--logger.wandb.key)とTensorBoard(--logger.tensorboard_dir)ロギング - チェックポイント復旧(
--ckpt.load_enable、--ckpt.save_steps) - 評価データセット(
--eval.dataset)
🎬 クイックスタート
インストール
推奨:手間のかからないセットアップのためにDockerを使用
# 1. Dockerコンテナを起動
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. 競合するパッケージをクリーンアップ
sudo pip uninstall xgboost transformer_engine flash_attn pynvml -y
# 3. OpenRLHFをインストール(1つ選択)
pip install openrlhf # 基本
pip install openrlhf[vllm] # + vLLM 0.22.1(推奨)
pip install openrlhf[vllm_latest] # + 最新vLLM
pip install openrlhf[vllm,ring,liger] # + すべての最適化
代替:ソースからインストール
git clone https://github.com/OpenRLHF/OpenRLHF.git
cd OpenRLHF
pip install -e .
Tip
最高のパフォーマンスのために**vLLM 0.22.1+**を推奨します。DockerfilesとNvidia-Dockerインストールスクリプトを参照してください。
詳細な使用方法、データセット準備、学習例については、英語版READMEの該当セクションを参照してください。
🎯 シングルターンエージェント:カスタム報酬による強化微調整
シングルターンエージェント実行(デフォルトモード)はカスタム報酬関数をサポートし、学習済み報酬モデルなしで強化微調整を行うのに最適です。
詳細な実装例と使用方法については、英語版READMEを参照してください。
🤖 マルチターンエージェント:複雑な環境相互作用
マルチステップ相互作用(推論チェーン、フィードバック付きコーディング、ゲームプレイ)が必要なタスクには、OpenRLHFがマルチターンエージェント実行モードを提供します。
詳細な実装例と使用方法については、英語版READMEを参照してください。
🔧 高度なトピック
LoRA:アダプターのマージ
LoRA/QLoRAを使用する場合、OpenRLHFはアダプターの重みのみを保存します。デプロイまたは学習を続けるには、アダプターをベースモデルとマージします:
python -m openrlhf.cli.lora_combiner \
--model_path meta-llama/Meta-Llama-3-8B \
--lora_path ./checkpoint/llama3-8b-rm \
--output_path ./checkpoint/llama-3-8b-rm-combined \
--is_rm \
--ds.param_dtype bf16
パフォーマンスチューニングガイド
ハードウェアとワークロードに合わせてOpenRLHFを最適化するための推奨事項については、英語版READMEの詳細なガイドを参照してください。
OpenRLHFを使用している企業・組織
- ByteDance
- Tencent
- Alibaba
- Baidu
- China Telecom
- Vivo
- Allen AI
- NexusFlow
- Jülich Supercomputing Centre (JSC)
- Berkeley Starling Team
- M-A-P
- ...
参加方法
どのように参加できますか?
- janhu9527@gmail.comにメールを送るか、GitHub Organizationに参加してください。以下の詳細を含めてください:
- お名前
- GitHubユーザー名
- 興味のある分野
- NLPおよび/またはAIに関連するスキルと経験
- 公式GitHub OpenRLHF ↗プロジェクトページから参加することもできます。貢献への興味についてissueを作成していただければ、ご連絡いたします。
何ができますか?
- チームに参加してOpenRLHFプロジェクトの開発に参加する。
- プルリクエストを提出してプロジェクトに貢献する。
- ドキュメントの改善、バグ修正、新機能の作成を手伝う。
- プロジェクトを共有してコミュニティの成長を支援する。
スポンサー
あなたのスポンサーシップはOpenRLHFの維持と改善に役立ちます。このプロジェクトが有用だと思われた場合は、スポンサーをご検討ください。Open Collective ↗でスポンサーになれます。
スターヒストリー
コントリビューター
すべてのコントリビューターに感謝します!貢献したい場合は、お気軽にプルリクエストを作成するかissueを作成してください。
参考文献と謝辞
AIとNLP分野への貢献に対して、以下のプロジェクトと組織に感謝します:
私たちのプロジェクトはColossalChatとDeepSpeedChatにも感謝します。プロジェクトの初期段階で、彼らのコード設計を参考にしました。ring attentionの開発のためのGPUサポートを提供してくれたNetmind.AIに感謝します。
(2024/7)私たちのGitHub organizationはOpenLLMAIからOpenRLHFに変更されました。
引用
OpenRLHF
@article{hu2024openrlhf,
title={OpenRLHF: An Easy-to-use, Scalable and High-performance RLHF Framework},
author={Jian Hu and Xibin Wu and Zilin Zhu and Xianyu and Weixun Wang and Dehao Zhang and Yu Cao},
journal={arXiv preprint arXiv:2405.11143},
year={2024}
}
REINFORCE++-baseline
@article{hu2026reinforce++,
title{Reinforce++: A simple and efficient approach for aligning large language models},
author={Hu, Jian},
journal={arXiv preprint arXiv:2501.03262},
year={2026}
}
OpenRLHF © 2026 OpenRLHF. All Rights Reserved.