3、Qwen系列
Qwen-VL → Qwen2-VL → Qwen2.5-VL:从“固定分辨率 + 适配器”到“原生动态分辨率/帧率 + MRoPE 时间对齐”的演进
本文围绕三代 Qwen 多模态模型(Qwen-VL、Qwen2-VL、Qwen2.5-VL)的网络结构与训练范式展开,重点解释它们为何要从固定分辨率走向动态分辨率、为何要从 2D-RoPE 走向多模态旋转位置嵌入(MRoPE),以及 Qwen2.5-VL 如何进一步把“时间”做成可对齐的绝对语义轴。
1. Qwen-VL:三段式架构(Vision Encoder + VL Adapter + LLM)
Qwen-VL 的整体由三个组件构成,总参数规模约 9.6B:
- Vision Encoder:1.9B
- VL Adapter:0.08B
- LLM:7.7B
它的核心思路是:视觉侧负责把图像变成序列特征,适配器负责把长视觉序列压缩成适合 LLM 消化的短序列,LLM 负责语言理解与生成。
1.1 大型语言模型(LLM)
作用:作为“文本推理与生成”的主干,最终输出答案/描述/对话内容。
初始化:直接使用预训练的 Qwen-7B 权重(等价于将多模态能力“嫁接”到一个强语言模型上)。
直观理解:
- 视觉模块把“图像”翻译成 LLM 能理解的“视觉 token 序列”;
- LLM 仍然以自回归的方式生成文本,只是输入上下文里多了一段视觉 token。
1.2 视觉编码器(Visual Encoder)
作用:把输入图像编码为视觉特征序列。
架构:基于 Vision Transformer(ViT),并使用 OpenCLIP ViT-bigG 的预训练权重进行初始化。
输入处理(固定分辨率范式):
- 图像 resize 到 448×448
- 再按 14×14 的 patch 切分
这里可以用一个简单的“token 数量”估算说明固定分辨率的计算形态:
- 若 patch 大小为 p×pp \times pp×p,输入分辨率为 H×WH \times WH×W,则 patch 数近似为
N≈Hp⋅Wp N \approx \frac{H}{p} \cdot \frac{W}{p} N≈pH⋅pW - 对固定 H=W=448H=W=448H=W=448,当 p=14p=14p=14 时:
N≈44814⋅44814=32⋅32=1024 N \approx \frac{448}{14}\cdot\frac{448}{14} = 32 \cdot 32 = 1024 N≈14448⋅14448=32⋅32=1024
含义:视觉编码器会输出约 1024 个 patch 级别的视觉 token(再加上可能的 CLS 等特殊 token),这是后续适配器要处理的“长序列”。
1.3 位置感知的视觉-语言适配器(Position-aware VL Adapter)
固定分辨率 + ViT 的典型问题是:视觉 token 太多,直接喂给 LLM 会导致上下文过长、推理成本大。
Qwen-VL 引入了一个“压缩器”——单层 Cross-Attention 的 VL Adapter:
- Query:一组可训练向量(learnable queries)
- Key/Value:Vision Encoder 输出的视觉 token 序列
- 输出长度:把视觉序列压缩到固定长度 256
可以把它理解为:模型学会用 256 个“摘要 token”去查询并聚合原始 1024 个视觉 token 的信息。
为了更精确地保留空间结构,适配器引入了 2D 绝对位置编码,使得“同样的局部纹理但处于不同位置”可以被区分。
2. Qwen-VL 的三阶段训练:先对齐,再多任务增强,最后对话化
Qwen-VL 的训练流程分为 3 个阶段,每一阶段的目标都不同。
2.1 Stage 1:预训练(大规模图文对齐)
目标:让视觉模块输出的表示能被语言模型“正确解释”,完成基础对齐。
数据:大规模图文对(约 1.4B 图文对)。
训练目标:最小化文本 token 的交叉熵损失(自回归语言建模形式)。
如果把输入写成“图像 + 文本前缀”,输出是后续文本 token 序列 {yt}\{y_t\}{yt},那么标准形式是:
LCE=−∑t=1Tlogp(yt∣y<t,xtext,xvision) \mathcal{L}_{\text{CE}} = -\sum_{t=1}^{T} \log p(y_t \mid y_{<t}, x_{\text{text}}, x_{\text{vision}}) LCE=−t=1∑Tlogp(yt∣y<t,xtext,xvision)
其中:
- xvisionx_{\text{vision}}xvision 是视觉编码器 + 适配器产生的视觉 token
- xtextx_{\text{text}}xtext 是文本提示(caption 或其他描述性文本)
- y<ty_{<t}y<t 是已生成的历史 token
优化器与调度(要点级概括):AdamW + 余弦学习率 + warmup。
训练规模:50,000 步,约消耗 1.5B 图文样本与 500B 图文 token。
2.2 Stage 2:多任务预训练(能力扩展:描述、问答、定位、OCR 等)
Stage 1 主要解决“能看懂并说出来”。但要在真实任务中更强,需要更丰富、更结构化的监督。
Stage 2 的关键是:将高质量细粒度数据以多任务方式并行训练,典型包括:
- Captioning(图像描述)
- VQA(视觉问答)
- Grounding(定位)
- Ref Grounding & Grounded Caption(指代定位与带定位的描述)
- OCR(文字识别)
- Text Generation(与图像相关的文本生成)
并在训练方式上采用全参数训练,输入分辨率提升到 448×448,以加强细粒度视觉能力。
2.3 Stage 3:监督微调(SFT):对话能力与多图交互
目标:让模型具备更好的交互式对话与指令跟随能力。
数据:多模态 Self-Instruction 构造的指令对话数据,覆盖单图与多图。
关键训练策略:
- 冻结 Vision Encoder,仅优化 LLM 与 Adapter
- 使用 ChatML 组织对话格式,并引入类似 “Picture id:” 的标识支持多图输入
训练参数(要点):全局 batch size 128;学习率 warmup + 衰减(max 1e-5,min 1e-6)。
3. Qwen2-VL:从固定分辨率走向“原生动态分辨率”,并用 MRoPE 统一多模态位置
Qwen2-VL 的升级动机可以概括为两点:
- 固定输入尺寸会丢细节
- 例如:一张 4K 图里有小字号文字或细线条标注,resize 到 224 或 448 后细节可能不可逆地丢失。
- 冻结 CLIP 风格视觉编码器限制复杂推理
- 模型在需要更强视觉推理与跨模态对齐时,受限于“静态视觉表征”的上限。
因此 Qwen2-VL 的核心升级方向是:
- 动态分辨率训练:让视觉 token 数随分辨率变化
- 2D-RoPE + MRoPE:让位置编码同时适配文本、图像、视频等输入形态
3.1 Naive 动态分辨率:视觉 token 数随输入而变
在动态分辨率范式下,视觉 token 数与图像内容尺度直接相关。
直观效果是:分辨率高 → token 多 → 细节保留更好,但算力更高;分辨率低 → token 少 → 更省但可能丢细节。
Qwen2-VL 通过两类机制让它可控:
(1) 2×2 token 压缩(MLP merge)
对于视觉 token 网格,把相邻的 2×22\times22×2 token 合并为 1 个 token,会把 token 数降低到原来的 1/41/41/4。
若原始 token 网格为 h×wh \times wh×w,合并后变为 h2×w2\frac{h}{2} \times \frac{w}{2}2h×2w,因此 token 数变化为:
N′=h2⋅w2=14hw=14N N' = \frac{h}{2}\cdot \frac{w}{2} = \frac{1}{4}hw = \frac{1}{4}N N′=2h⋅2w=41hw=41N
这一步对工程效率很关键:让“动态变长”的视觉序列在进入 LLM 前更可控。
(2) 推理阶段的打包长度控制(packing length)
动态分辨率意味着最坏情况下 token 会爆炸式增长。推理阶段通过控制打包长度(上限)来约束 GPU 显存与计算量,使高分辨率输入不会无限制拖慢推理。
3.2 2D-RoPE:在二维网格上做旋转位置编码
固定 1D 位置编码(或 1D RoPE)对图像这种二维结构并不天然友好。
因此 Qwen2-VL 引入 2D-RoPE:用二维坐标(高度、宽度)来表征位置,使模型能区分“同一局部纹理在左上角 vs 右下角”。
一个常用的抽象方式是给每个视觉 token 分配二维坐标 (u,v)(u,v)(u,v),并让注意力中的位置编码对 (u,v)(u,v)(u,v) 敏感,而不是仅对序列 index ttt 敏感。
3.3 MRoPE:把位置编码分解为“时间、高度、宽度”三条轴
Qwen2-VL 的更关键升级是 MRoPE(Multimodal RoPE):
把旋转位置嵌入拆解成三个独立组件:
- 时间轴:ttt
- 高度轴:hhh
- 宽度轴:www
并根据输入模态分配不同的 position id:
- 文本:三个组件使用相同的位置 id(因此退化为标准 1D RoPE)
- 图像:时间 id 固定不变,高度/宽度 id 根据空间网格变化
- 视频:时间 id 随帧递增,高度/宽度 id 在每帧内按空间网格分配
这样做的直观好处:
- 文本仍然保持“序列位置”语义
- 图像获得“二维空间位置”语义
- 视频同时获得“时间顺序 + 空间位置”语义
3.4 实际案例:为什么动态分辨率 + MRoPE 能解决“细节丢失”
案例:高分辨率 OCR / 图表小字号
- 传统固定 224×224 可能把小字压缩成不可读像素块
- 动态分辨率允许输入以更高分辨率编码,视觉 token 数增多,小字形状被更完整地保留
- 2×2 merge 保证 token 不至于爆炸
- MRoPE 保留空间结构,避免模型只看到“字形碎片”却难以确定其在图表中的位置关系
最终效果往往体现在:模型不仅能读出文字,还能结合其所在位置回答“这行文字对应哪个图例/哪个坐标轴”。
4. Qwen2.5-VL:把动态能力扩展到“时间”,并将时间轴与绝对时间对齐
如果说 Qwen2-VL 解决了“不同分辨率图像”的适配,那么 Qwen2.5-VL 的关键是把这种适配扩展到视频时间维度,并进一步把“时间位置”做成更强的语义对齐。
4.1 动态分辨率训练:随机采样宽高比,增强泛化
Qwen2.5-VL 在训练中不再把图像强行拉到某个固定尺寸,而是根据原始宽高比进行随机采样,从而让模型在训练时就见过更丰富的尺寸分布。
这带来的能力提升往往体现在:
- 适配竖图、横图、长条图(如网页截图、表格截图)
- 面对不同相机/不同裁剪尺度时更稳定
4.2 原生动态分辨率:直接用真实尺度表达空间特征
Qwen2.5-VL 的空间维度进一步强调“原生”:
- 将不同尺寸图像转为可变长度 token 序列
- 并且能直接使用输入图像实际尺寸来表示边界框、点等空间特征
直观理解:
如果同一个目标在 640×480 图里占 100×100 像素,在 1920×1080 图里占 300×300 像素,原生尺度信息能让模型学到“尺度差异”,从而在定位/计数/几何关系判断上更稳。
4.3 动态帧率训练:把“动态分辨率”推广到时间轴(FPS)
视频的核心难点不只在空间分辨率,还在帧率与节奏:
- 同样 10 秒视频,2 FPS 是 20 帧,8 FPS 是 80 帧
- 如果位置编码只表示“第几帧”,模型很难理解不同 FPS 下“同样的真实时间间隔”
因此 Qwen2.5-VL 引入:
- 动态 FPS 采样(训练时让模型见过不同帧率)
- 绝对时间编码(让时间不再只是帧序号)
4.4 关键升级:MRoPE 的时间组件与绝对时间对齐
Qwen2-VL 的 MRoPE 时间轴本质上更像“帧 index”。
Qwen2.5-VL 把它升级为“对齐到绝对时间戳”的语义轴:时间 id 的间隔直接对应真实时间间隔。
可以用一个简单形式说明“时间 id 与时间戳对齐”的意义:
设视频采样得到帧时间戳序列 {τk}\{\tau_k\}{τk}(单位可视为秒或毫秒),那么时间位置 id 可以构造为与时间戳成比例的整数:
idt(k)=⌊τkΔ⌋ \text{id}_t(k) = \left\lfloor \frac{\tau_k}{\Delta} \right\rfloor idt(k)=⌊Δτk⌋
其中:
- Δ\DeltaΔ 是时间量化步长(例如 0.5 秒)
- ⌊⋅⌋\lfloor \cdot \rfloor⌊⋅⌋ 表示向下取整
这样做的关键性质是:
如果两段视频内容相同,但一个用 2 FPS 采样、另一个用 8 FPS 采样,那么同一真实时间点附近的帧会得到相近的时间 id,模型更容易学到跨帧率的一致对齐。
4.5 实际案例:不同 FPS 下“同一事件”的对齐
案例:动作发生在第 3 秒
- 视频 A:2 FPS → 帧时间戳可能为 0,0.5,1.0,…,3.0,…0, 0.5, 1.0, \dots, 3.0, \dots0,0.5,1.0,…,3.0,…
- 视频 B:8 FPS → 帧时间戳更密集,包含 2.875,3.0,3.1252.875, 3.0, 3.1252.875,3.0,3.125 等
如果时间位置只用“第几帧”,两者在“动作发生时刻”的帧 index 差异很大。
若用绝对时间对齐的 id:
- 3.03.03.0 秒附近的帧会被映射到近似相同的 idt\text{id}_tidt
模型更容易回答类似问题: - “动作发生在视频的哪一秒?”
- “在 2 秒到 4 秒之间发生了什么变化?”
- “同一事件在不同帧率采样下是否一致?”
4.6 统一图像与视频理解:混合训练 + token 上限控制
为平衡训练效率与覆盖面,Qwen2-VL/Qwen2.5-VL 采用图像与视频混合训练,并对视频 token 规模设置上限(例如总 token 限制到 16384),以避免单个长视频把计算拖垮。
直观理解:
- 空间越大、帧数越多 → token 越多
- 通过限制 token 总数,模型能在可控算力内学习“长视频 + 高分辨率”的折中表示
5. 三代模型的核心差异总结(从工程形态到能力指向)
5.1 架构层面:压缩路径与位置建模能力逐步增强
-
Qwen-VL:固定分辨率 + Adapter 压缩到固定 256
- 优点:序列长度稳定,工程容易
- 局限:高分辨率细节受限,空间/时间建模能力有限
-
Qwen2-VL:原生动态分辨率 + 2×2 merge + 2D-RoPE + MRoPE
- 优点:细节保留更好,位置建模更贴近图像/视频结构
- 工程关键:merge 与 packing 控制 token 增长
-
Qwen2.5-VL:动态分辨率 + 动态帧率 + MRoPE 时间绝对对齐
- 优点:跨 FPS 的时间语义更稳定,视频理解从“帧序号”走向“真实时间轴”
5.2 能力层面:从“能看懂并说”到“能在细节与时间上更稳地推理”
-
对图像:
- 动态分辨率更容易保留小字、细线条、密集标注
- 原生尺度信息更利于定位、几何关系与计数
-
对视频:
- 动态 FPS + 时间对齐让模型不再依赖“帧 index”的偶然性
- 更适合回答带时间条件的问题(某一秒发生什么、持续多久、节奏快慢变化等)
6. 总结
多模态推理的真实难点往往不是“有没有视觉特征”,而是:
- 视觉信息是否足够细(分辨率/帧率)
- 视觉信息是否带结构(空间/时间位置)
- 视觉序列是否在工程上可控(token 上限、压缩策略)
三代 Qwen-VL 的演进正对应这三点:
- Qwen-VL:用 Adapter 把视觉序列压短,先解决可用性
- Qwen2-VL:用动态分辨率与 MRoPE 把空间结构建起来
- Qwen2.5-VL:把时间轴变成可对齐的“绝对语义”,让视频推理更稳
这也是从“多模态对齐”走向“多模态推理”的典型升级路径。
更多推荐
所有评论(0)