EasyR1: An Efficient, Scalable, Multi-Modality RL Training Framework based on veRL
5,154
stars
217
commits
Python
primary language
Aug 31, 2026
updated
Follow us and give us a star ⭐: https://github.com/Prism-Shadow/penguin-harness
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.
Supported models
Supported algorithms
Supported datasets
Supported tricks
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.
* 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 |
[!NOTE] Use
worker.actor.fsdp.torch_dtype=bf16andworker.actor.optim.strategy=adamw_bf16to enable bf16 training.

git clone https://github.com/hiyouga/EasyR1.git
cd EasyR1
pip install -e .
bash examples/qwen2_5_vl_7b_geo3k_grpo.sh
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
[!TIP] 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.
Please refer to the example datasets to prepare your own dataset.

ray start --head --port=6379 --dashboard-host=0.0.0.0
ray start --address=<head_node_ip>:6379
ray status
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.
We also reproduced the following two baselines of the R1-V project.
See baselines.md.
[!NOTE] We will not provide scripts for supervised fine-tuning and inference in this project. If you have such requirements, we recommend using LlamaFactory.
These features are temporarily disabled for now, we plan to fix them one-by-one in the future updates.
👋 Join our WeChat group.
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.
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}
}
(top 30 of 48)
Python
99.2%
EasyR1: An Efficient, Scalable, Multi-Modality RL Training Framework based on veRL
5,154
stars
217
commits
Python
primary language
Aug 31, 2026
updated
Follow us and give us a star ⭐: https://github.com/Prism-Shadow/penguin-harness
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.
Supported models
Supported algorithms
Supported datasets
Supported tricks
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.
* 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 |
[!NOTE] Use
worker.actor.fsdp.torch_dtype=bf16andworker.actor.optim.strategy=adamw_bf16to enable bf16 training.

git clone https://github.com/hiyouga/EasyR1.git
cd EasyR1
pip install -e .
bash examples/qwen2_5_vl_7b_geo3k_grpo.sh
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
[!TIP] 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.
Please refer to the example datasets to prepare your own dataset.

ray start --head --port=6379 --dashboard-host=0.0.0.0
ray start --address=<head_node_ip>:6379
ray status
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.
We also reproduced the following two baselines of the R1-V project.
See baselines.md.
[!NOTE] We will not provide scripts for supervised fine-tuning and inference in this project. If you have such requirements, we recommend using LlamaFactory.
These features are temporarily disabled for now, we plan to fix them one-by-one in the future updates.
👋 Join our WeChat group.
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.
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}
}
(top 30 of 48)
Python
99.2%