|
--- |
|
license: mit |
|
datasets: |
|
- joeykims/coffee_general_ko |
|
language: |
|
- ko |
|
metrics: |
|
- perplexity: 874 |
|
base_model: |
|
- google/gemma-2b-it |
|
--- |
|
|
|
|
|
#GemmaSprint |
|
|
|
gemma ์ฒซ๋ฒ์งธ ํ์ธํ๋ ๋ชจ๋ธ์
๋๋ค. |
|
|
|
์ปคํผ์ ๋ํ ์ ๋ฐ์ ์ธ ์ง์๊ณผ ์ปคํผ ์๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ์๋น์ค์
๋๋ค. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ๋ชจ๋ธ๊ด๋ จ ๊ณผ์ , ๊ฒฐ๊ณผ๋ฑ |
|
https://joey-k.tistory.com/15 |
|
|
|
* github |
|
https://github.com/GOOGLE-MLB-2024-GJ/Beans |
|
|
|
|
|
* ๋ชจ๋ธ |
|
|
|
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 |