تنفيذ Pytorch الرسمي لـ "Link-Context Learning for Multimodal LLMS" [CVPR 2024].
يحتوي هذا المستودع على التنفيذ الرسمي ومجموعة بيانات الورقة التالية:
تعلم الارتباط التعلم لـ LLMs متعدد الوسائط
https://arxiv.org/abs/2308.07891الخلاصة: القدرة على التعلم من السياق مع مفاهيم جديدة ، وتقديم الاستجابات المناسبة ضرورية في المحادثات الإنسانية. على الرغم من أن نماذج اللغة الكبيرة المتعددة الوسائط الحالية (MLLMS) ونماذج اللغة الكبيرة (LLMs) يتم تدريبها على مجموعات البيانات الضخمة على نطاق واسع ، لا يزال التعرف على الصور غير المرئية أو فهم مفاهيم جديدة بطريقة خالية من التدريب. يستكشف التعلم داخل السياق (ICL) التعلم الخالي من التدريب ، حيث يتم تشجيع النماذج على "تعلم التعلم" من المهام المحدودة والتعميم على المهام غير المرئية. في هذا العمل ، نقترح التعلم السياق للربط (LCL) ، والذي يؤكد "التفكير من السبب والتأثير" لزيادة قدرات التعلم من MLLMs. تتجاوز LCL ICL التقليدي عن طريق تعزيز العلاقة السببية بين مجموعة الدعم ومجموعة الاستعلام بشكل صريح. من خلال توفير المظاهرات مع الروابط السببية ، يرشد LCL النموذج لتمييز ليس فقط القياس ولكن أيضًا الارتباطات السببية الأساسية بين نقاط البيانات ، والتي تمكن MLLMs من التعرف على الصور غير المرئية وفهم المفاهيم الجديدة بشكل أكثر فعالية. لتسهيل تقييم هذا النهج الجديد ، نقدم مجموعة بيانات Isekai ، التي تضم حصريًا من أزواج غير مرئية من سلام الصور المصممة لتعلم السياق. تبين التجارب الواسعة أن LCL-MLLM لدينا يعرض إمكانات التعلم القوية لارتباط الارتباطات لمفاهيم جديدة على MLLMs الفانيليا.
conda create -n lcl python=3.10
conda activate lcl
pip install -r requirements.txt
accelerate config
نقوم بتدريب إعداد LCL على مجموعة Rebuild ImageNet-900 ، ونقيم النموذج على مجموعة ImageNet-100. يمكنك الحصول على مجموعة البيانات JSON هنا.
نقوم بتقييم النموذج على ISEKAI-10 و ISEKAI-PAIR ، يمكنك تنزيل مجموعة بيانات ISEKAI في ISEKAI-10 و ISEKAI-PAIR.
قم بتنزيل نقاط تفتيش LCL-2Way-Weight و LCL-MIX في Huggingface.
لإطلاق عرض تجريبي ويب ، استخدم الأمر التالي. يرجى ملاحظة أن النموذج يقييم بتنسيق torch.float16 ، والذي يتطلب وحدة معالجة الرسومات مع ما لا يقل عن 16 جيجابايت من الذاكرة.
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 Style args و uggingface: يتم دعم args المدرب. على سبيل المثال ، يمكنك تغيير حجم 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
uggingface: وسيطة المدرب.
سيتم حفظ نتيجة التنبؤ في 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 }
}