
多模态大模型进化史:从拼接融合到原生统一架构
最近被多模态的效果圈粉。距离那个"OCR 糊成一团、指令理解弱到离谱、幻觉高到吓人"的时代并没过去多久,多模态模型的效果已经发生了飞跃式进步。
这篇系统梳理背后的"进化轨迹":模型骨架如何一步步演变、位置编码如何从一维延伸到三维、图片分辨率难题如何被逐步破解,以及多模态训练策略背后最关键的两个反直觉发现。
一、多模态骨架的三次进化
进入细节前,先建立一个整体认知框架:多模态架构的演进,本质上是在回答同一个问题——
"图片和文字,到底应该在哪里、用什么方式融合?"
每个时代给出了不同的答案。
Era1:给语言模型装上眼睛(2022–2023)—— LLaVA、Qwen-VL1/2

Visual Instruction Tuning(Liu et al., 2023)
核心设计哲学:视觉编码器和 LLM 都很贵,冻住它们,只训练中间的"翻译官"。
逻辑很朴素——既然视觉编码器(CLIP ViT)和语言模型(Vicuna/Qwen-7B)都已在各自领域预训练得很好,那就别动它们,只用少量数据和算力训练中间的桥梁。
LLaVA 的两阶段训练:
| 阶段 | 冻结什么 | 训练什么 | 用什么数据 |
|---|---|---|---|
| 阶段一:特征对齐 | 视觉编码器 + LLM | 只训练适配器 | 图像描述(Caption)类任务 |
| 阶段二:指令微调 | 只冻结视觉编码器 | 适配器 + LLM | 图像对话问答类任务 |
Qwen-VL 在此基础上加了第三阶段:解冻全部参数,用 OCR、Visual Grounding(让模型指出图片中特定区域位置)等任务,专门强化细粒度感知能力——从"看到是什么"向"感知空间关系"迈出第一步。
但 Era1 有三个根本缺陷,驱动了后续演进:
- "语言优先"的模态失衡:视觉模态像新朋友难以融入文本群体,经常被忽略,导致很多图像理解问题幻觉率高得吓人。
- 模态"拼接"的本质缺陷:视觉与文本模态天然存在分布差异、范数差异、信息密度差异,单纯拼接表征,模型很难提取有效信息。
- 深层图像理解能力缺失:固定分辨率与输入层融合,使高分辨率细节、空间感知任务表现不佳。
Era2:让大脑"看见"更深层(2024–2025)—— Qwen-VL3

Era1 的翻译官只工作了一次——在图片进入大脑之前。进了大脑,视觉信息就和文字混在一起,靠 LLM 自己消化。
问题是:视觉信息中的细节(小字体、空间位置关系、图表结构)很容易在 LLM 的深层网络里被"稀释"掉。
Era2 的核心思想:全面深入,让视觉模态真正参与到模型的每一层学习中。 同时攻克位置编码、动态分辨率、训练策略三个技术难题(后文重点展开)。
Qwen-VL3 给出的方案是 DeepStack:从 ViT 的多个中间层抽取特征,分别注入 LLM 的不同层。低层 ViT 特征保留边缘、纹理等细节,高层特征保留语义信息,让不同层的语言模型看到不同粒度的视觉信息。
图像 → [ViT编码器] → 第6层特征 ──→ 注入LLM第5层
→ 第12层特征 ─→ 注入LLM第15层
→ 第18层特征 ─→ 注入LLM第25层
→ 第24层特征 ─→ 注入LLM第35层
↓
文本Token ──────────────────────→ [LLM主干] → 回答
Era3:打掉眼睛和耳朵,统一多模态架构(2026+)—— Gemma4
Era2 把融合做到极致,下一步自然是索性去掉融合过程,让多模态从最初就统一训练——丢掉视觉、语音编码器,多模态从头融合。
Gemma4 直接在架构层去掉图片、音频编码器,让多模态在输入层融合:
- 图片怎么进来? 把图像切成 48×48 像素的图块(patch),通过约 35M 参数的投影矩阵,直接映射到与文字 token 相同的向量空间。
- 音频怎么进来? 把 16kHz 音频按每 40ms 切一片,复用与图片相同的投影矩阵,变成同维度向量。
- 然后呢? 图片 token、音频 token、文字 token 按用户输入顺序拼在一起,由同一个 Transformer 用同一套注意力机制处理——没有任何模态特权。

