EasyR1: An Efficient, Scalable, Multi-Modality RL Training Framework

https://github.com/user-attachments/assets/9b7033e8-f08a-4c3f-bd33-547896664e6e
This project is a clean fork of the original veRL project to support vision language models, we thank all the authors for providing such a high-performance RL training framework.
EasyR1 is efficient and scalable due to the design of HybirdEngine and the latest release of vLLM’s SPMD mode.
Features
-
Supported models
- Llama3/Qwen2/Qwen2.5/Qwen3 language models
- Qwen2-VL/Qwen2.5-VL/Qwen3-VL vision language models
- DeepSeek-R1 distill models
-
Supported algorithms
- GRPO
- DAPO

- Reinforce++
- ReMax
- RLOO
- GSPO

- CISPO

-
Supported datasets
-
Supported tricks
- Padding-free training
- LoRA training

- Resuming from the latest/best checkpoint
- Wandb & SwanLab & Mlflow & Tensorboard tracking
Requirements
Software Requirements
- Python 3.9+
- transformers>=4.54.0
- flash-attn>=2.4.3
- vllm>=0.8.3
We provide a Dockerfile to easily build environments.
We recommend using the pre-built docker image in EasyR1.
docker pull hiyouga/verl:ngc-th2.8.0-cu12.9-vllm0.11.0
docker run -it --ipc=host --gpus=all hiyouga/verl:ngc-th2.8.0-cu12.9-vllm0.11.0
If your environment does not support Docker, you can consider using Apptainer:
apptainer pull easyr1.sif docker://hiyouga/verl:ngc-th2.8.0-cu12.9-vllm0.11.0
apptainer shell --nv --cleanenv --bind /mnt/your_dir:/mnt/your_dir easyr1.sif
Use USE_MODELSCOPE_HUB=1 to download models from the ModelScope hub.
Hardware Requirements
* estimated
| Method |
Bits |
1.5B |
3B |
7B |
32B |
72B |
| GRPO Full Fine-Tuning |
AMP |
2*24GB |
4*40GB |
8*40GB |
16*80GB |
32*80GB |
| GRPO Full Fine-Tuning |
BF16 |
1*24GB |
1*40GB |
4*40GB |
8*80GB |
16*80GB |
| GRPO LoRA Fine-Tuning |
AMP |
1*12GB |
1*24GB |
2*32GB |
2*80GB |
4*80GB |
Use worker.actor.fsdp.torch_dtype=bf16 and worker.actor.optim.strategy=adamw_bf16 to enable bf16 training.
Tutorial: Run Qwen2.5-VL GRPO on Geometry3K Dataset in Just 3 Steps

Installation
git clone https://github.com/hiyouga/EasyR1.git
cd EasyR1
pip install -e .
GRPO Full Training
bash examples/qwen2_5_vl_7b_geo3k_grpo.sh
GRPO LoRA Training
bash examples/qwen3_vl_4b_geo3k_grpo_lora.sh
python3 scripts/model_merger.py --local_dir checkpoints/easy_r1/exp_name/global_step_1/actor
If you encounter issues with connecting to Hugging Face, consider using export HF_ENDPOINT=https://hf-mirror.com.
If you want to use SwanLab logger, consider using bash examples/qwen2_5_vl_7b_geo3k_swanlab.sh.
Custom Dataset
Please refer to the example datasets to prepare your own dataset.
How to Understand GRPO in EasyR1

