#GemmaSprint
gemma ์ฒซ๋ฒ์งธ ํ์ธํ๋ ๋ชจ๋ธ์ ๋๋ค.
์ปคํผ์ ๋ํ ์ ๋ฐ์ ์ธ ์ง์๊ณผ ์ปคํผ ์๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ์๋น์ค์ ๋๋ค.
๋ชจ๋ธ๊ด๋ จ ๊ณผ์ , ๊ฒฐ๊ณผ๋ฑ https://joey-k.tistory.com/15
๋ชจ๋ธ
2b ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ธํ๋์ ์งํํ์์ต๋๋ค.
์ ๋ก๋ํ ๋ชจ๋ธ์ ๊ธฐ๋ณธ๋ชจ๋ธ์ธ "google/gemma-2b-it"๋ก ํ์ธํ๋์ ํ์๊ณ , ์ ฌ๋ง ํ๊ตญ์ด ๋ฒ์ ์ ๋ง๋ค์ด ๋์ผ์ ๊ฒ ์์ด์ ๊ฑฐ๊ธฐ์ ๋ ํ์ฅ์ ์๋ํ๊ณ ์์ต๋๋ค.
-.gemma ํ๊ตญ์ด ๋ฒ์ https://huggingface.co/beomi/gemma-ko-2b
ํ๋ํ ๋ํ : ์์ง ์ด์ํ ๋ถ๋ถ์ด ์์ง ๋ง์ ๋๋์ ๋๋ค. ๋ฐ์ดํฐ์ ํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ํด์ ํฅํ ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ง๋ค์ด ๋ณผ ์์ ์ ๋๋ค.
๋ฐ์ดํฐ
: ๋ฐ์ดํฐ๋ฅผ ์ฒ์์ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค๊ฐ ์ธํฐ๋ท์ ๊ณต์ ๋์ด ์๋ ์ปคํผ ์ ๋ฐ์ ์ธ ์ง์์ ํ๋์ฉ ๊ฐ์ ธ์์ต๋๋ค. ๊ทธํ์ gpt๋ก ์ ์ ํ finetunning ๋ชจ๋ธ์ ์ํ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฒ ํ์์ต๋๋ค. ๋ฐ๋ก gpt api๋ฅผ ์ฐ์ง ์์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ ๋ฒ์์ ๋์์ต๋๋ค๋ง, ๋๋ฆ ๊ด์ฐฎ์ ํ๋ฆฌํฐ์ ๋ฐ์ดํฐ๋ผ๊ณ ์๊ฐํด์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ฝ 2์ฒ๊ฐ ๊ฐ๋์ ์ปคํผ ์ ๋ฐ์ ์ธ ์ง์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ณดํ ์ ์์์ต๋๋ค.
context๋ ์๋๋ ์์๋๋ฐ ๊ทธ๋ค์ง ๋ง์ด ์ฐ์ด์ง ์๋ ๊ฒ๊ฐ์์ Instruction๊ณผ response๋ก ๊ตฌ์ฑํ์์ต๋๋ค.
- ์์
์ฒ์์ kaggle๊ณผ colab์์ ์งํ์ ํ๋ค๊ฐ ๊ฐ์ธ ๋งฅ๋ถํ๋ก๊ฐ ๋ ๋น ๋ฅผ๊ฒ ๊ฐ์์ ์ฎ๊ฒผ์ต๋๋ค. ์ด๋ถ์ ์ฝ๋๋ฅผ ๋ฐํ์ผ๋ก ์์ ์ ํ์์ต๋๋ค. https://devocean.sk.com/blog/techBoardDetail.do?ID=165703&boardType=techBlog
์ฌ๊ธฐ์ ๋งฅ๋ถ์์ ํ๋ฉด ๋ฌธ์ ๊ฐ ํ๋ ์๋๋ฐ ํธ๋์คํฌ๋จธ๊ฐ 4.38.2๊ฐ ๋งฅ๋ถ์์ ์๋์๊ฐ๋๋ค. ๊ทธ๋์ 4.38.1๋ก ๋ค์ดํด์ ์งํํ์์ต๋๋ค. https://www.singleye.net/2024/04/%E5%9C%A8-apple-silicon-m3-max-%E4%B8%8A%E5%AF%B9-llama2-%E8%BF%9B%E8%A1%8C%E5%BE%AE%E8%B0%83/#4-qlora-4-bit-%E9%87%8F%E5%8C%96%E9%85%8D%E7%BD%AE-m3-%E8%B7%B3%E8%BF%87
๋งฅ๋ถํ๋ก m3 ๊ธฐ์ค์ผ๋ก ํด์ 2์ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฒํ ๋ 3์๊ฐ ์ ๋ ์์๋๋ ๊ฒ ๊ฐ์ต๋๋ค. gpu๋ ๊ฐ์ด ๋๋ ค์ ๊ทธ๋ฐ์ง ๊ทธ๋๋ง ๋น ๋ฅด๊ฒ ์งํ ํ ์ ์์์ต๋๋ค.
macbook gpu ์์ ์ฌ์ฉ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ ์งํํ์์ต๋๋ค. https://velog.io/@es_seong/Mac
- ํ์ธํ๋
ํ์ธํ๋์ ์๋์ ๊ฐ์ ์ค์ ์ผ๋ก ์งํํ์์ต๋๋ค. ๋งฅ์ด๋ผ์ ์์ํ๊ฐ ์๋์ cpu๋ก ์งํ์ ํ๊ฒ ๋ ํ์๊ณ ,
LoRA ์ค์
lora_config = LoraConfig( r=6, lora_alpha=8, lora_dropout=0.05, target_modules=["q_proj", "o_proj", "k_proj", "v_proj", "gate_proj", "up_proj", "down_proj"], task_type="CAUSAL_LM", )
๋ชจ๋ธ ์ค์
trainer = SFTTrainer(
model=model,
train_dataset=train_data,
max_seq_length=512,
args=TrainingArguments(
output_dir="outputs",
max_steps=3000,
per_device_train_batch_size=1,
gradient_accumulation_steps=4,
optim="adamw_torch",
warmup_steps=0.03,
learning_rate=2e-4,
fp16=False,
logging_steps=100,
push_to_hub=False,
report_to='none',
use_mps_device=False
),
peft_config=lora_config,
formatting_func=generate_prompt, # ์๋ก์ด ํฌ๋งทํ
ํจ์ ์ ์ฉ
)
์๋์ ์ค์ ๋ค์ ์ ์ ์ดํด๋ณด์๋ฉด
r=6 : r์ ๋ญํฌ(rank)๋ฅผ ์๋ฏธํ๋ฉฐ, LoRA์์ ํ์ตํ๋ ์ ์ฐจ์ ํ๋ ฌ์ ์ฐจ์์ ์ ์ํฉ๋๋ค. ์ด๋ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ํจ์จ์ ํํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ์์ r ๊ฐ์ ์ ์ ํ์ต ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก r ๊ฐ์ด ๋์์๋ก ๋ ๋ง์ ํ์ต ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง๊ฒ ๋์ด ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋์ด๋ฉ๋๋ค.
lora_alpha=8 : lora_alpha๋ LoRA์์ ์ฌ์ฉํ๋ ํ์ต๋ฅ ์ ์กฐ์ ํ๋ ์ค์ผ์ผ๋ง ํฉํฐ์ ๋๋ค. ์ด๋ ์ ์ฐจ์ ํ๋ ฌ์์ ๋์จ ์ถ๋ ฅ์ ์กฐ์ ํ๋ ์ญํ ์ ํ๋ฉฐ, ํ์ต๋ฅ ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ์ง๋ ์ค์ํ ์์์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ ํฐ ๊ฐ์ ํ์ต ์๋๋ฅผ ๋์ผ ์ ์์ง๋ง, ๋๋ฌด ํฌ๋ฉด ๊ณผ์ ํฉ ์ํ์ด ์์ต๋๋ค.
lora_dropout=0.05 : lora_dropout์ ๋๋กญ์์ ๋น์จ์ ์ค์ ํ๋ฉฐ, ๋ชจ๋ธ ํ์ต ์ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ผ๋ถ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฌด์์๋ก ์ ๊ฑฐํ๋ ๋น์จ์ ๋ํ๋ ๋๋ค. ์ฌ๊ธฐ์๋ 5%์ ๋๋กญ์์์ด ์ ์ฉ๋ฉ๋๋ค.
target_modules=["q_proj", "o_proj", "k_proj", "v_proj", "gate_proj", "up_proj", "down_proj"] : target_modules๋ LoRA๊ฐ ์ ์ฉ๋๋ ๋ชจ๋๋ค์ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ q_proj, k_proj, v_proj ๋ฑ ์ฃผ๋ก Transformer ๊ธฐ๋ฐ ๋ชจ๋ธ์์ ์ฌ์ฉ๋๋ ์ฟผ๋ฆฌ, ํค, ๋ฐธ๋ฅ ํ๋ก์ ์ ๋ชจ๋์ LoRA๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋์ ์ฃผ๋ก ์ดํ ์ ๋งค์ปค๋์ฆ์์ ์ค์ํ ์ญํ ์ ํ๋ฉฐ, ์ด ๋ชจ๋๋ค๋ง ํ์ตํจ์ผ๋ก์จ ํ์ต ํจ์จ์ฑ์ ๋์ ๋๋ค.
task_type="CAUSAL_LM" : task_type์ ์ํํ๋ ค๋ ์์ ์ ์ ํ์ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ **Causal Language Modeling(CAUSAL_LM)**์ ์๋ฏธํ๋ฉฐ, ๋ชจ๋ธ์ด ๋ฌธ๋งฅ์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋จ์ด๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ผ๋ก ํ์ต๋ฉ๋๋ค.
- ์ฑ๋ฅ
perflexity ์ธก์ ๊ฒฐ๊ณผ 874
- ์ฐธ๊ณ ํ ๋ด์ฉ๋ค
-.์บ๊ธ์์ TPU๋ก ํ์ธํ๋ https://www.kaggle.com/code/alirezaebrahimi/gemma-2-tpu-fine-tuning
-.์ปคํผ ๊ด๋ จ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค(์๋์ ๋ง์ ์ ์๋ก ๋ํ๋, ๋ฐ์ดํฐ๋ ์ด๊ฒ์ผ๋ก ํ์ง ์์.) https://github.com/ddthang86/Coffee-data-analysis/blob/main/Arabica/df_arabica_clean.csv
Model tree for joeykims/BEANs
Base model
google/gemma-2b-it