Introduction
2025年2月20号Qwen团队发布了Qwen2.5 VL技术报告,Qwen2.5 VL包括3B,7B, 72B三个size。Qwen2.5-VL主要在架构,数据上进行了改进。通过评测,Qwen2.5-VL在多个benchmark上取得了SOTA。
Qwen2.5 VL认为已有模型的缺点为:
- 计算复杂度高
- 上下文理解能力有限
- 细粒度visual perception能力不足
- 在不同上下文长度下表现不一致
Qwen2.5 VL的贡献为:
- 使用了一个从零开始训练的ViT作为vision encoder,并且在ViT中使用了window attention,来提高计算效率
- 使用了dynamic FPS sampling,用于处理不同采样率的视频输入
- 将MRoPE扩展到了temporal domain上,进一步提高了模型在与时间相关任务上的表现
- 使用了更高质量的数据集,其中预训练阶段使用了4.1T的token
Qwen2.5 VL的主要亮点为:
- 优秀的document parsing能力
- 精确的object grounding能力
- 针对长视频的理解和细粒度grounding能力
- 针对UI的agent functionality
模型架构
总览
Qwen2.5 VL和Qwen2 VL的架构基本一致,包括Vision Encoder,Language Encoder,以及projector layer三个部分,其架构图如下:
- LLM: 使用Qwen2.5 LLM作为LLM,并且将1D-RoPE升级为了MRoPE
- Vision Encoder: 使用一个从零开始训练的ViT架构,patch_size为14,position embedding为2D-RoPE, attention为window attention和self-attention的混合,其中,只有四层使用的是self-attention.对于输入的图片,ViT会将图片resize到28的整数倍。
- Projector Layer: 使用的是一个两层的MLP
模型的参数配置如下图
Vision Encoder
Vision encoder的主要改进点为:
- 使用了window attention来提升计算效率,window attention的size为 , 对应为 个patch. 这样做的好处是可以不用对图片做scaling
- 使用了2D RoPE来捕捉空间信息,使用3D RoPE来捕捉视频输入的时间信息
- 与LLM的结构进行对齐,包括使用RMSNorm替换LayerNorm,使用SwiGLU替换ReLU
输入处理
对于图片输入,Qwen2.5 VL使用原始图片的空间信息来构建坐标,而不是将坐标normalize到[0, 1000]之间,这样让模型可以处理不同精度的图片输入。
对于视频输入,因为使用了3D RoPE,因此Qwen2.5 VL可以处理不同帧率的视频输入,这样就避免了不同帧率视频对模型视频理解带来的影响。这一点和Apollo里的想法是一样的。具体来说,Qwen2.5 VL首先将连续的两帧group到了一起,然后使用了temporal ID来将position和视频所对应的时间进行对齐。这里可以看Qwen2.5 VL的代码:
Temporal (Time): 3 patches, representing different segments of the video in time.
Height: 2 patches, dividing each frame vertically.
Width: 2 patches, dividing each frame horizontally.
We also have some important parameters:
fps (Frames Per Second): The video's frame rate, set to 1. This means one frame is processed each second.
tokens_per_second: This is a crucial parameter. It dictates how many "time-steps" or "temporal tokens" are conceptually packed into a one-second interval of the video. In this case, we have 25 tokens per second. So each second of the video will be represented with 25 separate time points. It essentially defines the temporal granularity.
temporal_patch_size: The number of frames that compose one temporal patch. Here, it's 2 frames.
interval: The step size for the temporal position IDs, calculated as tokens_per_second * temporal_patch_size / fps. In this case, 25 * 2 / 1 = 50. This means that each temporal patch will be have a difference of 50 in the temporal position IDs.
input_ids: [V V V V V V V V V V V V T T T T T], here V is for vision.
vision temporal position_ids: [0, 0, 0, 0, 50, 50, 50, 50, 100, 100, 100, 100]
vision height position_ids: [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]
vision width position_ids: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
text temporal position_ids: [101, 102, 103, 104, 105]
text height position_ids: [101, 102, 103, 104, 105]
text width position_ids: [101, 102, 103, 104, 105]
Here we calculate the text start position_ids as the max vision position_ids plus 1.
这里fps为1,表示每一帧对应一秒,tokens_per_second为25,表示每秒包含25个token,temporal_patch_size为2,表示每个temporal patch包含2个frame。因此一个patch里面,就包含了2frame, 对应50tokens. 然后前面提到连续两帧会被group到一起,因此每个temporal patch对应4个spatial patches. 其position_ids为:
[(t, 0, 0), (t, 0, 1), (t, 1, 0), (t, 1, 1)]
训练
预训练
数据
预训练阶段使用了4.1T的token,包括image captions, interleaved image-text data, optical character recognition (OCR) data, visual knowledge (e.g., celebrity, landmark, flora, and fauna identification), multi-modal academic questions, localization data, document parsing data, video descriptions, video localization, and agent-based interaction data. 作者详细介绍了以下几种数据:
- Interleaved image-text data: 主要1. 提高模型的上下文学习能力;2. 保持模型的text-only能力;3.包含一些通用信息。数据清洗包括:1. 基于text-only quality过滤; 2. 基于image-text相关性过滤;3. 基于image-text互补程度过滤;4.基于information density balance过滤.
- Grounding data:作者使用了Grounding DINO, SAM等模型来生成一些grounding data.为了提升模型在open-vocabulary detection上的能力,作者将训练数据集扩展到了1万个object category上,作者还使用了一些point-based object grounding data来提升模型的能力
- Document Parsing data:作者基于text,image, music sheets和chemical formulas合成了一些HTML格式的数据,然后根据tag和bounding box来提升模型document parsing的能力
- OCR data:作者使用了开源,合成和in-house的数据集,数据集主要提到multi-lingual以及1M的chart-type数据
- Video data:作者通过pipeline构建了long video caption来提升模型长视频的理解能力
- Agent data:作者收集了一些mobile device和网页的screenshots,然后基于agent框架来合成控制轨迹
训练
如上图所示,Qwen2.5 VL的预训练阶段包括了三个阶段:
- Visual Pretraining:这一阶段使用了image-caption, knowledge, OCR数据集,旨在提升ViT提取视觉特征的能力
- multimodal pretraining:这一阶段在第一阶段的基础上增加了pure-text, interleaved data, VQA, Video grounding, agent data, 旨在提升模型处理复杂视觉信息的能力
- long-context pretraining: 这一阶段,在第二阶段的基础上,增加了long video, long agent, long document data,旨在提升模型处理长上下文的能力
后训练
数据
SFT阶段使用大概2M的样本进行训练,其中纯文本和多模态数据占比为1:1,语言主要是中文和英文。
为了保证数据质量,作者提供了一个数据清洗的pipeline,包括:
- domain-specific categorization: 作者基于Qwen2-VL-72B构建了Qwen2-VL-Instag,用于将QA pair分为8个大类别,30个小类别
- Domain-tailed filtering:作者使用了rule-based和model-based方法来提升数据的质量
- rule-based filtering: 重复性检测,格式检测等
- model-based filtering: 使用基于Qwen2.5-VL训练的reward model来从多个维度评估QA pair的质量
为了进一步提升模型的推理能力,作者还是用了rejection sampling来refine 数据集。
训练
post-training阶段分为SFT和DPO两个小阶段,这个阶段都会冻结VIT. SFT阶段使用大多数的训练数据,而DPO阶段专注于image-text data和pure text data,以更好地进行对齐。具体做法就是基于Grounding truth,使用checkpoint来评估数据的质量,然后只保留答案正确的数据来训练。
评测
- 通用VQA
- 文档理解和OCR
- 空间理解
- 视频理解和Grounding
- Agent
Reference
Introduction
作者在本文中提出了 Qwen3-VL 系列多模态大模型,包括 4 个 dense 模型和两个 MoE 模型,模型的上下文长度为 256K, 通过数据和训练上的优化,作者保持了模型的纯文本能力。最终 Qwen3-VL 包括 non-thinking 和 thinking variants.
在架构上,Qwen3-VL 进行了三点改进:
- Interleaved MRoPE: 作者解决了 Qwen2.5-VL 提出的 MRoPE 在长视频理解场景下的频谱不平衡问题
- DeepStack: 作者使用了 DeepStack 来提取 ViT 不同 layer 的视觉特征
- Explicit Video timestamps: 作者使用了绝对时间来标记 frame 来提供更直接的时间信息
在数据上,作者使用了 image caption, OCR, grounding, spatial reasoning, code, long documents 以及 temporally grounded video 等数据,作者 还是用了 GUI-agent interaction 数据来提高模型的 action 能力
在训练上,Qwen3-VL 包含两个大的阶段:pre-training 和 post-traing, pre-training 包含 4 个小阶段,post-training 包含 3 个阶段。
Architecture
Qwen3-VL 的架构如下所示
其中,
- LLM: LLM 使用了 Qwen3 系列大语言模型,包括 2B, 4B, 8B, 32B 四个 dense model 以及 30B-A3B, 235B-A22B 两个 moe 模型
- Vision Encoder: encoder 基于 [[SigLip-2]] 初始化,然后使用了 dynamic input resolutions 进行 continue training, 作者使用了 CoMP 提出的 2D-RoPE 以及 interpolate absolute position embedding, 最终包括 SigLip2-SO-400M 和 SigLip-Large (300M) 两个 size, 后者用于 2B 和 4B 两个 size
- Patch Merger: 一个 2 层的 MLP, 将四个 visual token 压缩为 1 个
Interleaved MRoPE
这部分介绍见 [[MRoPE-Interleave]]
DeepStack
受 Deepstack 启发,作者从 vision encoder 的中间层(具体来说是第 8, 16, 24 层)提取对应的视觉特征,然后经过 MLP 与 LLM 对应 layer 的视觉 token 直接进行相加。
Video Timestamp
作者发现,Qwen2.5-VL 中使用的 MRoPE 存在如下问题:
- 将 temporal position 与绝对时间绑定之后,对于长视频会产生非常大且稀疏的 temporal position ids
- 需要使用不同的 FPS 进行采样来提高模型的泛化性
为了解决这个问题,作者使用了一个 textual token-based time encoding strategy, 其中每个 video temporal patch 对应的 timestamp 表示为 <3.0 seconds>, 这样视频会被处理为以下格式
<0.0 seconds> <video token> <video token> ... <4.0 seconds> <video token> <video token>
在训练时,作者还使用了 seconds 以及 HMS 两种格式来提高模型对于不同格式的泛化能力。作者认为,虽然这种表示会提高上下文长度,但是也能够提高模型 video grounding 或者 dense captioning 等时序信息敏感任务的表现
Pre-training
Training Recipe
预训练阶段包含 4 个阶段,如下图所示
- Stage 0: 这一阶段的目的是对齐视觉特征和文本特征,只训练 Patch merger, 训练使用了 67B token, 覆盖 image-caption, knowledge, OCR 数据,上下文长度为 8192
- Stage 1: 这一阶段所有参数都参加训练,训练使用了 1Ttoken, 作者在训练是加入了纯文本数据,最终数据包含 interleaved image-text, visual grounding, VQA, STEM, video 数据,上下文长度为 8192
- Stage 2: 这一阶段的目的是扩展模型的上下文长度到 32K, 训练使用了 1T token, 数据包括长视频以及 agent-oriented instruction-following 数据
- Stage 3: 这一阶段的目的是将模型的上下文长度进一步扩展到 262K, 训练使用了 100B token. 数据包括长视频以及长文本
Data
- Image Caption Data: 作者使用了 Qwen2.5-VL 32B 来进行 re-captioning, 然后进行了 de-duplication 以及 clustering 来提高数据的质量和多样性
- Interleaved Text-Image Data: 作者对文档进行分裂,然后使用微调的 Qwen2.5-VL 7B 来进行解析,对于长文本,作者将连续页面拼接在一起。作者使用了对齐以及页数来保证数据的质量
- Knowledge Data: 作者构建了多个类别的数据,然后对这些数据进行 refine
- OCR: 作者构造了 30M 的数据以及 1M 的多语种数据
- Document Parsing Data: 作者从 CC 上收集了 3M PDF 以及处理了自有的 4M 数据,最终数据集里包含合成数据和真实数据;对于长文档理解数据,作者通过将 single-page 数据 merge 在一起得到,然后作者构造了 long document VQA 数据
- Grounding and counting Data: grounding 数据包括 box-based 和 Point-based 两种形式,均从开源数据集收集得到,前者包括 RefCOCO, Object365, 后者包括 PixMo; 对于 Counting, 作者基于 grounding 数据构造了 direct counting, box-based counting 以及 point-based counting 三种形式
- Spatial Understanding: 数据包括 spatial understanding 和 3D grounding 两类数据,前者的数据使用了相对位置关系来提高 spatial reasoning 的 robustness; 后者使用了 Omni3D 来统一数据格式
- Code: 包括 Qwen3, Qwen3-Coder 的纯文本 coding 数据,以及多模态 coding 数据,覆盖了将 UI 截图转换为 HTML/CSS 以及从图片生成 SVG 等任务
- Video: 包括 Dense Caption Synthesis 以及 Spatial-Temporal Video Grounding 两个任务。作者还对不同来源不同长度的数据进行了平衡
- STEM: 作者构造了一个合成数据 pipeline, 合成了 1M point-grounding samples, 2M perception-oriented VQA 数据,最终数据集包含 6M 标注图表数据,覆盖了 STEM 相关学科;对于多模态推理数据,作者收集了 60M 的 K12 以及本科生级别的练习题,作者还合成了 12M 的多模态推理数据。除了多模态推理数据,作者还加入了纯文本推理数据
- Agent: 这部分数据包括 GUI, function calling 以及 Search 三部分, GUI 数据通过数据合成得到,Function calling 数据通过强模型生成轨迹得到,search 数据通过收集执行搜索轨迹得到
Post-training
Post-training 包含三个阶段:
- SFT: 提高模型的指令跟随能力,SFT 又分为了两个小阶段,上下文长度分别为 32K 和 256K, 对于 instruct 和 reasoning 版本,作者设计了不同的数据格式,后者包含 CoT reasoning trace
- Strong-to-Weak Distillation: 提高小模型的能力,这里应该是和 Qwen3 一样,将大模型的能力蒸馏到小模型里
- RL: 提高模型的 reasoning 能力以及人类偏好对齐。这里包含了 Reasoning RL 以及 General RL 两个阶段,覆盖了 math, OCR, grounding, instruction following 等 domain
整体的训练 pipeline 我猜测应该是这样:
Code-start Data
Code-start Data 分为 SFT 数据和 Long CoT SFT 数据,前者用于训练 instruct 版模型,后者用于训练 reasoning 版模型
| Data | tasks | samples | training | filtering |
|---|---|---|---|---|
| SFT | spatial reasoning image-grounded reasoning spatio-temporal grounding long document understanding | 1.2M (1/3 are text-only) | - stage 1: 32K - stage 2: 256K | - query - rule-based - model-based |
| Long CoT SFT | VQA, OCR, 2D/3D grounding, video analysis, STEM, agent | text = 1:1 | - difficulty - multi-modal - response quality |
Strong-to-Weak Distillation
蒸馏过程包括两个阶段:
- off-policy Distillation: 使用教师模型的输出进行训练提高模型基本的 reasoning 能力
- On-policy Distillation: 使用教师模型输出的 logit 作为蒸馏信号提高模型的 reasoning 能力
RL
Reasoning RL
作者收集了 30K 的 RL 数据,然后对通过率超过 90% 的数据进行过滤 (16 responses per query), 对于 reward, 作者构建了一个 unified reward framework 来提供奖励
训练时,作者使用了 SAPO 算法进行训练
General RL
作者采用了一个 multi-task RL 的范式来提高模型在不同任务上的表现,reward 主要包含两个方面:
- instruction following: 评估模型遵循用户指令的能力,包括内容,格式,长度等
- preference alignment: 对于开放式问题,评估模型帮助性,事实准确性等方面的表现
基于这两个方面 reward 有两个部分组成:
- rule-based reward: 基于规则的 reward, 比如格式要求等
- model-based reward: 使用 Qwen2.5-VL 72B 和 Qwen3 作为 judge model 来提供奖励
为了解决模型的重复性实处,中英文混杂等问题,作者构造了一个数据集来故意触发模型这些问题然后加以改正。
Thinking with Images
作者还够在了数据提高模型的 “thinking with images” 的能力,训练包含两个阶段:
- Stage 1: 作者构造了 10K Grounding 数据,然后对 Qwen2.5-VL 32B 进行 SFT 来模仿 agent 的行为: think -> act -> analyze feedback -> answer, 然后作者使用 multi-turn, tool-integrated RL 来进一步提高模型的 reasoning 能力
- Stage 2: 作者从 Qwen2.5-VL 32B 蒸馏得到 120K multi-turn agentic interactions 数据集, 然后作者使用了相似的 cold-start SFT 以及 tool-integrated RL pipeline 来训练 Qwen3-VL
这里 RL 训练的 reward 包含以下几部分:
- answer accuracy reward
- multi-turn reasoning reward
- tool-calling reward
Experiments
Performance
Qwen3-VL 235B-A22B 的表现如下图所示
Ablation Study
作者对比了以下 Qwen3-ViT 和 SigLIP-2 的表现,结果如下图所示
实验结果显示,使用 1.7B 的 Qwen3 和 1.5T tokens 进行训练之后,Qwen3-ViT 的表现超过了 SigLIP2 的表现,验证了 Qwen3-ViT 的有效性
作者对比了 Deepseek 和 baseline 的表现,结果如下图所示
可以看到,相比于 baseline, DeepStack 的表现更好,说明了 DeepStack 可以提供更丰富的视觉信息。
作者还评估了以下 Qwen3-VL 在视频版大海捞针任务上的表现,实验结果发现,对于 30 分钟的视频,Qwen3-VL 的准确率为 , 通过 YARN 上下文扩展策略,模型在 2 个小时视频上的准确率为 .
Conclusion
作者在本文中提出了 Qwen3-VL 系列多模态大模型,在架构上,作者使用了 interleaved-MRoPE, DeepStack 等改进策略,在数据上,作者扩展了训练数据的多样性,在训练上,作者分别训练了 instruct 版本和 reasoning 版本。最终评估发现,Qwen3-VL 达到了 SOTA 表现。
作者认为,未来的工作在于
- 基于 Qwen3-VL 构建具身智能 agent
- 提高模型的可交互感知,tool-augmented reasoning 以及 real-time multimodal control 能力
- 提高模型与人类学习,合作的能力
- 统一理解与生成多模态大模型