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データセットなどが例として挙げられます。

典型的なワークフロー

  1. インストール – リポジトリをクローンし、pip install -e . を実行するか、提供されているDockerイメージ (hiyouga/verl) を使用します。
  2. データ準備 – テキストまたは視覚テキストデータを期待されるJSON/Parquetレイアウトに配置します。
  3. スクリプト実行 – 全パラメータGRPOトレーニングには bash examples/qwen2_5_vl_7b_geo3k_grpo.sh を、パラメータ効率の良いファインチューニングにはLoRAバリアントスクリプトを使用します。
  4. チェックポイントマージ – python scripts/model_merger.py でRLトレーニング済みのチェックポイントをHugging-Face互換モデルに変換します。
  5. (オプション) マルチノード – 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}
}

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト