🌋 LLaVA: 大型语言与视觉助手
通过视觉指令微调,迈向具备 GPT-4 级别能力的大型语言与视觉模型。
[📢 LLaVA-NeXT 博客] [项目主页] [演示] [数据] [模型库]
🤝 社区贡献:[llama.cpp] [Colab] [🤗Space] [Replicate] [AutoGen] [BakLLaVA]
通过视觉指令微调改进基线模型 [论文] [HF]
Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee
视觉指令微调 (NeurIPS 2023, 口头报告) [论文] [HF]
Haotian Liu*, Chunyuan Li*, Qingyang Wu, Yong Jae Lee (*同等贡献)
发布
- [2024/05/10] 🔥 LLaVA-NeXT (更强) 模型发布,支持 Llama-3 (8B) 和 Qwen-1.5 (72B/110B) 的更强大多模态模型。[博客] [模型] [演示] [代码]
- [2024/05/10] 🔥 LLaVA-NeXT (视频) 发布。仅用图像训练的 LLaVA-NeXT 模型在视频任务上展现出惊人的零样本模态迁移能力。结合 AI 反馈的 DPO 训练能带来显著提升。[博客] [模型] [代码]
- [03/10] 发布 LMMs-Eval,一个我们在开发 LLaVA-NeXT 时使用的高效评估流水线。它支持在数十个公共数据集上评估 LMM,并允许接入新数据集,大大加快了新 LMM 的开发速度。[博客] [代码库]
- [1/30] 🔥 LLaVA-NeXT (LLaVA-1.6) 发布!在 LLaVA-1.5 基础上进一步扩展,LLaVA-NeXT-34B 在某些基准测试中超越了 Gemini Pro。现在可以处理 4 倍多的像素,并执行更多任务/应用。查看博客文章,并体验演示!模型可在模型库获取。训练/评估数据和脚本即将发布。
- [11/10] LLaVA-Plus 发布:学习使用工具创建多模态智能体,LLaVA-Plus (即插即用技能的 LLaVA)。[项目主页] [演示] [代码] [论文]
- [11/2] LLaVA-Interactive 发布:体验未来的人机多模态交互,一个集图像聊天、分割、生成和编辑于一体的演示。[项目主页] [演示] [代码] [论文]
- [10/26] 🔥 使用 LoRA 的 LLaVA-1.5 实现了与全模型微调相当的性能,同时降低了 GPU 内存需求 (模型, 脚本)。我们还提供了文档,介绍如何使用 LoRA 在您自己的数据集上微调 LLaVA-1.5。
- [10/12] 查看由 ETRI 创建的韩语 LLaVA (Ko-LLaVA),他们慷慨地支持了我们的研究![🤗 演示]
- [10/5] 🔥 LLaVA-1.5 发布!在 11 个基准测试中达到 SOTA,仅对原始 LLaVA 进行了简单修改,利用所有公开数据,在单个 8-A100 节点上约 1 天完成训练,并超越了使用十亿级数据的 Qwen-VL-Chat 等方法。查看技术报告,并体验演示!模型可在模型库获取。LLaVA-1.5 的训练数据和脚本发布在此处,评估脚本发布在此处!
- [9/26] LLaVA 通过人类反馈强化学习 (RLHF) 得到改进,以增强事实依据并减少幻觉。查看项目 [LLavA-RLHF] 中的新 SFT 和 RLHF 模型。
- [9/22] LLaVA 被 NeurIPS 2023 接收为口头报告,LLaVA-Med 被 NeurIPS 2023 数据集与基准测试赛道接收为亮点报告。
更多
- [11/6] 支持 **Intel** dGPU 和 CPU 平台。[详情见此。](https://github.com/haotian-liu/LLaVA/tree/intel/docs/intel)
- [10/12] LLaVA 现已支持 [llama.cpp](https://github.com/ggerganov/llama.cpp/pull/3436),并支持 4-bit / 5-bit 量化!
- [10/11] LLaVA-1.5 的训练数据和脚本发布在[此处](https://github.com/haotian-liu/LLaVA#train),评估脚本发布在[此处](https://github.com/haotian-liu/LLaVA/blob/main/docs/Evaluation.md)!
- [10/10] [Roboflow 深度解析](https://blog.roboflow.com/first-impressions-with-llava-1-5/):LLaVA-1.5 初体验。
- [9/20] 我们在[笔记](https://arxiv.org/abs/2309.09958)中总结了训练 33B 和 65B LLaVA 模型的经验研究。此外,如果您对多模态基础模型的全面综述、演变和趋势感兴趣,请查看我们最近的综述论文[“多模态基础模型:从专家到通用助手”](https://arxiv.org/abs/2309.10020)。
- [7/19] 🔥 我们发布了一个重大升级,包括支持 LLaMA-2、LoRA 训练、4-/8-bit 推理、更高分辨率 (336x336) 等。我们发布了 [LLaVA Bench](https://github.com/haotian-liu/LLaVA/blob/main/docs/LLaVA_Bench.md),用于对开放式视觉聊天进行基准测试,并包含来自 Bard 和 Bing-Chat 的结果。我们还支持并验证了在 RTX 3090 和 RTX A6000 上的训练。查看 [LLaVA-from-LLaMA-2](https://github.com/haotian-liu/LLaVA/blob/main/docs/LLaVA_from_LLaMA2.md) 和我们的[模型库](https://github.com/haotian-liu/LLaVA/blob/main/docs/MODEL_ZOO.md)!
- [6/26] CVPR 2023 教程:**大型多模态模型:迈向构建和超越多模态 GPT-4**!请查看[[幻灯片](https://datarelease.blob.core.windows.net/tutorial/vision_foundation_models_2023/slides/Chunyuan_cvpr2023_tutorial_lmm.pdf)] [[笔记](https://arxiv.org/abs/2306.14895)] [[YouTube](https://youtu.be/mkI7EPD1vp8)] [[Bilibili](https://www.bilibili.com/video/BV1Ng4y1T7v3/)]。
- [6/11] 我们发布了最受期待功能的预览:DeepSpeed 和 LoRA 支持!请查看[文档](./docs/LoRA.md)。
- [6/1] 我们发布了 **LLaVA-Med:用于生物医学的大型语言与视觉助手**,这是迈向构建具备 GPT-4 级别能力的生物医学领域大型语言与视觉模型的一步。查看[论文](https://arxiv.org/abs/2306.00890)和[页面](https://github.com/microsoft/LLaVA-Med)。
- [5/6] 我们正在发布基于 MPT-7B-Chat 的 [LLaVA-Lighting-MPT-7B-preview](https://huggingface.co/liuhaotian/LLaVA-Lightning-MPT-7B-preview)!更多详情见[此处](#LLaVA-MPT-7b)。
- [5/2] 🔥 我们正在发布 LLaVA-Lighting!仅需 3 小时和 40 美元即可训练一个轻量级的多模态 GPT-4!更多详情见[此处](#train-llava-lightning)。
- [4/27] 感谢社区的努力,4-bit 量化的 LLaVA-13B 允许您在仅有 12GB VRAM 的 GPU 上运行!在此[尝试](https://github.com/oobabooga/text-generation-webui/tree/main/extensions/llava)。
- [4/17] 🔥 我们发布了 **LLaVA:大型语言与视觉助手**。我们提出了视觉指令微调,旨在构建具备 GPT-4 级别能力的大型语言与视觉模型。查看[论文](https://arxiv.org/abs/2304.08485)和[演示](https://llava.hliu.cc/)。

使用与许可声明:本项目使用了某些受其各自原始许可证约束的数据集和模型。用户必须遵守这些原始许可证的所有条款和条件,包括但不限于数据集的 OpenAI 使用条款以及使用该数据集训练的基座语言模型的特定许可证(例如,用于 LLaMA-2 和 Vicuna-v1.5 的 Llama 社区许可证)。本项目除了原始许可证中规定的内容外,未施加任何额外限制。此外,提醒用户确保其对数据集和模型的使用符合所有适用的法律和法规。
目录
安装
如果您不使用 Linux,请不要继续,请查看 macOS 和 Windows 的说明。
- 克隆此仓库并进入 LLaVA 文件夹
git clone https://github.com/haotian-liu/LLaVA.git
cd LLaVA
- 安装包
conda create -n llava python=3.10 -y
conda activate llava
pip install --upgrade pip # 启用 PEP 660 支持
pip install -e .
- 为训练场景安装额外的包
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
升级到最新代码库
git pull
pip install -e .
# 如果升级时看到一些导入错误,
# 请尝试运行以下命令(去掉 #)
# pip install flash-attn --no-build-isolation --no-cache-dir
使用 HuggingFace 快速开始
示例代码
from llava.model.builder import load_pretrained_model
from llava.mm_utils import get_model_name_from_path
from llava.eval.run_llava import eval_model
model_path = "liuhaotian/llava-v1.5-7b"
tokenizer, model, image_processor, context_len = load_pretrained_model(
model_path=model_path,
model_base=None,
model_name=get_model_name_from_path(model_path)
)
查看 `llava/model/builder.py` 中 `load_pretrained_model` 函数的详细信息。
您也可以使用 `llava/eval/run_llava.py` 中的 `eval_model` 函数轻松获取输出。这样做,您可以在下载此仓库后直接在 Colab 上使用此代码。
model_path = "liuhaotian/llava-v1.5-7b"
prompt = "What are the things I should be cautious about when I visit here?"
image_file = "https://llava-vl.github.io/static/images/view.jpg"
args = type('Args', (), {
"model_path": model_path,
"model_base": None,
"model_name": get_model_name_from_path(model_path),
"query": prompt,
"conv_mode": None,
"image_file": image_file,
"sep": ",",
"temperature": 0,
"top_p": None,
"num_beams": 1,
"max_new_tokens": 512
})()
eval_model(args)
LLaVA 权重
请查看我们的模型库获取所有公开的 LLaVA 模型,以及如何使用这些权重的说明。
演示
Gradio Web UI
要本地启动 Gradio 演示,请依次运行以下命令。如果您计划启动多个模型工作器以比较不同的模型,您只需要启动控制器和 Web 服务器一次。
```mermaid
flowchart BT
%% 声明节点
gws("Gradio (UI 服务器)")
c("控制器 (API 服务器):
端口: 10000")
mw7b("模型工作器:
llava-v1.5-7b
端口: 40000")
mw13b("模型工作器:
llava-v1.5-13b
端口: 40001")
sglw13b("SGLang 后端:
llava-v1.6