Este repositório fornece a implementação oficial do PyTorch do seguinte artigo:
Decifrando o alinhamento intermodal em grandes modelos de linguagem visual com taxa de integração de modalidade
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 Universidade de Ciência e Tecnologia da China, 2 Laboratório de IA de Xangai, 3 Universidade Chinesa de Hong Kong
[2024.10.10] Lançamos o artigo no ArXiv e HuggingFace!
[2024.10.10] Esta página do projeto foi construída!
Se você quiser usar o MIR apenas como indicador de pré-treinamento do seu próprio modelo, nenhum ambiente adicional será necessário.
torch
, numpy
e scipy
estejam instalados.mir.py
pelo código do seu próprio modelo, exibimos o código do LLaVA como referência. 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
Observe que base_llm
não será necessário se você treinar o LLM base durante o pré-treinamento e incluir seu ckpt no model_path
.
Você também pode ajustar os argumentos ao estilo de inicialização do seu modelo.
Se você deseja usar o MoCa apenas em seu próprio modelo, recomendamos seguir os passos abaixo:
modality_mask
, consulte Line183-184, Line269-276 e Line373-382 em llava/model/llava_arch.py
. Além disso, certifique-se de que modality_mask
possa ser entregue com sucesso no modelo forward pass, por exemplo, adicionando-o como o parâmetro formal de cada função forward, como Line70, Line88, Line96, Line106, Line127, Line137, Line145, Line157, Line166, Line174 -175 em llava/model/language_model/llava_llama.py
.use_moca=True
, como (é recomendado pesquisar use_moca
neste repositório para descobrir quais locais devem ser revisados): 1)Adicione-o na configuração do modelo (aqui). 2) Adicione-o aos argumentos de treinamento (aqui). 3) Desbloqueie durante o treino (aqui). 4) Garanta o salvamento correto do ponto de verificação (aqui1, aqui2, aqui3).--use_moca
ao executar o comando de treinamento para habilitar o uso do MoCa. Se você quiser usar nossa base de código (modificada no LLaVA) para reprodução, é recomendado construir um novo ambiente através dos passos abaixo. As etapas a seguir estão listadas apenas para Linux. Se você estiver usando macOS ou Windows, consulte 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
Para reproduzir a implementação MIR nesta base de código, siga estas etapas:
text_data_path
e image_data_path
para cálculo MIR. Você também pode especificá-los como Line55-64 em mir.py
, usando imagens TextVQA val e texto CNN/DM por padrão, ou seja,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
Nossa base de código suporta --use_moca
para ativar a implementação do MoCa. Confira scripts/v1_5/pre_sft_moca.sh
para mais detalhes.
Modelo | Tamanho | Agendar | Média | MMStar | MME | MMB | MMB-CN | SEMENTE-IMG | TextoVQA | MM-Vet | PAPA | GQG |
---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Os pontos de verificação pré-treinados e ajustados são liberados.
Esta base de código é baseada em LLaVA e ShareGPT4V, onde introduzimos alguns novos recursos e agora suporta as seguintes entradas no script de lançamento:
--tune_vision_tower
e --tune_vit_from_layer
--tune_language_model
e --tune_llm_utill_layer
--tune_entire_model
--data_scale
--use_moca
e --moca_std
Alguns casos para referência:
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
Seguimos a avaliação original no LLaVA para a maioria dos benchmarks. Para MMStar, usamos VLMEvalKit.
Consulte Avaliação.md.
Este repositório é baseado na base de código LLaVA e ShareGPT4V. Obrigado por seus trabalhos impressionantes!
Se você achar este trabalho útil para sua pesquisa, cite nosso artigo:
@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}
}