Visual Instruction Tuning (LLaVA)
为什么这篇论文重要
2023 年—— OpenAI 公布 GPT-4V(能看图的 GPT-4)—— 但是闭源。 Anthropic 发 Claude 3 含视觉能力 —— 也闭源。
开源世界有点慌:
- CLIP 能”理解图”
- LLaMA 能”对话”
- 但没有**“理解图 + 对话”** 的开源模型
2023 年 4 月—— 威斯康星麦迪逊 + 微软的几个研究者发了 LLaVA:
把 CLIP encoder 接到 LLaMA 上 + 用合成的”图像指令”数据微调 = 开源多模态助手。
整个训练成本 < $300—— 比 GPT-4V 便宜几千万倍。
这开启了开源多模态 LLM 的时代。
论文的核心想法
架构
很简单——3 个现成组件 + 一个小适配层:
图像 (224×224×3)
↓
CLIP ViT-L/14 (冻结)
↓
图像 features (1024 dim)
↓
Linear Projection (~ 1024 × 4096) ← 训这个 + LLM
↓
LLM 兼容向量 (4096 dim)
↓
插入到 LLaMA prompt 里(图像 = "视觉 token")
↓
LLaMA (7B / 13B / 70B)
↓
文字回答
“Linear Projection” 几兆参数 —— 训这一小部分 + LLM 微调就是 LLaVA。
数据合成(关键创新)
没有现成的”图像指令”数据—— 用 GPT-4 合成:
Step 1: 拿现有"图像 + caption"数据集(COCO 等)
Step 2: 给 GPT-4 看 caption(不看图)
Step 3: 让 GPT-4 生成 (问题, 答案) 对:
- 问:"图里有几个人?"
- 答:"4 个"
- 问:"他们在做什么?"
- 答:"在踢足球"
- 等等
Step 4: 把这些 (图, 问, 答) 三元组用来训 LLaVA
总共生成了 158K 条多模态指令数据—— 比手工标注便宜 100×。
训练流程(两阶段)
阶段 1:预对齐(Pre-training)
冻结 CLIP + LLaMA—— 只训 Linear Projection 层。
目标:让 CLIP 的图像 features 能被 LLM “理解”。
用 558K 个 image-text pair 训练。 几小时 + 单 GPU 搞定。
阶段 2:指令微调
用 158K 合成指令数据—— 微调 Linear Projection + LLM。
让模型学会根据图像 + 问题,生成有用回答。
总训练成本:< $300(约 8 小时 A100)。
效果
LLaVA-13B vs GPT-4V
在多模态 benchmarks 上:
| 任务 | LLaVA-13B | GPT-4V |
|---|---|---|
| ScienceQA | 89.0% | 90.0% |
| MM-Vet | 32.9% | 49.9% |
| LLaVA-Bench | 85.1% | 100%(reference) |
接近 GPT-4V—— 完全开源 + 训练成本几乎为零。
实际能干什么
LLaVA 能:
- 描述图像
- 看图答问题
- OCR(粗略)
- 解释图表
- 看代码截图找 bug
- 看 meme 解释笑点
所有 GPT-4V 类的能力——基本都有。
论文影响
1. 开源多模态 LLM 爆发
LLaVA 之后 1 年:
- MiniGPT-4(KAUST 2023)—— 类似思路
- InstructBLIP(Salesforce 2023)—— 更强 vision encoder
- Qwen-VL(阿里 2023)—— 中文友好
- CogVLM(智谱 2023)—— 高分辨率
- InternVL(上海 AI Lab)—— 性能优秀
LLaVA 启发了整个开源多模态生态。
2. 推动数据合成范式
“用大模型生成训练数据”—— LLaVA 系统化展示这一技巧后—— 所有微调小模型都用:
- Phi(用 GPT-4 合成 textbook 数据)
- DeepSeek(合成数学数据)
- LLaVA 后续版本(合成对话数据)
“蒸馏 GPT-4 的能力” 成为开源生态的标准动作。
3. 学术价值
LLaVA 论文展示了**“廉价多模态对齐”的可行性**—— 不需要从头训练。
后续大量学术工作都在简化 + 优化这个范式。
LLaVA 之后的演化
LLaVA-1.5(2023 年 10 月)
改进版:
- 更好的 CLIP encoder
- 更多训练数据
- 各项 benchmark 全面提升
LLaVA-NeXT(2024)
支持:
- 高分辨率图(之前固定 336×336)
- 多图
- 视频(早期)
LLaVA-OneVision(2024)
统一架构处理:
- 单图
- 多图
- 视频
同期商业模型
- GPT-4o(OpenAI 2024)—— 原生多模态升级
- Claude 3.5 Sonnet(Anthropic 2024)—— 视觉理解 SOTA
- Gemini 2.0(Google)
但 LLaVA / 开源版本在性能上追得很近—— 差距从”几代差”缩到”几个月”。
一些反思
”缝合派”的胜利
LLaVA 不是从头训—— 而是缝合现有组件:
- CLIP(视觉理解)
- LLaMA(语言生成)
- 合成数据(指令)
- 简单适配层
这种”工程整合” 比训新模型实际多。
训练成本的颠覆
$300 训出接近 GPT-4V 的模型—— 让人重新思考:
是不是大公司的”$100M 训练成本” 大部分是浪费?
答案:部分。 真正”昂贵且必要”的是预训练(基础模型)。 指令微调 + 多模态对齐 可以很便宜。
数据合成的伦理
用 GPT-4 生成训练数据—— 是不是”白嫖” OpenAI?
OpenAI 服务条款禁止—— 但执行很难。 这是开源生态和商业 AI 公司的灰色地带。
一些代码
直接用 LLaVA
# 用 Hugging Face
pip install transformers
from transformers import LlavaForConditionalGeneration, AutoProcessor
from PIL import Image
model_id = "llava-hf/llava-1.5-13b-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = LlavaForConditionalGeneration.from_pretrained(model_id)
image = Image.open("photo.jpg")
prompt = "USER: <image>\nWhat's in this image?\nASSISTANT:"
inputs = processor(prompt, image, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=200)
print(processor.decode(output[0]))
或用 Ollama:
ollama pull llava:13b
ollama run llava:13b "describe this image" --image photo.jpg
微调
# 用 LLaVA codebase 微调你自己的多模态助手
git clone https://github.com/haotian-liu/LLaVA
cd LLaVA
pip install -e .
# 准备数据:image + instruction + response
# 训练:bash scripts/train_lora.sh
几个 GPU + 一天时间 = 你的专用多模态模型。
推荐配套阅读
- HelloAI: L5-01 多模态总览 + L5-03 ViT 与 CLIP
- LLaVA 论文 原版
- LLaVA-1.5 / NeXT 论文 演进
- LLaVA GitHub —— 完整代码
- MiniGPT-4 论文 —— 同期对比
做多模态 AI 应用?
起点:
- 试 Ollama + LLaVA-13B 看效果
- 用 GPT-4V API 看上限
- 决定要不要微调
LLaVA 让”多模态 AI” 从大公司专有 变成 任何工程师都能做—— 这是开源的价值。
想要更多论文精读
订阅每周精选 —— 下一篇论文笔记直接送邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。