🏔️ KoLLaVA
[Dataset] [Model] [Paper Review]
-
Korean Large Language and Vision Assistant (feat. LLaVA)
-
이미지 기반 한국어 대화 가능한 멀티모달 모델
Update Logs
- 24.01.02
- 💥 🤗 KoLLaVA-Instruct-581k 공개 : LLaVA-v1.5 instruction 데이터 필터링 및 번역, 외부 지식 기반 VQA 데이터(AI Hub) 활용해 multi-turn instruction 데이터 추가
- 23.11.30
- 💥 🤗 KoLLaVA-v1.5-Synatra-7b 공개 : 🤗 Synatra-7b-v0.3-dpo를 KoLLaVA-Instruct-581k으로 Full-finetuning (A100 80G 8개, 약 13시간)
- 23.08.05
- 💥 🤗 KoLLaVA-LLaMA-v2-7b-qlora-4bit 공개 : 🤗 Llama-2-ko-7b-Chat을 KoLLaVA-Instruct-150k으로 QLoRA 1epoch 학습 (RTX 3090 GPU 4개, 약 10시간)
- 💥 LLaVA의 최근 업데이트를 반영. LLaMA-2, QLoRA 기반의 코드 및 학습 방법 공유
- 23.07.01
-
💥
🤗 KoLLaVA-KULLM-13B-8bit 공개 : KULLM을 KoLLaVA-Instruct-150k으로 학습→ 성능이 기대에 미치지 못해 삭제합니다. 더 나은 13B 모델을 추후에 공개하겠습니다.
-
💥 클라우드 GPU 대여 비용 문제로 데모를 일시 중지합니다🥲
-
- 23.06.24
- 💥 🤗 Ko-Otter-9B-LACR-v0 공개 : Otter를 KoLLaVA_Complex_Resoning_77k 데이터셋으로 학습
- 23.06.18
- 💥
Gradio를 이용한 데모를 오픈합니다! (RTX 3090 GPU 1개)
- 💥
- 23.06.12
- 💥 한국어 Visual Instruction 데이터셋으로 학습한 🤗KoLLaVA-KoVicuna-7B 공개
- 💥 Colab(Pro) 이용한 inference 예시
- 23.06.09
- 💥 LLaVA의 학습 데이터셋을 한국어로 번역한 🤗KoLLaVA-Instruct-150K / KoLLaVA-CC3M-Pretrain-595K 공개
Visual Chat Example
Contents
Install
아래 과정은 Linux 기준으로 작성되었습니다. macOS에서 테스트 하실 경우 여기를 참고하세요.
- Clone 후 해당 디렉토리로 이동
git clone https://github.com/tabtoyou/KoLLaVA.git
cd KoLLaVA
- Package 설치
conda create -n kollava python=3.10 -y
conda activate kollava
pip install --upgrade pip
pip install -e .
- 학습 진행할 경우 추가 Package 설치
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
Inference
터미널 창에서 아래 명령어를 통해 multi-turn 대화가 가능합니다. 또한 M1/M2 칩이 탑재된 Apple 디바이스를 사용하는 경우 --device
flag를 사용하여 mps 디바이스를 지정할 수 있습니다. (--device mps
) macOS에서 테스트 하실 경우 여기를 참고하세요.
python -m llava.serve.cli \
--model-path tabtoyou/KoLLaVA-v1.5-Synatra-7b \
--image-file "https://llava-vl.github.io/static/images/view.jpg" \
Training
LLaVA/KoLLaVA 학습은 two stage로 진행됩니다: (1) Pretraining(feature alignment stage): CC3M 데이터셋을 필터링한 595K subset을 이용하여, frozen pretrained vision encoder와 frozen LLM을 연결하는 projection layer를 학습합니다.; (2) Finetuning(visual instruction tuning stage): 150K 멀티모달 instruction-following 데이터와 약 academic-oriented tasks 및 AI-Hub에서 얻은 460K VQA 데이터를 이용해 multimodal instruction을 학습합니다.
KoLLaVA-v1.5는 8 A100 GPUs (80GB)로 학습했으며, 더 적은 GPU로 학습할 경우 per_device_train_batch_size
를 줄이고 그 수에 맞게 gradient_accumulation_steps
를 늘리면 됩니다. 재현을 위해서는 global batch size(per_device_train_batch_size
x gradient_accumulation_steps
x num_gpus
)를 아래 Hyperparameters에 맞게 유지하세요.
Hyperparameters
- Pretraining
Hyperparameter | Global Batch Size | Learning rate | Epochs | Max length | Weight decay |
---|---|---|---|---|---|
KoLLaVA-v1.5-Synatra-7B | 256 | 1e-3 | 1 | 2048 | 0 |
- Finetuning
Hyperparameter | Global Batch Size | Learning rate | Epochs | Max length | Weight decay |
---|---|---|---|---|---|
KoLLaVA-v1.5-Synatra-7B | 128 | 2e-5 | 1 | 2048 | 0 |
Download Synatra checkpoints (automatically)
Base LLM 모델인 Synatra-7b의 weights은 주어진 training scripts를 실행하면 자동으로 다운로드 됩니다.
Pretrain (feature alignment)
Pretrain 과정에는 8 A100 GPUs (80GB) 기준 약 4시간이 소요됐습니다.
Prepare Pretraining Dataset
🤗 KoLLaVA-CC3M-Pretrain-595K : LLaVA Pretrain 데이터셋의 index에 맞춰 Ko-CC3M 한국어 caption 추출
Data | English | Korean | Size |
---|---|---|---|
CC3M Concept-balanced 595K | chat.json | ko_chat.json | 211 MB / 229 MB |
Details
Image Dataset
images.zip
- LLaVA의 저자들은 사전학습에 사용한 이미지 파일도 공유했습니다. 이 이미지 파일은 연구 외에 다른 용도로 사용해서는 안 되며, 이미지의 사용은 CC3M의 라이선스를 준수해야 합니다. 원본 CC3M 데이터셋 소유자 혹은 참조된 이미지의 소유자가 요청할 경우 언제든지 해당 이미지는 삭제될 수 있습니다.
Training script with DeepSpeed ZeRO-2: pretrain.sh
.
--mm_projector_type mlp2x_gelu
: the two-layer MLP vision-language connector.--vision_tower openai/clip-vit-large-patch14-336
: CLIP ViT-L/14 336px.
Run
sh scripts/v1_5/pretrain.sh
Visual Instruction Tuning
1. Prepare data
Instruction tuning data : 🤗 KoLLaVA-Instruct-581k
위의 데이터를 모두 다운받은 뒤, /workspace/data
디렉토리를 아래와 같이 구성하세요. 이때 workspace
는 각자의 이미지 데이터를 저장하는 디렉토리 이름입니다.
- 주의 : COCO,GQA,VG 데이터셋은 모두 academic-oriented tasks인 영어 데이터셋이며, 이를 DeepL로 번역했습니다. 번역 과정에서 오류가 있을 수 있으며, VG의