EasyR1 - 高效、可扩展的多模态RL训练框架

本文翻译整理自:https://github.com/hiyouga/EasyR1


一、关于 EasyR1

EasyR1 是基于原始 veRL 项目的清洁分支,旨在支持视觉语言模型。我们感谢所有作者提供了如此高性能的RL训练框架。

EasyR1 的高效性和可扩展性源于 HybirdEngine 的设计以及 vLLM 最新发布的SPMD模式。


相关链接资源


关键功能特性

  • 支持的模型
    • Llama3/Qwen2/Qwen2.5 语言模型
    • Qwen2/Qwen2.5-VL 视觉语言模型
    • DeepSeek-R1 蒸馏模型
  • 支持的算法
    • GRPO
    • Reinforce++
    • ReMax
    • RLOO
  • 支持的数据集
  • 支持的技巧
    • 无填充训练
    • 从检查点恢复
    • Wandb & SwanLab & Mlflow & Tensorboard 跟踪

二、安装


软件要求

  • Python 3.9+
  • transformers>=4.51.0
  • flash-attn>=2.4.3
  • vllm>=0.8.3

我们提供了 Dockerfile 以便轻松构建环境。

推荐使用 EasyR1 中的预构建docker镜像

docker pull hiyouga/verl:ngc-th2.6.0-cu126-vllm0.8.4-flashinfer0.2.2-cxx11abi0

硬件要求

  • 预估值
方法位数1.5B3B7B32B
GRPO 全量微调AMP2*24GB4*40GB8*40GB16*80GB
GRPO 全量微调BF161*24GB1*40GB4*40GB8*80GB

注:使用 worker.actor.fsdp.torch_dtype=bf16worker.actor.optim.strategy=adamw_bf16 启用 bf16 训练。
我们正在努力减少RL训练中的VRAM占用,LoRA支持将在下次更新中集成。


三、教程:3步运行 Qwen2.5-VL GRPO 在 Geometry3K 数据集上

Geometry3K: https://huggingface.co/datasets/hiyouga/geometry3k


在这里插入图片描述


1、安装

git clone https://github.com/hiyouga/EasyR1.git
cd EasyR1
pip install -e .

2、GRPO 训练

bash examples/qwen2_5_vl_7b_geo3k_grpo.sh

3、合并 Hugging Face 格式的检查点

python3 scripts/model_merger.py --local_dir checkpoints/easy_r1/exp_name/global_step_1/actor

注:如果连接Hugging Face遇到问题,可以尝试 export HF_ENDPOINT=https://hf-mirror.com
如果想使用 SwanLab 日志记录器,可以尝试 bash examples/qwen2_5_vl_7b_geo3k_swanlab.sh


四、自定义数据集

请参考示例数据集准备您自己的数据集。


五、理解 EasyR1 中的 GRPO


在这里插入图片描述



六、在多节点环境中运行 70B+ 模型

1、启动 Ray head 节点。

ray start --head --port=6379 --dashboard-host=0.0.0.0

2、启动 Ray worker 节点并连接到 head 节点。

ray start --address=<head_node_ip>:6379

3、检查 Ray 资源池。

ray status

4、仅在 Ray head 节点上运行训练脚本。

bash examples/qwen2_5_vl_7b_geo3k_grpo.sh

更多关于多节点训练和Ray调试器的细节,请参阅 veRL官方文档


七、其他基线

我们还复现了 R1-V 项目的以下两个基线。

  • CLEVR-70k-Counting: 在计数问题上训练 Qwen2.5-VL-3B-Instruct 模型。
  • GeoQA-8k: 在GeoQA问题上训练 Qwen2.5-VL-3B-Instruct 模型。

八、性能基线

参见 baselines.md


九、使用 EasyR1 的精彩项目

  • MMR1: 推进多模态推理的前沿。 代码
  • Vision-R1: 激励多模态大语言模型中的推理能力。 代码 arxiv
  • Seg-Zero: 通过认知强化实现推理链引导的分割。 代码 arxiv
  • MetaSpatial: 在VLMs中强化3D空间推理能力以支持元宇宙。 代码 arxiv
  • Temporal-R1: 通过时间一致性奖励将时间推理能力融入LMMs。 代码
  • NoisyRollout: 通过数据增强强化视觉推理。 代码 arxiv
  • GUI-R1: 用于GUI代理的通用R1风格视觉语言动作模型。 代码 arxiv

十、TODO

  • 支持 LoRA(高优先级)。
  • 支持VLMs的ulysses并行(中优先级)。
  • 支持更多VLM架构。

注:本项目不提供监督微调和推理的脚本。如果有此类需求,推荐使用 LLaMA-Factory


已知问题

以下功能暂时禁用,我们计划在未来的更新中逐一修复。

  • 视觉语言模型目前还不兼容ulysses并行。

十一、常见问题

ValueError: 图像特征和图像标记不匹配: tokens: 8192, features 9800

增加 data.max_prompt_length 或减少 data.max_pixels


RuntimeError: CUDA Error: out of memory at /workspace/csrc/cumem_allocator.cpp:62

减少 worker.rollout.gpu_memory_utilization 并启用 worker.actor.offload.offload_params


RuntimeError: 0 active drivers ([]). There should only be one.

从当前python环境中卸载 deepspeed


伊织 xAI 2025-04-23(三)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值