深度解构 Qwen-VL 与 Qwen2-VL 模型从架构设计到训练演进
深度解构 Qwen-VL 与 Qwen2-VL 模型:从架构设计到训练演进
多模态大模型的难点:
- 视觉信息密度高, 但 LLM 上下文预算有限
一张高分辨率图片可切出上千个 Patch, 直接送入 LLM 会导致序列暴涨、显存和时延急剧上升. 这本质是“信息量”与“计算预算”之间的硬约束冲突. - 跨模态对齐难, 尤其是细粒度 grounding 难
文本是离散符号序列, 图像是连续空间信号. 模型不仅要知道“图里有什么”, 还要知道“它具体在哪里”, 并把位置与语义稳定绑定. - 多尺度与多场景泛化困难
网页长图、文档小字、表格、图表、自然图像差异巨大. 固定分辨率和单一训练分布容易让模型在真实场景失真. - 视频理解引入时空耦合复杂度
视频不只是多张图, 还包含时间依赖. 若仅按 2D 图像堆叠处理, 容易丢失动作连续性与事件顺序. - 训练数据与训练策略要求更高
多模态数据噪声大、标注贵、任务异构强. 需要分阶段训练、冻结/解冻策略与高质量指令数据协同, 才能在能力与稳定性间取得平衡.
在多模态大模型(MLLM)百花齐放的今天, 如何让语言模型不仅能“看懂”图片, 还能“指认”图片中的具体细节(Fine-grained Visual Understanding and Grounding), 成为了跨模态领域的关键难题.
Qwen-VL 与 Qwen2-VL, 正好对应了这一问题上的两次典型升级: 前者先解决“图文如何有效对齐”, 后者进一步回答“模型如何适配真实世界中更复杂的图像、文档与视频输入”. 因此, 这篇文章并不是把两个模型简单并列介绍, 而是希望把它们放在一条连续的技术演进链上来看——Qwen-VL 如何打基础, Qwen2-VL 又是如何沿着同一目标继续突破瓶颈的.
先给结论: 两代 Qwen-VL 在解决什么问题?
从工程视角看, 两代模型可以理解为“同一目标, 两次升级”:
- Qwen-VL (第一代): 图像与文本的对齐是核心. 重点是用 可训练 Adapter 在算力可控前提下保留视觉细节, 再通过坐标文本化完成 grounding 的可学习表达.
- Qwen2-VL (第二代): 在第一代可用性的基础上, 进一步解决“固定分辨率瓶颈 + 视频时空建模 + 训练效率”问题, 让模型面向真实世界输入形态(任意分辨率、长视频、变长序列)时更具鲁棒性.
一句话概括: Qwen-VL 解决“看得懂与指得准”, Qwen2-VL 解决“看得全、看得久、看得更高效”.
一、Qwen-VL:从视觉接入到图文对齐
Qwen-VL 的整体网络架构由三个核心组件构成. 为了兼顾高分辨率图像的细节特征和 LLM 的计算效率, Qwen-VL 在视觉特征压缩上做出了极其精妙的设计.
模型核心架构: 三位一体的设计
1. 视觉编码器 (Visual Encoder)
- 基础骨架: 采用 Vision Transformer (ViT) 架构, 具体初始化自 Openclip 的 ViT-bigG 预训练权重.
- 处理机制: 在训练和推理阶段, 输入图像会被缩放到特定分辨率. 随后, ViT 以
stride=14的步长将图像切分为连续的 Patch, 提取出庞大的原始图像特征序列.
2. 位置感知视觉-语言适配器 (Position-aware Vision-Language Adapter)
这是 Qwen-VL 的“桥梁”, 也是整套架构的灵魂. 如果不加干预, 高分辨率图像会产生极其冗长的特征序列, 直接喂给 LLM 会导致计算量爆炸.
- 特征压缩引擎: 引入了一个单层交叉注意力(Cross-Attention)模块.
- 可训练的 Query: 模块内包含 256 个随机初始化的可训练向量(Trainable Embeddings) 作为 Query. 在反向传播中, 这些 Query 会不断自我进化, 学会如何最高效地从图像中“榨取”信息.
- 2D 绝对位置编码 (2D PE): 为了防止压缩过程中丢失图像的空间结构, Qwen-VL 并没有让这 256 个 Query 瞎找, 而是给它们加上了 2D 绝对位置编码(相当于分配了 16×16 的网格坐标). 当带有 PE 的 Query 与同样带有 PE 的视觉特征(Keys)进行计算时, 完美保留了细粒度的位置细节.
- 结果: 无论原始图像切出了多少个 Patch, 经过 Adapter 处理后, 都会被雷打不动地压缩成长度为 256 的视觉特征序列.
3. 大语言模型 (Large Language Model)
- 基座模型: 使用预训练的 Qwen-7B 作为基础大模型. 它负责接收经过压缩的视觉特征和文本 Token, 完成最终的理解、推理和生成任务.

