Offizielle Pytorch-Implementierung von "Link-Kontext-Lernen für multimodale LLMs" [CVPR 2024].
Dieses Repository enthält die offizielle Implementierung und den Datensatz des folgenden Papiers:
Linkkontextlernen für multimodale LLMs
https://arxiv.org/abs/2308.07891Zusammenfassung: Die Fähigkeit, aus dem Kontext mit neuartigen Konzepten zu lernen und geeignete Antworten zu liefern, sind in menschlichen Gesprächen wesentlich. Trotz aktueller multimodaler großer Sprachmodelle (MLLMS) und großer Sprachmodelle (LLMs), die auf Datensätzen im Mega-Maßstab trainiert werden, bleibt das Erkennen unsichtbarer Bilder oder das Verständnis neuartiger Konzepte auf Trainingsfreie Weise eine Herausforderung. In-Context Learning (ICL) untersucht das Training-Free-Shot-Lernen, bei dem Modelle dazu ermutigt werden, "zu lernen" von begrenzten Aufgaben und verallgemeinerte Aufgaben. In dieser Arbeit schlagen wir Link-Context Learning (LCL) vor, das "Argumentation von Ursache und Wirkung" betont, um die Lernfunktionen von MLLMs zu erweitern. LCL geht über die traditionelle ICL hinaus, indem sie die kausale Beziehung zwischen dem Unterstützungssatz und dem Abfragesatz explizit stärkt. Durch die Bereitstellung von Demonstrationen mit kausalen Verbindungen führt LCL das Modell, um nicht nur die Analogie, sondern auch die zugrunde liegenden kausalen Assoziationen zwischen Datenpunkten zu erkennen, die MLLMS ermöglichen, unsichtbare Bilder zu erkennen und neuartige Konzepte effektiver zu verstehen. Um die Bewertung dieses neuen Ansatzes zu erleichtern, stellen wir den ISEKAI-Datensatz ein, der ausschließlich aus unsichtbaren erzeugten Bildmarkierungspaaren für das Link-Kontext-Lernen besteht. Umfangreiche Experimente zeigen, dass unser LCL-MLLM starke Lernfunktionen für Link-Kontext für neuartige Konzepte über Vanille-MLLMs aufweist.
conda create -n lcl python=3.10
conda activate lcl
pip install -r requirements.txt
accelerate config
Wir trainieren die LCL-Einstellung auf unserem Rebuild ImageNet-900-Set und bewerten das Modell auf ImageNet-100-Set. Sie können den Datensatz JSON hier erhalten.
Wir bewerten das Modell auf ISEKAI-10 und ISEKAI-PAIR.
Laden Sie unsere LCL-2way-Gewicht und LCL-Mix-Checkpoints in HuggingFace herunter.
Verwenden Sie den folgenden Befehl, um eine Gradio -Web -Demo zu starten. Bitte beachten Sie, dass das Modell im Fackel -16 -Format bewertet wird, für das eine GPU mit mindestens 16 GB Speicher erforderlich ist.
python ./mllm/demo/demo.py --model_path /path/to/lcl/ckpt
Es ist auch möglich, es in 8-Bit-Quantisierung zu verwenden, wenn auch auf Kosten der Opferung einer Leistung.
python ./mllm/demo/demo.py --model_path /path/to/lcl/ckpt --load_in_8bit
Nach der Erstellung von Daten können Sie das Modell mit dem Befehl trainieren:
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
Nach der Vorbereitung von Daten können Sie das Modell mit dem Befehl aufmerksam machen:
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
Mmengine -Stil -Argumente und Umarmungen: Trainer -Argumente werden unterstützt. Sie können beispielsweise Eval BatchSize so ändern:
# 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
wobei --cfg-options a=balabala b=balabala
ist ein Argument im mmengine Stil. Sie werden das in der Konfigurationsdatei vordefinierte Argument überschreiben. Und --per_device_eval_batch_size
ist umarmt: Trainerargument.
Das Vorhersageergebnis wird in output_dir/multitest_xxxx_extra_prediction.jsonl
gespeichert, die dieselbe Reihenfolge wie der Eingabedatensatz enthält.
@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 }
}