许可证:apache-2.0
数据集:
- Lin-Chen/ShareGPT4V
- liuhaotian/LLaVA-Pretrain
- liuhaotian/LLaVA-Instruct-150K
语言:
- 英文
- 中文
标签:
- llava
- 视觉语言
- 大语言模型
- 多模态模型
任务类型:图像文本生成文本

🎉 最新动态
- [2024.03.10] 基础配方发布!
- [2024.03.10] 微调脚本发布!
- [2024.02.25] 更新评估脚本和文档!
- [2024.02.25] 数据描述发布。推出TinyLLaVA-1.5B和TinyLLaVA-2.0B!
- [2024.02.24] 添加推理和模型加载示例代码!
- [2024.02.23] 评估代码和脚本发布!
- [2024.02.21] 在GitHub上创建TinyLLaVABench仓库!
- [2024.02.21] 我们的论文:TinyLLaVA:小型大规模多模态模型框架发布!
- [2024.01.11] 首个模型TinyLLaVA-1.4B发布!
⏳ 待办事项
- [ ] 添加对Ollama和llama.cpp的支持。
- [x] 开发者指南/如何本地构建演示。
- [x] 训练和自定义微调文档。
- [x] 模型库描述。
- [x] 示例和推理。
- [x] 发布训练代码。
- [x] 添加评估描述。
- [x] 添加数据准备描述。
- [x] 发布TinyLLaVA-1.5B和TinyLLaVA-2.0B。
- [x] 发布TinyLLaVA-3.1B。
- [x] 今天(2024.2.23)发布评估代码和权重。
🔥 高性能,参数更少
- 我们的最佳模型TinyLLaVA-3.1B在整体性能上超越了现有的7B模型,如LLaVA-1.5和Qwen-VL。
目录
⚙️ 要求和安装
我们推荐以下要求。
- 克隆此仓库并进入TinyLLaVA文件夹
git clone https://github.com/DLCV-BUAA/TinyLLaVABench.git
cd TinyLLaVABench
- 安装包
conda create -n tinyllava python=3.10 -y
conda activate tinyllava
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
🐳 模型库
旧版模型
预训练模型
模型详情
名称 |
大语言模型 |
检查点 |
LLaVA-Bench-Wild |
MME |
MMBench |
MM-Vet |
SQA-image |
VQA-v2 |
GQA |
TextVQA |
TinyLLaVA-3.1B |
Phi-2 |
TinyLLaVA-3.1B |
75.8 |
1464.9 |
66.9 |
32.0 |
69.1 |
79.9 |
62.0 |
59.1 |
TinyLLaVA-2.0B |
StableLM-2-1.6B |
TinyLLaVA-2.0B |
66.4 |
1433.8 |
63.3 |
32.6 |
64.7 |
78.9 |
61.9 |
56.4 |
TinyLLaVA-1.5B |
TinyLlama |
TinyLLaVA-1.5B |
60.8 |
1276.5 |
55.2 |
25.8 |
60.3 |
76.9 |
60.3 |
51.7 |
演示
Gradio网页演示
通过运行以下命令启动本地网页演示:
python tinyllava/serve/app.py --model-path bczhou/TinyLLaVA-3.1B --model-name TinyLLaVA-3.1B
命令行推理
我们也支持通过命令行运行推理。使用我们的模型,运行:
python -m tinyllava.serve.cli \
--model-path bczhou/TinyLLaVA-3.1B \
--image-file "./tinyllava/serve/examples/extreme_ironing.jpg"
⚙️ 快速开始
加载模型
from tinyllava.model.builder import load_pretrained_model
from tinyllava.mm_utils import get_model_name_from_path
from tinyllava.eval.run_tiny_llava import eval_model
model_path = "bczhou/TinyLLaVA-3.1B"
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)
⚙️ 运行推理
以下是使用TinyLLaVA-3.1B运行推理的示例。
运行推理
from tinyllava.model.builder import load_pretrained_model
from tinyllava.mm_utils import get_model_name_from_path
from tinyllava.eval.run_tiny_llava import eval_model
model_path = "bczhou/TinyLLaVA-3.1B"
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": "phi",
"image_file": image_file,
"sep": ",",
"temperature": 0,
"top_p": None,
"num_beams": 1,
"max_new_tokens": 512
})()
eval_model(args)
重要提示
我们为不同模型使用不同的conv_mode
。根据下表替换args
中的conv_mode
:
模型 |
对话模式 |
TinyLLaVA-3.1B |
phi |
TinyLLaVA-2.0B |
phi |
TinyLLaVA-1.5B |
v1 |
评估
为确保可复现性,我们使用贪婪解码评估模型。
参见评估文档
数据准备
在我们的论文中,我们使用了两个不同的数据集:LLaVA数据集和ShareGPT4V数据集,并比较了它们的差异。本节提供数据准备信息。
预训练图像
- LLaVA:LLaVA的预训练图像来自LAION-CC-SBU数据集的558K子集。
- ShareGPT4V:ShareGPT4V的预训练图像是558K LAION-CC-SBU子集、SAM数据集和COCO数据集的混合。
预训练标注
- LLaVA:LLaVA的预训练标注见此处。
- ShareGPT4V:ShareGPT4V的预训练标注见此处。
SFT图像与标注
两个SFT数据集的大部分内容相同,只是LLaVA-1.5-SFT中的23K详细描述数据被替换为从100K ShareGPT4V数据中随机采样的详细标题。
下载数据
- 下载相关图像