VLAA-Thinking
基于Qwen2.5VL的多模态推理模型,通过SFT与RL对比实验探索R1式视觉推理训练范式,3B/7B版本双双登顶OpenCompass榜单
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于Qwen2.5VL的多模态推理模型,通过SFT与RL对比实验探索R1式视觉推理训练范式,3B/7B版本双双登顶OpenCompass榜单
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
项目名称: VLAA-Thinking (VLAA-Thinker) GitHub 地址: https://github.com/UCSC-VLAA/VLAA-Thinking Stars: 148 | Forks: 1 | 语言: Python 许可证: Apache-2.0 发表状态: TMLR 2025 接收论文 项目主页: https://ucsc-vlaa.github.io/VLAA-Thinking/ 论文地址: https://arxiv.org/abs/2504.11468 模型发布: https://huggingface.co/collections/UCSC-VLAA/vlaa-thinker-67eda033419273423d77249e
VLAA-Thinking 是 UCSC-VLAA 实验室发布的一项学术研究工作,聚焦于一个在 R1 系列推理模型浪潮中极其关键的问题:训练 R1-Like 多模态大语言模型(Large Vision-Language Models),究竟应该使用 SFT(有监督微调)还是 RL(强化学习)?
论文通过系统性实验,给出了早期答案,并在 OpenCompass 多模态推理榜单上取得了 3B 和 7B 参数规模下的 SOTA(State-of-the-Art)性能。
项目的技术亮点不在于模型架构的独创性(基于 Qwen2.5VL),而在于端到端的多模态推理数据生成管线。该管线包含 6 个精心设计的步骤:
第一步:元数据收集。 从 9 个不同的视觉-语言数据集中采样数据,包括 CLEVR-Math、Math PUMA、ArxivQA、DocVQA、VizWiz、ALLaVA、COCO、VisualGenome 和 GeoQA170K。数据集涵盖闭集问答和开放域视觉问答两种类型。
第二步:视觉描述生成。 由于最终训练目标是让模型直接看图推理,但推理蒸馏阶段使用的是纯文本的 DeepSeek-R1 模型(无法直接处理图像),因此需要先用 GPT-4o 为每张图像生成详细、结构化的文字描述(caption)。这样 DeepSeek-R1 就能基于文字描述进行"视觉"推理。
第三步:R1-CoT 推理蒸馏。 使用 DeepSeek-R1(text-only)模型,基于图像描述、视觉问题和数据集特定信息,生成带有逐步推理过程的 Chain-of-Thought(思维链)答案。输出格式使用 <think> ... </think> 和 <think> ... </think> 标签包裹推理过程和最终答案。
第四步:答案重写与精炼。 用 GPT-3.5-turbo 对推理输出进行改写,目标是移除对"描述/标题"等模态依赖词汇的引用(替换为"图像"),使推理过程看起来像是模型直接"看到"了图像而非阅读了文字描述。如果改写后文本偏离超过 15 个词,则丢弃该样本。
第五步:自动化验证。 使用 GPT 裁判验证重写后的答案是否与原始标注答案一致,只有通过验证的样本才会进入最终数据集。
第六步:SFT/RL 数据集划分。 将数据分为两部分——不包含"aha moment"(自我反思时刻)的简单样本用于 SFT,包含"aha moment"挑战性推理的样本用于 RL 训练。
inference.py 是项目唯一的推理代码(约 200 行),其核心逻辑非常清晰:
def get_model_processor(model_dir, device):
from qwen_vl_utils import process_vision_info
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
model = Qwen2VLForConditionalGeneration.from_pretrained(
model_dir, torch_dtype=torch.bfloat16, device_map=device
)
processor = AutoProcessor.from_pretrained(model_dir)
return model, processor
推理流程使用了 Qwen2VL/Qwen2.5VL 系列模型,通过 qwen_vl_utils 处理多模态输入(图像+文本),使用 HuggingFace 的 apply_chat_template 构建带系统提示词的对话消息。系统提示词关键指令是让模型在回答中包含 <think> ... </think> 和 <think> ... </think> 标签包裹的思维链。
生成阶段使用贪婪解码(do_sample=False),最大生成 1000 个新 token,并在生成后裁去输入 token 序列,仅保留模型生成的输出部分进行解码。
项目支持基于 GRPO(Group Relative Policy Optimization)的 RL 训练(代码未直接开源,但文档描述了方法)。GRPO 是一种不需要单独 Critic 模型的在策略优化方法,使用组内相对优势估计。论文探索了 SFT + GRPO 混合训练策略,以及纯 RL 策略的效果对比。
VLAA-Thinking/
├── inference.py # 推理主程序 (~200行)
├── utils/
│ └── download_dataset.sh # 数据集下载脚本
├── assets/
│ ├── prompts/ # 4个GPT提示词模板
│ │ ├── 1.captioning.txt # 图像描述提示词
│ │ ├── 2.r1cot.txt # R1思维链蒸馏提示词
│ │ ├── 3.rewrite.txt # 答案重写提示词
│ │ └── 4.verify.txt # 答案验证提示词
│ ├── *.png / *.pdf # 可视化图表与示例
│ └── VLAA-Thinker.pdf # 论文 PDF
└── README.md
项目推理代码依赖以下核心库:
| 依赖 | 用途 |
|---|---|
transformers | 模型加载与推理 |
torch | 深度学习框架 |
qwen-vl-utils | Qwen 视觉输入处理 |
PIL / Pillow | 图像加载与处理 |
代码整体质量较高:结构清晰、注释详尽(README 中有完整的步骤说明),核心推理逻辑简洁。但需要注意以下几点:
assets/prompts/ 目录下的 4 个提示词模板是数据生成质量的关键,提示词设计精细、规范。部署难度: 中等(基于 HuggingFace 模型,无需从零训练)
硬件要求: 单卡 NVIDIA GPU(推荐 16GB+ VRAM),3B 模型推理约需 8GB,7B 模型推理约需 16GB。
推理部署步骤(简化):
pip install transformers torch qwen-vl-utils pillowUCSC-VLAA/VLAA-Thinker-Qwen2.5VL-7Bpython inference.pyrequirements.txt 或 pyproject.toml,依赖需要从 README 中手动识别对于爱好者而言,该项目提供了可直接体验的预训练模型(VLAA-Thinker 系列),在 HuggingFace 上有 4 个模型变体可选,提供了丰富的示例图片和结果展示,门槛相对较低。
对于开发者而言,推理代码参考价值高,prompt 工程模板可直接借鉴,数据生成管线设计值得学习,但训练代码的缺失是最大的遗憾。
根据 README 中展示的 OpenCompass 多模态推理榜单结果:
实验主要对比了:
论文结论表明,混合策略在复杂推理任务上表现最优,揭示了 SFT 和 RL 在多模态推理训练中各自的不可替代性。
| 维度 | 技术 |
|---|---|
| 基础模型 | Qwen2.5VL-3B / Qwen2.5VL-7B |
| 推理框架 | HuggingFace Transformers |
| 数据蒸馏 LLM | DeepSeek-R1(思维链生成)、GPT-4o(图像描述)、GPT-3.5-turbo(重写) |
| RL 方法 | GRPO(Group Relative Policy Optimization) |
| 数据集 | 9个公开VLM数据集混合,总计约 151K 样本(SFT: 126K, GRPO: 25K) |
| 部署方式 | HuggingFace Hub 模型发布 |
VLAA-Thinking 是一项严谨的学术研究,在多模态推理训练方法(SFT vs RL)这一前沿问题上提供了有价值的实证分析。其数据生成管线设计精巧,通过巧妙的 prompt 工程弥补了纯文本模型无法处理视觉输入的限制,实现了高质量的 R1-style 多模态推理数据蒸馏。
优点:
不足:
对于希望深入研究多模态推理训练方法的学者,VLAA-Thinking 的数据集和 prompt 模板是宝贵的资源。对于工程开发者,推理代码提供了将思维链推理能力集成到视觉问答系统的参考实现。
报告生成时间:2026-07-28 | 分析深度:Level 2 (代码级) | 分析师:PIFS Agent