HelloAI
📄 论文精读 🏆 必读经典 · 2023 · NeurIPS 2023

Visual Instruction Tuning (LLaVA)

Haotian Liu, Chunyuan Li, Qingyang Wu, Yong Jae Lee
TL;DR
把 CLIP + LLaMA + 指令微调 缝合起来——开源多模态指令模型的起点。让"图像+对话"AI 进入开源社区。
#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-13BGPT-4V
ScienceQA89.0%90.0%
MM-Vet32.9%49.9%
LLaVA-Bench85.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 账号登录评论
⚠️ Giscus 评论未配置 —— 在 src/components/Comments.astro 顶部填入 仓库 ID 和分类 ID(见组件注释里的配置步骤)。