「マルチモーダルLLMSのリンクコンテキスト学習」の公式Pytorch実装[CVPR 2024]。
このリポジトリには、次の論文の公式実装とデータセットが含まれています。
マルチモーダルLLMのリンクコンテキスト学習
https://arxiv.org/abs/2308.07891要約:新しい概念を使用してコンテキストから学び、適切な対応を提供する能力は、人間の会話に不可欠です。現在のマルチモーダルの大手言語モデル(MLLM)と大規模な言語モデル(LLM)がメガスケールのデータセットでトレーニングされているにもかかわらず、目に見えない画像を認識したり、トレーニングのない方法で新しい概念を理解したりすることは課題です。コンテキスト内学習(ICL)は、モデルが限られたタスクから「学習」し、目に見えないタスクに一般化するように奨励されているトレーニングのない少数の学習を探ります。この作業では、MLLMSの学習能力を強化するために「原因と結果からの推論」を強調するリンクコンテキスト学習(LCL)を提案します。 LCLは、サポートセットとクエリセットの間の因果関係を明示的に強化することにより、従来のICLを超えています。因果関係を備えたデモンストレーションを提供することにより、LCLはモデルをガイドして、類推だけでなく、データポイント間の根本的な因果関係も識別します。これにより、MLLMは目に見えない画像を認識し、新しい概念をより効果的に理解することができます。この新しいアプローチの評価を容易にするために、リンクコンテキスト学習用に設計された目に見えない生成された画像ラベルペアのみで構成されるISEKAIデータセットを紹介します。広範な実験では、LCL-MLLMがバニラMLLMSをめぐる新しい概念に強力なリンクコンテキスト学習機能を示していることが示されています。
conda create -n lcl python=3.10
conda activate lcl
pip install -r requirements.txt
accelerate config
Rebuild Imagenet-900セットでLCL設定をトレーニングし、ImagENET-100セットでモデルを評価します。ここでデータセットJSONを入手できます。
Isekai-10とIsekai-Pairのモデルを評価し、Isekai-10およびIsekai-PairでIsekaiデータセットをダウンロードできます。
HuggingfaceでLCL-2way-WeightおよびLCL-Mixチェックポイントをダウンロードします。
Gradio Webデモを起動するには、次のコマンドを使用します。モデルは、少なくとも16GBのメモリを持つGPUが必要なTorch.float16形式で評価されることに注意してください。
python ./mllm/demo/demo.py --model_path /path/to/lcl/ckpt
パフォーマンスを犠牲にすることを犠牲にして、8ビットの量子化で使用することも可能です。
python ./mllm/demo/demo.py --model_path /path/to/lcl/ckpt --load_in_8bit
データを準備した後、コマンドを使用してモデルをトレーニングできます。
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
データを準備した後、コマンドを使用してモデルに推論できます。
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スタイルのArgsとHuggingface:トレーナーのArgsがサポートされています。たとえば、次のようにeval batchsizeを変更できます。
# 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
ここで、 --cfg-options a=balabala b=balabala
mmengineスタイルの議論です。構成ファイルに事前に定義された引数を上書きします。および--per_device_eval_batch_size
huggingface:トレーナーの引数です。
予測の結果は、 output_dir/multitest_xxxx_extra_prediction.jsonl
に保存され、入力データセットと同じ順序を保持します。
@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 }
}