이 저장소는 다음 문서의 공식 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와 같은 각 정방향 함수의 형식 매개변수로 추가합니다. -175 llava/model/language_model/llava_llama.py
.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
우리 코드베이스는 --use_moca
지원하여 MoCa 구현을 활성화합니다. 자세한 내용은 scripts/v1_5/pre_sft_moca.sh
확인하세요.
모델 | 크기 | 일정 | 평균 | 엠엠스타 | MME | MMB | MMB-CN | SEED-IMG | 텍스트VQA | MM-수의사 | 로마 교황 | 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 |
+모카 | 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을 사용합니다.
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}
}