
VLM-R1
用强化学习让视觉模型学会推理,少数据也能提升定位精度。
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 6045
技术标签
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- Linux 环境,具备 conda 包管理工具
- Python 3.10(README 指定)
- 支持多卡并行的 GPU 环境(示例使用 8 卡 torchrun)
- 准备好用于训练的 jsonl 数据文件与对应图片目录
安装与启动步骤
-
1创建 conda 环境
用 Python 3.10 新建名为 vlm-r1 的独立环境,避免与系统 Python 冲突。
conda create -n vlm-r1 python=3.10 -
2激活环境
进入刚创建的环境后,后续所有安装与训练命令都在该环境中执行。
conda activate vlm-r1 -
3执行安装脚本
在项目根目录运行 setup.sh 完成依赖安装;需先克隆仓库并 cd 进入项目目录。
bash setup.sh -
4准备训练数据
按 README 使用 jsonl 格式数据文件,并准备对应图片文件夹;多个路径用冒号分隔。
-
5启动 GRPO 训练
参照 run_grpo_rec.sh 示例,用 torchrun 启动 grpo_jsonl.py;把模型、数据、图片路径替换成自己的实际值。
torchrun --nproc_per_node="8" \ --nnodes="1" \ --node_rank="0" \ --master_addr="127.0.0.1" \ --master_port="12345" \ src/open_r1/grpo_jsonl.py \ --output_dir output/$RUN_NAME \ --model_name_or_path Qwen/Qwen2.5-VL-3B-Instruct \ --deepspeed ${REPO_HOME}/src/open-r1-multimodal/local_scripts/zero3.json \ --data_file_paths /path/to/your/data.jsonl \ --image_folders /path/to/your/image/folder
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
model_name_or_path | 是 | 指定要训练的基础 VLM 模型 | Qwen/Qwen2.5-VL-3B-Instruct |
data_file_paths | 是 | 训练数据 jsonl 路径,多个用冒号分隔 | /path/to/your/data.jsonl |
image_folders | 是 | 图片所在目录,多个用冒号分隔 | /path/to/your/image/folder |
output_dir | 是 | 训练输出目录 | output/$RUN_NAME |
deepspeed | 是 | DeepSpeed 配置文件路径 | ${REPO_HOME}/src/open-r1-multimodal/local_scripts/zero3.json |
master_port | 否 | 分布式训练通信端口 | 12345 |
如何确认成功
setup.sh 执行无报错;torchrun 启动后终端持续输出训练日志,且 output/$RUN_NAME 目录生成结果文件。
常见问题
Q:没有多卡 GPU 能跑吗?
A:README 示例使用 8 卡(nproc_per_node=8),单卡需自行调整并行参数,官方未给出单卡示例。
Q:数据路径怎么写多个?
A:README 注明 data_file_paths 与 image_folders 均可传多个,用冒号 ":" 分隔。
Q:训练脚本入口在哪?
A:入口为 src/open_r1/grpo_jsonl.py,仓库中 run_grpo_rec.sh 是可直接参考的完整示例。
Q:不想自己训练怎么办?
A:可直接使用官方在 Hugging Face 与 ModelScope 上发布的 Checkpoints 与在线 Demo。
注意事项
- 命令中的 /path/to/your/... 与 $RUN_NAME 需替换成自己的真实路径和名称。
- conda 环境的 Python 版本必须为 README 指定的 3.10。
- 训练依赖 DeepSpeed 与多卡环境,请先确认机器资源与通信端口可用。
- 完整参数与更多任务配置以仓库内 run_grpo_rec.sh 和 README 为准。
核心亮点
- 开创性地将 RL 引入 VLM 推理训练,超越传统 SFT 效果
- 提供完整可复现的训练流程,支持 Qwen2-VL 等主流模型
- 在 Grounding 任务上仅用少量数据即可显著提升性能
不足之处
- 训练资源需求较高,普通开发者难以直接复现
- 文档和社区生态尚在早期,工具链不够完善
适用场景
- 目标检测与定位任务的模型微调
- 多模态推理能力的研究与实验
- 探索 RL 在视觉语言模型中的应用
替代项目
LLaVA、Qwen2-VL、DeepSeek-R1
上一篇:whichllm
同类项目推荐
LLMtuner
开源
几行代码微调大模型,文本语音全覆盖
FineTune LLMs in few lines of code (Text2Text, Text2Speech, Speech2Text)
rllm
开源
让LLM强化学习训练像搭积木一样简单,快速提升模型推理能力。
Democratizing Reinforcement Learning for LLMs
Qwen3-TTS-EasyFinetuning
开源
上传少量音频,快速克隆音色并微调多语言语音合成模型
Easy fine-tuning for Qwen3-TTS: Fast voice cloning and high-quality multilingual spe···
kedro-mlflow
开源
在 Kedro 管道中一键启用 MLflow 实验追踪与模型版本管理
A kedro-plugin for integration of mlflow capabilities inside kedro projects (especia···
create-stable-diffusion-from-scr···
开源
手写Stable Diffusion核心代码,从零看懂扩散模型
Implemented a stable diffusion architecture using PyTorch.
Cosyvoice_DPO_NOTES
开源
用 DPO 微调 CosyVoice,让合成语音更自然更讨喜
CosyVoice_DPO_NOTES: Supercharge Your Cosyvoice model with Cutting-Edge DPO Fine-Tun···
Merge-Stable-Diffusion-models-wi···
开源
不训练,无损合并多个Stable Diffusion模型,统一风格与能力。
Adaptation of the merging method described in the paper - Git Re-Basin: Merging Mode···
EasyLM
开源
用 JAX 轻松搞定 LLM 训练、微调和部署
Large language models (LLMs) made easy, EasyLM is a one stop solution for pre-traini···
pruna
开源
一键优化 AI 模型,推理提速又省资源。
Pruna is a model optimization framework built for developers, enabling you to delive···