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 布局中。
- 运行脚本 – 例如
bash examples/qwen2_5_vl_7b_geo3k_grpo.sh进行全参数 GRPO 训练,或使用 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 以提升推理、工具使用或视觉问答能力的研发人员。
- 需要生产级 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}
}
相关
- 项目
- 项目
- 项目
- 项目
- 项目