一个值得注意的设计细节:为什么把图片和音频切得这么"粗"?
因为图片和音频的信息密度天然比文字低很多。一个文字 token 承载高度压缩的语义;而图片的像素区域信息高度冗余。更大的信息粒度才与文字 token 的信息密度接近,Transformer 处理时才不会"浪费注意力在背景像素上"。当然,参考后文动态分辨率的思路,按预算和语义密度动态切割或许是更好的方案。
二、三大核心技术难题
说完架构变化,接着看几个核心问题的攻克:
- 位置编码如何表征空间和时间:把 2D/3D 世界硬压成 1D 序列,长视频尤其受损
- 如何支持动态分辨率:固定 224/336 一刀切导致 OCR/文档/小目标崩
- 如何训练解决模态冲突:视觉加入时机与比例不当会拉低语言能力或导致"看不见"
难题一:位置编码如何表征空间和时间?
Transformer 处理 token 序列时,注意力机制本身是"无序的"——模型天然不知道哪个词在前哪个词在后。位置编码给每个 token 打上"我在第几位"的标签,让模型感知顺序。
纯文字很简单:每个词一个位置编号,1、2、3……往后排。但图片的信息是二维的——一个像素块不只"在第几位",还有"在第几行、第几列"。视频更复杂,还加了"在第几帧"的时间维度。
把二维、三维信息硬压成一维序列,就像把一张地图折叠成一条线——空间关系全乱了。

M-RoPE:给模型装三块"表盘"
Qwen-VL2 引入 M-RoPE(多模态旋转位置编码),核心思想:给每个 token 配三块表盘,而不是一块。
| 模态 | T 表盘(时间/帧) | H 表盘(垂直位置) | W 表盘(水平位置) |
|---|---|---|---|
| 文字 | 随位置递增 | 同 T | 同 T(退化为 1D) |
| 图片 | 固定不动 | 随行号变化 | 随列号变化 |
| 视频 | 随帧数递增 | 随行号变化 | 随列号变化 |
对文字,三块表盘转速一样,等价于原来的 1D 位置编码,没有额外损耗。对图片和视频,模型只需"看表盘指针夹角",就能天然感知像素间的空间距离和帧间的时间顺序——无需额外记忆坐标。
实现上的关键演进:频段分配方式
具体实现时,每个注意力头的维度要切成三份分别给 T/H/W。Qwen-VL2 的做法是顺序切分——前 1/3 给 T,中间 1/3 给 H,最后 1/3 给 W。
但 Qwen-VL3 发现这个做法有隐患:每个维度只能感知特定频段的信息,导致模型对某些空间频率无法感知。Qwen-VL3 的修正方案叫交错分配:
通道索引 0, 1, 2, 3, 4, 5, 6, 7, 8 ...
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
分配: T, H, W, T, H, W, T, H, W ...
一个有趣的延伸:时间位置编码的"语义化"转向

Qwen-VL2 用视频帧的整数 ID(第 1 帧、第 2 帧……)做时间轴旋转编码。Qwen-VL3 做了反直觉改动:把时间位置编码改成直接在视觉 token 前插一段文字(如"3.5 seconds"这样的时间标记)。
为什么这么改?整数帧 ID 有两个缺陷:
- 信息稀疏:文本的 token 位置连续密集(1,2,3,4,5...),视频帧采样却稀疏(1,5,10,20,50...)→ 模型对"帧间距离"的感知被稀疏采样严重扭曲。
- 语义错配:30fps 采样时帧 ID=30 代表"第 1 秒",1fps 采样时帧 ID=30 代表"第 30 秒"→ 同样的 ID 在不同采样率下代表完全不同的时刻。
直接使用语义化的时间标记可同时规避两个问题——它不需要"换算"巨大数字,而是像读小说章节标题一样,直接"读懂"当前视频片段的时间点。
难题二:动态分辨率——细节与 Token 预算的两难
固定分辨率(如 224×224)的问题:图片一律缩放到该尺寸,高清文档里的小字、密集表格里的数字统统模糊——这是早期多模态模型 OCR 能力弱的根本原因。
但高分辨率也不免费:分辨率越高,不压缩就直接转换成更多输入 token。
动态分辨率的核心矛盾:细节 vs. Token 预算。
Tiling(切片拼图)—— 不动 ViT,绕道走

既然 ViT 只接受固定大小输入,就把大图切成多个小块,每块单独送进 ViT。
LLaVA 的 AnyRes 更进一步:同时送入一张缩小的全局缩略图(保留整体布局)和多个局部高清切片(保留细节),将所有编码结果拼成完整序列。
优点是简单、不改 ViT;缺点是切割边界会打断跨区域语义(比如表格被切成两半),且 token 数随分辨率线性增长,治标不治本。
Gemma 的改进方向:把 ViT 支持的最大输入分辨率直接扩大(336→896),减少切片次数,降低切割碎片化。
VIR(视觉分辨率路由器)—— 让模型自己决定压缩多少
Tiling 用同一压缩率处理所有区域——但实际上,图片里的天空背景和密密麻麻的文字,对信息密度的需求完全不同。
VIR 的核心思想:引入"语义感知"的动态压缩路由器,让模型自己判断每个 patch 该用多少 token 表达。
训练分两步:
- 训练对压缩不敏感的"底子":随机对输入图片做 4 倍或 16 倍压缩,训练模型在不同压缩率下输出尽量一致——让模型学会"即使图糊了,也能猜出大概",建立对压缩的鲁棒性。
- 训练路由器本身:冻结 ViT 和语言模型,只微调 VIR 路由器。路由器本质是二分类器,对每个 patch 输出 0 或 1:

