verl - Volcano Engine RL for LLMs チートシート
verl(Volcano Engine Reinforcement Learning)は、大規模言語モデルの強化学習ポストトレーニング用の高性能なオープンソースフレームワークです。HybridFlow論文のパブリック実装であり、ハイブリッドコントローラプログラミングモデルを中心に設計されており、複雑なRL データフロー(PPO、GRPOなど)をわずか数行で表現でき、計算をデータ依存性から分離できます。FSDP、Megatron-LM、vLLM、SGLangと統合し、LLM向けの最も広く使用されているRLフレームワークの1つです。
RLポストトレーニングは計算量が多く、設定に敏感です。マルチノードへのスケーリングの前に、リワードと小規模実行を検証してください。
インストール
| 方法 | コマンド |
|---|
| pip | pip install verl |
| ソースから | git clone https://github.com/volcengine/verl && cd verl && pip install -e . |
| Docker | ドキュメントで参照されている公式イメージを使用(CUDAとvLLMがプリインストール) |
| 要件 | NVIDIA GPU、CUDA、PyTorch; vLLMまたはSGLang |
コア概念
| 用語 | 意味 |
|---|
| HybridFlow | コントローラモデル:単一のコントローラが分散ワーカーをオーケストレート |
| ロールアウト | サンプルを生成する生成フェーズ(vLLM/SGLangで提供) |
| アクター/クリティック | トレーニング対象のポリシーと(PPOの場合)価値モデル |
| リワード | スカラー信号;リワードモデルまたはカスタム関数から |
| プレースメント | モデルをGPUセットにマッピングする方法(共存または分割) |
| レシピ | アルゴリズム用の既製トレーニング設定 |
サポートアルゴリズム
| アルゴリズム | 備考 |
|---|
| PPO | 古典的なアクター・クリティックRLHF |
| GRPO | グループ相対、クリティックモデルなし |
| ReMax / RLOO | 軽量ベースライン |
| DAPO / Dr.GRPO | GRPOバリアント |
| DPOスタイル | 優先度最適化レシピ |
トレーニングジョブの実行
verlはコマンドラインでのHydraスタイルの設定上書きで駆動されます。
# GRPOの例(概念的):データ、モデル、ロールアウトバックエンドを指定
python3 -m verl.trainer.main_ppo \
algorithm.adv_estimator=grpo \
data.train_files=$DATA/train.parquet \
data.val_files=$DATA/val.parquet \
actor_rollout_ref.model.path=Qwen/Qwen2.5-7B-Instruct \
actor_rollout_ref.rollout.name=vllm \
trainer.n_gpus_per_node=8 \
trainer.nnodes=1
| 設定グループ | 制御対象 |
|---|
algorithm.* | アルゴリズムと優位推定値(例:adv_estimator=grpo) |
data.* | トレーニング・検証ファイル、バッチサイズ、最大長 |
actor_rollout_ref.model.* | ベースモデルパスとdtype |
actor_rollout_ref.rollout.* | ロールアウトバックエンド(vllm/sglang)とサンプリング |
critic.* | クリティックモデル設定(PPO) |
trainer.* | ノード当たりのGPU、ノード数、ログ、チェックポイント |
バックエンド&スケーリング
| コンポーネント | オプション |
|---|
| トレーニングエンジン | FSDP、FSDP2、Megatron-LM |
| ロールアウトエンジン | vLLM、SGLang |
| ディストリビューション | GPU・ノード間のRayベースプレースメント |
| デバイスマッピング | アクターとロールアウトを共存させるか、GPU セット間で分割するか |
リワード&データ
| タスク | 方法 |
|---|
| カスタムリワード | 設定経由でリワード関数モジュールを提供 |
| リワードモデル | reward_model.*をスコアリングモデルに指定 |
| データセット形式 | プロンプト(検証可能なリワード用の回答)を含むParquet |
| 検証可能なリワード | 数学・コードスタイルの厳密一致リワードへの組み込みサポート |
モニタリング
| ツール | 統合 |
|---|
| Weights & Biases | trainer.logger=['console','wandb'] |
| TensorBoard | サポートされたロガーバックエンド |
| チェックポイント | trainer.save_freq、trainer.resume_modeから復帰 |
verl 対 その他のRLフレームワーク
| 側面 | verl | OpenRLHF | ART |
|---|
| コアモデル | HybridFlowコントローラ | Rayアクター分割 | クライアント/サーバー |
| トレーニングエンジン | FSDP + Megatron | DeepSpeed/FSDP | Unsloth |
| ロールアウト | vLLM / SGLang | vLLM | vLLM |
| 最適用途 | スループット&柔軟性 | 本番RLHFの大規模実行 | あなたのコード内のエージェント |
リソース