56. KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b를 어떻게 다운받아야하지?

KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b모델을 어떻게 다운 받아야할지 모르시는분, 또는 다운을 받더라고 unpickle 오류를 겪고 계신 분들을 위해 왜 이런 에러가 발생이 되고, 어떻게 하면 해결을 할 수 있는지, 제가 알려드린 방법으로 실행을 해도 작동되지 않을 때 어떻게 추가적인 해결방법이 있는지 등에 대해서 공유드리기 위해 글을 작성하였습니다. 차근차근 설명드릴테니 따라 오시면 됩니다.

저는 먼저 KoLLaVA fine-tuning을 진행하고 있었습니다.

그런데, 기존에 가중치 모델을 다운 받으라고 써 있었는데, 어떻게 다운을 받아야하지?

어? 코드를 잘 모르는 분들이라면 이 부분이 어려울 수 있겠는데? 라는 생각이 들었습니다.

이에, 어떻게 모델을 다운 받아야하는지에 대해서 한번 설명드려보려고 합니다.

Fine-Tuning

fine-tuning을 하기 위해서 스크립트 코드를 한번 살펴보겠습니다.

deepspeed llava/train/train_mem.py \
    --deepspeed ./scripts/zero3.json \
    --model_name_or_path maywell/Synatra-7B-v0.3-dpo \
    --version mistral \
    --data_path /workspace/data/kollava_v1_5_instruct_mix612k.json \
    --image_folder /workspace/data/ \
    --vision_tower openai/clip-vit-large-patch14-336 \
    --pretrain_mm_mlp_adapter ./checkpoints/KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b/mm_projector.bin \
    --mm_projector_type mlp2x_gelu \
    --mm_vision_select_layer -2 \
    --mm_use_im_start_end False \
    --mm_use_im_patch_token False \
    --image_aspect_ratio pad \
    --group_by_modality_length True \
    --bf16 True \
    --output_dir ./checkpoints/kollava-v1.5-synatra7b \
    --num_train_epochs 1 \
    --per_device_train_batch_size 16 \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps 1 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 50000 \
    --save_total_limit 1 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --tf32 True \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --dataloader_num_workers 4 \
    --lazy_preprocess True \
    --report_to wandb

여기서 단순하게 코드가 실행되는지를 알아보기 위해 우리가 신경써야하는 파라미터는

–pretrain_mm_mlp_adapter,

–data_path

이렇게 2개 정도라고 생각이 듭니다.

data_path는 저자들이 만들어 놓은 데이터셋을 참고하여 쉽게 만들 수 있을 것이라고 생각이 듭니다.

pretrain_mm_mlp_adapter도 사실 쉽게 다운 받을 수 있습니다.

How to Download tabtoyou/KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b

그런데, 만약 여러분께서

tabtoyou/KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b

mm_projector.bin의 url을 복사하여 wget으로 다운을 받으셨다면, 아마 unpickle 관련된 에러를 만나실 수 있습니다. 이게 왜 이런 에러가 발생하는지 저도 찾는데 한참 걸렸는데요. 이게 bin파일이 다운 받아지는게 아니라 wget url로 모델을 받으면 html structure가 다운 받아지게 됩니다. 즉, model weight가 다운이 안되는 것이지요. 그렇다면, git clone으로 이것을 받아와야합니다.

그런데, 그냥 git clone을 하면 또 작동을 안 할 수 있습니다.

왜냐하면, mm_projector.bin은 LFS로 파일이기 때문에 나의 환경이 git-lfs로 환경이 세팅되어 있지 않으면 정상적으로 작동하지 않을 수 있습니다.

그러기에 아래와 같은 순서로 라이브러리를 설치해주세요.

# 터미널을 켭니다. 
apt update 
apt install git-lfs 
git lfs install 

이와 같은 순서로 git lfs 환경을 세팅한 후 아래 코드를 실행합니다.

mkdir workspace
cd workspace 
mkdir checkpoints 
git clone https://huggingface.co/tabtoyou/KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b.git

이렇게 하면 정상적으로 tabtoyou/KoLLaVA-v1.5-mlp2x-336px-pretrain-Synatra-7b를 다운 받으실 수 있습니다. 혹시나 햇갈리시는 분들을 위해서 정리해보았으니 참고해주세요

참고한 링크

이 외에도 다양한 글들이 있으니, 구독 부탁드려요!

감사합니다.

답글 남기기