标签的来源:不需要人工标注!
直接比较 Loss(4倍压缩) vs Loss(16倍压缩):
→ 如果压缩后损失大(信息损失严重):标签=0,保留高分辨率
→ 如果压缩后损失小(信息本来就稀疏):标签=1,可以大幅压缩
训练用 OCR、VQA 等对信息密度极敏感的任务——只有这类任务,"压不压缩、压多少"的影响才显而易见。
推理时,路由器对每个 patch 实时决策:密集信息区域精细保留,大片背景区域大幅压缩,实现真正的"按需分配"。
Native ViT(原生动态分辨率)—— 从根上改 ViT
前两个方案都在不动 ViT 内核的前提下绕道解决。Qwen-VL2 选择直接"动手术":
- 引入二维相对位置编码(M-RoPE 的 H/W 维度),让 ViT 从输入端就能处理任意尺寸图片,patch 数量随图片实际尺寸动态变化。
- 引入 2×2 的 MLP 池化压缩,把 4 个相邻 patch 的特征合并成 1 个,视觉 token 数压缩到原来的 1/4,有效控制长图的 token 爆炸。
个人思考:Qwen-VL2 的动态分辨率(解决"怎么灵活输入")+ VIR 的信息密度感知(解决"进来之后怎么高效表达")并不矛盾。两者结合或可走向预算驱动的自适应表示——给每张图设定 token 上限,根据内容信息密度动态决定哪些区域精细表达、哪些粗略压缩。这或许是动态分辨率的下一站。
难题三:多模态该如何训练?
架构解决"图片怎么进来",训练策略解决"图片进来之后,怎么让模型真正学会用它"。

这里有两个反直觉的核心发现,都来自 Kimi-K2.5 的实验。
Insight 1:视觉和语言,越早在一起越好
先理解"模态竞争"是什么感觉。想象你母语中文、英语流利,这时有人要求你从零学日语,且中文英语能力不能下降——三种语言会在大脑里互相"抢地盘",很难真正平衡。
这正是 Era1/Era2 多模态模型的训练困境:LLM 已用纯文本训练得很好,再"注入"视觉模态就会产生模态竞争:
- 样本中视觉占比过高 → 文本能力断崖下跌
- 样本中视觉占比过低 → 模型学会"偷懒",能不看图就不看图
之前的方案多是通过多阶段训练与动态调整两模态混合比例来"拉偏架",本质是水多了加面、面多了加水。
而 Kimi-K2.5 试验后给出的结论是:在固定 token 预算下,早期融合适度视觉比例的效果,优于晚期大量注入视觉数据。所以 Kimi-K2.5 采用早期整合视觉、全程协同优化两种模态,学习均衡的多模态表示。
视觉和文本两种模态若在训练早期就一起"长大",它们之间的对齐是自然形成的——就像双语环境中长大的孩子,两种语言在大脑中共生。"先学文本、后补视觉"则像成年人学第二语言,很难达到母语级融合,且学第二语言时还会干扰母语(语言退化)。
Insight 2:文本和视觉,不再是"零和游戏"
更惊喜的是,Kimi-K2.5 发现了两个跨模态正向迁移现象:
现象一:纯文本 SFT,能激活视觉推理能力。 当前高质量多模态工具调用数据极度稀缺,但高质量纯文本 Agentic 数据(推理、规划、工具使用)非常丰富。由于视觉和文本已在预训练中深度融合,在文本上练出的推理和规划能力会自然迁移到视觉任务上。先练文本,反而让视觉 Agentic 能力的激活效果更好。
现象二:视觉 RL,反过来提升文本长文本推理能力。 研究者的解释:Visual Grounding 这类任务在结构上类似文本中的"结构化信息抽取"——都需要在大量信息中精准定位目标,只是输入的信息分布不同。视觉 RL 实际在强化同一种底层能力,并通过多样化的输入分布提升了模型泛化性。
Kimi-K2.5 完整训练流程
多模态从头融合训练的方案还需再等等,完整训练流程直接参考论文图示即可。

评论0