跳转到内容

BLIP-2 — 用 188M 小桥接器把冻结的视觉模型和大语言模型拼起来

是什么

BLIP-2 是一个多模态训练方案,让你不用动已有的视觉模型(比如 ViT)和大语言模型(比如 OPT),只在中间插一个很小的桥接器 Q-Former,就能让一个本来只会看图的模型和一个本来只会读字的模型协作回答 “图里这个东西是什么”。

日常类比:你请了一个只会看图的画家和一个只会写字的作家,他们语言不通。BLIP-2 的做法不是让两位都重新学一门语言,而是雇一个翻译站在中间——翻译只学一件事:“看画家给我看的画,挑 32 个关键点告诉作家”。

这个 “翻译” 就是 Q-Former,参数量只有 188M(一台普通显卡放得下),而它两边的画家和作家可能各自上百亿参数。

为什么重要

不理解 BLIP-2 看不懂下面这些事:

  • 为什么 2023 年开始,LLaVA / MiniGPT-4 / InstructBLIP / Qwen-VL 这些开源多模态模型雨后春笋——它们的桥接器几乎都抄 Q-Former 或它的简化版
  • 为什么 “冻结大模型只训中间一小块” 成了多模态的事实标准——比 Flamingo 那种端到端训百亿参数省 54 倍可训参数
  • 为什么消费级显卡也能微调出能用的 VLM——你只需要训 188M 那一块
  • 为什么如今 ChatGPT / Claude 上传图片功能背后的设计思路,最早是这篇论文落地的

核心要点

BLIP-2 的关键是两阶段训练 + 一个 Q-Former

  1. Q-Former(Querying Transformer):32 个可学习的 query 向量(每个 768 维),通过 cross-attention 从冻结视觉编码器里 “采” 视觉特征。它同时是视觉端的特征提取器语言端的 soft prompt 生成器

  2. 第一阶段——表示学习:冻结 ViT,让 Q-Former 学会 “把图片变成 32 个有用的 token”。三个训练目标同时跑——图文对比(ITC)让相关图文靠近、图文匹配(ITM)做二分类、图描述生成(ITG)做自回归。

  3. 第二阶段——生成对接:冻结 LLM(OPT 或 FlanT5),把 Q-Former 输出的 32 个 query 当成 LLM 输入前缀(soft prompt),让 LLM 看着这 32 个 token 续写答案。

整个训练,ViT 不动,LLM 不动,只有 Q-Former 在学

实践案例

案例 1:参数对比直观感受

模型总参数可训参数训练成本
Flamingo-80B(DeepMind)80B10.2B极贵
BLIP-2 (ViT-g + FlanT5-XXL)12B188M单机 8×A100 几天

关键差距:可训参数差 54 倍,但 VQAv2 零样本上 BLIP-2 (65.0) 反超 Flamingo (56.3)。结论——堆参数不一定赢,桥接结构对了就够。

案例 2:Q-Former 一次前向流程

输入:一张猫的照片 + 问题 “这是什么动物?”

猫照片 → 冻结 ViT → 一堆视觉特征(比如 256 个 patch token)
Q-Former 用 32 个 query
通过 cross-attention 抽取
32 个语义 token
投影到 LLM 词嵌入维度
[32 个 query token] + [问题文本 token] → 冻结 LLM → "这是一只猫"

注意 32 个 query 是固定数量——不管图片信息多少,最后都被压成 32 个 token。这是它简单也是它的局限。

案例 3:第一阶段三个目标在干什么

同一个 Q-Former 同时学三件事:

  • ITC(图文对比):把同一对图文的向量拉近,不相关的推远——学全局对齐
  • ITM(图文匹配):给一对图文,二分类 “匹配 / 不匹配”——学细粒度对齐
  • ITG(图描述生成):看着图自回归生成描述——学生成能力

三个目标共享 Q-Former 但通过不同的注意力 mask 隔开。这种 “一个网络多任务联训” 的设计源自原 BLIP(2022)。

案例 4:第二阶段如何对接两种 LLM

OPT 是 decoder-only(像 GPT),FlanT5 是 encoder-decoder(像 T5),两类 LLM 接法不一样:

  • 接 OPT:把 32 个 query token 拼到文本前面,整个序列丢给 OPT 做自回归生成
  • 接 FlanT5:32 个 query 放进 encoder 输入,文本 prompt 进 decoder,让 decoder 续写

两种接法都只训 Q-Former 和一个线性投影层,LLM 本体始终冻结。这种结构无关的桥接思路是 BLIP-2 后来被广泛复用的关键。

踩过的坑

  1. 32 个 query 是硬限制:长视频、高分辨率医学图像信息会被强行压成 32 个 token,细节丢失。后续工作(LLaVA-1.5、Qwen-VL)改用更大或动态的 token 数。

  2. in-context few-shot 能力弱:Flamingo 能 “给几个例子学一下” 然后回答新问题,BLIP-2 几乎不行——因为 LLM 输入前面的槽位被 32 个 query 占了,留给 example 的空间被挤掉。

  3. stage1 和 stage2 不能合并:作者试过端到端联训,性能反而掉。两阶段是经验上必须的——先把视觉表示学稳,再对接 LLM。

  4. 数据偏向西方场景:训练用 COCO / VG / CC3M / SBU / LAION,对中文 OCR / 中式建筑 / 非英语文本识别效果差。中文 VLM(Qwen-VL、CogVLM)需要重新铺中文数据。

适用 vs 不适用场景

适用

  • 想用现有冻结大模型快速做多模态 demo——典型 Q-Former 训练 1-2 天起步
  • 显卡有限只能训小模型——188M 单张 4090 就够
  • 已有强 LLM(Llama / Qwen),想加视觉能力但不想动 LLM 权重
  • 图文检索 / VQA / 图描述这种短输入短输出任务

