Этот репозиторий предоставляет официальную реализацию 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
Обратите внимание, что base_llm
не требуется, если вы обучаете базовый LLM во время предварительного обучения и включаете его ckpt в model_path
.
Вы также можете настроить аргументы в соответствии со стилем инициализации вашей модели.
Если вы просто хотите использовать MoCa на своей модели, мы рекомендуем вам выполнить следующие действия:
modality_mask
, см. Line183-184, Line269-276 и Line373-382 в llava/model/llava_arch.py
. Кроме того, убедитесь, что 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. Вы также можете указать их, например Line55-64, в mir.py
, используя изображения 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
.
Модель | Размер | Расписание | Средний | ММСтар | ММЕ | ММБ | ММБ-CN | СЕИД-ИМГ | ТекстVQA | ММ-Вет | ПОПА | GQA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
LLaVA-v1.5 | 7Б | full_ft-1e | 59,1 | 30,3 | 1510,7 | 64,3 | 58,3 | 66,1 | 58,2 | 31,1 | 85,9 | 62,0 |
+МоКа | 7Б | 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.
См. Evaluation.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}
}