"멀티 모달 LLM에 대한 링크-컨텍스트 학습"의 공식 Pytorch 구현 [CVPR 2024].
이 저장소에는 다음 논문의 공식 구현 및 데이터 세트가 포함되어 있습니다.
멀티 모달 LLM에 대한 링크-컨텍스트 학습
https://arxiv.org/abs/2308.07891초록 : 새로운 개념으로 맥락에서 배우고 적절한 반응을 전달하는 능력은 인간 대화에서 필수적입니다. 현재의 멀티 모드 대형 언어 모델 (MLLM)과 대형 언어 모델 (LLM)에도 불구하고 메가 스케일 데이터 세트에 대해 교육을 받고 보이지 않는 이미지를 인식하거나 교육이없는 방식으로 새로운 개념을 이해하는 것은 여전히 어려운 일입니다. ICL (Context Learning)은 교육이없는 소수의 학습을 탐구합니다. 여기서 모델은 제한된 작업에서 "배우는 법을 배우고"보이지 않는 작업에 이르기까지 권장됩니다. 이 작업에서 우리는 MLLM의 학습 능력을 강화하기 위해 "원인과 결과로부터의 추론"을 강조하는 LCL (Link-Context Learning)을 제안합니다. LCL은 지원 세트와 쿼리 세트 사이의 인과 관계를 명시 적으로 강화함으로써 전통적인 ICL을 넘어선 것입니다. LCL은 인과 관계 링크와 함께 데모를 제공함으로써 모델을 안내하여 비유뿐만 아니라 데이터 포인트 간의 근본적인 인과 관계를 분별하여 MLLM이 보이지 않는 이미지를 인식하고 새로운 개념을보다 효과적으로 이해할 수 있도록합니다. 이 새로운 접근법의 평가를 용이하게하기 위해, 우리는 링크 텍스트 학습을 위해 설계된 보이지 않는 생성 된 이미지 라벨 쌍으로만 구성된 Isekai 데이터 세트를 소개합니다. 광범위한 실험에 따르면 우리의 LCL-MLLM은 바닐라 MLLM에 대한 새로운 개념에 대한 강력한 링크 컨텍스트 학습 기능을 보여줍니다.
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 데이터 세트를 다운로드 할 수 있습니다.
Huggingf
Gradio 웹 데모를 시작하려면 다음 명령을 사용하십시오. 모델은 Torch.float16 형식으로 평가되며 최소 16GB의 메모리가있는 GPU가 필요합니다.
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가 지원됩니다. 예를 들어, 다음과 같이 평가 배치 크기를 변경할 수 있습니다.
# 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 }
}