metadata
title: ko-gemma2-Korean-Sentiment
emoji: ๐ง
colorFrom: blue
colorTo: pink
sdk: gradio
sdk_version: 4.20.0
app_file: app.py
pinned: false
ko-gemma2-9B-sentiment
ํ๊ตญ์ด ์ ํ๋ธ ๋๊ธ ๊ฐ์ ๋ถ๋ฅ๋ฅผ ์ํ LLM (Gemma2 ๊ธฐ๋ฐ LoRA Fine-tuned)
Overview
ko-gemma2-9B-sentiment๋ Google์ Gemma2 9B ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก, ํ๊ตญ์ด ์ ํ๋ธ ๋๊ธ์ ๊ฐ์ ์ ๋ถ๋ฅํ๊ธฐ ์ํด LoRA ๊ธฐ๋ฐ์ PEFT ๊ธฐ๋ฒ์ผ๋ก ํ์ธํ๋๋ ๋ชจ๋ธ์
๋๋ค.
Chain of Thought (CoT) ๋ฐฉ์์ ํ๋กฌํํธ ์ค๊ณ์ ์ ํ๋ธ ์์ ์์ฝ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ '๊ธ์ ', '์ค๋ฆฝ', '๋ถ์ ' ์ค ํ๋์ ๊ฐ์ ํด๋์ค๋ฅผ ์์ธกํฉ๋๋ค.
๋ณธ ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ ํน์ฑ์ ๊ฐ์ง๋๋ค:
- Gemma2 ๋ํ ํฌ๋งท (
<start_of_turn>user,<end_of_turn>,<start_of_turn>model) - 4๋นํธ ์์ํ + LoRA๋ก ๊ฒฝ๋ํ๋ ํ์ต
- CoT + Multimodal Prompt (์์ ์์ฝ ์ ๋ณด ํฌํจ ๊ฐ๋ฅ)
Quickstart
Install
$ pip install transformers peft accelerate
Inference
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
base_model = "rtzr/ko-gemma-2-9b-it"
adapter_path = "./ko-gemma2-9B-sentiment"
prompt = """<start_of_turn>user
๋๊ธ: ์ด ์์ ์ ๋ง ๊ฐ๋์ด์์ต๋๋ค. ๋๋ฌผ์ด ๋ฌ์ด์.
<end_of_turn>
<start_of_turn>model
"""
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(base_model, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True)
model = PeftModel.from_pretrained(model, adapter_path)
model.eval()
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=1024, do_sample=False)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
์์ ์ถ๋ ฅ
๋ค์ ์ ํ๋ธ ๋๊ธ์ ๊ฐ์ ์ ๋ถ์ํ๊ณ , '๊ธ์ ', '์ค๋ฆฝ', '๋ถ์ ' ์ค ์ด๋์ ํด๋นํ๋์ง ๋ถ๋ฅํ๊ณ , ๋ํ ์ ๊ทธ๋ ๊ฒ ๋ถ๋ฅํ๋์ง ๊ฐ์ ๋ถ๋ฅ์ ์ด์ ๋ฐ ๊ทผ๊ฑฐ๋ ์์ ํด์ฃผ์ธ์.
๋๊ธ: ์ ๋ง ๊ฐ๋์ด์์ต๋๋ค. ๋๋ฌผ์ด ๋ฌ์ด์. ์ ๋ณด๊ณ ๊ฐ๋๋ค~
๋๊ธ์ ๋ถ์ํ ๊ฒฐ๊ณผ, ์ด ๋๊ธ์ ๊ฐ์ ์ '๊ธ์ '์
๋๋ค.
Training Details
๋ชจ๋ธ ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ
- Base Model:
rtzr/ko-gemma-2-9b-it - Trainer: Hugging Face
Trainer+LoRA - Quantization: 4bit (
nf4,float16 compute)
LoRA ๊ตฌ์ฑ
target_modules:q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_projr = 8,alpha = 16,dropout = 0.05gradient_checkpointing = True
๋ฐ์ดํฐ์ ์ ๋ณด
- Train ๋ฐ์ดํฐ ์ : 3,658๊ฐ
- Validation ๋ฐ์ดํฐ ์ : 921๊ฐ
๊ฐ์ ๋ ์ด๋ธ ๋ถํฌ
Train
- ๊ธ์ : 1,012๊ฐ (27.67%)
- ์ค๋ฆฝ: 909๊ฐ (24.85%)
- ๋ถ์ : 1,737๊ฐ (47.48%)
Validation
- ๊ธ์ : 268๊ฐ (29.10%)
- ์ค๋ฆฝ: 233๊ฐ (25.30%)
- ๋ถ์ : 420๊ฐ (45.60%)
Results
Fine-tuned Performance
Confusion Matrix
Classification Report
precision recall f1-score support
๊ธ์ 0.89 0.85 0.87 574
์ค๋ฆฝ 0.46 0.52 0.49 169
๋ถ์ 0.70 0.70 0.70 246
accuracy 0.76 989
macro avg 0.68 0.69 0.69 989
weighted avg 0.77 0.76 0.76 989
