MG-LLaVA:面向多粒度视觉指令微调
Xiangyu Zhao, Xiangtai Li, Haodong Duan, Haian Huang, Yining Li, Kai Chen, Hua Yang
🎉 新闻
- [2024/08] MG-LLaVA 现在支持评估 MMVet、LLaVA-Bench-in-the-wild、MMVP 和 MathVista 基准测试!
- [2024/06] 我们的论文、代码和权重已全部发布。
📖 简介
我们提出了 MG-LLaVA,这是一种创新的多模态大语言模型,通过整合多粒度视觉流来增强模型的视觉处理能力,包括低分辨率、高分辨率和以对象为中心的特征。我们提出引入额外的高分辨率视觉编码器来捕捉细粒度细节,然后通过 Conv-Gate 融合网络将这些细节与基本视觉特征融合。为进一步提升模型的对象识别能力,我们还整合了来自离线检测器识别的边界框的对象级特征。通过仅在公开可用的多模态数据上进行指令微调,MG-LLaVA 展现出了卓越的感知技能。
🔥 主要结果
🛠️ 快速开始
安装
-
建议使用 conda 创建 Python-3.10 虚拟环境
conda create --name mgllava-env python=3.10 -y conda activate mgllava-env
-
从源代码安装 XTuner
git clone https://github.com/PhoenixZ810/MG-LLaVA.git cd MG-LLaVA pip install -e '.[all]'
数据准备
请参考 dataset_prepare.md。
模型权重
我们的检查点可在 ModelZoo 获取。
训练前准备
MG-LLaVA 使用了多个范围从 3.8B 到 34B 的 LLM,包括 Phi-3-3.8B、Vicuna1.5-7B、Vicuna1.5-13B、llama3-8B 和 Yi1.5-34B。我们采用 CLIP-Large-336 和 CLIP-ConvNext-320-d 作为视觉编码器,在训练前你需要下载 LLM 和 CLIP 的检查点。
训练过程与原始 XTuner 类似。在训练之前,你应该检查 configs 并修改以下变量为你自己的设置。你也可以修改 configs 以使用自己的设置训练模型。
# LLM 和 CLIP 的路径
llm_name_or_path
visual_encoder_name_or_path
visual_encoder_aux_path
prompt_template
# 数据
data_path
box_json_path
image_folder
offline_processed_text_folder(可选)
# 训练
pretrained_pth(微调)
在训练之前,你可以使用以下命令预处理文本数据以加快训练过程。你可以通过运行以下命令预处理文本数据:
python xtuner/tools/process_untokenized_llava_data.py CONFIG --save-folder TEXT-PATH
然后在配置文件中将 offline_processed_text_folder
设置为 TEXT-PATH
。
训练与评估
MG-LLaVA 遵循两阶段训练过程,使用 Vicuna1.5-7B 模型在 8×A100 GPU 上训练整个过程大约需要 23 小时。例如,要使用 Vicuna1.5-7B 训练 MG-LLaVA 模型,你可以使用以下命令:
-
完整流程:预训练 + 微调 + 评估
bash script/train_vicuna7B.sh
如果你想逐步训练我们的模型,可以按照以下说明进行:
-
第一步,开始预训练。
bash script/train_pretrain.sh mg_llava/config/vicuna/fuse_vicuna7b_clip_L_14_336_pretrain_padding.py
-
第二步,开始微调。
bash script/train_sft.sh mg_llava/config/vicuna/fuse_vicuna7b_clip_L_14_336_sft_padding.py
-
--deepspeed
表示使用 DeepSpeed 🚀 优化训练。XTuner 集成了几种策略,包括 ZeRO-1、ZeRO-2 和 ZeRO-3。如果你想禁用此功能,只需删除这个参数。 -
更多示例,请参见 finetune.md。
-
-
第三步,评估。评估指标在 sft 配置中指定,包括 MMBench、SEED、SQA、AI2D、TextVQA、POPE、GQA、VQAv2 等。请参考 evaluation.md。
你可以将保存的 PTH 模型(如果使用 DeepSpeed,它将是一个目录)转换为 Hugging Face 模型,方法如下:
xtuner convert pth_to_hf CONFIG_NAME_OR_PATH CHECKPOINT SAVE_PATH
引用
如果您发现 MG-LLaVA 有用,请使用以下 BibTeX 进行引用:
@article{zhao2024mg,
title={MG-LLaVA: Towards Multi-Granularity Visual Instruction Tuning},
author={Zhao, Xiangyu and Li, Xiangtai and Duan, Haodong and Huang, Haian and Li, Yining and Chen, Kai and Yang, Hua},
journal={arXiv preprint arXiv:2406.17770},
year={2024}
}