該存儲庫提供了以下論文的官方 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}
}