不适用

  • 需要逐像素精细理解(医学影像分割、文档 OCR 长尾字符)——32 个 query 不够
  • 需要 in-context few-shot——选 Flamingo 或更新的 in-context VLM
  • 需要视频长上下文——Q-Former 没时序建模,要换 Video-ChatGPT / VideoLLaMA
  • 需要训练时也微调 LLM 的场景——BLIP-2 假设 LLM 冻结,要解冻得换 LLaVA 全参微调路线

历史小故事(可跳过)

  • 2021 年:CLIP(OpenAI)证明对比学习能让视觉和语言对齐,但只能做 “图文匹不匹配” 不会回答
  • 2022 年:Flamingo(DeepMind)让 VLM 能聊天,但是 80B 端到端训,开源社区跑不动
  • 2022 年:原版 BLIP(同一组人)提出 “用一个网络多任务联训” 的思路,但还是端到端训
  • 2023 年初:BLIP-2 论文发表——把 BLIP 思路 + 冻结大模型 + Q-Former 合在一起,成为开源 VLM 的事实底座
  • 2023 春到秋:LLaVA / MiniGPT-4 / InstructBLIP / Qwen-VL 接连出现,全都借鉴 Q-Former 思路

学到什么

  1. 冻结主干 + 小桥接 是落地大模型最经济的路径——这一思路后来扩展到 audio、video、3D
  2. Q-Former 的 32 query 设计 体现了 “信息瓶颈” 哲学——逼模型挑出最关键的视觉语义
  3. 两阶段训练 经验上比端到端好——先学表示再学生成,每阶段目标清晰
  4. 可训参数 ≠ 性能上限——结构对了,188M 可以打 10.2B
  5. LLM 越大,BLIP-2 提升越多——OPT-2.7B 换成 OPT-6.7B、FlanT5-XL 换成 FlanT5-XXL,零样本 VQA 都涨 3-5 分。视觉端瓶颈在 Q-Former,语言端越强越能接住

跟后续工作的关系

模型跟 BLIP-2 的关系
LLaVA (2023.04)简化 Q-Former,直接用一个线性层投影 CLIP 特征到 LLM——更简单但也更耗 token
MiniGPT-4 (2023.04)直接复用 BLIP-2 的 Q-Former + 一层投影,换成 Vicuna 当 LLM
InstructBLIP (2023.05)同一组人后续工作——给 Q-Former 加指令感知,query 受 instruction 调制
Qwen-VL (2023.08)借鉴 Q-Former 思路但 query 数量加大,并解冻部分 LLM 微调
LLaVA-1.5 (2023.10)证明 “去掉 Q-Former、用 MLP 投影 + 高分辨率切分” 在大数据下也行

可以看到 BLIP-2 不只是一个具体模型,更像一个设计 paradigm——后续 VLM 全部在它的”冻结主干 + 桥接器” 框架内做权衡。

延伸阅读

关联

  • clip —— BLIP-2 默认视觉编码器之一
  • vit —— Q-Former 的底层视觉骨架
  • align-2021 —— 同样走 “图文对比学习” 路线,但 BLIP-2 加了生成能力
  • llama —— BLIP-2 之后的开源 VLM 常用 Llama 当冻结 LLM
  • flan-2021 —— BLIP-2 论文里的 FlanT5 来自这条指令微调线
  • t5 —— FlanT5 的底层架构

反向链接

  • align-2021 —— ALIGN — 用 18 亿条脏图文对训练,证明数据规模能压住噪声
  • chat-univi-2023 —— Chat-UniVi — 动态视觉 token 统一图像与视频对话
  • clip —— CLIP — Contrastive Language-Image Pre-training
  • coca-2022 —— CoCa — 把对比和生成两种多模态训练目标合到一个模型里
  • flamingo-2022 —— Flamingo — 让冻结的大模型学会看图,几张样例就上手
  • flan-2021 —— FLAN — 用自然语言指令教模型学会”听话”
  • internvideo —— InternVideo — 上海 AI Lab 视频基础模型套件
  • internvideo2-2024 —— InternVideo2 — 三阶段渐进训练,把视频基础模型扩到 6B
  • internvl-2023 —— InternVL — 6B 视觉基座 + QLLaMA 对齐开源多模态
  • llama —— LLaMA — Meta 开源大语言模型
  • llama-vid-2023 —— LLaMA-VID — 每帧两枚 token,把小时级视频塞进 LLM
  • minicpm-v-2024 —— MiniCPM-V — 手机能跑的 GPT-4V 级多模态模型
  • mplug-owl-2023 —— mPLUG-Owl — 模块化拼装多模态大模型
  • qvhighlights-2021 —— QVHighlights — 用自然语言查询在视频里找精彩瞬间
  • st-llm-2024 —— ST-LLM — 把所有时空 token 交给 LLM,让它自己学时序
  • t5 —— T5 — Text-to-Text Transfer Transformer
  • timechat-2024 —— TimeChat — 带时间戳的多轮视频助手,长视频也能精确定位
  • vid-llm-survey-2023 —— Vid-LLM Survey — 用大语言模型理解视频的全景地图
  • video-llama-2023 —— Video-LLaMA — 把音频和视频同时塞进大语言模型
  • video-llava-2024 —— Video-LLaVA — 投影之前先对齐,图像和视频共用一个 LLM
  • videochat-2023 —— VideoChat — 把视频、指令微调、多轮对话第一次放进同一个系统
  • videoprism-2024 —— VideoPrism — 冻结一个模型就能搞定所有视频理解任务
  • vit —— ViT — Vision Transformer