การใช้งาน Pytorch อย่างเป็นทางการของ "การเรียนรู้บริบทลิงก์สำหรับ 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 ในชุด imagenet-900 ของเราใหม่และประเมินโมเดลในชุด Imagenet-100 คุณสามารถรับชุดข้อมูล JSON ได้ที่นี่
เราประเมินโมเดลบน ISEKAI-10 และ ISEKAI-PAIR คุณสามารถดาวน์โหลดชุดข้อมูล ISEKAI ใน ISEKAI-10 และ ISEKAI-PAIR
ดาวน์โหลดจุดตรวจสอบ LCL-2way-weight และ LCL-mix ของเราใน HuggingFace
ในการเปิดการสาธิตเว็บ Gradio ให้ใช้คำสั่งต่อไปนี้ โปรดทราบว่ารูปแบบการประเมินในรูปแบบ Torch.Float16 ซึ่งต้องใช้ GPU ที่มีหน่วยความจำอย่างน้อย 16GB
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 และ HuggingFace: รองรับ Trainer 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: Trainer Argument
ผลการทำนายจะถูกบันทึกไว้ใน 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 }
}