このリポジトリは、次の論文の公式 PyTorch 実装を提供します。
モダリティ統合率による大規模視覚言語モデルにおけるクロスモーダルアライメントの解読
Qidong Huang 1,2 、 Xiaoyi Dong 2,3 、 Pan Zhang 2 、 Yuhang Zang 2 、 Yuhang Cao 2 、 Jiaqi Wang 2 、 Dahua Lin 2 、 Weiming Zhang 1 、 Nenghai Yu 1
1中国科学技術大学、 2上海 AI 研究所、 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 などの各フォワード関数の仮パラメータとして追加します。 llava/model/language_model/llava_llama.py
の -175 。use_moca=True
の使用をサポートするために、次のような詳細を確認します (どの場所を修正する必要があるかを見つけるには、このリポジトリでuse_moca
検索することをお勧めします): 1)それをモデル構成に追加します (ここ)。 2) それをトレーニング引数 (ここ) に追加します。 3) トレーニング中にロックを解除します (こちら)。 4) チェックポイントが正しく保存されていることを確認します (here1、here2、here3)。--use_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
を指定します。また、デフォルトで TextVQA val 画像と CNN/DM テキストを使用して、 mir.py
の Line55-64 のように指定することもできます。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
私たちのコードベースは、MoCa の実装をアクティブ化するために--use_moca
をサポートしています。詳細については、 scripts/v1_5/pre_sft_moca.sh
を確認してください。
モデル | サイズ | スケジュール | 平均 | MMスター | MME | MMB | MMB-CN | シード-IMG | テキストVQA | MM-獣医 | 法王 | GQA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
LLaVA-v1.5 | 7B | フル_フィート-1e | 59.1 | 30.3 | 1510.7 | 64.3 | 58.3 | 66.1 | 58.2 | 31.1 | 85.9 | 62.0 |
+MoCa | 7B | フル_フィート-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}
}