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. 运行脚本 – 例如 bash examples/qwen2_5_vl_7b_geo3k_grpo.sh 进行全参数 GRPO 训练,或使用 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 以提升推理、工具使用或视觉问答能力的研发人员。
  • 需要生产级 RLHF 流水线,且需从单 GPU 扩展至多节点集群的工程师。
  • 想要在视觉语言数据上实验较新 RL 算法 (DAPO, GSPO, CISPO) 的使用者。

限制 / 待办事项

  • 视觉语言模型尚未兼容 ulysses 并行化功能。
  • 没有纯监督式微调或推理的脚本;作者建议使用 LlamaFactory 处理这些任务。

社区与支持

  • 通过微信群组讨论 (链接在 README 中)。
  • 常见 CUDA/OOM 与数据大小错误的常见问题解答区。
  • 引用 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}
}

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目