2023 年 4 月,威斯康星大学麦迪逊分校的 Liu 等人发表论文《Visual Instruction Tuning》,提出了 LLaVA(Large Language-and-Vision Assistant)。这篇论文的思路极为直接:把最强的视觉编码器(CLIP ViT)和最强的语言模型(LLaMA/Vicuna)连在一起,用 GPT-4 生成的多模态指令数据进行微调,就能得到一个能「看图聊天」的开源模型。
就是这么简单的方案,却开启了开源多模态大模型的新纪元。LLaVA 不仅在多项视觉问答基准上逼近甚至超越 GPT-4V,更重要的是它验证了一个关键假设——语言模型的指令跟随能力可以高效地迁移到多模态领域。
LLaVA 是开源多模态对话的起点。 从它之后,LLaVA-1.5、LLaVA-NeXT、LLaVA-OneVision 形成了一个完整的模型家族,成为学术界和工业界研究多模态 AI 的标准基线。
本文要点
- LLaVA 的核心动机:将指令微调扩展到视觉领域
- 架构设计:CLIP ViT + Projection Layer + LLaMA
- 数据构建:GPT-4 生成多模态指令跟随数据的创新方法
- LLaVA-1.5 的关键改进:更大投影层、更多数据、学术任务集成
- LLaVA-NeXT / LLaVA-OneVision 的持续演进
- 与 GPT-4V、Gemini 等闭源模型的对比
- 开源生态:训练代码、数据集、模型权重的全面开放
一、为什么需要 LLaVA
1.1 多模态对话的挑战
2023 年初,GPT-4 展示了令人震惊的多模态理解能力——它可以看图回答问题、解读图表、分析 UI 界面。但 GPT-4V 是闭源的,研究者和开发者无法基于它进行二次开发或深入研究。
开源社区面临一个核心问题:如何用开源组件构建一个能看图对话的模型?
当时主流的视觉-语言模型(如 BLIP-2、Flamingo)虽然能处理图像,但它们主要针对描述生成和视觉问答这类单轮任务,缺乏指令跟随和对话能力。而 ChatGPT、Vicuna 等语言模型虽然对话能力出色,却完全无法理解视觉输入。
1.2 关键洞察:指令能力的迁移
LLaVA 论文最核心的洞察在于——语言模型通过指令微调获得的「指令跟随能力」是一种通用能力,可以通过一个简单的投影层迁移到多模态场景。
这个迁移之所以有效,是因为指令跟随本质上是一种格式理解和任务执行能力——理解用户的意图,按照特定格式输出回答。这种能力与输入模态无关,只需要让语言模型学会「读取」视觉信息的表示。
1.3 与之前工作的区别
| 模型 | 视觉能力来源 | 指令跟随 | 对话能力 | 开源 |
|---|---|---|---|---|
| Flamingo (2022) | Perceiver Resampler | 有限 | 单轮 | 否 |
| BLIP-2 (2023) | Q-Former | 有限 | 单轮 | 是 |
| GPT-4V (2023) | 原生多模态 | 强 | 多轮 | 否 |
| LLaVA (2023) | CLIP + Projection | 强 | 多轮 | 是 |
二、LLaVA 架构设计
2.1 整体架构
LLaVA 的架构可以用「极简」来形容,仅包含三个核心组件:
2.2 视觉编码器:CLIP ViT
LLaVA 直接使用预训练好的 CLIP ViT-L/14 作为视觉编码器(参数量约 3 亿),在训练中冻结。选择 ViT-L/14 的原因是其 14×14 的 Patch 大小能产生适中数量的 Token,且 CLIP 预训练已学习到高质量的视觉-语言对齐表示。
# LLaVA 视觉编码(简化)vision_encoder = CLIPVisionModel.from_pretrained("openai/clip-vit-large-patch14")vision_encoder.eval() # 冻结视觉编码器
def encode_image(image): features = vision_encoder(image) # [batch, 576, 1024] return features.last_hidden_state[:, 1:] # 去掉 CLS token2.3 投影层:从视觉到语言的桥梁
投影层负责将 CLIP 的视觉特征映射到语言模型的 embedding 空间。最初的 LLaVA 使用一个简单的线性层:
# LLaVA 原始投影层projection = nn.Linear(clip_hidden_size, llama_hidden_size)# 即 nn.Linear(1024, 4096) 对应 7B 模型visual_tokens = projection(visual_features) # [batch, num_patches, 4096]这个投影层虽然简单,但效果出奇地好。论文还实验了两层 MLP 投影层,发现在数据量较少时差异不大。
2.4 语言模型:Vicuna(LLaMA 微调版)
LLaVA 使用 Vicuna-7B 和 Vicuna-13B 作为语言模型底座。Vicuna 是在 LLaMA 基础上用 ShareGPT 对话数据微调的版本,已经具备良好的对话能力。
训练时,视觉 Token 和文本 Token 被拼接为一个序列输入语言模型:
输入序列 = [<视觉Token_1>, ..., <视觉Token_N>, <文本Token_1>, ..., <文本Token_M>]语言模型对视觉 Token 和文本 Token 一视同仁——它并不知道序列中有图像信息,只是看到了更多的 Token。这正是 LLaVA 设计的巧妙之处。
三、数据构建:GPT-4 生成多模态指令
3.1 核心创新:用纯文本模型生成多模态数据
LLaVA 论文最巧妙的贡献之一是数据构建方法。既然 GPT-4 本身就具备多模态能力,为什么不让它来生成训练数据?
但 LLaVA 的做法更聪明——它不直接让 GPT-4「看图」,而是把图像的文本描述(caption)和目标检测框(bounding box)作为上下文,让纯文本 GPT-4 生成多模态对话数据:
3.2 三种指令类型
LLaVA 将 GPT-4 生成的数据分为三种类型:
| 类型 | 数量 | 示例任务 | 锻炼的能力 |
|---|---|---|---|
| 对话 (Conversation) | 58K | 关于图像的多轮问答 | 多轮对话、信息提取 |
| 详细描述 (Detail Description) | 23K | 请详细描述这张图片 | 图像理解、语言生成 |
| 复杂推理 (Complex Reasoning) | 77K | 这张图暗示了什么? | 深层推理、常识判断 |
3.3 数据质量的重要性
LLaVA 的实验表明,GPT-4 生成的数据质量远超人工标注。因为 GPT-4 本身就经过了大量 RLHF 对齐训练,它生成的回复天然符合「有帮助、无害、诚实」的标准。这一发现启发了后续大量工作——用强模型生成数据来训练弱模型(即「知识蒸馏」)。
四、训练策略
4.1 两阶段训练
LLaVA 采用两阶段训练策略,逐步解锁模型能力:
阶段一:特征对齐预训练
目标:让投影层学会将 CLIP 的视觉特征映射到 LLaMA 的 embedding 空间。
- 冻结 CLIP ViT 和 LLaMA,只训练投影层(可训练参数极少)
- 使用 CC3M(Conceptual Captions)的 595K 子集
- 将图像描述作为目标文本,训练模型根据图像生成描述
- 训练成本极低,单卡 A100 即可完成
阶段二:视觉指令微调
目标:在指令跟随数据上微调投影层和 LLaMA,使模型具备视觉对话能力。
- 冻结 CLIP ViT,同时训练投影层和 LLaMA
- 使用 GPT-4 生成的 158K 多模态指令数据
- 训练目标:给定图像和指令,生成正确的回答
- 7B 模型在 8×A100 上约 3 小时完成训练
4.2 训练细节
| 超参数 | 阶段一 | 阶段二 |
|---|---|---|
| 学习率 | 2e-3 | 2e-5 |
| Batch Size | 128 | 32 |
| 训练轮数 | 1 epoch | 3 epochs |
| 可训练参数 | ~4M(投影层) | ~7B / ~13B |
| GPU 需求 | 1×A100 | 8×A100 |
五、LLaVA-1.5:大幅提升
5.1 关键改进
2023 年 10 月,团队发布了 LLaVA-1.5,在多个方面进行了关键改进,性能实现了质的飞跃:
5.2 各项改进详解
投影层升级:从简单的线性层升级为两层 MLP(带 GELU 激活函数)。这个看似微小的改变带来了显著提升,因为它能让视觉特征在映射过程中经历非线性变换,更好地适配语言模型的表示空间。
数据规模扩大:从 158K 扩大到 665K 条指令数据,同时加入了多个学术 VQA 数据集:
| 数据集 | 规模 | 任务类型 |
|---|---|---|
| GPT-4 生成对话 | 158K | 多轮对话 |
| VQA-v2 | 83K | 视觉问答 |
| GQA | 72K | 图像推理 |
| OCR-VQA | 45K | 文字识别问答 |
| TextCaps | 22K | 文字描述 |
| ShareGPT4V | 100K | 详细描述 |
| 其他 | ~185K | 多种任务 |
分辨率提升:从 224×224 提升到 336×336,让模型能捕获更多图像细节。这对 OCR、图表理解等细粒度任务至关重要。
5.3 性能对比
LLaVA-1.5 在多个基准上取得了令人瞩目的成绩:
| 基准测试 | LLaVA | LLaVA-1.5-13B | GPT-4V |
|---|---|---|---|
| MMBench | 35.2 | 67.7 | 75.0 |
| MME | 1158 | 1802 | 1920 |
| SEED-Bench | 35.3 | 58.6 | 71.6 |
| VQAv2 | 58.9 | 80.0 | 77.2 |
| TextVQA | 20.0 | 58.2 | 78.0 |
| ScienceQA | 61.7 | 79.9 | - |
注:粗体数字表示 LLaVA-1.5 与 GPT-4V 的差距已大幅缩小,在某些任务上(如 VQAv2)甚至超越。
六、LLaVA-NeXT 与 LLaVA-OneVision
6.1 LLaVA-NeXT(LLaVA-1.6)
2024 年初发布的 LLaVA-NeXT 带来了三个重要升级:
任意分辨率输入:不再固定图像分辨率,而是将图像分割为多个子图(sub-images),每个子图独立编码后拼接。这让模型能处理任意大小的高分辨率图像:
# LLaVA-NeXT 任意分辨率处理def process_any_resolution(image, max_tiles=6): """将图像分割为多个 tile 分别编码""" tiles = adaptive_partition(image, max_tiles=max_tiles) # 每个tile独立通过CLIP编码 tile_features = [encode(tile) for tile in tiles] # 拼接所有tile的特征 all_features = torch.cat(tile_features, dim=1) return all_features更强的语言模型底座:从 Vicuna 切换到 Mistral-7B 和 Nous-Hermes-2-Yi-34B,推理和对话能力更强。
更好的视觉编码器:升级到 CLIP ViT-L/14@336px,视觉特征更精细。
6.2 LLaVA-OneVision
2024 年底发布的 LLaVA-OneVision 是系列中最大的一次升级,真正实现了「统一视觉理解」:
| 能力 | LLaVA-1.5 | LLaVA-NeXT | LLaVA-OneVision |
|---|---|---|---|
| 图像理解 | |||
| 多图像理解 | |||
| 视频理解 | 有限 | ||
| 单图→多图迁移 | - | - | |
| 最高分辨率 | 336px | 672px | 动态 |
| 参数规模 | 7B/13B | 7B-34B | 0.5B-72B |
LLaVA-OneVision 的核心创新在于单图到多图的迁移学习:先用单图数据训练,再通过少量多图/视频数据微调,就能获得多图理解和视频理解能力。
七、与 GPT-4V 和 Gemini 的对比
7.1 架构对比
7.2 能力对比
| 维度 | GPT-4V | Gemini Pro Vision | LLaVA-1.5-13B |
|---|---|---|---|
| 图像理解 | |||
| OCR/文字识别 | |||
| 图表分析 | |||
| 视频理解 | |||
| 推理能力 | |||
| 开源性 | 闭源 | 闭源 | 完全开源 |
| 可定制性 | |||
| 部署成本 | API 计费 | API 计费 | 本地 GPU |
7.3 LLaVA 的独特优势
虽然 LLaVA 在性能上不及 GPT-4V 和 Gemini,但它有几个闭源模型无法比拟的优势:
- 完全开源:训练代码、数据集、模型权重全部公开,可自由修改和商用
- 高度可定制:可以针对特定领域(医疗、工业、遥感等)进行微调
- 本地部署:无需发送数据到云端,保护隐私和数据安全
- 研究友好:为学术界提供了多模态 AI 的标准实验平台
- 训练成本低:LLaVA-1.5 的完整训练成本不到 100 美元
八、开源生态
8.1 LLaVA 模型家族
LLaVA 已经发展出一个完整的模型家族,覆盖不同参数规模和应用场景:
8.2 社区生态
LLaVA 的影响力远超论文本身,催生了一个庞大的开源生态:
衍生项目:
- ShareGPT4V:用 GPT-4V 生成高质量图像描述数据,用于训练视觉模型
- LLaVA-Medical:在医学图像上微调 LLaVA,用于医学视觉问答
- LLaVA-Interactive:支持图像编辑和视觉对话的交互式系统
- Cambrian-1:基于 LLaVA 架构的多视角视觉语言模型
训练工具链:
- LLaMA-Factory:集成 LLaVA 微调的一站式训练框架
- DeepSpeed:支持 LLaVA 分布式训练的加速库
- Hugging Face Transformers:原生支持 LLaVA 模型推理
数据集:
- LLaVA-Instruct-150K:原始 GPT-4 生成的指令数据
- LLaVA-Instruct-665K:LLaVA-1.5 扩充后的训练数据
- ShareGPT4V-PT:100K 高质量图像描述数据
- ALLaVA:更大规模的多模态指令数据集
常见问题 FAQ
Q1:LLaVA 和 GPT-4V 的差距主要在哪?
主要在三个维度:复杂推理(如因果推断、常识推理)、细粒度 OCR(手写体、复杂排版)、以及多图联合理解。GPT-4V 是原生多模态训练,视觉和语言在底层就深度融合,而 LLaVA 的组合式架构在语义对齐深度上仍有差距。
Q2:为什么 LLaVA 冻结视觉编码器而不是联合训练?
主要是训练成本和数据量的考量。冻结 CLIP 可以大幅减少可训练参数和显存需求,让 7B/13B 模型的训练成为可能。同时,CLIP 已经学习了高质量的视觉表示,在小数据场景下冻结它反而效果更好。LLaVA-1.5 的实验表明,当数据量足够大时,解冻视觉编码器可以进一步提升性能。
Q3:LLaVA 可以处理视频吗?
原始 LLaVA 和 LLaVA-1.5 只支持图像输入。LLaVA-NeXT 可以通过均匀采样帧的方式处理视频,但效果有限。LLaVA-OneVision 才真正实现了高质量的视频理解,支持动态帧采样和时序建模。
Q4:如何在自己的数据上微调 LLaVA?
推荐使用 LLaMA-Factory 或 LLaVA 官方训练代码。基本流程:准备图像-指令数据(JSONL 格式)→ 配置训练参数 → 运行 LoRA 或全参数微调。7B 模型使用 LoRA 微调只需 1 张 A100 GPU。
Q5:LLaVA 的投影层为什么这么简单却有效?
因为 CLIP 的视觉特征本身已经高度语义化——它经过了大规模对比学习预训练,已经和语言表示对齐。投影层只需要做维度映射,不需要做复杂的语义转换。这也说明 CLIP 的预训练质量是 LLaVA 成功的关键前提。
小结
LLaVA 是开源多模态对话的里程碑之作。
核心认识:LLaVA 验证了一个简洁而深刻的想法——视觉对话能力不需要从零开始训练,语言模型的指令跟随能力可以通过一个投影层高效迁移到视觉领域。这个想法不仅催生了 LLaVA 模型家族,更启发了整个开源多模态社区。
从 LLaVA 到 LLaVA-1.5,再到 LLaVA-NeXT 和 LLaVA-OneVision,这个项目展示了一个优秀开源项目的生命力:简单清晰的架构、不断迭代改进、完全开放的态度。LLaVA 不仅是一个模型,更是多模态 AI 研究的基础设施。
LLaVA 证明了:在 AI 时代,开源不是闭源的附庸,而是创新的引擎。
参考资料
- Visual Instruction Tuning — LLaVA 原始论文(Liu et al., 2023)
- Improved Baselines with Visual Instruction Tuning — LLaVA-1.5(Liu et al., 2023)
- LLaVA-NeXT: Improved Reasoning on More Images — LLaVA-NeXT 博客(Liu et al., 2024)
- LLaVA-OneVision — LLaVA-OneVision(Liu et al., 2024)
- Learning Transferable Visual Models From Natural Language Supervision — CLIP(Radford et al., 2021)
- LLaMA: Open and Efficient Foundation Language Models — LLaMA(Touvron et al., 2023)
- Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90% ChatGPT Quality — Vicuna 项目
- BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models — BLIP-2(Li et al., 2023)
- ShareGPT4V: Improving Large Multi-Modal Models with Better Captions — ShareGPT4V(Chen et al., 2023)
- Flamingo: a Visual Language Model for Few-Shot Learning — Flamingo(Alayrac et al., 2022)
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
部分信息可能已经过时






