Dieses Repository stellt die offizielle PyTorch-Implementierung des folgenden Dokuments bereit:
Entschlüsselung der modalübergreifenden Ausrichtung in großen Bild-Sprach-Modellen mit Modalitätsintegrationsrate
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 Universität für Wissenschaft und Technologie Chinas, 2 Shanghai AI Laboratory, 3 Chinesische Universität Hongkong
[10.10.2024] Wir veröffentlichen den Artikel bei ArXiv und HuggingFace!
[10.10.2024] Diese Projektseite wurde erstellt!
Wenn Sie MIR lediglich als Vortrainingsindikator Ihres eigenen Modells verwenden möchten, ist keine zusätzliche Umgebung erforderlich.
torch
, numpy
und scipy
installiert sind.mir.py
durch den Code Ihres eigenen Modells. Wir zeigen den Code von LLaVA als Referenz an. 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
Beachten Sie, dass base_llm
nicht erforderlich ist, wenn Sie das Basis-LLM während des Vortrainings trainieren und seinen Cckpt in model_path
einschließen.
Sie können die Argumente auch an den Initialisierungsstil Ihres Modells anpassen.
Wenn Sie MoCa nur auf Ihrem eigenen Modell verwenden möchten, empfehlen wir Ihnen, die folgenden Schritte auszuführen:
modality_mask
berechnen kann. Weitere Informationen finden Sie in Zeile 183-184, Zeile 269-276 und Zeile 373-382 in llava/model/llava_arch.py
. Stellen Sie außerdem sicher, dass die modality_mask
erfolgreich in den Vorwärtsdurchlauf des Modells übernommen werden kann, indem Sie sie beispielsweise als formalen Parameter jeder Vorwärtsfunktion hinzufügen, z. B. Zeile 70, Zeile 88, Zeile 96, Zeile 106, Zeile 127, Zeile 137, Zeile 145, Zeile 157, Zeile 166, Zeile 174 -175 in llava/model/language_model/llava_llama.py
.use_moca=True
zu unterstützen, wie zum Beispiel (es wird empfohlen, use_moca
in diesem Repo zu durchsuchen, um herauszufinden, welche Stellen überarbeitet werden sollten): 1)Fügen Sie es zur Modellkonfiguration hinzu (hier). 2) Fügen Sie es zu den Trainingsargumenten hinzu (hier). 3) Schalte es während des Trainings frei (hier). 4) Stellen Sie sicher, dass der Prüfpunkt korrekt gespeichert ist (hier1, hier2, hier3).--use_moca
hinzu, wenn Sie den Trainingsbefehl ausführen, um die Verwendung von MoCa zu ermöglichen. Wenn Sie unsere Codebasis (modifiziert auf LLaVA) zur Reproduktion verwenden möchten, wird empfohlen, mithilfe der folgenden Schritte eine neue Umgebung zu erstellen. Die folgenden Schritte sind nur für Linux aufgeführt. Wenn Sie macOS oder Windows verwenden, wenden Sie sich bitte an 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
Um die MIR-Implementierung auf dieser Codebasis zu reproduzieren, können Sie die folgenden Schritte ausführen:
text_data_path
und image_data_path
für die MIR-Berechnung an. Sie können sie auch wie Line55-64 in mir.py
angeben und dabei standardmäßig TextVQA-Wertbilder und CNN/DM-Text verwenden, d. h.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
Unsere Codebasis unterstützt --use_moca
, um die Implementierung von MoCa zu aktivieren. Weitere Informationen finden Sie unter scripts/v1_5/pre_sft_moca.sh
.
Modell | Größe | Zeitplan | Durchschnitt | MMStar | MME | MMB | MMB-CN | SEED-IMG | TextVQA | MM-Tierarzt | PAPST | GQA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Die vorab trainierten und fein abgestimmten Prüfpunkte werden freigegeben.
Diese Codebasis basiert auf LLaVA und ShareGPT4V, wo wir einige neue Funktionen einführen und jetzt die folgenden Eingaben im Startskript unterstützen:
--tune_vision_tower
und --tune_vit_from_layer
--tune_language_model
und --tune_llm_utill_layer
--tune_entire_model
--data_scale
--use_moca
und --moca_std
Einige Fälle als Referenz:
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
Bei den meisten Benchmarks orientieren wir uns an der Originalauswertung in LLaVA. Für MMStar verwenden wir VLMEvalKit.
Siehe Evaluation.md.
Dieses Repo basiert auf der Codebasis von LLaVA und ShareGPT4V. Vielen Dank für ihre beeindruckenden Arbeiten!
Wenn Sie diese Arbeit für Ihre Forschung nützlich finden, zitieren Sie bitte unseren Artikel:
@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}
}