How to Run 70B+ Model in Multi-node Environment
- Start the Ray head node.
ray start --head --port=6379 --dashboard-host=0.0.0.0
- Start the Ray worker node and connect to the head node.
ray start --address=<head_node_ip>:6379
- Check the Ray resource pool.
ray status
- Run training script on the Ray head node only.
bash examples/qwen2_5_vl_7b_geo3k_grpo.sh
See the veRL’s official doc for more details about multi-node training and Ray debugger.
Other Baselines
We also reproduced the following two baselines of the R1-V project.
- CLEVR-70k-Counting: Train the Qwen2.5-VL-3B-Instruct model on counting problem.
- GeoQA-8k: Train the Qwen2.5-VL-3B-Instruct model on GeoQA problem.
See baselines.md.
Awesome Work using EasyR1
- MMR1: Enhancing Multimodal Reasoning with Variance-Aware Sampling and Open Resources.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2509.21268-blue)
- Vision-R1: Incentivizing Reasoning Capability in Multimodal Large Language Models.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2503.06749-blue)
- Seg-Zero: Reasoning-Chain Guided Segmentation via Cognitive Reinforcement.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2503.06520-blue)
- MetaSpatial: Reinforcing 3D Spatial Reasoning in VLMs for the Metaverse.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2503.18470-blue)
- Temporal-R1: Envolving Temporal Reasoning Capability into LMMs via Temporal Consistent Reward.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2506.01908-blue)
- NoisyRollout: Reinforcing Visual Reasoning with Data Augmentation.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2504.13055-blue)
- GUI-R1: A Generalist R1-Style Vision-Language Action Model For GUI Agents.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2504.10458-blue)
- FAST-GRPO: Fast-Slow Thinking framework that dynamically adapts reasoning depth based on question characteristics.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2504.18458-blue)
- R1-Track: Direct Application of MLLMs to Visual Object Tracking via Reinforcement Learning.
![[code]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fgithub%2Fstars%2FWangbiao2%2FR1-Track)
- VisionReasoner: Unified Visual Perception and Reasoning via Reinforcement Learning.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2505.12081-blue)
- MM-UPT: Unsupervised Post-Training for Multi-Modal LLM Reasoning via GRPO.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2505.22453-blue)
- RL-with-Cold-Start: Advancing Multimodal Reasoning via Reinforcement Learning with Cold Start.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2505.22334-blue)
- ViGoRL: Grounded Reinforcement Learning for Visual Reasoning.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2505.22334-blue)
- Revisual-R1: Advancing Multimodal Reasoning: From Optimized Cold Start to Staged Reinforcement Learning.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2506.04207-blue)
- SophiaVL-R1: Reinforcing MLLMs Reasoning with Thinking Reward.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2505.17018-blue)
- Vision-Matters: Simple Visual Perturbations Can Boost Multimodal Math Reasoning.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2506.09736-blue)
- VTool-R1: VLMs Learn to Think with Images via Reinforcement Learning on Multimodal Tool Use.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2505.19255-blue)
- Long-RL: Scaling RL to Long Sequences.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2507.07966-blue)
- EditGRPO: Reinforcement Learning with Post-Rollout Edits for Clinically Accurate Chest X-Ray Report Generation.
![[code]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fgithub%2Fstars%2Ftaokz%2FEditGRPO)
- ARES: Multimodal Adaptive Reasoning via Difficulty-Aware Token-Level Entropy Shaping.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2510.08457-blue)
- VPPO: Spotlight on Token Perception for Multimodal Reinforcement Learning.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2510.09285-blue)
- IE-Critic-R1: Advancing the Explanatory Measurement of Text-Driven Image Editing for Human Perception Alignment.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2511.18055-blue)
- OneThinker: All-in-one Reasoning Model for Image and Video.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2512.03043-blue)
- MetaphorStar: Image Metaphor Understanding and Reasoning with End-to-End Visual Reinforcement Learning.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2602.10575-blue)
- CARDEA: Auditable Reasoning Grounded in Spatial Evidence for End-to-End Coronary Angiography Interpretation.
![[arxiv]](https://api.gitread.org/api/img-proxy?u=https%3A%2F%2Fimg.shields.io%2Fbadge%2Farxiv-2609.06931-blue)
TODO
- Support ulysses parallelism for VLMs (middle priority).
- Support more VLM architectures.
We will not provide scripts for supervised fine-tuning and inference in this project. If you have such requirements, we recommend using LlamaFactory.
Known bugs
These features are temporarily disabled for now, we plan to fix them one-by-one in the future updates.
- Vision language models are not compatible with ulysses parallelism yet.
Discussion Group
👋 Join our WeChat group.
FAQs
ValueError: Image features and image tokens do not match: tokens: 8192, features 9800
Increase the data.max_prompt_length or reduce the data.max_pixels.
RuntimeError: CUDA Error: out of memory at /workspace/csrc/cumem_allocator.cpp:62
Reduce the worker.rollout.gpu_memory_utilization and enable worker.actor.offload.offload_params.
RuntimeError: 0 active drivers ([]). There should only be one.
Uninstall deepspeed from the current python environment.
Citation
Core contributors: Yaowei Zheng, Junting Lu, Shenzhi Wang, Zhangchi Feng, Dongdong Kuang, Yuwen Xiong and Richong Zhang
We also thank Guangming Sheng and Chi Zhang for helpful discussions.
@misc{zheng2025easyr1,
title = {EasyR1: An Efficient, Scalable, Multi-Modality RL Training Framework},
author = {Yaowei Zheng, Junting Lu, Shenzhi Wang, Zhangchi Feng, Dongdong Kuang, Yuwen Xiong, Richong Zhang},
howpublished = {\url{https://github.com/hiyouga/EasyR1}},
year = {2025}
}
We recommend to also cite the original work.
@article{sheng2024hybridflow,
title = {HybridFlow: A Flexible and Efficient RLHF Framework},
author = {Guangming Sheng and Chi Zhang and Zilingfeng Ye and Xibin Wu and Wang Zhang and Ru Zhang and Yanghua Peng and Haibin Lin and Chuan Wu},
year = {2024},
journal = {arXiv preprint arXiv: 2409.19256}
}
评论