Skip to content

多模态大模型架构深挖(VLM)

「图片是怎么进到 LLM 里的?」是多模态面试的核心问题。本文深挖视觉语言模型(VLM)的架构:视觉编码器、连接器(projector)、特征对齐、原生多模态,以及高分辨率/视频的处理。多模态总览见 多模态大模型,检索见 多模态 RAG

一、核心问题:模态鸿沟

LLM 只懂 token(文本嵌入向量)。图片是像素,不是 token。VLM 要解决的就是把视觉信息变成 LLM 能消化的「视觉 token」,并和文本 token 对齐到同一个表示空间。

图片像素 ──视觉编码器──► 视觉特征 ──连接器──► 视觉 token ──┐
                                                          ├──► LLM ──► 文本输出
文本 ──────分词+嵌入──────────────────────► 文本 token ──┘

二、三大组件

1. 视觉编码器(Vision Encoder)

把图片编码成特征向量。主流是 ViT(Vision Transformer):把图片切成 patch(如 16×16),每个 patch 当一个「视觉 token」过 Transformer。

  • 最常用 CLIP 的视觉编码器——它在图文对上预训练过,特征已经和语言「对齐」过,是 VLM 的事实标准起点。
  • 也有用 SigLIP 等更新的图文对比编码器。

2. 连接器 / 投影器(Connector / Projector)

视觉编码器的输出维度、语义空间和 LLM 的文本嵌入空间不一致,需要一个「翻译模块」把视觉特征映射成 LLM 能吃的「视觉 token」:

连接器类型做法代表
MLP / 线性投影简单几层全连接做映射LLaVA(简单有效,主流)
Q-Former / Resampler用少量可学习 query 通过注意力「压缩」视觉特征BLIP-2、Flamingo
像素 Shuffle / 像素重排把空间 patch 重排成更少 tokenQwen2-VL、InternVL 2.5
Cross-Attention 注入在 LLM 层间插交叉注意力读图像Flamingo
  • LLaVA 证明了简单 MLP 投影 + 好数据就能做出强 VLM,是性价比最高的路线,被广泛沿用。
  • Q-Former/Resampler 把几百个 patch 压成固定的几十个 token,省 token、控成本,适合 patch 多的场景。

3. LLM 主干

接收「视觉 token + 文本 token」的混合序列,像处理纯文本一样自回归生成回答。多数 VLM 直接复用现成的开源 LLM(LLaMA/Qwen 等)。

三、两种融合方式

早期融合 / 适配器(主流)原生多模态
做法预训练 LLM + 视觉编码器,用连接器拼起来再微调从头在文本+图像+音频上联合预训练
代表LLaVA、Qwen2-VL、InternVL 2.5GPT-4o/GPT-5、Gemini 2.5
优点复用现成 LLM,便宜、快模态融合更深、能力上限更高
缺点视觉是「外挂」,融合较浅训练成本极高

趋势:从「给 LLM 外挂眼睛」(适配器路线)走向「原生多模态」——从预训练就把多种模态当一等公民联合建模(GPT-4o 的实时音视频、统一 token 空间)。原生路线模态融合更深,但只有大厂训得起。

四、训练流程(适配器路线)

通常两到三阶段:

阶段一  对齐预训练:冻结视觉编码器和 LLM,只训连接器
        (用海量图文对,让视觉 token「翻译」到 LLM 空间)
阶段二  指令微调:解冻 LLM(视觉编码器常仍冻结或小学习率)
        (用多模态指令数据,学会「看图回答问题」)

关键认知:视觉编码器的图文对齐能力主要靠 CLIP 预训练已经获得,VLM 训练重点是「教 LLM 读懂视觉 token」和「对齐指令」,而非从零学视觉。

五、高分辨率与视频的难题

patch 化的硬伤:分辨率越高 patch 越多,视觉 token 数量爆炸(成本和上下文压力)。

  • 高分辨率:切分成子图分别编码(AnyRes/动态分辨率),或用 Resampler 压缩 token 数。Qwen2-VL 用动态分辨率 + 像素 shuffle,能处理任意分辨率和长宽比。InternVL 2.5 采用类似策略并在文档/图表理解上表现出色。文档/图表理解尤其依赖高分辨率(否则小字看不清)。
  • 视频:帧数 × 每帧 patch 数 = token 海啸。要抽帧、时序压缩、或用专门的时空编码(见 视频生成 的时空 patch 思想)。
  • 这也是 ColPali 等「直接编码文档截图」方案要解决的成本核心(见 多模态 RAG)。

高频追问

Q:图片是怎么输入到 LLM 里的? 三步:① 视觉编码器(通常 CLIP ViT)把图片切 patch 编码成视觉特征;② 连接器(MLP 或 Q-Former)把视觉特征映射成 LLM 嵌入空间里的「视觉 token」;③ 视觉 token 和文本 token 拼成一个序列喂给 LLM,自回归生成。核心是把图片变成 LLM 能消化的 token。

Q:为什么视觉编码器常用 CLIP 的? CLIP 在海量图文对上做对比学习预训练,它的视觉特征已经和语言语义对齐——「狗的图片」特征和「狗」这个词的特征接近。这让后续把视觉特征接入 LLM 容易得多,不用从零学「视觉↔语言」的对应。

Q:连接器(projector)的作用是什么?MLP 和 Q-Former 怎么选? 把视觉特征翻译成 LLM 能吃的视觉 token(对齐维度和语义空间)。MLP 简单、保留全部 patch、效果好(LLaVA 路线),主流首选;Q-Former/Resampler 用少量 query 压缩视觉 token 数量,省 token、控成本,适合 patch 很多(高分辨率/视频)的场景。

Q:适配器路线和原生多模态有什么区别? 适配器路线是「现成 LLM + 视觉编码器用连接器拼起来再微调」,便宜快但融合浅(视觉像外挂);原生多模态从预训练就联合建模多种模态(统一 token 空间),融合深、上限高(GPT-4o/Gemini),但训练成本极高。趋势是从适配器走向原生。

Q:VLM 训练为什么常冻结视觉编码器? 因为视觉编码器(CLIP)的图文对齐能力已经预训练好了,VLM 的重点是教连接器和 LLM「读懂并使用」视觉 token。冻结编码器省算力、防止小数据破坏已学好的视觉表示;对齐阶段甚至连 LLM 也冻结,只训连接器。

Q:VLM 处理高分辨率图/视频的瓶颈是什么? patch 数量。分辨率/帧数一高,视觉 token 数量爆炸,吃满上下文且推理变贵。对策:动态分辨率切子图、Resampler 压缩 token、视频抽帧+时序压缩。文档理解类任务对分辨率敏感(小字、表格),是当前 VLM 的难点之一。

基于 MIT 许可发布