hiyouga/EasyR1
EasyR1: An Efficient, Scalable, Multi-Modality RL Training Framework based on veRL
EasyR1 – 高効率でスケーラブルなマルチモーダルRLトレーニング
概要
- veRL 強化学習(RLHF)フレームワークのフォークであり、視覚言語モデル(VLM)を扱えるよう拡張されています。
- HybridEngine(HybridFlow論文より)と vLLM のSPMDモードを中心に構築されており、大規模なLLMやVLMに対して高速かつメモリ効率の高いトレーニングを提供します。
主な機能
- モデルサポート:Llama 3、Qwen 2/2.5/3(テキスト)およびその視覚拡張バリアント、DeepSeek-R1蒸留モデル。
- RLアルゴリズム:GRPO、DAPO、Reinforce++、ReMax、RLOO、GSPO、CISPO(多くは最新のRL-HF手法)。
- トレーニングの工夫:パディングなしバッチ、LoRAスタイルの低ランク適応、チェックポイントの再開、主要な実験トラッキングツール(Wandb, SwanLab, Mlflow, TensorBoard)との統合。
- スケーラビリティ:RayとFSDPを通じて、単一GPUから多数のGPUやノードにまたがる70Bパラメータモデルまで対応し、AMP/BF16のハードウェア使用テーブルも提供。
- データセットの柔軟性:指定された形式に従うあらゆるテキストまたは画像テキストデータセットに対応。Math12K、Geometry3K、JourneyBench-multi-image-VQA、混合RLデータセットなどが例として挙げられます。
典型的なワークフロー
- インストール – リポジトリをクローンし、
pip install -e .を実行するか、提供されているDockerイメージ (hiyouga/verl) を使用します。 - データ準備 – テキストまたは視覚テキストデータを期待されるJSON/Parquetレイアウトに配置します。
- スクリプト実行 – 全パラメータGRPOトレーニングには
bash examples/qwen2_5_vl_7b_geo3k_grpo.shを、パラメータ効率の良いファインチューニングにはLoRAバリアントスクリプトを使用します。 - チェックポイントマージ –
python scripts/model_merger.pyでRLトレーニング済みのチェックポイントをHugging-Face互換モデルに変換します。 - (オプション) マルチノード – Rayクラスターを起動し、ヘッドノードで同じスクリプトを実行します。
クイックスタート
git clone https://github.com/hiyouga/EasyR1.git
cd EasyR1
pip install -e .
# 7B Qwen2.5-VLモデルでの全パラメータトレーニング
bash examples/qwen2_5_vl_7b_geo3k_grpo.sh
リポジトリには、LoRAスクリプト、SwanLabロギングの例、再現可能な環境のためのDockerfileも含まれています。
対象ユーザー
- 推論、ツール使用、視覚的質問応答を改善するために、強化学習を用いてマルチモーダルLLMをファインチューニングする研究者。
- 単一GPUからマルチノードクラスターまでスケーリング可能な、本番環境対応のRLHFパイプラインを必要とするエンジニア。
- 視覚言語データで新しいRLアルゴリズム(DAPO, GSPO, CISPO)を試したい方。
制限事項 / 今後の課題
- 視覚言語モデルは、現時点では ulysses 並列化機能と互換性がありません。
- 純粋な教師ありファインチューニングや推論用のスクリプトはありません。それらのタスクには LlamaFactory の使用が推奨されています。
コミュニティとサポート
- WeChatグループでの議論(READMEにリンクあり)。
- CUDA/OOMエラーやデータサイズエラーに関するFAQセクション。
- EasyR1を引用するダウンストリームプロジェクト(MMR1, Vision-R1, Seg-Zeroなど)のリストが拡大中。
引用
@misc{zheng2025easyr1,
title = {EasyR1: An Efficient, Scalable, Multi-Modality RL Training Framework},
author = {Yaowei Zheng and Junting Lu and Shenzhi Wang and Zhangchi Feng and Dongdong Kuang and Yuwen Xiong and Richong Zhang},
howpublished = {\url{https://github.com/hiyouga/EasyR1}},
year = {2025}
}
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト