OpenRLHF チートシート
OpenRLHFは、スケールのために設計された高性能のオープンソースRLHFフレームワークです。Rayで分散スケジューリング、vLLMで高速生成、DeepSpeed/ZeROでトレーニングを行い、アクター、クリティック、リワード、リファレンスモデルをGPU間で分離することで、大規模モデル(70B以上)を効率的にトレーニングできます。広範なアルゴリズム(PPO、GRPO、REINFORCE++、RLOO)と動的サンプリング、非同期エージェンティックRLを実装しています。
スケール規模の強化学習は運用的に負荷が高いです。単一ノードの小さなモデルから始め、リワードの傾向を確認してから、Rayで拡張してください。
インストール
| 方法 | コマンド |
|---|
| pip | pip install openrlhf |
| vLLM エクストラ付き | pip install openrlhf[vllm] |
| ソースから | git clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e . |
| Docker | プロジェクトのリファレンスイメージを使用(CUDAと依存関係がプリインストール) |
| 要件 | NVIDIA GPU、CUDA、Ray、DeepSpeed、vLLM |
アーキテクチャ
| コンポーネント | ロール |
|---|
| アクター | トレーニング対象のポリシーモデル |
| クリティック | 価値モデル(PPO) |
| リワードモデル | 生成された回答をスコア化 |
| リファレンスモデル | KLペナルティ用の固定ベースライン |
| Ray | これらのモデルをGPU全体に配置・スケジュール |
| vLLMエンジン | ロールアウト・生成フェーズを高速化 |
一般的なトレーニング開始点
OpenRLHFはアルゴリズムごとのCLIモジュールを提供;deepspeedまたはrayで起動します。
| コマンド | 目的 |
|---|
openrlhf.cli.train_sft | 教師あり微調整 |
openrlhf.cli.train_rm | リワードモデルトレーニング |
openrlhf.cli.train_ppo | PPO(単一コントローラ) |
openrlhf.cli.train_ppo_ray | Ray + vLLMで分散したPPO/GRPO |
openrlhf.cli.train_dpo | Direct Preference Optimization |
Ray での PPO/GRPO(スケッチ)
ray start --head --node-ip-address 0.0.0.0
python3 -m openrlhf.cli.train_ppo_ray \
--pretrain Qwen/Qwen2.5-7B-Instruct \
--reward_pretrain OpenRLHF/Llama-3-8b-rm-mixture \
--advantage_estimator group_norm \
--vllm_num_engines 2 --vllm_tensor_parallel_size 1 \
--actor_num_gpus_per_node 4 \
--colocate_actor_ref \
--prompt_data your/prompts --input_key prompt \
--save_path ./ckpt --use_wandb $WANDB_API_KEY
| フラグ | 制御対象 |
|---|
--pretrain | ベース・アクターモデル |
--reward_pretrain | リワードモデルパス |
--advantage_estimator group_norm | GRPOスタイルのグループ正規化を選択 |
--vllm_num_engines | vLLMロールアウトエンジン数 |
--actor_num_gpus_per_node | アクター用GPU割り当て |
--colocate_actor_ref | アクター+リファレンスを一箇所に置いてGPUを節約 |
アルゴリズム
| アルゴリズム | フラグ・モジュール |
|---|
| PPO | train_ppo*のデフォルト |
| GRPO | --advantage_estimator group_norm |
| REINFORCE++ | --advantage_estimator reinforceファミリー |
| RLOO | --advantage_estimator rloo |
| DPO / KTO | 専用のtrain_dpo/train_ktoモジュール |
スケーリング&パフォーマンス
| テクニック | フラグ・備考 |
|---|
| ZeROステージ | 大規模モデル用の--zero_stage 3 |
| オフロード | --adam_offloadでオプティマイザー状態をCPUにスピル |
| Flash attention | --flash_attn |
| コロケーション | --colocate_actor_ref、--colocate_critic_reward |
| 動的サンプリング | サンプル効率改善に組み込み |
OpenRLHF 対 verl 対 ART
| 側面 | OpenRLHF | verl | ART |
|---|
| 基盤 | Ray + DeepSpeed + vLLM | HybridFlow + FSDP/Megatron | クライアント・サーバー + Unsloth |
| 強み | 本番RLHF、広範なアルゴリズム | スループット&柔軟性 | あなたのコード内のエージェント |
| マルチモーダル | VLM RLHF(OpenRLHF-M) | サポート | テキスト中心 |
| 最適用途 | スケーラブルなRLHFパイプライン | 研究用スループット | 単一エージェント・オンザジョブRL |
リソース