OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Open-R1-Multimodal — 面向多模态推理的开放复现项目

Open-R1-Multimodal — 面向多模态推理的开放复现项目

 
  elasticsearch ·  2026-04-25 11:00:21 · 11 次点击  · 0 条评论  

多模态 Open R1

随着对 R1 兴趣的增长,并研究了 open-r1trl 中 GRPO 算法的优雅实现,我们进行了一次快速实验,探究 R1 范式在多模态模型中的应用。

🤗 模型 | 🤗 数据集 | Wandb 日志

[!NOTE]
虽然我们的见解可能无法保证完全正确,但我们承诺真实、坦诚地分享。我们欢迎社区反馈和讨论,以改进对多模态推理模型的理解。我们后续将向 open-r1 提交 Pull Request,以更好地支持社区对多模态 RL 的研究。

alt text

我们的工作
- 基于 huggingface/open-r1deepseek-ai/DeepSeek-R1 实现了多模态 R1。
- 集成了 Qwen2-VL 系列、Aria-MoE 以及 transformers 中可用的其他 VLM。
- 开源了首批 8k 专注于数学推理的多模态 RL 训练样本。该数据由 GPT4o 基于 Math360KGeo170K 生成,包含推理路径和可验证答案。我们提供了一个脚本,供用户检查和创建自己的数据。
- 数据集地址:lmms-lab/multimodal-open-r1-8k-verified
- 开源了使用 GRPO 训练的模型。
- 模型地址:lmms-lab/Qwen2-VL-2B-GRPO-8k | lmms-lab/Qwen2-VL-7B-GRPO-8k

见解与未来计划
- 由于许多数学多模态问题是选择题,因此需要进行选项验证。在 issue#56 中已有讨论,我们在 src/open_r1/grpo.py 中自定义了验证逻辑。
- 需要策划可验证的 RL 数据,需进一步探索如何有效将现有数据转化为 RL 数据,并验证 GPT4o 策划的可靠性。
- 当前框架在大规模训练中效率不高。Qwen2-VL-2B 模型在 8 块 H100 GPU 上训练 8k 样本1 个周期 需要 10 小时。因此,有必要研究如何有效扩展训练规模。
- 初始模型(Qwen2-VL-2/7B-Instruct)在我们的实验中没有表现出良好的推理能力。训练期间,模型迅速从“格式”而非“准确性”上获取奖励,这对整个 RL 训练来说不是一个好迹象。我们公开了 wandb 日志 供参考。

image

  • 社区可能需要为 RL 训练策划更好的多模态数据集。当前数据集仅限于数学场景,因为它具有可验证的答案。目前尚不清楚如何将 RL 数据集扩展到具有开放式答案的其他通用领域。我们欢迎社区对我们当前策略的反馈,并计划在通过社区讨论获得明确的规模化见解后,发布一个更大的数据集。

训练模型

[!NOTE]
以下训练命令配置适用于 8 块 H100(80GB)节点。对于不同的硬件和拓扑,您可能需要调整批次大小和梯度累积步数。

Qwen2-VL-2/7B 的 GRPO 训练

在 Qwen2-VL-2B 上运行 GRPO:

cd /home/tiger/multimodal-open-r1
# pip3 install vllm==0.6.6.post1
pip3 install -e ".[dev]"

pip3 install wandb==0.18.3

torchrun --nproc_per_node="${ARNOLD_WORKER_GPU}" \ # 8
    --nnodes="${ARNOLD_WORKER_NUM}" \ # 1
    --node_rank="${ARNOLD_ID}" \ # 0
    --master_addr="${METIS_WORKER_0_HOST}" \ # 127.0.0.1
    --master_port="${port_in_cmd}" \ # 12345
    src/open_r1/grpo.py \
    --deepspeed scripts/zero3.json \
    --output_dir checkpoints/Qwen2-VL-2B-GRPO-8k \
    --model_name_or_path Qwen/Qwen2-VL-2B-Instruct \
    --dataset_name lmms-lab/multimodal-open-r1-8k-verified \
    --max_prompt_length 8192 \
    --per_device_train_batch_size 1 \
    --gradient_accumulation_steps 1 \
    --logging_steps 1 \
    --bf16 \
    --report_to wandb \
    --gradient_checkpointing true \
    --attn_implementation flash_attention_2 \
    --max_pixels 2359296 \
    --save_total_limit 8 \
    --num_train_epochs 1 \
    --run_name Qwen2-VL-2B-GRPO-8k

更多细节请参考 local_scripts/train_qwen2_vl.sh

上述脚本适用于多 GPU / 多节点训练。

评估:推理的重要性

许多基准测试(如 MMMU 和 AI2D)要求模型直接输出答案,不提供推理步骤。这引发了一个关键的评估问题:模型是真的理解如何推导答案,还是仅仅在猜测或依赖记忆?为了解决这个问题,我们要求模型在给出最终答案之前先生成推理步骤。然后使用 GPT-4o 提取并评分。

我们测试了原始 Qwen2-VL-2B-Instruct 和 Qwen2-VL-7B-Instruct 模型,发现当包含推理步骤时,它们在某些基准测试上的分数有所下降。随后,我们使用相同的评估方法比较了我们模型的分数。我们的模型在基于推理的思维链(CoT)设置下表现更好。我们将此归功于模型在 GRPO 上的训练,这似乎增强了模型处理推理格式的能力,从而获得了更高的分数。

基准测试 Qwen2-VL-2B-Instruct(无推理) Qwen2-VL-2B-Instruct(有推理) Qwen2-VL-2B-GRPO-8k(有推理) Qwen2-VL-7B-Instruct(无推理) Qwen2-VL-7B-Instruct(有推理) Qwen2-VL-7B-GRPO-8k(有推理)
MMMU 39.7 31.2 35.22 50.8 41.9 49.4
Mathvista-mini 51.6 48.6 49.4 57.1 60.9 60.6

在我们的日志中,有时会发现模型仍然直接输出答案而没有推理步骤(即使是我们训练过的模型)。我们认为这可能是因为模型不熟悉推理步骤,无法决定如何生成它。

评估模型

我们使用 lmms-eval 来评估模型,请运行:

bash local_scripts/lmms_eval_qwen2vl.sh

要复现我们在上述基准测试上的结果,请切换到 dev/qwen_cot 分支。

目前,视觉推理任务的评估局限于直接答案格式和简单的解析逻辑。像 mmmu_valmathvista_testminimmmu_pro 这样的任务期望直接答案而不是推理痕迹,当前的解析逻辑无法处理逐步推理。我们正在积极努力改进这一局限性,并欢迎社区贡献,以开发一个更全面的视觉推理模型评估框架。

RL 数据生成

我们提供了首批 8k 专注于数学推理的多模态 RL 训练示例。该数据由 GPT4o 生成。我们提供了脚本,供用户检查和创建自己的数据。

用户可以在 lmms-lab/multimodal-open-r1-8k-verified 查看数据。问题/解答由 GPT4o 根据推理路径和可验证答案生成。原始问题/原始答案来自原始数据集。

11 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 14 ms
Developed with Cursor