Lyan
4 min readMay 17, 2023

--

POLYGLOT-KO 다운로드 및 예제

KoAlpaca과 합작해 만든 LLM모델이라고 한다.

Billion급 파라미터들을 가진 다양한 버전이 있는데 1.3/3.8/5.8/12.8B

이 중 5.8B, 12.8B으로 대화 생성모델을 finetuning하려는데 RTX A6000으로도 3.8B을 full finetuning하기 어렵기 때문에 저번 글에서 언급한 LoRA를 얹어서 튜닝하는 걸로,,

근데 polyglot이 GPTNeoX기반이기 때문에 많이 사용하는 Llama와 코드가 살짝 다르다.. 이 부분 때문에 많이 헤맸는데 다행히 적당한 코드를 발견해서 학습시키는 중,,

  1. 가상 환경 생성(python 3.11은 너무 최신버전이라 아래 오류 발생)

RuntimeError: Python 3.11+ not yet supported for torch.compile

conda create -n polyglot_ko python==3.10
conda activate polyglot_ko

2. git clone 해오기

git clone https://github.com/satani99/alpaca-lora_gpt_neox_20b

3. pip install

pip install -r requirements.txt
pip install scipy

4. 이대로 돌리면 undefined symbol: cget_col_row_stats 이슈에 봉착하기 때문에 아래 코드 실행

conda install cudatoolkit -y

5. 이걸 설치 안해주면 최종 adapter_model.bin이 443kb로 저장되는 이슈 발생

pip uninstall peft -y
pip install git+https://github.com/huggingface/peft.git@e536616888d51b453ed354a6f1e243fecb02ea08

6. 아휴 많다 많아, 이제 돌리는데 polyglot 먼저 git해오기

모델을 huggingface에서 불러와도 되지만 매번 오래 걸림

7. 가져온 polyglot을 base로 넣고 data는 임시로 ko_alpaca_data.json 가져옴

이건 진짜 돌아가나 확인하는 용도의 light ver. => 모델 잘 저장되는지 확인

python finetune.py \
--base_model 'polyglot-ko-1.3b' \
--data_path 'data/ko_alpaca_data.json' \
--output_dir './lora-polyglot' \
--num_epochs 0.1

8. 이건 진또배기 -> 오늘 돌려놓고 가야지

python finetune.py \
--base_model 'polyglot-ko-5.8b' \
--data_path 'data/ko_alpaca_data.json' \
--output_dir './lora-polyglot'
--batch_size 128 \
--micro_batch_size 4 \
--num_epochs 5\
--learning_rate 5e-5 \
--cutoff_len 512 \
--val_set_size 2000 \
--lora_r 8 \
--lora_alpha 16 \
--lora_dropout 0.05 \
--train_on_inputs \
--group_by_length

--

--