数据表达的魔法: 坐标的文本化归一化
Qwen-VL 能够实现精准的“视觉定位(Grounding)”, 得益于其将图像坐标巧妙地文本化.
1. 图像特征标识
为了让 LLM 区分哪里是字、哪里是图, 被压缩的 256 个视觉特征在输入 LLM 时, 会被特殊的起始和结束标识符包裹: <img> 和 </img>.
2. 边界框 (Bounding Box) 的极致归一化
大模型不擅长处理千奇百怪的绝对像素(比如 1920x1080 里的 480, 或者 800x600 里的 300), Qwen-VL 采用了比例坐标网格的做法:
- 坐标映射: 将所有物体图框的宽和高统一划分为
[0, 1000)的范围(即 0 到 999). 左上角永远是 (0,0), 右下角永远是 (999,999). - 文本化输出: 归一化后的坐标不需要额外引入位置词表, 而是直接拼成一段纯文本字符串:
"(X左上, Y左上), (X右下, Y右下)". - 实体关联标记: 为了区分这是坐标而不是算术题, 模型使用
<box>和</box>包裹坐标数字;同时, 为了将坐标与具体的物体绑定, 使用<ref>和</ref>包裹物体的文本描述.
数据格式示例: 传统描述:图中有一只狗. Qwen-VL 专属格式:
<ref>狗</ref><box>(250, 300), (600, 750)</box> 正在草地上奔跑.
三阶段训练链路: 从海量弱标签到高质量对齐
一个好模型的诞生, 七分靠数据, 三分靠架构. Qwen-VL 采用阶梯式的“三阶段训练法”, 在不同的阶段灵活调整冻结(Freeze)策略, 稳步释放模型潜力.

