问答社区
ShareGPT4V:使用更好的字幕改进大型多模式模型
ShareGPT4V 的官方实现:通过更好的字幕改进大型多模式模型。
更多详细信息请参阅ModelZoo.md。
姓名 | 法学硕士 | 检查点 | LLaVA-Bench-Wild | MME-感知 | MME-认知 | 测试台 | MMBench-CN | SEED 图像 | MM-兽医 | 基准测试 | SQA 图像 | 视觉质量评估 (VQA) | 维智 | 质量保证 | 文本VQA |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
分享GPT4V-7B | 小羊驼-7B | 分享GPT4V-7B | 72.6 | 1567.4 | 376.4 | 68.8 | 62.2 | 69.7 | 37.6 | 63.4 | 68.4 | 80.6 | 57.2 | 63.3 | 60.4 |
分享GPT4V-13B | 小羊驼-13B | 分享GPT4V-13B | 79.9 | 1618.7 | 303.2 | 68.5 | 63.7 | 70.8 | 43.1 | 65.2 | 71.2 | 81.0 | 55.6 | 64.8 | 62.2 |
快速使用:安装
git clone https://github.com/InternLM/InternLM-XComposer --depth=1
cd projects/ShareGPT4V
conda create -n share4v python=3.10 -y
conda activate share4v
pip install --upgrade pip
pip install -e .
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
您可以通过以下方式构建本地演示:
# run script
python tools/app.py
数据准备
您应该按照此说明Data.md来管理数据集。目前,我们提供对网络数据的直接下载访问。但为了避免潜在的争议,我们计划在不久的将来发布这些数据集的 URL,而不是原始数据。
ShareGPT4V 模型训练包括两个阶段:(1)特征对齐阶段:使用我们的 ShareGPT4V-PT 数据集和 1.2M ShareCaptioner 生成的高质量图像文本对来微调视觉编码器、投影仪和 LLM,以对齐文本和视觉模态;(2)视觉指令调整阶段:微调投影仪和 LLM,教模型遵循多模态指令。
要在较少的 GPU 上进行训练,您可以相应减少per_device_train_batch_size
并增加gradient_accumulation_steps
。始终保持全局批量大小相同:per_device_train_batch_size x gradient_accumulation_steps x num_gpus
。
我们在微调中使用了与 ShareGPT4V-7B 类似的一组超参数。下面提供了预训练和微调中使用的超参数。
- 预训练
超参数 | 全局批次大小 | 学习率 | 纪元 | 最大长度 | 权重衰减 |
---|---|---|---|---|---|
分享GPT4V-7B | 256 | 2e-5 | 1 | 2048 | 0 |
- 微调
超参数 | 全局批次大小 | 学习率 | 纪元 | 最大长度 | 权重衰减 |
---|---|---|---|---|---|
分享GPT4V-7B | 128 | 2e-5 | 1 | 2048 | 0 |
首先,您应该下载由 LLaVA-1.5 和 LAION-CC-SBU-558K 预训练的MLP 投影仪。因为在使用高质量详细字幕进行模态对齐之前,粗略的模态对齐过程是有益的。
您可以运行projects/ShareGPT4V/scripts/sharegpt4v/slurm_pretrain_7b.sh
以预训练模型。请记住在脚本中指定投影仪路径。在此阶段,我们对视觉编码器的块、投影仪和 LLM 的后半部分进行了微调。
在我们的设置中,我们使用了 16 个 A100 (80G) GPU,整个预训练过程持续约 12 小时。您可以调整梯度累积步骤的数量以减少 GPU 数量。
在这个阶段,我们使用 sharegpt4v_mix665k_cap23k_coco-ap9k_lcs3k_sam9k_div2k.json 对投影仪和 LLM 进行微调。
您可以运行projects/ShareGPT4V/scripts/sharegpt4v/slurm_finetune_7b.sh
来微调模型。
在我们的设置中,我们使用了 16 个 A100 (80G) GPU,整个预训练过程持续约 7 个小时。您可以调整梯度累积步骤的数量以减少 GPU 的数量。
为了确保可重复性,我们使用贪婪解码来评估模型。我们不使用集束搜索来评估,以使推理过程与实时输出的聊天演示保持一致。
- LLaVA:我们建立的代码库。感谢他们的出色工作。
- Vicuna:令人惊叹的开源大型语言模型!
如果您发现我们的工作对您的研究有帮助,请考虑给出星级⭐和引用📝
@article{chen2023sharegpt4v,
title={ShareGPT4V: Improving Large Multi-Modal Models with Better Captions},
author={Chen, Lin and Li, Jisong and Dong, Xiaoyi and Zhang, Pan and He, Conghui and Wang, Jiaqi and Zhao, Feng and Lin, Dahua},
journal={arXiv preprint arXiv:2311.12793},
year={2023}
}