该存储库提供了以下论文的官方 PyTorch 实现:
用模态集成率破译大型视觉语言模型中的跨模态对齐
黄启东1,2 , 董晓义2,3 , 张潘2 , 臧宇航2 , 曹宇航2 , 王嘉琪2 , 林大华2 , 张伟明1 , 于能海1
1中国科学技术大学、 2上海人工智能实验室、 3香港中文大学
[2024.10.10]我们在 ArXiv 和 HuggingFace 发布了论文!
[2024.10.10]该项目页面已建成!
如果您只是想使用MIR作为自己模型的预训练指标,则不需要额外的环境。
torch
、 numpy
和scipy
等软件包。mir.py
中的模型预处理和生成替换为您自己的模型代码,我们显示 LLaVA 的代码作为参考。 python mir.py --model_path PATH/TO/MODEL --base_llm PATH/TO/LLM --text_data_path PATH/TO/TEXT/DATA --image_data_path PATH/TO/VISION/DATA --eval_num 100 --mode fast
请注意,如果您在预训练期间训练基础 LLM 并将其 ckpt 包含在model_path
中,则不需要base_llm
。
您还可以将参数调整为模型的初始化样式。
如果您只想在自己的模型上使用 MoCa,我们建议您按照以下步骤操作:
modality_mask
,请参考llava/model/llava_arch.py
中的 Line183-184、Line269-276 和 Line373-382 。另外,请确保modality_mask
可以成功传递到模型前向传递中,例如将其添加为每个前向函数的形参,如Line70、Line88、Line96、Line106、Line127、Line137、Line145、Line157、Line166、Line174 -175 在llava/model/language_model/llava_llama.py
中。use_moca=True
的用法,例如(建议在本仓库中搜索use_moca
来查找哪些地方需要修改): 1)将其添加到模型配置中(此处)。 2)将其添加到训练参数中(此处)。 3)在训练期间解锁(此处)。 4)确保正确的检查点保存(这里1,这里2,这里3)。--use_moca
以启用 MoCa 的使用。 如果您想使用我们的代码库(在LLaVA上修改)进行复制,建议您通过以下步骤构建新的环境。以下步骤仅针对 Linux 列出。如果您使用的是 macOS 或 Windows,请参阅 LLaVA。
git clone https://github.com/shikiw/Modality-Integration-Rate.git
cd Modality-Integration-Rate
conda create -n llava python=3.10 -y
conda activate llava
python -m pip install --upgrade pip # enable PEP 660 support
python -m pip install -e .
python -m pip install -e transformers-4.37.2
pythom -m pip install -e ".[train]"
pythom -m pip install flash-attn --no-build-isolation
要在此代码库上重现 MIR 实现,您可以按照以下步骤操作:
text_data_path
和image_data_path
。您还可以像mir.py
中的 Line55-64 一样指定它们,默认使用 TextVQA val 图像和 CNN/DM 文本,即PATH/TO/VISION/DATA
。PATH/TO/TEXT/DATA
。 python mir.py --model_path PATH/TO/MODEL --base_llm PATH/TO/LLM --eval_num 100 --mode fast
python mir.py --model_path PATH/TO/MODEL --eval_num 100 --mode fast
我们的代码库支持--use_moca
来激活 MoCa 的实现。查看scripts/v1_5/pre_sft_moca.sh
了解更多详细信息。
模型 | 尺寸 | 日程 | 平均的 | MM星 | 微机电系统 | MMB | MMB-CN | 种子IMG | 文本VQA | MM-兽医 | 教皇 | 质量保证局 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
LLaVA-v1.5 | 7B | full_ft-1e | 59.1 | 30.3 | 1510.7 | 64.3 | 58.3 | 66.1 | 58.2 | 31.1 | 85.9 | 62.0 |
+MoCa | 7B | full_ft-1e | 60.6 | 36.5 | 1481.0 | 66.8 | 60.0 | 67.0 | 58.7 | 32.2 | 86.9 | 62.8 |
预训练和微调的检查点已发布。
该代码库基于 LLaVA 和 ShareGPT4V,我们在其中引入了一些新功能,现在它支持启动脚本中的以下输入:
--tune_vision_tower
和--tune_vit_from_layer
--tune_language_model
和--tune_llm_utill_layer
--tune_entire_model
--data_scale
--use_moca
和--moca_std
部分案例供参考:
sh scripts/v1_5/pre_data_scale.sh
sh scripts/v1_5/pre_unlock_vit-12_llm-16_sft.sh
sh scripts/v1_5/pre_unlock_vit-12_llm-all_sft.sh
sh scripts/v1_5/pre_sft_moca.sh
对于大多数基准测试,我们遵循 LLaVA 中的原始评估。对于 MMStar,我们使用 VLMEvalKit。
请参阅评估.md。
该存储库基于 LLaVA 和 ShareGPT4V 的代码库。感谢他们令人印象深刻的作品!
如果您发现这项工作对您的研究有用,请引用我们的论文:
@article{huang2024deciphering,
title={Deciphering Cross-Modal Alignment in Large Vision-Language Models with Modality Integration Rate},
author={Huang, Qidong and Dong, Xiaoyi and Zhang, Pan and Zang, Yuhang and Cao, Yuhang and Wang, Jiaqi and Lin, Dahua and Zhang, Weiming and Yu, Nenghai},
journal={arXiv preprint arXiv:2410.07167},
year={2024}
}