阶段一:大规模预训练 (Pre-training)
- 目标: 建立基础的图文映射概念.
- 数据: 使用了高达 14 亿的海量、经过清洗的弱标签网络图文对(包含 77.3% 英文和 22.7% 中文).
- 冻结策略: 冻结 LLM 基座, 仅优化视觉编码器和 VL 适配器.
- 细节: 图像输入分辨率为 224x224, Batch Size 高达 30720, 通过最小化文本 Token 的交叉熵损失进行训练.
阶段二: 多任务预训练 (Multi-task Pre-training)
- 目标: 进阶提升高分辨率下的细粒度理解能力(如看清小字、识别小物体).
- 数据: 引入了极高质量且具有细粒度标注的混合数据, 涵盖 7 大任务(VQA、图像描述、目标定位等). 为了提升纯文本与图像交错的处理能力, 模型还将各种格式(如 PDF、HTML、带背景的合成 OCR 中英文数据)打包成了长度为 2048 的图文交错序列.
- 输入调整: 开始使用更大的图像输入分辨率, 以捕获更多细节.
- 冻结策略: 解冻 LLM 基座, 开始优化整个模型.
阶段三: 监督指令微调 (Supervised Fine-tuning, SFT)
- 目标: 打造高情商、听懂指令的最终对话模型(Qwen-VL-Chat).
- 数据: 使用了约 35 万条高质量的指令微调数据. 除了 LLM 自生成的单图对话外, 团队还投入了人工标注, 专门攻坚模型的多图理解和复杂空间定位能力. 同时, 为了防止“灾难性遗忘”(忘了怎么纯聊天), 训练数据中混合了多模态数据和纯文本对话数据.
- 冻结策略反转: 此时冻结视觉编码器, 将所有算力用于优化大语言模型和适配器模块, 以完美对齐人类的意图.
到这里为止, Qwen-VL 已经证明了一件很重要的事: 只要视觉特征压缩方式合理、坐标表达设计得当, 大语言模型不仅能“看图说话”, 还可以具备一定的 grounding 能力. 但与此同时, 第一代方案的边界也开始显现出来——固定分辨率仍然会损失大量细节, 视觉序列依然昂贵, 对视频这种天然三维时空信号的支持也还不够原生.
这正是 Qwen2-VL 出场的背景. 它并不是推翻 Qwen-VL, 而是在前一代已经打通“多模态接入”这件事之后, 继续去解决更现实的问题: 如何让模型真正适配高清文档、长图、长视频以及变长序列训练与推理.
二、Qwen2-VL:面向真实世界输入的系统升级
Qwen-VL 的边界, 也是 Qwen2-VL 的起点
从结果上看, Qwen-VL 已经把“图文对齐 + grounding + 多轮对话”这套范式跑通了. 但如果把使用场景从单张图片进一步推向真实业务环境, 它仍然会遇到几个典型瓶颈:
- 固定分辨率对文档与长图不友好: 高清页面一旦被压缩, 小字、公式、图表局部结构很容易丢失;
- 视觉 token 成本依然高: 分辨率一旦提高, 视觉序列长度会迅速膨胀;
- 视频理解还不够原生: 第一代重点在图像侧, 对时间维度的建模还没有完全融入统一框架.
也就是说, Qwen2-VL 要解决的, 已经不是“能不能做多模态”, 而是“能不能在复杂输入条件下依然做得又准又稳”.
核心模型架构深度拆解
Qwen2-VL 延续了前代视觉编码器 + 语言模型的经典架构. 但为了适应不同规模的部署需求(比如端侧部署或算力集群上的大规模推理), 它提供了 2B、7B 和 72B 三个版本的语言模型(基于 Qwen2), 并且统一搭配了一个 675M 参数的视觉 Transformer (ViT) .
它的核心技术突破主要集中在以下两点:
- 动态分辨率机制(Naive Dynamic Resolution)
- 多模态旋转位置编码(M-ROPE)
1. 动态分辨率机制
动态分辨率(Naive Dynamic Resolution)的核心思想可以概括为一句话: 不要再把所有图片粗暴缩放到同一个固定尺寸, 而是尽量保留原始宽高比和细节, 让模型按“实际需要”生成视觉 token.
输入:
- 任意宽高比、任意分辨率的图片;
- 文档页面、网页长图、图表、界面截图等对局部细节高度敏感的输入;
- 视频场景下的多帧图像序列.
输出:
- 一串长度可变的视觉 token 序列;
- 序列长度不再固定, 而是取决于图像分辨率、宽高比以及后续的空间压缩策略.
原理:
传统 LVLM 通常会先把任意尺寸图片通过 resize、resize + crop、拉伸或 padding 处理成固定大小, 例如 224×224 或 448×448, 再送入 ViT. 这样做的好处是 patch 数量固定、训练容易对齐; 问题是图像在进入 ViT 之前就可能已经丢失了关键信息, 尤其是在文档、小字、长图和小目标场景下.
Qwen2-VL 的改进在于: 不再先把图像强行压成统一尺寸, 而是在像素预算约束下尽量保留原始宽高比与更多细节, 再交给 ViT 编码. 因此, ViT 看到的输入尺寸不再固定, 输出的 patch 数量也随之变化, 最终得到的就是长度可变的视觉 token 序列.
换句话说, ViT 仍然只是视觉特征提取器, 动态分辨率真正改变的是:
- ViT 输入图像的尺寸与形态;
- ViT 输出视觉 token 的长度.
这样做的收益是保留更多局部细节、让输入更接近真实分布; 代价则是序列长度不再固定, 后续必须配套空间压缩、1D 展平和变长序列打包, 才能在工程上真正落地.
特征降维瘦身: 2×2 MLP 空间压缩
- 缓解算力爆炸: 动态分辨率虽然保住了细节, 但也会显著拉长视觉序列. 因此, Qwen2-VL 在 ViT 输出之后, 会抓取空间上相邻的 2×2 个 token, 把它们视为一个更大的局部区域.
- 纯粹的空间压缩: 接着通过一个简单的全连接层(MLP), 将这 4 个 token 压缩成 1 个 token.这可以近似理解为一次步长为 2、无重叠的下采样: 在尽量保留二维拓扑关系的前提下, 把输入大模型的视觉 token 数量直接减少约 75%.
- 工程意义: 这一步并不是为了“增强语义”, 而是为了在保住主要空间结构的同时, 控制后续 LLM 的注意力成本.否则, 高分辨率输入带来的 token 数量会让后续自注意力几乎不可承受.
降维打击: 化 2D 网格为 1D 变长序列
- 跨模态拼接: 在压缩后的视觉 token 序列首尾, 打上
<vision_start>和<vision_end>之类的边界标记, 用来显式告诉 LLM: 从这里开始是一段视觉上下文. - 无缝融合: 随后, 二维图像网格会被“拍扁”为一维序列, 直接和文本 token 拼接, 统一送入大模型.也就是说, 从 LLM 的输入形式上看, 最终仍然是一条标准的一维 token 流.
- 为什么拍扁之后还能保留空间信息: 关键就在于外层的 M-ROPE.虽然视觉 token 在形式上被展开为 1D 序列, 但它们在位置编码层面仍然带着原来的二维甚至三维位置信息, 因此模型依然能区分“它原来在图像的哪一行、哪一列、哪一帧”.
榨干 GPU 算力: 拒绝 Zero-Padding 与变长序列打包 (Sequence Packing)
- 工程终局: 一旦序列长度不再固定, 传统的 zero-padding 就会带来大量无意义计算. 比如一张长图和一张小图放在同一个 batch 里, 如果硬补齐到相同长度, 那么短样本后面的大量 padding token 都会白白消耗算力.
- FlashAttention Varlen: Qwen2-VL 采用变长注意力(varlen attention)机制, 把长图、短图、纯文本样本按顺序首尾拼接成一条更长的内存流, 并通过边界索引数组(如
cu_seqlens)告诉底层算子每个样本的起止位置.这样, GPU 只会在真实 token 上做计算, 而不会把算力浪费在补零上. - 最终效果: 动态分辨率、空间压缩、1D 展平和变长打包共同构成了一整套闭环.前两者负责“尽量保住视觉细节”, 后两者负责“让这种高保真输入在工程上仍然可训、可推理、可扩展”.

