Qwen2.5 VL 通读
本文通读 Qwen2.5 VL 在模型结构、数据、训练方法方面的改进。主要改进总结:
- 在 vision encoder 中引入了 window attention,提升推理效率;
- 使用动态 FPS 采样,将动态分辨率采样扩展到时间维度,以适应不同的视频帧率;
- MRoPE 时间维度升级,对齐绝对时间值,从而能进行更复杂的空间序列学习
- 进一步扩展训练数据,总量从 1.2T tokens 增加至 4.1T tokens
模型结构
总览
Qwen2.5 VL 整体上还是经典的 MLLM 三件套:Vision Encoder + Adapter + LLM。
LLM 就是使用了 Qwen2.5 LM 的权重作为初始化。这里的关键点是位置编码的调整,需要将原本 LM 的 1D RoPE 调整为 MRoPE,并且 Qwen2.5 VL 还进一步对齐了绝对时间。
Vision Encoder 是 Qwen 2.5 VL 模型结构上改进的重点,在沿用 Qwen2 VL 使用 2D RoPE 来支持任意分辨率图像输入的基础上,进一步引入了 window attention 来提高推理效率
Adapter 同 Qwen2 VL 一样,还是采用简单高效的 Merger + MLP 结构, 将相邻的 4 个 token 为一组拼接起来。随后送入到一个两层 MLP 中,对齐 LLM 的特征维度。在图片 token 可变的情况下灵活方便地压缩视觉 token 数量。
具体的结构参数如下表所示。可以看到 Qwen2.5 VL 三个模型(3B、7B、72B)的结构设计基本保持完全一致,只有层数、头数、隐层维度这些规模相关的不同。与之相比,DeepSeek VL2 则不同规模的模型之间差异较大,除规模相关的参数外,词表大小、训练数据规模,甚至模型结构(MLA or not)也都不同。
Vision Encoder
Qwen2 VL 中,将 ViT 的位置编码替换为 2D RoPE,配合 NaViT 实现了任意分辨率的图像输入,然而这也带来了一个问题,就是输入图片的原生分辨率可能太大,导致视觉 token 特别多,而我们知道,Transformer 随 token 数是平方的计算复杂度,这就导致计算开销大大增加。为了解决这个问题,Qwen2.5 VL 在 ViT (的大多数层)中,引入了 window attention,来使得 ViT 随 token 数大致是线性的计算复杂度。使用的最大窗尺寸(window size)为 112 × 112 112\times 112 112×112)(相当于 8 × 8 8\times 8 8×8 个 patches),小于这个窗尺寸的区域也不用进行 padding,保持原始分辨率即可。这样引入了 window attention 的模型处理的就还是原生分辨率和长宽比,而没有变形。
ViT 的位置编码,还是用 2D RoPE,这样来更好地感知二维图像空间的位置信息。对于图片,就是标准的 patch 切分,将 14 × 14 14\times 14 14×14 的相邻区域切成一个 patch;对于视频,则会进一步将时序相邻的两帧合成一个 group,从而进一步缩减输入到语言模型的 token 数。
Qwen2.5 VL 还对 ViT 结构的一些细节进行了调整,在 ViT 中采用了 RMSNorm 作为标准化方法,并使用了 SwiGLU 作为激活函数,从而使 ViT 与语言模型的细节设计保持一致。
这次 ViT 的结构改动比较大,需要从头进行 CLIP 预训练,然后再与 Adapter 和 LLM 一起进行训练。Qwen2-VL 中的 ViT 是在换用了 2D RoPE 后进行了微调。
为了增强 ViT 对不同输入分辨率的鲁棒性,训练时对输入图片进行了保持长宽比的动态分辨率采样,这样既能提升模型对不同分辨率的适应性,又能稳定模型在不同视觉数据上的训练效率。
原生分辨率和帧率
在空间维度上,Qwen2.5 VL 的 ViT 将原生分辨率的图像转换为一个变长的视觉 token 序列。不同于之前的工作(包括 Qwen1/2 VL)将坐标进行了归一化(比如 [ 0 , 1000 ] [0,1000] [0,1000]),Qwen2.5 VL 直接使用真实的坐标值来表示边界框、位置点等空间特征。这使得模型能够隐式地学习到空间位置信息,提升对不同分辨率下的空间定位能力。
对于视频输入,Qwen2.5 VL 提出了动态帧率和绝对时间编码两项改进。通过适应多种帧率,模型可以更好地捕捉视频的时间动态。与其他结合文本时间戳或利用额外 head 来实现时间定位的方法不同,Qwen2.5 VL 采用了一种新策略:将 MRoPE 的 ID 直接与时间戳对齐。这样模型可以通过时间维度 ID 之间的间隔来感知时序节奏,而无需任何额外的计算开销。
对齐绝对时间的 MRoPE
引入 MRoPE 来表征多模态模型的位置编码,是 Qwen2-VL 的重要改进,Qwen2.5 VL 则进一步扩展了 MRoPE 在视频时序信息上的能力。
Qwen2 VL 中,MRoPE 分为三个独立的分量(时间、高度和宽度)组成。
- 对于文本输入的每个 token,所有三个分量都使用相同的位置 ID(如 ( 1 , 1 , 1 ) , ( 2 , 2 , 2 ) (1,1,1), (2,2,2) (1,1,1),(2,2,2)),使 MRoPE 在功能上 fallback 到原始的 1D RoPE;
- 对于单张图片中的每个 token,时间维度的 ID 还是保持不变,而高度和宽度则按照每个 token 所对应 patch 的空间位置来设置;
- 对于视频帧序列,时间维度的 ID 会随着每一帧而递增,而高度和宽度分量遵循与单张图片的设置方式相同。
然而,在 Qwen2 VL 中,MRoPE 中的时间位置 ID 与输入帧的数量相关,这没有考虑到实际视频内容的动态速度或视频中事件的绝对时间。为了解决这一限制,Qwen2.5 VL 提出将 MRoPE 的时间分量与绝对时间对齐(见上图)。通过利用时间 ID 之间的间隔,使得模型能够见到过不同的视频帧率,从而更好地理解视频时序。
预训练
数据
Qwen2.5 VL 中,预训练数据相较于前代大幅增加,从 1.2T tokens 增加到 4T tokens。预训练数据的构建方法也是多种多样,有从网络上爬取并清洗的数据,也有合成的数据。涵盖了多种数据类别,包括图像描述、图文交错数据、OCR 数据、视觉知识类(名人、地标等)数据、多模态学术数据、定位数据、文档解析数据、视频描述、定位数据,以及 agent 相关数据等。在训练过程中,对不同阶段的数据配比也进行了详尽的研究,以达到最优的性能。
图文交错数据
图文交错数据是多模态模型训练的重点之一,有了图文交错理解的能力,模型就能进行多模态的 in-context learning 了。并且,模型的纯文本能力能更好地保留。然而,目前的开源图文交错数据很多都质量很差,图片和文本之间的关联性不强,对于提升模型的复杂推理和创意生成能力的提升很有限。
为了保证图文交错训练数据的质量,Qwen2.5 VL 搭建了一个数据清洗 pipeline,首先进行常规的标准数据清洗(参考 OmniCorpus),然后使用自有的打分模型对图文交错数据从四个维度进行打分:1)文本本身的质量;2)图文相关性;3)图文互补性;4)图文信息密度均衡性。其中后三者是针对图文内容之间的打分标准:
- 图文相关性:期望图片和文本之间具有较强的相关性,图片应该对文本是有意义地补充、解释或者扩展,而非仅是修饰作用;
- 图文互补性:期望图片和文本之间有更好的信息互补性,图片和文本应当各自提供一些独特的信息,整体形成一个完整的表述;
- 信息均衡性:期望来自图片和文本之间的信息密度较为均衡,避免信息全部来自文本或图片的情况。
这是一套非常精细的清洗策略了,对模型的复杂推理和生成能力有很大帮助。
基于绝对位置坐标的定位数据
之前我们提到,Qwen2.5 VL 采用了原生分辨率训练,作者认为归一化的相对坐标无法有效地表示原始尺寸和图片中物体的位置。因此 Qwen2.5 VL 使用真实值来表示边界框和点的坐标。
定位数据的构建包括了开源数据、in-house 数据和 Grounding DINO 合成数据,涵盖了超过 1w 个类别和 REC 表述。
文档解析数据
文档解析数据部分,主要是合成数据。传统的文档内容解析方法通常包含多个分步子模型来处理各自处理布局分析、文本提取、图表解释和插图处理。而 Qwen2.5-VL 做的则是端到端的通用文档解析和理解。合成的文档中包括了各种各样的元素,比如表格、图表、方程式、自然或合成图像、乐谱和化学公式。Qwen2.5 VL 指定了一种统一格式的 HTML,将文档布局框信息和插图描述集成到 HTML 中。从而可以进行标准化、统一化的文档解析。
OCR 数据
OCR 数据的来源也是包括了开源、in-house 和机造合成,涵盖多种语言,包括自然场景的 OCR 和合成的文字图片。对于图表类数据,用 python 的 matplotlib、plotly 和 seaborn 合成了 1M 数据;表格类数据则是用表格识别模型对 6M 真实表格数据进行处理,并加以清洗过滤。
视频数据
为了增强模型的鲁棒性,Qwen2.5 VL 对帧率进行动态采样,来保证不同帧率的视频数据在训练集内的分布尽量均匀。此外,针对长视频视频(> 30min),专门通过特定的的合成 pipleine 来合成多帧字幕。对于视频定位数据,制定了秒级和时分秒帧(hmsf)两种格式的时间戳,确保模型能够准确理解和输出各种格式的时间。
Agent 数据
Qwen2.5-VL 增强了感知和决策能力,以支持 Agent 功能。对于感知,收集了移动端、Web 和桌面平台上的屏幕截图。通过数据合成,来生成屏幕截图 caption 和 UI 元素的 grouding 标注。captioning 任务帮助 Qwen2.5-VL 理解图形界面,而 grounding 任务帮助它理解元素的外观和功能。对于决策,首先将移动端、Web 和桌面平台上的操作,设计统一的共享操作空间的函数调用格式。收集开源数据并由 Agent 框架在虚拟环境中合成的一组带标注的多步轨迹,再转换为统一函数格式。进一步通过人类和模型标注为每一步生成一个推理过程。具体来说,给定一个真实操作,在屏幕截图上显示出来,然后将原 query 以及操作前后的截图提供给标注者,要求他们编写推理内容来解释此操作背后的意图。再使用模型过滤掉低质量的推理内容。最终得到高质量的 Agent 数据。
训练
Qwen2.5 VL 的预训练分为视觉预训练、多模态预训练和长上下文预训练三个阶段,各阶段的数据、序列长度等细节如下表所示。
采用原生分辨率输入后,图片和文本的 token 数都是可变的,这可能会导致训练时的计算负载不均衡。由于 vision encoder (with window attention) 的计算量相对 LLM 要小得多,因此重点还是要平衡 LLM 在不同 GPU 上的计算负载。具体来说,根据样本送入到 LLM 的序列长度(visual tokens + text tokens),来动态地进行 packing,从而保证 LLM 计算负载的均衡。在预训练的前两个阶段,packing 到 8K,在第三个阶段,由于在做长上下文的训练,因此 packing 到 32K。
后训练
Qwen2.5 VL 的后训练阶段旨在对齐人类偏好,增强模型的对话指令遵循能力和推理能力,包含 SFT 和 DPO 两个阶段。
指令数据与过滤
SFT 阶段,与 Qwen2-VL 一样,采用了 ChatML 的对话模板,该模板引入了对话角色(system/user/assistant)标识,且能够保持图文交错内容的相对位置关系。SFT 阶段使用了精心构造的指令遵循对话数据,主要由中英文构成,共约 2M 条,其中纯文本数据和多模态数据(图文/视文)各约占 50%,当然,视觉相关的 token 占比会比文本多不少。既有单轮对话也有多轮,既有单图输入也有多图,既有开源的 query 也有采买的,模拟了真实世界中各种各样的对话场景。在数据的任务类型,也涵盖种类甚多,包括 VQA、image captioning、doc/ocr、video、agent、math、coding 以及安全相关的 query 等。
数据质量是 SFT 阶段训练的重中之重,Qwen2.5 VL 中搭建了一套二阶段的数据过滤流程,首先对数据领域进行分类,然后基于不同的领域特点进行特定的数据过滤。
第一阶段,使用 Qwen2-VL-instag(基于 Qwen2-VL 72B 训练的分类模型)来对 QA 数据进行多级分类,第一级分为 8 个基础类别(如 Coding、Planning 等),第二级分为了更细粒度的 30 个子类(如 Code_Debugging、Code_generation 等)。有了这种多级的类别领域结构,我们就能更有针对性的基于每个领域不同的特点来优化数据清洗的方案。
第二阶段基于第一阶段的领域分类结果,进行数据过滤,包括基于规则的过滤和基于模型的过滤。根据特定领域(如文档解析、OCR、视觉定位等)的不同特点,采用不同的过滤策略。
基于规则的过滤是指预定义一些启发式的规则,来过滤掉本身质量低或有问题的样本。具体来说,对于与文档处理、OCR 和视觉基础任务相关的数据集,会识别并删除出现重复的情况。此外,包含不完整、截断或格式不正确的样本和不相关或可能有害的样本也会被过滤掉。
基于模型的过滤是指通过训练多模态奖励模型,并据其进一步优选 SFT 数据集。奖励模型会在多个维度上对多模态 QA 数据进行评估,对于 query 主要评估其相关性和复杂度,保留更困难的问题;对于 answer 主要评估其正确性、完整性、清晰度、与查询的相关性以及是否有帮助。在基于视觉的任务中,特别注意要评估是否准确理解并利用了视觉信息。
Qwen2.5 VL 还采用了拒绝采样来进一步提升 CoT 数据的质量,该方法对于那些需要复杂推理的任务(如数学题、代码生成、特定域 VQA 等)至关重要。具体来说,Qwen2.5 VL 的拒绝采样数据构造过程是,在一个有标注的数据集上,使用中间版本的模型进行 CoT 推理,对比其输出结果与真实标注是否一致,仅将结果正确的输出结果保留下来,作为模型进一步的训练数据。从而保证数据都是准确的、高质量的。此外,对于结果正确的输出结果,还要过滤掉过长、重复等存在问题的 CoT 结果,进一步保证数据的质量。
对于多模态模型来说,CoT 推理中一个额外的关键问题是同时依赖于文本和视觉信息,推理步骤可能对视觉信息利用不充分,甚至忽略掉视觉信息。为了解决这个问题,Qwen2.5 VL 设计了基于规则和模型驱动的过滤策略来验证中间推理步骤的准确性,从而确保 CoT 流程中的每个步骤都能有效地整合视觉和文本模态。(这里也没说很多细节)
训练
Qwen2.5 VL 的后训练过程包括 SFT 和 DPO 两个阶段,均冻结了 ViT 的参数。在 SFT 阶段,模型针对各种多模态数据进行微调,包括图文对、视频和纯文本,这些数据来源于通用 VQA、Rejection Sampling、Doc/OCR、Grounding、Video 和 Agent 相关任务等专门数据集。DPO 阶段专注于图文和纯文本数据(无视频数据),利用偏好数据使模型与人类偏好保持一致,每个样本仅处理一次以确保高效优化。这个简化的过程增强了模型的跨模态推理和任务特定性能,同时保持与用户意图的一致性。
实验
本来想看看消融,但好像全都是性能展示和对比,没消融,很遗憾。
总结
Qwen 系列比较稳健,一直是每次都有一定创新,且一直保持开源。现在应该是全球范围内(最)领先的开源多模态模型了,最近几个 VLM R1 相关的项目基本全都是用 Qwen 2/2.5 VL 作为基座,都取得了不错的结果。