Repositori ini menyediakan implementasi resmi PyTorch dari makalah berikut:
Menguraikan Penyelarasan Lintas Modal dalam Model Bahasa Visi Besar dengan Tingkat Integrasi Modalitas
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 Universitas Sains dan Teknologi Tiongkok, 2 Laboratorium AI Shanghai, 3 Universitas Tiongkok Hong Kong
[2024.10.10] Kami merilis makalahnya di ArXiv dan HuggingFace!
[2024.10.10] Halaman proyek ini telah dibuat!
Jika Anda hanya ingin menggunakan MIR sebagai indikator pra-pelatihan model Anda sendiri, tidak diperlukan lingkungan tambahan.
torch
, numpy
, dan scipy
sudah diinstal.mir.py
dengan kode model Anda sendiri, kami menampilkan kode LLaVA sebagai referensi. 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
Perhatikan bahwa base_llm
tidak diperlukan jika Anda melatih LLM dasar selama pra-pelatihan dan menyertakan ckpt-nya dalam model_path
.
Anda juga dapat menyesuaikan argumen dengan gaya inisialisasi model Anda.
Jika Anda hanya ingin menggunakan MoCa pada model Anda sendiri, kami menyarankan Anda untuk mengikuti langkah-langkah di bawah ini:
modality_mask
, silakan merujuk ke Line183-184, Line269-276 dan Line373-382 di llava/model/llava_arch.py
. Selain itu, pastikan bahwa modality_mask
berhasil dimasukkan ke dalam model forward pass, misalnya menambahkannya sebagai parameter formal setiap fungsi penerusan, seperti Line70, Line88, Line96, Line106, Line127, Line137, Line145, Line157, Line166, Line174 -175 di llava/model/language_model/llava_llama.py
.use_moca=True
, seperti (disarankan untuk mencari use_moca
di repo ini untuk menemukan tempat mana yang harus direvisi): 1)Tambahkan ke dalam konfigurasi model (di sini). 2) Tambahkan ke dalam argumen pelatihan (di sini). 3) Buka kuncinya selama pelatihan (di sini). 4) Pastikan penyimpanan pos pemeriksaan benar (di sini1, di sini2, di sini3).--use_moca
saat menjalankan perintah pelatihan untuk mengaktifkan penggunaan MoCa. Jika Anda ingin menggunakan basis kode kami (dimodifikasi pada LLaVA) untuk reproduksi, Anda disarankan untuk membangun lingkungan baru melalui langkah-langkah di bawah ini. Langkah-langkah berikut hanya tercantum untuk Linux. Jika Anda menggunakan macOS atau Windows, silakan merujuk ke 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
Untuk mereproduksi implementasi MIR pada basis kode ini, Anda dapat mengikuti langkah-langkah berikut:
text_data_path
dan image_data_path
untuk perhitungan MIR. Anda juga dapat menentukannya seperti Line55-64 di mir.py
, menggunakan gambar val TextVQA dan teks CNN/DM secara default, yaitu,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
Basis kode kami mendukung --use_moca
untuk mengaktifkan implementasi MoCa. Lihat scripts/v1_5/pre_sft_moca.sh
untuk lebih jelasnya.
Model | Ukuran | Jadwal | Rata-rata | Bintang MM | MME | MMB | MMB-CN | BENIH-IMG | TeksVQA | MM-Dokter Hewan | PAUS | GQA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
LLaVA-v1.5 | 7B | penuh_ft-1e | 59.1 | 30.3 | 1510.7 | 64.3 | 58.3 | 66.1 | 58.2 | 31.1 | 85.9 | 62.0 |
+MoCa | 7B | penuh_ft-1e | 60.6 | 36.5 | 1481.0 | 66.8 | 60.0 | 67.0 | 58.7 | 32.2 | 86.9 | 62.8 |
Pos pemeriksaan yang telah dilatih sebelumnya dan disempurnakan telah dilepaskan.
Basis kode ini didasarkan pada LLaVA dan ShareGPT4V, tempat kami memperkenalkan beberapa fitur baru dan sekarang mendukung masukan berikut dalam skrip peluncuran:
--tune_vision_tower
dan --tune_vit_from_layer
--tune_language_model
dan --tune_llm_utill_layer
--tune_entire_model
--data_scale
--use_moca
dan --moca_std
Beberapa kasus untuk referensi:
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
Kami mengikuti evaluasi asli di LLaVA untuk sebagian besar tolok ukur. Untuk MMStar, kami menggunakan VLMEvalKit.
Lihat Evaluasi.md.
Repo ini didasarkan pada basis kode LLaVA dan ShareGPT4V. Terima kasih atas karya mereka yang mengesankan!
Jika Anda merasa karya ini berguna untuk penelitian Anda, silakan kutip makalah kami:
@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}
}