2. 多模态旋转位置编码
假设我们有一张图片由 VIT 得到 64 个 tokens, 这 64 个 Token 的位置索引是 m=0,1,2,...,63. 图像的话, 恰好是一个 8×8 的二维网格, 假设 tokens 的向量维度为 128, 我们知道在 transformer 中的 Query 和 Key 的时候往往需要加上位置编码信息, 那么具体是如何将位置信息添加到 token 向量中的呢? 我们介绍一下不同的位置编码算法以及这篇文章提出的 M-ROPE 算法.
绝对位置编码 (Absolute Position Encoding)
1. 核心思想: “我是谁, 我在哪, 我直接写在脸上.” 不管你是图像还是文本, 直接为位置 m 生成一个独立的 128 维向量, 然后与原本的特征向量进行加法 (+) 融合.
2. 我们的例子 (m=27):
- 假设当前处理的是第 27 个 Token.
- 模型内部有一个巨大的查找表(Embedding Table, 大小为 64×128), 或者是用正余弦函数算出来的固定矩阵.
- 提取出第 27 行的那个 128 维向量 p27.
- 最终特征: \(x27′=x27+p27\).
3. 在 Transformer & Attention 中的实现:
- 作用时机: 只在模型最底层的 Embedding 层相加一次. 在此后的每一层 Transformer Block 中, 不再显式注入位置信息.
- Cross-Attention 的尴尬: 假设文本作为 Query, 图像作为 Key/Value 进行交叉注意力. 文本有自己的 1D 绝对位置, 图像有自己的 2D 绝对位置. 因为它们是通过加法硬编码的, 空间坐标系完全不同(不共用一个查找表), 模型很难在计算 \(Q⋅KT\) 时直接领悟“文本的第 3 个词描述的是图像左上角的那块”. 通常需要巨大的数据量来强行让模型学会这种模态间的绝对位置对齐.
1D-ROPE (一维旋转位置编码)
1. 核心思想: “我不直接加上位置, 我通过旋转我的特征来暗示我的位置.” 把 128 维特征两两分组, 分成 64 对复数. 然后根据位置 m, 将这 64 个复平面各自旋转一个角度 \(mθ\).
2. 我们的例子 (m=27):
- 128 维特征被切分为 64 个二维平面(维度 0-1 是一对, 2-3 是一对...).
- 对于所有的 64 对特征, 模型下达指令: “全体注意, 根据位置 27, 旋转 \(27θ\)!”
- 最终, 这 128 维的数字都通过三角函数(复数乘法)发生了改变, 但依然是 128 维.
3. 在 Transformer & Attention 中的实现:
- 作用时机: 不在底层加, 而是在每一层的 Attention 计算前, 专门对 Query (Q) 和 Key (K) 进行旋转. Value (V) 不参与旋转.
- Cross-Attention 的尴尬: 如果在这 64 个 Token 上做图像和文本的交叉注意力, 依然会错位. 因为图像的第 27 个 Token 和第 28 个 Token 物理上可能不在同一行(比如 27 在第 3 行行尾, 28 在第 4 行行首), 但 1D-ROPE 强行让它们相差了 \(1θ\) 的夹角, 模型会误以为它们挨得很近.
2D-ROPE (二维旋转位置编码)
1. 核心思想: “把 128 维劈成两半, 一半记录行号, 一半记录列号.” 64 个 Token 不再是一条线, 而是一个 8×8 的网格. 我们需要算出它的二维坐标 \((h,w)\).
2. 我们的例子 (m=27):
- 计算坐标:行号 \(h=⌊27/8⌋=3\), 列号 \(w=27mod8=3\). 所以它在第 3 行, 第 3 列.
- 前 64 维(32 组): 负责高度. 按照位置 h=3 进行旋转, 即旋转 3θ.
- 后 64 维(32 组): 负责宽度. 按照位置 w=3 进行旋转, 即旋转 3θ.
3. 在 Transformer & Attention 中的实现:
- 消除 Cross-Attention 瓶颈: 在旧模型中(如 Qwen-VL 初代), ViT 抽取的 2D 特征需要经过一个复杂的 Cross-Attention Adapter 才能被 LLM 理解. 引入 2D-ROPE 后, 视觉 Token 天生自带了精准的二维相对几何关系. 但是, 如果文本用 1D-ROPE, 图像用 2D-ROPE, 当它们一起送入 LLM 进行自回归解码时, 底层的旋转逻辑冲突了, 依然需要写复杂的算子来区分对待. 这就引出了终极解法.
M-ROPE (多模态旋转位置编码)
1. 核心思想: “将 128 维强行分为三份:时间 \(t\)、高度 \(h\)、宽度 \(w\). 一套代码通吃所有模态.”
2. 我们的例子 (m=27): 假设配置文件规定: 128 维中, 32 维给时间, 48 维给高度, 48 维给宽度.
- 如果这 64 个 Token 是纯文本: 模型强制令 \(t=27\), \(h=27\), \(w=27\). 前 32 维旋转 \(27θ\), 中间 48 维旋转 \(27θ\), 后 48 维旋转 \(27θ\). 数学上完美退化为 1D-ROPE.
- 如果这 64 个 Token 是单张图片 (8×8): 时间冻结:t=常量 (假设为 1). 空间坐标:\(h=3\), \(w=3\). 前 32 维旋转 \(1θ\), 中间 48 维旋转 \(3θ\), 后 48 维旋转 \(3θ\).
3. 在 Transformer & Attention 中的终极实现:
- 彻底消灭 Cross-Attention: 这是架构上最优雅的一笔. 有了 M-ROPE, 我们不需要再用额外的 Cross-Attention 层去对齐视觉和文本了!
- 图像的 64 个 Token 和文本的 Token 被直接拼接(Concat)成一个超长的 1D 序列, 直接送入 LLM 的 Self-Attention 中.
- 当 LLM 计算图像的 Query 和文本的 Key 的内积时, 由于它们底层的 128 维特征都是按照统一的 \((t,h,w)\)M-ROPE 规则旋转过的, 注意力机制会自动根据极坐标夹角差, 完美算出它们跨模态的时空相对距离.
3. 训练方式: 稳扎稳打的三阶段策略
Qwen2-VL 采用了经典的三阶段训练法 :
-
第一阶段: ViT 预训练(视觉基础构建) 模型首先接触约 6000 亿个 Token 的数据. 主要使用海量的图文对数据, 专门训练 Vision Transformer(ViT)部分, 让大模型建立起图像与文本之间的基础语义联系(比如识别图片里的文字和分类).
-
第二阶段: 全参数预训练(多模态深度融合) 在这个阶段, 模型的所有参数都被解冻. 引入了 8000 亿个图像相关的 Token, 包含图文穿插文章、视觉问答数据等. 模型在这里学会了如何处理多任务, 以及如何理解图像和文本之间复杂的相互作用.
-
第三阶段: 指令微调(SFT / ChatML 格式) 锁定 ViT 参数, 专门微调 LLM. 使用 ChatML 格式构造指令数据, 数据涵盖了文档解析、多图对比、视频流对话以及复杂的 Agent(智能体)交互. 这让模型最终具备了听从人类指令、执行复杂任务的能力.
4. 评估方式与卓越表现
算法工程师最看重的就是 Benchmark 结果. Qwen2-VL 在多个维度上展现了顶尖实力, 特别是 Qwen2-VL-72B模型, 在多项指标上直接对标甚至超越了目前的行业标杆 GPT-4o 和 Claude 3.5-Sonnet .
-
文档与图表理解:在 DocVQA、InfoVQA 和 OCRBench 上取得了极具竞争力的成绩, 证明其对高分辨率文档和复杂数学公式的解析能力处于 SoTA(业界最优)水平 .
-
数学与逻辑推理:在 MathVista 评估中取得 70.5 分, 并在 MathVision 真实数学竞赛数据集上创下开源模型的新纪录(25.9 分) .
-
长视频理解:在 MVBench 等长视频测试中, 72B 版本表现出了对动态画面的卓越理解力 .
三、总结: 从 Qwen-VL 到 Qwen2-VL, 多模态系统是如何一步步长出来的
如果回看全文, 会发现 Qwen-VL 与 Qwen2-VL 并不是两条割裂的路线, 而是一条非常清晰的技术演进链.
第一阶段, Qwen-VL 先解决的是“视觉信息如何接入 LLM”这个最根本的问题. 它通过可训练 Adapter 压缩视觉序列, 通过坐标文本化把 grounding 转成语言建模问题, 再通过三阶段训练把图文理解、定位与对话能力逐步对齐起来. 换句话说, Qwen-VL 的价值在于先把多模态大模型的基础范式跑通.
第二阶段, Qwen2-VL 开始正面解决真实世界输入带来的新问题. 当图片变成文档、长图、网页截图, 当输入进一步扩展到长视频, 当训练与推理必须面对变长序列和高吞吐需求时, 第一代方案的边界就会暴露出来. 因此, 动态分辨率、M-ROPE、空间压缩与变长打包这些设计, 本质上都是在回答同一个问题: 如何在尽量保留真实视觉信息的同时, 让系统仍然可训、可推理、可扩展。
从这个角度看, 两代模型的目标始终没有变: 都是在让 LLM 获得更稳定、更细粒度、更可推理的视觉能力. 真正变化的, 是每一代要优先解决的瓶颈——Qwen-VL 更强调“桥接与表达”, Qwen2-VL 更强调“统一建模与工程落地”.
如果一定要用一句话概括这两代模型的关系:
Qwen-VL 定义了多模态对齐与 grounding 的基础范式, 而 Qwen2-VL 则把这套范式扩展成了更适配真实世界复杂输入的统一多模态引擎.
这也是 Qwen-VL 系列最值得学习的地方: 它们不是靠某一个孤立技巧取胜, 而是在模型架构、数据表达、训练策略和工程实现之间, 找到了一条可以持续迭代的路线.

浙公网安备 33010602011771号