初识Qwen的VL系列模型
Qwen-VL、Qwen2-VL、Qwen2.5-VL 这三代模型代表了多模态大语言模型(MLLM)在视觉编码、分辨率动态适配以及多模态位置编码领域的快速演进脉络。从最初的定长序列压缩,到原生的任意分辨率输入,再到彻底重构视觉编码器以支持极长视频和绝对时间定位,Qwen 系列展现了多模态架构的最佳实践路径。
一、Qwen-VL
Qwen-VL 论文:Qwen-VL: A Frontier Large Vision-Language Model with Versatile Abilities。作为第一代多模态模型,Qwen-VL 采用的是经典的“大视觉模型(ViT)+ 跨模态适配器(Adapter)+ 大语言模型(LLM)”的三段式架构,核心解决的是如何将海量的图像特征无损且高效地压缩进 LLM 的上下文中。
- 高分辨率 ViT 提取:使用预训练的 ViT-bigG 初始化,但将默认输入分辨率从 提升至 ,以保留更多细粒度特征。
- Vision-Language Adapter (跨模态适配器):不同于简单的线性投影,Qwen-VL 设计了一个包含单层交叉注意力(Cross-Attention)的适配器。它使用 256 个可学习的 Queries 去主动“查询”和压缩 ViT 提取出的上千个图像 Patches,从而将其变为定长的 256 个 Tokens。
- 混合位置编码:在压缩过程中,适配器引入了二维绝对位置编码(2D Absolute Positional Encoding),让 LLM 能够感知图像中的空间方位。
我们可以通过 transformers 库中的 Qwen-VL 推理代码来追踪其处理逻辑:
1 | |
Qwen-VL 架构核心组件分析
Qwen-VL 的前向传播依赖以下三大组件:
- Vision Encoder (
ViTModel): 一个拥有 1.9B 参数的 ViT-bigG 骨干网络,采用 的 Patch 大小进行特征提取。 - VL Adapter (
Resampler): 一个单层 Cross-Attention 模块,负责降采样与模态对齐。 - LLM Backbone (
QwenModel): 一个拥有 7B 参数的 Qwen 语言模型,接收对齐后的视觉 Tokens 和文本 Tokens,自回归生成文本。
数据输入到输出的尺度变化
以默认的 图像输入为例,以下是数据在 Qwen-VL 中的特征演变追踪:
- Batch Size (N): 1
- 输入图像尺寸:
- ViT 隐藏层维度 (D_vit): 1664
- LLM 隐藏层维度 (D_llm): 4096
1. 图像特征提取 (ViT 阶段)
- 操作: 图像被切分为 的 Patches 并经过多层 Transformer 处理。
- 计算: 单张图产生 个 Patches。
- Shape:
2. 跨模态压缩 (VL Adapter 阶段)
- 操作: 256 个可学习的 Queries 通过 Cross-Attention 向 1024 个图像 Tokens 提取信息,并经过前馈网络(FFN)将维度映射到 LLM 的维度。
- 计算: 序列长度被硬性压缩至 256。
- Shape:
3. LLM 自回归生成
- 操作: 256 个视觉 Tokens 与文本 Tokens 在序列维度拼接后输入大模型。
- Shape: 最终上下文包含连续的 256 个图像特征。
二、Qwen2-VL
Qwen2-VL 论文:Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution。面对越来越高的文档和图像理解需求,静态的 分辨率和强压缩(丢失大量细节)成为了瓶颈。Qwen2-VL 彻底抛弃了固定分辨率和定长压缩,实现了动态分辨率与多模态旋转位置编码的创新。
- 动态分辨率 (Dynamic Resolution):模型不再缩放或裁剪原始图像,而是根据图像原比例动态计算需要切分多少个 Patches,并直接作为变长序列输入,最大程度保留文本和细节。
- 基于空间池化的 MLP Adapter:抛弃了复杂的 Cross-Attention 压缩模块。由于需要原生保留细粒度特征,Qwen2-VL 简单地将 ViT 输出的相邻 空间 Patches 拼接(Concatenate)合并,再通过一个两层多层感知机(MLP)映射到 LLM 维度。
- M-RoPE (多模态旋转位置编码):这是 Qwen2-VL 的核心灵魂。传统的 1D 旋转位置编码无法表达图像的二维结构。M-RoPE 将位置编码分为 1D(文本)、2D(图像)和 3D(视频)。对于图像,它将行列 ID 分别计算 RoPE 并结合,使得 LLM 原生具备了二维长宽坐标的概念。
1 | |
Qwen2-VL 数据输入到输出的尺度变化
假设输入一张宽屏的高清图像:
- 输入图像尺寸: (长宽均为 28 的倍数,此为 Processor 动态计算后的对齐尺寸)
- Patch Size: 14
- ViT 隐藏层维度: 1152
1. 动态 Patchify (ViT 阶段)
- 操作: 图像按照原生比例被切分。
- 计算: 宽产生 个 Patches,高产生 个 Patches。总共 个 Patches。
- Shape:
2. 空间特征融合 (MLP Adapter 阶段)
- 操作: 提取相邻的 个 Patch 序列,在特征维度拼接。
- 计算: 序列长度降低 4 倍 (),特征维度增加 4 倍 (),然后通过 MLP 降维。
- Shape: (进入 LLM 的特征维度)
3. M-RoPE 空间位置注入 (LLM 内部阶段)
- 操作: 在 LLM 的注意力机制中,这 720 个 Tokens 会被分配对应的二维坐标 (行号 ,列号 ),并叠加二维 RoPE 旋转矩阵。
- Shape: 始终保持 ,序列变长且蕴含几何结构。
三、Qwen2.5-VL
Qwen2.5-VL 论文:Qwen2.5-VL Technical Report。为了进一步突破计算效率瓶颈并实现对时序视频(小时级)的精准理解,Qwen2.5-VL 对视觉编码器内部结构和时间维度编码进行了深层次的重新设计。
- Window Attention ViT (带窗口注意力的视觉编码器):传统的 ViT 在动态高分辨率下,自注意力的计算复杂度是 ,极耗显存。Qwen2.5-VL 重新设计并从头训练了 ViT,引入了 窗口注意力 (Window Attention)。注意力仅在一个 的 Patches(即 像素)窗口内计算,将计算复杂度从平方级降为了线性。同时,将 FFN 替换为 SwiGLU,LayerNorm 替换为 RMSNorm,在架构上向 Qwen2.5 LLM 完全对齐。
- Dynamic FPS & 绝对时间 M-RoPE:不仅在图像上实现了动态分辨率,在视频上也实现了动态帧率 (Dynamic FPS) 采样。与之配套,M-RoPE 在时间维度 () 上的
position_id不再是 等顺序索引,而是与绝对时间戳对齐。这让模型真正获得了现实物理世界“时间流逝”的速度感,能够精准定位视频事件发生的秒数。 - 原生精准 Grounding:进一步强化了视觉定位能力,可以直接生成带坐标的 Bounding Box 和标准 JSON 数据格式,能够直接胜任 Agentic(如电脑操控、网页浏览)的复杂空间推理任务。
深入 Qwen2.5-VL ViT 及动态时空尺度变化
以一段长度为 2 秒的短视频为例,说明其时空维度的前向计算流:
- 输入: 视频动态采样后生成 4 帧,每帧尺寸 。
- Patch Size: 14
1. ViT 窗口注意力处理
- 操作: 针对每一帧切分出 个 Patches。
- 局部计算: 注意力不再计算 的矩阵,而是将其分为 个 规模的窗口。计算在各个独立的 局部矩阵内完成,计算量呈线性增长。
2. 绝对时间戳对齐 (M-RoPE 3D)
- 操作: 适配器依然通过 的合并将每帧的长度压缩到 。
- 时间坐标系: 在输入 LLM 时,视频帧的 M-RoPE 并非是均匀的序列 ID。如果这 4 帧分别采样自视频的第 0.1秒、0.8秒、1.5秒、2.0秒,其时间维度的
position_id会根据绝对时间间隔进行差异化分配。模型能够意识到第一帧与第二帧的时间间隔,远大于第三帧与第四帧的时间间隔。 - Shape: 包含明确时间物理信息的超级序列进入 Qwen2.5 LLM,彻底打通跨时空语义对齐。