Implémentation officielle de Pytorch de "Link-Context Learning for Multimodal LLMS" [CVPR 2024].
Ce référentiel contient l' implémentation officielle et l'ensemble de données du document suivant:
Apprentissage de lien-context pour les LLM multimodales
https://arxiv.org/abs/2308.07891Résumé: La capacité d'apprendre du contexte avec de nouveaux concepts et de fournir des réponses appropriées est essentielle dans les conversations humaines. Malgré les modèles de grande langue (MLLM) et les modèles de langage (LLM) (LLM) (LLM) actuels qui sont formés sur des ensembles de données à l'échelle méga, la reconnaissance d'images invisibles ou la compréhension de nouveaux concepts de manière sans formation reste un défi. L'apprentissage dans le contexte (ICL) explore l'apprentissage à quelques coups de formation, où les modèles sont encouragés à «apprendre à apprendre» des tâches limitées et à généraliser aux tâches invisibles. Dans ce travail, nous proposons Link-Context Learning (LCL), qui met l'accent sur le «raisonnement à partir de la cause et de l'effet» pour augmenter les capacités d'apprentissage des MLLM. LCL va au-delà de l'ICL traditionnel en renforçant explicitement la relation causale entre l'ensemble de support et l'ensemble de requête. En fournissant des démonstrations avec des liens causaux, LCL guide le modèle pour discerner non seulement l'analogie mais aussi les associations causales sous-jacentes entre les points de données, ce qui permet aux MLLM de reconnaître plus efficacement les images invisibles et de comprendre les nouveaux concepts. Pour faciliter l'évaluation de cette nouvelle approche, nous introduisons l'ensemble de données ISEKAI, comprenant exclusivement de paires d'échanges d'images générées invisibles conçues pour l'apprentissage du contexte de liaison. Des expériences approfondies montrent que notre LCL-MLLM présente de fortes capacités d'apprentissage en contexte de lien vers de nouveaux concepts sur les MLLM de vanille.
conda create -n lcl python=3.10
conda activate lcl
pip install -r requirements.txt
accelerate config
Nous formons le paramètre LCL sur notre ensemble Rebuild ImageNet-900 et évaluons le modèle sur l'imageNet-100. Vous pouvez obtenir le jeu de données JSON ici.
Nous évaluons le modèle sur ISEKAI-10 et ISEKAI-PAIR, vous pouvez télécharger un ensemble de données ISEKAI dans ISEKAI-10 et ISEKAI-PAIR.
Téléchargez nos points de contrôle LCL-2WAY-Web et LCL-MIX dans Huggingface.
Pour lancer une démo Web Gradio, utilisez la commande suivante. Veuillez noter que le modèle évalue au format TORCH.FLOAT16, qui nécessite un GPU avec au moins 16 Go de mémoire.
python ./mllm/demo/demo.py --model_path /path/to/lcl/ckpt
Il est également possible de l'utiliser en quantification 8 bits, bien qu'au détriment de sacrifier certaines performances.
python ./mllm/demo/demo.py --model_path /path/to/lcl/ckpt --load_in_8bit
Après avoir préparé des données, vous pouvez former le modèle à l'aide de la commande:
accelerate launch --num_processes 4
--main_process_port 23786
mllm/pipeline/finetune.py
config/lcl_train_2way_weight.py
--cfg-options data_args.use_icl=True
--cfg-options model_args.model_name_or_path=/path/to/init/checkpoint
accelerate launch --num_processes 4
--main_process_port 23786
mllm/pipeline/finetune.py
config/lcl_train_mix1.py
--cfg-options data_args.use_icl=True
--cfg-options model_args.model_name_or_path=/path/to/init/checkpoint
Après avoir préparé des données, vous pouvez inférer le modèle à l'aide de la commande:
accelerate launch --num_processes 4
--main_process_port 23786
mllm/pipeline/finetune.py
config/lcl_eval_ISEKAI_10.py
--cfg-options data_args.use_icl=True
--cfg-options model_args.model_name_or_path=/path/to/checkpoint
MMEGINE Style Args et Hugging Face: Trainer Args sont pris en charge. Par exemple, vous pouvez modifier Eval BatchSize comme ceci:
# ISEKAI10
accelerate launch --num_processes 4
--main_process_port 23786
mllm/pipeline/finetune.py
config/shikra_eval_multi_pope.py
--cfg-options data_args.use_icl=True
--cfg-options model_args.model_name_or_path=/path/to/checkpoint
--per_device_eval_batch_size 1
# ISEKAI-PAIR
accelerate launch --num_processes 4
--main_process_port 23786
mllm/pipeline/finetune.py
config/shikra_eval_multi_pope.py
--cfg-options data_args.use_icl=True
--cfg-options model_args.model_name_or_path=/path/to/checkpoint
--per_device_eval_batch_size 1
où --cfg-options a=balabala b=balabala
est un argument de style Mmengine. Ils écraseront l'argument prédéfini dans le fichier de configuration. Et --per_device_eval_batch_size
est un argument HuggingFace: Trainer.
Le résultat de la prédiction sera enregistré dans output_dir/multitest_xxxx_extra_prediction.jsonl
, qui contiennent le même ordre que l'ensemble de données d'entrée.
@inproceedings { tai2023link ,
title = { Link-Context Learning for Multimodal LLMs } ,
author = { Tai, Yan and Fan, Weichen and Zhang, Zhao and Liu, Ziwei } ,
booktitle = { Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (CVPR) } ,
year = { 2024 }
}