05: 多模态大模型
核心主题:经典架构演进 + 现代主流范式 + 面试高频考点
来源:Base-LLM 第六部分 + Happy-LLM + 多模态面试准备手册
1. 多模态概述与挑战
多模态:系统处理 2+ 种异构模态(文本/图像/音频/视频),并显式建模其语义关联关系。
关键区分:"多模态" ≠ 多数据源(需异构 + 互补 + 显式对齐/融合);多模态 ≠ 多任务学习(前者是信息来源维度,后者是目标函数维度)。
1.1 五大核心挑战
| 挑战 | 描述 | 代表方法 |
|---|---|---|
| 表示 (Representation) | 异构数据映射到统一空间 | CLIP 共享嵌入空间 |
| 对齐 (Alignment) | 跨模态对应关系 | 对比学习 (InfoNCE) |
| 融合 (Fusion) | 整合多模态信息推理 | Cross-Attention, Q-Former |
| 转换 (Translation) | 跨模态生成(一对多歧义) | Image Captioning, TTS |
| 协同学习 (Co-learning) | 跨模态知识迁移 | Zero-shot, 知识蒸馏 |
1.2 多模态 LLM 架构演进四阶段
阶段1: 连接式 (Connection) 阶段2: 过渡式 (Transition)
BLIP-2, LLaVA, InstructBLIP Flamingo, Idefics
[冻结ViT + 投影层/适配器 + 冻结LLM] [冻结LLM + 内部注入视觉注意力层]
| |
+-- 优点: 训练便宜, 模块化替换 +-- 优点: few-shot ICL, 更深融合
+-- 缺点: 浅层融合, 视觉细节丢失 +-- 缺点: 仍需预训练ViT, Gate调参
+-- 核心: 让LLM自行处理视觉信息 +-- 核心: 在LLM内部做视觉-语言交互
+-- 关键洞察: 高质量数据 > 复杂桥接 +-- 关键洞察: 渐进注入保护语言能力
| |
v v
阶段3: 原生统一 (Native) 阶段4: 端到端全能 (End-to-End Omni)
Chameleon, Janus GPT-4o, Qwen3-Omni, MiniCPM-o
[统一词表 + 单网络 + 自回归NTP] [实时多模态交互 + 全模态I/O]
| |
+-- 优点: 深度跨模态推理 +-- 优点: 实时交互, 全模态统一
+-- 缺点: 需海量数据(10T+), 训练不稳定 +-- 缺点: 工程极复杂, 资源需求极高
+-- 核心: 图像也是token, 一切皆NTP +-- 核心: Thinker-Talker分离, 双工交互
+-- 关键洞察: 理解≠生成, 图像生成是瓶颈 +-- 关键洞察: 模态间对齐需端到端学习
1.3 代表性模型时间线
| 时期 | 模型 | 核心贡献 |
|---|---|---|
| 2021 | CLIP (OpenAI) | 对比学习对齐图文,零样本迁移 |
| 2022 | Flamingo (DeepMind) | 少样本多模态 ICL,Gated X-Attn |
| 2023.01 | BLIP-2 (Salesforce) | Q-Former 桥接冻结模块,参数高效 |
| 2023.04 | LLaVA (UW-Madison) | 极简线性投影 + 视觉指令微调 |
| 2023.06 | InstructBLIP | 指令感知的视觉特征提取 |
| 2023.10 | LLaVA-1.5 | MLP 投影 + 高分辨率 + 强数据配方 |
| 2023.12 | Qwen-VL (阿里) | 多任务多分辨率,Grounding 能力 |
| 2024.02 | InternVL 1.5 (上海AI Lab) | 大视觉编码器 + 动态分辨率 |
| 2024.05 | LLaVA-NeXT / OneVision | 统一图像/视频/多图理解 |
| 2024.09 | Qwen2-VL | Naive Dynamic Resolution + 视频流式 |
| 2024.12 | InternVL 2.5 | 超大规模 + MoE + 开源 SOTA |
| 2025 | Qwen3-Omni / GPT-4o | 全模态输入输出统一 |
2. ViT (Vision Transformer)
2.1 Patch Embedding
核心思想:将图像切成 patch,当作 token 喂给标准 Transformer。
- 典型配置:$224 \times 224$ 图像,$P=16$ → $N = 196$ patches
[CLS]token 用于分类:$y = \text{LN}(z_L^0)$- 位置编码:可学习的 1D 位置向量(2D 插值实现分辨率迁移)
- Patch 投影实现:$\text{Conv2d}(3, d_{model}, \text{kernel\_size}=P, \text{stride}=P)$,即一个步长为 patch 大小的卷积
2.2 架构特性
| 特性 | ViT | CNN |
|---|---|---|
| 归纳偏置 | 极少(无局部性/平移等变性假设) | 强(卷积核 = 局部连接 + 权值共享) |
| 第一层感受野 | 全局(Self-Attention) | 局部(kernel size) |
| 数据需求 | 大(需大规模预训练,如 JFT-300M / ImageNet-21K) | 中等 |
| 扩展性 | 极佳(scaling law) | 有天花板 |
| 复杂度 | $O(N^2)$ where $N = (H \times W) / P^2$ | $O(H \times W \times k^2)$ |
ViT 的核心贡献
证明了 Transformer 是 CV + NLP 统一的通用计算原语。ViT 的成功是后续一切多模态 Transformer 的基础——图像 patch 和文本 token 本质上都是序列元素,可以用同一架构处理。
3. CLIP 与对比学习
3.1 对比学习框架
CLIP 架构(OpenAI, 2021)
双塔模型:Image Encoder (ViT-L/14 或 ResNet-50×64) + Text Encoder (12-layer Transformer, 63M params, GPT-2 style)
两个 encoder 输出经线性投影 + L2 归一化后,在共享 $d=512$ 维空间中做对比学习。
完整架构流程:
Image Encoder (ViT-L/14):
Image (224×224) → 16×16 patches → 196 patch tokens + [CLS]
→ 12-layer Transformer (d=1024, heads=16)
→ [CLS] output → Linear(1024, 512) → L2 Norm → image embedding v_i
Text Encoder (GPT-2 style, modified):
Text → BPE Tokenize (vocab=49152) → max 76 tokens
→ 12-layer Transformer (d=512, heads=8, causal mask)
→ [EOS] token output → Linear(512, 512) → L2 Norm → text embedding t_j
对比学习:
相似度矩阵 S[i,j] = cos_sim(v_i, t_j) × exp(τ) [τ 可学习, 初始 log(1/0.07)]
Loss = symmetric cross-entropy on S
训练目标:在 $N \times N$ 的相似度矩阵上做对称交叉熵(InfoNCE):
$s_{ij} = \text{cos\_sim}(v_i, t_j)$,$\tau$ 为可学习温度参数(初始 $\log(1/0.07) \approx 2.66$)
训练关键细节:
- 数据:400M 图文对(WebImageText,网络爬取 + 清洗),不公开
- Text Encoder 用 [EOS] token(非 [CLS])作为句子表示——因为 causal mask 下 [EOS] 能"看到"所有前文
- Batch size = 32768:每个正样本对有 32767 个负样本,提供充足对比信号(这是 CLIP 成功的关键)
- 温度参数 $\tau$:可学习标量,控制 softmax 分布锐度。初始值使 logit ≈ 14.3,训练后收敛到约 100(分布更尖锐)
- 训练硬件:256 块 V100,训练 12 天(ViT-L/14@336px 版本需 18 天)
面试深入:为什么 CLIP 用对比学习而不用生成式目标?
- 效率:生成式方法(如 image captioning)需要为每张图生成完整文本描述,计算量大且收敛慢
- CLIP 论文实验:对比学习比相同计算量的生成式目标(预测 caption)效率高 4×(相同 FLOP 下 zero-shot 准确率高 4 倍)
- 原因:对比学习只需判断"配不配对"(O(1) per pair),生成需要逐 token 预测完整文本(O(T) per image)
- 代价:对比学习无法生成文本/图像——这正是 CLIP 的局限
3.2 Zero-shot 分类与下游应用
Zero-shot Classification:
1. 对所有类别生成文本: "A photo of a {class_name}."
2. 用 Text Encoder 编码所有类别文本 -> T_1, T_2, ..., T_K
3. 用 Image Encoder 编码测试图像 -> V
4. 计算 cos_sim(V, T_k) for all k
5. softmax(相似度 × exp(τ)) -> argmax 即为预测类别
Prompt Engineering (提升 zero-shot):
基础: "A photo of a {class}."
增强: "A photo of a {class}, a type of pet." (加领域上下文)
集成: 对 80 个 prompt 模板取平均 → +3.5% 提升
CLIP 的下游应用生态:
| 应用 | 如何使用 CLIP | 代表模型 |
|---|---|---|
| VLM 视觉编码器 | 冻结 Image Encoder 提供视觉特征 | LLaVA, MiniGPT-4, InstructBLIP |
| 文生图条件编码 | Text Encoder 编码 prompt → cross-attn 条件 | Stable Diffusion, DALL·E 2 |
| 图像检索 | 图文嵌入在同一空间 → 跨模态最近邻搜索 | 多种检索系统 |
| 图像生成评估 | CLIPScore = cos_sim(生成图, prompt) | FID + CLIPScore 标配 |
| 开放词汇检测 | region embedding 与类别文本匹配 | OWL-ViT, Grounding DINO |
3.3 CLIP 变体与改进
| 模型 | 核心改进 | 技术细节 | 意义 |
|---|---|---|---|
| SigLIP (Google, 2023) | Sigmoid Loss 替代 Softmax | 每对独立计算二分类 loss,无需全局负样本 | 小 batch 也能训练好;被 PaLI/Idefics2 采用 |
| EVA-CLIP (BAAI, 2023) | 高效大 ViT 训练策略 | MIM 预训练 → CLIP 微调;用 EVA 的 1B ViT | 训练稳定,更快收敛 |
| OpenCLIP (LAION) | 开源复现 + DataComp | 用 LAION-2B/5B 开源数据训练;DataComp 找最优数据配方 | 社区可用,持续改进 |
| MetaCLIP (Meta, 2023) | 数据策展算法 | 公开 CLIP 数据筛选算法,用 CommonCrawl 复现 | 证明数据质量 > 数量 |
| DFN | 用小 CLIP 过滤训练数据 | 先训 small CLIP → 过滤 noisy pairs → 训 large CLIP | 自举式数据清洗 |
SigLIP 深度解析
问题:CLIP 的 Softmax InfoNCE 需要全局负样本(依赖大 batch = 32768),分布式训练时需要跨 GPU all-gather 所有 embedding。
SigLIP 方案:改为 Sigmoid 二分类 Loss:
$z_{ij} = +1$ 若 $(i,j)$ 为正对,$-1$ 为负对;$\tau, b$ 为可学习参数
- 本质区别:Softmax = "从 N 个中选最像的"(需全局比较);Sigmoid = "这对像不像"(独立判断)
- 实际效果:batch=4096 的 SigLIP ≈ batch=32768 的 CLIP
- 工程好处:无需跨 GPU all-gather,通信量大幅减少,更适合大规模分布式训练
EVA-CLIP:为什么 MIM 预训练有帮助?
- MIM (Masked Image Modeling):类似 BERT,遮住图像 patch 让 ViT 重建。学到的是视觉结构先验(纹理、形状、空间关系)
- CLIP 微调:在 MIM 基础上做对比学习,学习语义对齐
- 两步好处:MIM 提供稳定初始化 → CLIP 训练更稳定、收敛更快。尤其对超大 ViT (1B+) 效果显著
- EVA-02 ViT-E:4.4B 参数 ViT,用此策略训练,成为 InternVL 等模型的骨干选择
3.4 CLIP 的局限
CLIP 五大局限(面试高频)
- 组合性理解弱:难区分"红杯在蓝盘上" vs "蓝杯在红盘上"(属性绑定失败)。根因:对比学习将整张图/整段文本压缩为单个向量,丢失了结构化关系
- 空间关系差:对物体相对位置关系理解弱。[CLS] 聚合了全局信息但忽略局部空间关系
- 计数能力有限:难以精确数出图像中物体数量。全局表示无法编码精确数量信息
- Bag-of-Words 倾向:对词序不敏感("dog bites man" ≈ "man bites dog")。Text Encoder 虽有 causal mask,但对比目标只看最终 [EOS] 向量相似度
- 无生成能力:是判别模型,不能生成图像或文本。对比学习只学习匹配,不学习条件生成分布
这些正是多模态 LLM 要解决的问题——LLM 的语言生成能力 + CLIP 的视觉表示 = VLM。
面试:CLIP 为什么在 VLM 中作为视觉编码器而非直接使用?
- CLIP 提供的:高质量视觉-语义对齐特征,零样本泛化能力
- CLIP 缺失的:生成能力、细粒度理解、多轮推理
- VLM 的做法:冻结 CLIP ViT → 提取视觉 token → 投影到 LLM 空间 → LLM 负责理解和生成
- 为什么不直接用 CLIP 做 VQA? CLIP 只能算 image-text 相似度(选择题),无法自由回答开放式问题
4. 视觉编码器选型
| 编码器 | 特点 | 适用场景 | 代表模型 |
|---|---|---|---|
| CLIP ViT | 对比学习预训练,图文语义对齐好 | 语义理解为主 | LLaVA, MiniGPT-4 |
| SigLIP | Sigmoid Loss,训练更高效 | 高效训练 | PaLI, Idefics2 |
| DINOv2 | 自监督,空间细粒度强 | 检测/分割/Grounding | Cambrian-1 混合编码 |
| InternViT-6B | 超大 ViT,持续训练 | 追求极致性能 | InternVL 系列 |
| EVA-CLIP | 高效大规模 ViT 训练 | 通用 backbone | 多模型通用 |
面试:视觉编码器如何选?
CLIP ViT:天然图文对齐,适合语义理解(多数 MLLM 的默认选择)。
DINOv2:自监督训练,空间细粒度强(适合检测/分割/Grounding),但缺语言对齐。
混合编码器:Cambrian-1 证明 CLIP + DINOv2 混合可取长补短(语义 + 空间)。
超大 ViT:InternVL 用 6B ViT 追求极致性能,但训练/推理成本高。
5. 模态桥接 (Modality Bridging)
5.1 五种桥接方法对比
| 方法 | 机制 | 视觉Token数 | 代表模型 | 优劣 |
|---|---|---|---|---|
| 线性/MLP 投影 | 简单映射视觉特征到 LLM 空间 | 576+ (全量) | LLaVA, LLaVA-1.5 | 简单高效,但Token多 |
| Q-Former | 可学习 Query 通过 Cross-Attn 聚合 | 32 (压缩) | BLIP-2, InstructBLIP | 信息瓶颈,细节丢失 |
| Perceiver Resampler | Latent queries + Cross-Attn | 64 (固定) | Flamingo, Idefics | 变长→固定,但压缩 |
| Gated Cross-Attention | LLM 内部插入视觉注意力层 | 64 | Flamingo | 深度融合,但需调Gate |
| Spatial Pooling | 空间下采样减少 Token 数 | 可变 (压缩后) | LLaVA-NeXT, Cambrian | 保留空间结构,灵活 |
5.2 BLIP-2: Q-Former
核心设计:轻量信息瓶颈
Q-Former (188M params) 作为冻结 Vision Encoder 和冻结 LLM 之间的桥梁。
32 个可学习 Query Vectors 通过 Cross-Attention 从视觉特征中提取最相关信息。
结构:两个子模块共享 Self-Attention 层:
- Image Transformer:有 Cross-Attention 到 vision encoder output
- Text Transformer:处理文本(类似 BERT)
两阶段预训练:
| 阶段 | 冻结 | 训练 | 目标 |
|---|---|---|---|
| Stage 1: VL Representation | Image Encoder | Q-Former | ITC + ITM + ITG |
| Stage 2: VL Generation | Image Encoder + LLM | FC Layer | LLM 生成(Q-Former输出作soft visual prompts) |
Stage 1 的三个目标:
- ITC (Image-Text Contrastive):单模态 mask,对齐图文表示
- ITM (Image-Text Matching):双向 mask,二分类匹配
- ITG (Image-grounded Text Generation):因果 mask,生成文本描述
效果:比 Flamingo-80B 少 54 倍可训练参数,VQAv2 zero-shot +8.7 points。
Q-Former 的局限
- 信息瓶颈:32 个 Query 压缩全图信息,高分辨率细节丢失
- OCR/细粒度任务弱:压缩后难以保留字符级细节
- 与 LLaVA 的对比:LLaVA 保留全量视觉 Token 让 LLM 自行选择,反而效果更好
5.3 LLaVA 系列
LLaVA v1 (2023.04)
LLaVA = CLIP ViT-L/14 + Linear Projection + Vicuna LLM
最简单的连接方式:一个线性层将视觉特征投影到 LLM 的文本空间。
Image -> CLIP ViT -> [N visual tokens] -> Linear W -> LLM input space
|
Text -> Tokenize -> [text tokens] ------------------> Concat -> LLM -> Response
两阶段训练:
| 阶段 | 冻结 | 训练 | 数据 |
|---|---|---|---|
| Feature Alignment | ViT + LLM | Linear W only | 595K 图文对 |
| Visual Instruction Tuning | ViT | W + LLM | 158K 指令数据 |
LLaVA-1.5 (2023.10) — 关键改进
| 维度 | LLaVA v1 | LLaVA-1.5 | 效果 |
|---|---|---|---|
| 投影层 | Linear (1层) | MLP (2层 + GELU) | 更强非线性映射能力 |
| 分辨率 | 224px | 336px | OCR/细粒度大幅提升 |
| 数据 | 158K | ~1.2M (混入学术VQA) | 多能力均衡 |
| LLM | Vicuna-13B | Vicuna-13B / Mistral-7B | 更强基座 |
LLaVA 的核心启示
简单架构 + 高质量数据 + 正确训练策略 > 复杂架构。
LLaVA-1.5 仅用 ~1.2M 数据就超越了使用数十M数据的更复杂模型。证明数据质量 > 数量。
为什么两层 MLP 比线性投影好?单层线性映射表达力有限,两层 MLP 可学习更复杂的非线性视觉→语言映射。配合高分辨率 + 更丰富数据带来显著提升。
5.4 Flamingo: 过渡架构
三大创新:
- Perceiver Resampler:固定可学习 latent queries + Cross-Attention → 将变长视觉输入压缩为固定 64 个 visual tokens
- Gated XATTN-DENSE:在冻结 LLM 层之间注入 Cross-Attention;tanh gate 初始化为 0
- Masked Cross-Attention:每个文本 token 只关注其紧邻的前一张图片(非所有图片)
Tanh Gate 设计精妙之处
Gate = $\tanh(\alpha)$,$\alpha$ 初始化为 0 意味着:
- 训练开始时 gate = 0,Cross-Attention 输出被完全屏蔽
- 模型等价于纯文本 LLM(保护预训练语言能力)
- 随着训练进行,$\alpha$ 逐渐增大,视觉信息渐进"渗入"
这实现了从纯语言到多模态的平滑过渡,避免了随机初始化的 Cross-Attention 破坏预训练能力。
训练数据:M3W (43M 网页),交错的图文序列,天然支持 few-shot ICL。
5.5 InstructBLIP
BLIP-2 的指令感知改进:Q-Former 提取视觉特征时 也接收文本指令作为输入,使得提取的视觉信息与当前问题相关(而非提取通用视觉表示)。
例如:问"图中有几只猫"时,Q-Former 会有倾向地提取与猫相关的视觉特征。
6. 主流 MLLM 架构深度解析
本节对当前最具代表性的 MLLM 系列做架构级深度拆解,覆盖设计动机、关键技术细节和工程取舍。
6.1 Qwen-VL 系列
Qwen-VL (2023.12)
核心设计:多任务多分辨率 + Grounding
Qwen-VL 是首个在单一模型内同时支持多粒度理解 + 定位(Grounding)+ OCR的开源 MLLM。
架构:
Image (448×448) → ViT-G/14 (1.9B, OpenCLIP) → 256 visual tokens
→ Position-aware Cross-Attention Adapter (256→256 queries)
→ Qwen-7B LLM → Response
特殊 Token 设计:
<img> ... </img> 图像边界标记
<ref> ... </ref> 引用文本区域
<box> (x1,y1),(x2,y2) </box> 归一化坐标 (0-1000 整数)
关键创新:
- Bounding Box Token:将定位任务转化为文本生成——模型直接输出坐标文本,无需额外检测头
- 多分辨率输入:Stage 1 用 224px,Stage 2 提升到 448px,渐进提高视觉分辨率
- 三阶段训练:(1) 大规模图文预训练 (1.4B pairs) → (2) 多任务混合微调 (含 Grounding/OCR/VQA) → (3) 对话式指令微调
- Position-aware Adapter:类 Q-Former 的 Cross-Attention,但加入 2D 绝对位置编码保留空间信息
Qwen2-VL (2024.09) — 架构级跃升
三大核心创新
- Naive Dynamic Resolution:彻底抛弃固定分辨率 / 预设切片网格
- Multimodal RoPE (M-RoPE):统一处理文本位置、图像 2D 空间、视频时间维度
- 视频原生流式理解:视频 = 动态分辨率帧序列,支持 20min+ 视频
Naive Dynamic Resolution 详解:
传统方案 (LLaVA-NeXT/InternVL):
输入图像 → 匹配最佳切分网格 (如 2×3) → 每个子图独立编码 → 拼接
问题: 预设网格有限,宽高比匹配不精确
Qwen2-VL Naive Dynamic Resolution:
输入图像 (任意 H×W)
→ ViT 直接处理任意大小 (去掉固定位置编码)
→ 输出 (H/14) × (W/14) 个 patch tokens
→ 2×2 Spatial Merge (每 4 个相邻 token 合并为 1 个)
→ 最终 Token 数 = H×W / (14×14×4)
示例: 1344×768 图像 → 96×55 patches → merge 后 ≈ 1320 tokens
672×384 图像 → 48×27 patches → merge 后 ≈ 324 tokens
M-RoPE (Multimodal Rotary Position Embedding):
将 RoPE 的维度分为三组 $(d/3, d/3, d/3)$,分别编码 temporal / height / width。对文本 token 三组 ID 相同,退化为标准 1D RoPE。对图像 token 时间维固定、空间维编码行列位置。对视频 token 时间维随帧递增。
ViT 架构改进:
- 去掉绝对位置编码 → 用 2D-RoPE 替代 → 天然支持任意分辨率
- ViT 参数量:675M (Qwen2-VL-7B) / 675M (72B 共享同一 ViT)
- Window Attention in ViT(降低超高分辨率时的计算开销)
面试:Qwen2-VL vs LLaVA-NeXT 高分辨率方案对比
| 维度 | LLaVA-NeXT (Tiling) | Qwen2-VL (Naive DR) |
|---|---|---|
| 分辨率适配 | 预设切分网格匹配 | 任意分辨率直接处理 |
| 位置编码 | 每个子图独立编码,子图间无空间关系 | M-RoPE 统一编码全局位置 |
| Token 数控制 | 子图数 × 每图 Token | Spatial Merge 2×2 压缩 |
| 视频扩展 | 需额外设计帧级处理 | 天然支持(增加时间维) |
| 实现复杂度 | 低(标准 ViT 不动) | 中(需改 ViT 位置编码) |
6.2 InternVL 系列
设计哲学:大视觉编码器 + 渐进对齐
核心论点
InternVL 系列的核心主张:视觉编码器的能力上限决定了 MLLM 的能力上限。因此投入大量参数到 ViT 端(6B params),而不是仅仅依赖更大的 LLM。
InternVL 1.5 (2024.02)
架构:
InternViT-6B (自研, 持续训练)
→ Dynamic High-Resolution: 图像切分为 1-12 个 448×448 子图
→ 每个子图 → 1024 tokens → PixelShuffle 4× 压缩 → 256 tokens/子图
→ MLP Projector → InternLM2-Chat (20B / 76B)
PixelShuffle Token 压缩:
输入: (H, W, C) 的 token grid
→ reshape 为 (H/2, W/2, 4C) [空间降 4 倍,通道扩 4 倍]
→ Linear(4C → C) 映射回原始维度
→ 效果: 每 4 个空间相邻 token 合并为 1 个,保留空间信息
关键设计:
- Thumbnail + Tiles:始终包含一张全图缩略图(提供全局语义)+ 多张裁切子图(提供局部细节)
- InternViT-6B 持续训练:在 CLIP 预训练基础上,用更高质量数据持续训练 ViT,避免从头训练
- 动态子图数量:根据图像分辨率和宽高比,自动选择 1-12 个子图(小图 1 个,大图最多 12 个)
InternVL 2.0 / 2.5 (2024.07-12)
| 版本 | LLM 骨干 | 关键改进 | SOTA 成绩 |
|---|---|---|---|
| InternVL 2.0 | InternLM2 / Nous-Hermes-2 / Yi-1.5 | 多 LLM 骨干、更强 MLP Projector | OCRBench #1, MMBench top-3 |
| InternVL 2.5 | InternLM2.5 (7B-78B) | MoE 变体 + 超长图文交错 | 多项开源 SOTA |
面试:为什么 InternVL 用 6B 的超大 ViT?
- 视觉瓶颈假说:多数 MLLM 用冻结 CLIP ViT-L (300M),视觉特征上限低。即使 LLM 有 70B,看到的视觉信息质量取决于 300M ViT 的能力
- Scaling 视觉端:InternViT-6B 比标准 ViT-L 参数多 20x,能提取更丰富的视觉细节
- 代价:推理时视觉编码阶段显著变慢,不适合延迟敏感场景
- 折中方案:InternVL 2.5 提供 1B/2B/4B/8B 多尺寸 ViT 适配不同需求
6.3 DeepSeek-VL2 (2024.12)
核心创新:MoE + Dynamic Tiling + 混合视觉编码
首个将 MoE 架构深度集成到 MLLM 的开源模型,实现参数效率与多模态能力的平衡。
架构:
SigLIP-SO (400M, 384px) — 语义视觉编码
+ SAM-B (86M) — 高分辨率细节编码(OCR/小物体)
→ Dynamic Tiling (最多 9 tiles × 384px)
→ 每 tile → 576 tokens → 2×2 Spatial Merge → 144 tokens
→ MLP Projector
→ DeepSeek-MoE LLM (16B total, 2.4B activated)
MoE 路由策略:
- 视觉和文本 Token 共享同一组 Expert
- 路由器自动学习模态分配(无强制分流)
- 实验发现: 部分 Expert 确实自发分化为"视觉特化"
混合视觉编码器的动机:
- SigLIP:擅长语义级理解(物体识别、场景描述),但 384px 分辨率对小文字 OCR 不够
- SAM-B:Segment Anything 的 backbone,擅长高分辨率空间细节(边缘、纹理、小字符)
- 互补逻辑:SigLIP 提供"是什么",SAM-B 提供"在哪里 + 长什么样"
6.4 CogVLM / GLM-4V
核心创新:Visual Expert — 在 LLM 内部为视觉 Token 设专属通路
不同于 LLaVA 的"投影后混入"方案,CogVLM 为 LLM 每层新增一套 视觉专属 QKV + FFN(Visual Expert),让视觉 Token 和文本 Token 在同一层用不同参数处理。
标准 LLaVA 方案:
Visual tokens + Text tokens → 共享 Attention + 共享 FFN
CogVLM Visual Expert 方案:
每个 Transformer Layer:
Text tokens → Text QKV (原始预训练权重, 冻结) → Text FFN (冻结)
Visual tokens → Visual QKV (新增, 可训练) → Visual FFN (新增, 可训练)
Cross-modal: Attention 中 text 和 visual tokens 互相可见
参数量:
原始 LLM: ~7B (冻结)
Visual Expert: ~6B (新增, 每层一套)
总计: ~17B (但推理时全量都参与)
为什么 Visual Expert 优于纯投影?
- 深度融合:视觉信息在每一层都有专属变换,而非仅在输入层做一次投影
- 保护语言能力:文本通路权重冻结不动,避免多模态训练损害语言能力
- 等价于模态分流:类似 Mixture-of-Modality-Experts 思想,但用硬编码路由而非学习路由
Visual Expert 的代价
- 参数量翻倍:每层新增 QKV + FFN ≈ 额外一倍 LLM 参数
- 推理开销大:所有层都需要额外计算视觉通路
- 趋势:后续主流方案更倾向 Qwen2-VL / InternVL 的投影 + 高分辨率路线(更轻量),CogVLM 路线没有被广泛跟随
6.5 MiniCPM-V 系列 (面壁智能)
定位:端侧高效部署的 MLLM,追求极致参数效率。
| 版本 | 参数量 | 核心创新 | 特色 |
|---|---|---|---|
| MiniCPM-V 2.0 | 2.4B | Cross-Attention 视觉注入 | 首个手机可跑的 VLM |
| MiniCPM-V 2.5 | 8B | Adaptive Visual Encoding + 高分辨率 | OCR 能力媲美商业模型 |
| MiniCPM-V 2.6 | 8B | 统一图像/视频/多图 | 实时视频理解 |
| MiniCPM-o 4.5 | 9B | 全双工 Omni (音视频文) | 端侧全模态,Int4 量化 11GB |
Adaptive Visual Encoding 策略:
- 根据图像复杂度动态决定视觉 Token 数量(简单图用少 Token,复杂图用多 Token)
- Token 预算由模型自适应分配,无需人工设定切分网格
- 结果:8B 模型在 OCRBench/DocVQA 上达到 InternVL-76B 级别
6.6 模型选型决策树
实际选型指南
你的需求是什么?
├── 学术研究 / Benchmark SOTA
│ ├── 开源 → InternVL 2.5 (78B) / Qwen2-VL (72B)
│ └── 闭源对标 → GPT-4o / Gemini Pro
├── 工业落地(服务端)
│ ├── 通用多任务 → Qwen2-VL-7B (平衡性能与成本)
│ ├── 强 OCR/文档 → InternVL 2.5 + 大 ViT
│ └── 多模态 Agent → Qwen2-VL (工具调用能力强)
├── 端侧部署
│ ├── 手机/IoT → MiniCPM-V 2.6 (8B, Int4=4GB)
│ └── 全双工交互 → MiniCPM-o 4.5
└── 定制化开发
├── 需要深度融合视觉 → CogVLM 路线
├── 需要 MoE 效率 → DeepSeek-VL2
└── 快速原型 → LLaVA-NeXT (最简架构)
| 模型 | 视觉编码器 | 桥接 | LLM | 高分辨率方案 | 核心优势 |
|---|---|---|---|---|---|
| Qwen2-VL-7B | ViT-675M | Spatial Merge | Qwen2-7B | Naive Dynamic Resolution | 任意分辨率、视频原生 |
| InternVL 2.5 | InternViT-6B | MLP + PixelShuffle | InternLM2.5 | Dynamic Tiling (1-12) | 超强 OCR、大 ViT |
| DeepSeek-VL2 | SigLIP + SAM-B | MLP | DeepSeek-MoE | Dynamic Tiling (1-9) | MoE 效率、混合编码 |
| CogVLM2 | EVA-CLIP | Visual Expert | Llama3 | Tiling | 深度融合、不损语言 |
| MiniCPM-V 2.6 | SigLIP | Adaptive Encoding | Qwen2-7B | 自适应 Token 预算 | 端侧效率、实时视频 |
7. 高分辨率处理
为什么需要高分辨率?
224/336px 对 OCR、小物体识别严重不足。字符级细节在低分辨率下模糊不清。
| 方法 | 原理 | 代表模型 | 优缺点 |
|---|---|---|---|
| 图像切片 (Tiling) | 高分辨率图切成多个子图分别编码再拼接 Token | LLaVA-NeXT, InternVL | 保留细节,但Token数暴增 |
| 动态分辨率 | 根据图像宽高比决定切分方式 | Qwen2-VL (Naive Dynamic Resolution) | 灵活适配不同比例 |
| Spatial Pooling | 空间下采样减少 Token 数 | LLaVA-NeXT, Cambrian | 平衡细节与效率 |
代价:高分辨率切片可达 2000+ 视觉 Token,增加 Prefill 计算和 KV Cache 带宽压力。通常通过 Spatial Pooling / Token Merging 缓解。
8. 训练策略
8.1 两/三阶段训练
| 阶段 | 目标 | 冻结 | 训练 | 数据 |
|---|---|---|---|---|
| Stage 1: 预训练对齐 | 学视觉→语言空间映射 | ViT + LLM | 投影层 only | 大规模图文对 (CC3M/12M, LAION) |
| Stage 2: 指令微调 | 学习遵循多模态指令 | ViT (可选解冻) | 投影层 + LLM | 高质量指令数据 (150K-1.2M) |
| Stage 3 (可选) | 高质量对齐 / 偏好对齐 | - | 全模型 / LoRA | 偏好数据 / 精选数据 |
核心原则
- Stage 1 学习映射,Stage 2 学习指令遵循——不要跳过 Stage 1
- Stage 2 中混入纯文本对话数据防止语言能力退化
- 数据质量 > 数量(LLaVA-1.5 用 1.2M 超越数十M数据的模型)
8.2 数据工程
| 数据类型 | 来源 | 作用 |
|---|---|---|
| 预训练对齐数据 | LAION, CC3M/12M, DataComp | 学视觉-语言映射 |
| 指令微调数据 | LLaVA-Instruct, ShareGPT4V, ALLaVA | 学多模态指令遵循 |
| 纯文本对话 | ShareGPT, OpenOrca | 防语言能力退化 |
| 多任务混合 | VQA + OCR + Grounding + Chart + 推理 | 均衡多能力 |
数据合成:用 GPT-4V 生成高质量标注(LLaVA 核心创新:符号化描述 + GPT-4 = 不需要 GPT-4V "看到"图片)。
数据配比:不同任务数据的混合比例对模型能力影响巨大,需大量消融实验。
8.3 视觉编码器冻结 vs 解冻
| 策略 | 优点 | 缺点 | 何时用 |
|---|---|---|---|
| 冻结 ViT | 保留强视觉表示,训练稳定,成本低 | 无法适配下游特定任务 | 默认选择 |
| 解冻 ViT | 可适配下游(OCR/细粒度提升明显) | 灾难性遗忘风险,训练不稳定 | OCR/细粒度任务需要时 |
解冻 ViT 注意事项:需小学习率(通常比 LLM 小 10x),可能导致对齐漂移。
9. 理解与生成统一
核心矛盾
理解需要高层语义压缩("这是一只猫"),生成需要低层像素细节(每个像素值)。
一个表示很难同时做好两者——这是理解-生成统一的核心挑战。
9.1 离散 Token 路线 (Autoregressive NTP)
用 VQ-VAE/VQ-GAN 将图像编码为离散 Token,与文本统一为 next-token prediction。
- 代表模型:Emu3, Chameleon
- Chameleon:统一词表 65,536 tokens(8,192 image codebook + text tokens)
- 图像 Tokenizer:$512 \times 512$ → 1024 离散 image tokens
- 混合序列:image + text tokens 直接拼接,单个 Transformer 处理
- 所有任务 = 自回归 next-token prediction
挑战:Codebook 限制重建质量;图像生成任务导致训练不稳定(需 QK-Norm + Z-loss + Norm Reordering)。
9.2 双解码器路线
理解用连续特征 + LLM,生成用扩散模型。两个解码器共享部分参数或表示。
- 代表模型:Janus, SEED-X
- 理解路径:ViT 特征 → LLM → 理解输出
- 生成路径:LLM 输出 → 扩散模型 Decoder → 生成图像
挑战:模型复杂、训练成本高、两路对齐困难。
9.3 原生统一架构
GPT-4o
全模态原生:单一网络端到端处理 text + vision + audio
- 替代之前的级联方案(ASR → LLM → TTS)为统一模型
- 语音响应延迟低至 232ms
- 支持实时语音中断和情感表达
Qwen3-Omni
Thinker-Talker 双 MoE 架构:
- AuT(Audio Transformer):650M params, 20M hours 音频训练
- Thinker:30B-A3B MoE(推理引擎)
- Talker:3B-A0.3B MoE(语音生成,接收 Thinker 的表示)
- 端到端延迟:音频 234ms,视频 547ms
MiniCPM-o 4.5 (全双工 + 边缘部署)
- 全双工:同时听 + 想 + 说
- 使用
[silent]占位 token 维持流式节奏 - 9B 总参数,Int4 量化后 11GB 显存可跑
10. 视频理解
核心挑战:Token 爆炸
1分钟视频 @1fps ≈ 60帧 × 576 tokens/帧 = 34K tokens,远超 LLM 常见上下文长度。
| 方案 | 原理 | 代表模型 |
|---|---|---|
| 均匀/关键帧采样 | 稀疏采帧减少Token数 | Video-LLaVA, VideoChat |
| 帧级池化 | 每帧 Spatial Pooling 减少Token后送入LLM | LLaVA-Video |
| SlowFast 双速 | 低帧率全局 + 高帧率局部 | SlowFast 思路 |
| 统一帧序列 | 视频视为动态分辨率帧序列统一处理 | Qwen2-VL |
| 分层建模 | clip级 → frame级 → event级 | 长视频理解 |
11. 多模态幻觉
定义:模型生成与图像不一致的描述(Object Hallucination 最典型——描述图中不存在的物体)。
成因
- 语言先验过强:LLM 按统计规律编造不存在物体(如"草地上的羊"虽图中无羊)
- 视觉注入不足:视觉信息未充分影响生成
- 训练数据偏见:常见物体过度代表
- 位置偏差:倾向关注图像中心/前方位置
评估
| 评估集 | 方法 |
|---|---|
| POPE | 二分类:物体是否存在(Polling-based) |
| CHAIR | 幻觉比例:生成描述中不存在的物体占比 |
| MMHal-Bench | 多维度幻觉评估 |
缓解方法
| 方法 | 原理 |
|---|---|
| RLHF-V | 偏好对齐:偏好与图像一致的回答 |
| VCD (Contrastive Decoding) | 对比有/无图像时的输出差异,削弱语言先验 |
| OPERA | 惩罚注意力过度集中的模式 |
| 视觉特征增强 | 增强视觉信号注入强度 |
| 数据去偏 | 减少训练数据中的共现偏差 |
12. 多模态 MoE
MoE 在多模态中的特殊考量
- 路由策略:视觉/文本 Token 是否路由到不同 Expert?
- 负载均衡:跨模态 Token 分布差异大,需跨模态负载均衡
- 模态特化:Expert 可能自发分化为"视觉专家"/"语言专家"
实例:DeepSeek-VL2、InternVL 2.5 MoE 变体。
13. 评估体系
| 层次 | 评估集 | 评估能力 |
|---|---|---|
| 基础感知 | MME, MMBench, SEED-Bench | 视觉理解基础 |
| 推理 | MathVista, ScienceQA | 数学/科学推理 |
| OCR/文档 | OCRBench, TextVQA, DocVQA, ChartQA | 文字/文档理解 |
| 幻觉 | POPE, CHAIR, MMHal-Bench | 真实性 |
| 真实场景 | RealWorldQA | 开放域理解 |
| 综合排名 | OpenCompass, LMSYS Vision Arena | 综合能力 |
14. 架构对比总结
| 模型 | 类型 | 视觉编码器 | 桥接方式 | 训练成本 | 跨模态深度 | 细粒度能力 |
|---|---|---|---|---|---|---|
| BLIP-2 | 连接式 | 冻结 ViT | Q-Former (32Q) | 低 | 浅 | 弱(压缩) |
| InstructBLIP | 连接式 | 冻结 ViT | 指令感知 Q-Former | 低 | 浅 | 中 |
| LLaVA | 连接式 | 冻结 CLIP | Linear | 极低 | 浅 | 弱(低分辨率) |
| LLaVA-1.5 | 连接式 | 冻结 CLIP | MLP + 高分辨率 | 低 | 浅 | 强 |
| Flamingo | 过渡式 | 冻结 NFNet | Perceiver + Gated XATTN | 中 | 中 | 中 |
| InternVL 2.5 | 连接式(强) | InternViT-6B | MLP + 动态分辨率 + MoE | 高 | 中深 | 极强 |
| Chameleon | 原生统一 | Image Tokenizer | 统一词表 NTP | 极高 | 深 | 中 |
| GPT-4o | 原生统一 | 内置 | 端到端 | 极高 | 深 | 极强 |
| Qwen3-Omni | 端到端 | AuT + ViT | Thinker-Talker MoE | 极高 | 深 | 强 |
面试要点总结
高频面试题(15题)
- ViT 的核心贡献? 证明了 Transformer 是 CV+NLP 统一的通用计算原语,无需 CNN 归纳偏置
- CLIP 训练为什么需要大 batch? InfoNCE 依赖充足负样本。原始 batch=32768。SigLIP 用 Sigmoid Loss 减少依赖
- CLIP 的五大局限? 组合性弱、空间差、计数弱、BoW倾向、无生成能力
- CLIP 用在哪些下游模型? Stable Diffusion(文本条件编码器)、LLaVA(视觉编码器)、DALL-E(评估)
- BLIP-2 的 Q-Former 为什么用 32 个 query? 信息瓶颈设计:强迫模型只提取最相关的视觉信息给 LLM。但这也导致高分辨率细节丢失
- LLaVA vs BLIP-2 架构核心区别? BLIP-2 用 Q-Former 压缩到 32 Token,LLaVA 保留全量 576+ Token 让 LLM 自行选择。LLaVA 的成功表明:让 LLM 自行处理视觉信息 + 高质量数据 > 精心设计的压缩桥接
- 为什么 LLaVA-1.5 用两层 MLP 替代线性投影? 单层线性映射表达力有限,两层 MLP 能学习更复杂的非线性视觉→语言映射。配合 336px + 更丰富数据带来显著提升
- Flamingo 的 tanh gate 为什么初始化为0? 保证训练初期 cross-attn 输出被屏蔽,模型等价于原始 LLM。避免随机初始化的 cross-attention 破坏预训练语言能力,实现从语言到多模态的平滑过渡
- 视觉编码器选型:CLIP ViT vs DINOv2 vs SigLIP? CLIP ViT:天然图文对齐,适合语义理解;DINOv2:自监督,空间细粒度强,但缺语言对齐;SigLIP:性能接近CLIP但更高效;Cambrian-1 证明混合编码器取长补短
- 连接式 vs 原生统一的本质区别? 连接式=冻结单模态编码器+适配器(浅融合,训练便宜);原生=统一词表单网络(深度跨模态推理,需海量数据)
- 理解-生成统一的核心矛盾? 理解要语义压缩 vs 生成要像素细节。离散Token路线(Chameleon)受codebook限制,双解码器路线(Janus)复杂度高
- 视频理解的核心挑战? Token爆炸(1min@1fps=34K tokens)。方案:稀疏采帧、帧级池化、SlowFast双速、动态分辨率帧序列
- 多模态幻觉成因和缓解? 成因:语言先验过强/视觉注入不足/数据偏见。缓解:RLHF-V、VCD对比解码、OPERA、数据去偏
- 高分辨率为什么重要? OCR/细粒度任务需要字符级细节。方案:Tiling切片、动态分辨率(Qwen2-VL)、Spatial Pooling压缩
- MoE 在多模态中的特殊考量? 路由策略(视觉/文本Token是否路由到不同Expert)、跨模态负载均衡、Expert可能自发分化为模态特化专家