Mantis:多图指令微调
🤔 近年来,涌现出大量大型多模态模型(LMMs),能够有效解决单图视觉语言任务。然而,它们在解决多图视觉语言任务方面的能力仍有待提高。
😦 现有的多图LMMs(如OpenFlamingo、Emu、Idefics等)主要通过在数亿条来自网络的嘈杂交错图文数据上预训练获得多图能力,这既不高效也不有效。
🔥 因此,我们提出了Mantis,这是一个基于LLaMA-3的LMM,可以交错输入文本和图像,在学术级别资源(即16块A100-40G上训练36小时)下在Mantis-Instruct上进行训练。
🚀 Mantis在5个多图基准测试(NLVR2、Q-Bench、BLINK、MVBench、Mantis-Eval)上取得了最先进的性能,并保持了与CogVLM和Emu2相当的强大单图性能。
🔥新闻
- [2024-08-05] 我们发布了Mantis-8B-CLIP-LLaMA-3、Mantis-8B-SigLIP-LLaMA-3和Mantis-8B-Idefics2的Wandb训练曲线,用于训练复现。
- [2024-07-23] lmms-eval现在支持对Mantis模型进行评估。感谢EvolvingLMMs-Lab团队的努力。
- [2024-05-23] 🔥激动地宣布我们当前最先进的Mantis-8B-Idefics2模型!立即查看模型和演示!
- [2024-05-03] 我们已向社区发布了我们的训练代码、数据集和评估代码!查看以下部分了解更多详情。
- [2024-05-02] 我们发布了基于LLaMA3的首个多图能力LMM模型Mantis-8B!在Hugging Face Spaces或Colab演示上与Mantis-8B-SigLIP互动。
- [2024-05-02] Mantis的技术报告现已在arXiv上发布。感谢团队的努力!
安装
conda create -n mantis python=3.10
conda activate mantis
pip install -e .
# 安装flash-attention
pip install flash-attn --no-build-isolation
推理
你可以使用以下命令运行推理:
cd examples
python run_mantis.py
训练
使用以下命令安装需求:
pip install -e .[train,eval]
cd mantis/train
我们的训练脚本遵循Hugging face的编码格式和模型结构。与LLaVA Github仓库不同,你可以直接从Hugging Face模型中心加载我们的模型。
使用不同数据格式的训练示例
(这些示例数据都已预先准备在data/examples/
文件夹中,因此你可以直接查看数据格式并调试训练脚本。设置CUDA_VISIBLE_DEVICES
为你想使用的GPU。)
- 使用文本-图像交错数据进行训练(参见示例数据)
cd mantis/train
bash scripts/train_example_chat.sh # Q-lora,需要1个GPU
- 使用视频-文本交错数据进行训练(参见示例数据)
cd mantis/train
bash scripts/train_example_video.sh # Q-lora,需要1个GPU
- 使用分类数据进行训练(参见示例数据)
cd mantis/train
bash scripts/train_example_classification.sh # 全微调,可能需要8个或更多GPU
使用不同模型的训练示例
我们支持基于Fuyu架构和LLaVA架构的Mantis训练。你可以使用以下命令训练模型:
基于LLaMA3和CLIP/SigLIP编码器训练Mantis:
- 在预训练数据上预训练Mantis-LLaMA3多模态投影器(第1阶段):
bash scripts/pretrain_mllava.sh
- 在 Mantis-Instruct 上微调预训练的 Mantis-LLaMA3(第 2 阶段):
bash scripts/train_mllava.sh
基于 Fuyu-8B 训练 Mantis:
- 在 Mantis-Instruct 上微调 Fuyu-8B 以获得 Mantis-Fuyu:
bash scripts/train_fuyu.sh
注意:
- 我们的训练脚本包含自动推断 bash 命令,用于推断用于训练的 GPU 数量和 GPU 节点数。因此您只需修改数据配置路径和基础模型即可。
- 运行训练脚本时,训练数据将自动从 Hugging Face 下载。
更多详细信息请参阅 mantis/train/README.md。
查看 mantist/train/scripts 中的所有训练脚本。
评估
要复现我们的评估结果,请查看 mantis/benchmark/README.md
数据
- 🤗 Mantis-Instruct 72.1 万条用于多图像指令微调的文本-图像交错数据集
- 🤗 Mantis-Eval 217 个用于评估大型多模态模型多图像技能的高质量样例
下载
您可以使用以下命令轻松准备 Mantis-Instruct 的下载(下载和解压可能需要约一小时):
python data/download_mantis_instruct.py --max_workers 8
模型库
Mantis 模型
我们在 🤗 Hugging Face 模型仓库中提供以下模型:
- TIGER-Lab/Mantis-8B-Idefics2
- TIGER-Lab/Mantis-8B-clip-llama3
- TIGER-Lab/Mantis-8B-siglip-llama3
- TIGER-Lab/Mantis-8B-Fuyu
运行模型
- 运行 Mantis-8B-Idefics2:
cd examples && python run_mantis_idefics2.py
- Mantis-8B-siglip-llama3:
cd examples && python run_mantis.py
- Mantis-8B-Fuyu:
cd examples && python run_mantis_fuyu.py
聊天命令行界面
我们为 Mantis 模型提供了一个简单的聊天命令行界面。您可以运行以下命令与 Mantis-8B-siglip-llama3 进行聊天:
python examples/chat_mantis.py
中间检查点
以下预训练多模态投影器后的中间检查点也可用于实验复现(请注意,以下检查点仍需在 Mantis-Eval 上进行进一步微调才能变得智能。它们不是可工作的模型。):
致谢
- 感谢 LLaVA 和 LLaVA-hf 团队提供 LLaVA 代码库和 Hugging Face 兼容性!
- 感谢 Haoning Wu 提供 MVBench 评估代码!
Star 历史
引用
@article{jiang2024mantis,
title={MANTIS: Interleaved Multi-Image Instruction Tuning},
author={Jiang, Dongfu and He, Xuan and Zeng, Huaye and Wei, Con and Ku, Max and Liu, Qian and Chen, Wenhu},
journal={arXiv preprint arXiv:2405.01483},
year={2024}
}