EXAONE-3.5 ์ ๋ถ ์ ์ฑ ์๋ฐ ๋ถ๋ฅ๊ธฐ v1
์ ๋ถ ์ ์ฑ ๊ด๋ จ ์ง๋ฌธ์ ์๋ฐ ์ ํ์ ๋ถ๋ฅํ๋ EXAONE 3.5 7.8B ๊ธฐ๋ฐ ๋ถ๋ฅ ๋ชจ๋ธ์ ๋๋ค.
๋ชจ๋ธ ๊ฐ์
- ๋ฒ ์ด์ค ๋ชจ๋ธ: LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct
- ์์ : Multi-class Text Classification (6๊ฐ ์นดํ ๊ณ ๋ฆฌ)
- ์ธ์ด: Korean (ํ๊ตญ์ด)
- ๋ฒ์ : v1
- ํ์ธํ๋ ๋ฐฉ๋ฒ: QLoRA (4-bit quantization)
- Training Data: 40000 samples
- Validation Data: 10000 samples
๋ชจ๋ธ ์ค๋ช
์ด ๋ชจ๋ธ์ ์ ๋ถ ์ ์ฑ ๊ด๋ จ ์ง๋ฌธ์ ๋ค์ 6๊ฐ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ถ๋ฅํฉ๋๋ค:
- SAFE: ๊ณต๊ฐ๋ ์ ๋ณด์ ๋ํ ์์ ํ ์ง๋ฌธ
- VIOLATION_PRIVACY_CITIZEN: ์๋ฏผ์ ๊ฐ์ธ์ ๋ณด/์ฌ์ํ ์นจํด
- VIOLATION_CLASSIFIED: ๊ตญ๊ฐ ๊ธฐ๋ฐ/๋ถ๋ฅ๋ ์ ๋ณด ์์ฒญ
- VIOLATION_HR: ๊ณต๋ฌด์ ์ธ์ฌ ์ ๋ณด ์์ฒญ
- VIOLATION_SALARY: ๊ณต๋ฌด์ ๊ธ์ฌ/์ฐ๋ด ์ ๋ณด ์์ฒญ
- VIOLATION_DELIBERATION: ์ ๋ถ ๋ด๋ถ ์ฌ์/์์ฌ๊ฒฐ์ ๊ณผ์ ์์ฒญ
LG AI Research์์ ๊ฐ๋ฐํ EXAONE 3.5 7.8B ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก QLoRA ํ์ธํ๋์ ํตํด ๊ฐ๋ฐ๋์์ต๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel
import torch
# 4-bit ์์ํ ์ค์
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
# ๋ฒ ์ด์ค ๋ชจ๋ธ ๋ก๋
base_model = AutoModelForCausalLM.from_pretrained(
"LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct",
quantization_config=bnb_config,
device_map="auto",
trust_remote_code=True
)
# LoRA ์ด๋ํฐ ๋ก๋
model = PeftModel.from_pretrained(base_model, "psh3333/EXAONE-Policy-Violation-Detector-v1")
tokenizer = AutoTokenizer.from_pretrained("psh3333/EXAONE-Policy-Violation-Detector-v1")
# ์ถ๋ก
text = "๊ตญ๋ฏผ์ ์ธํฐ๋ท ์ฌ์ฉ ๊ธฐ๋ก์ ์ ๋ถ๊ฐ ์ถ์ ํ๊ณ ์๋์?"
system_msg = """๋น์ ์ ์ ๋ถ ์ ์ฑ
๊ด๋ จ ์ง๋ฌธ์ ์๋ฐ ์ ํ์ ๋ถ๋ฅํ๋ ์ ๋ฌธ ์์คํ
์
๋๋ค.
๋ค์ ์นดํ
๊ณ ๋ฆฌ ์ค ํ๋๋ก ๋ถ๋ฅํ์ธ์:
- SAFE: ๊ณต๊ฐ๋ ์ ๋ณด์ ๋ํ ์์ ํ ์ง๋ฌธ
- VIOLATION_PRIVACY_CITIZEN: ์๋ฏผ์ ๊ฐ์ธ์ ๋ณด/์ฌ์ํ ์นจํด
- VIOLATION_CLASSIFIED: ๊ตญ๊ฐ ๊ธฐ๋ฐ/๋ถ๋ฅ๋ ์ ๋ณด ์์ฒญ
- VIOLATION_HR: ๊ณต๋ฌด์ ์ธ์ฌ ์ ๋ณด ์์ฒญ
- VIOLATION_SALARY: ๊ณต๋ฌด์ ๊ธ์ฌ/์ฐ๋ด ์ ๋ณด ์์ฒญ
- VIOLATION_DELIBERATION: ์ ๋ถ ๋ด๋ถ ์ฌ์/์์ฌ๊ฒฐ์ ๊ณผ์ ์์ฒญ"""
messages = [
{"role": "system", "content": system_msg},
{"role": "user", "content": f"๋ค์ ์ง๋ฌธ์ ๋ถ๋ฅํ์ธ์:\n\n{text}"}
]
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(inputs, max_new_tokens=50, temperature=0.1)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
# ์ถ๋ ฅ ์์: "VIOLATION_PRIVACY_CITIZEN"
ํ์ต ์ธ๋ถ์ฌํญ
- ํ์ธํ๋ ๋ฐฉ๋ฒ: QLoRA (4-bit quantization)
- LoRA Rank: 64
- Learning Rate: 0.0002
- Epochs: 3
- Batch Size: 32 (effective)
๋ผ์ด์ ์ค
Apache 2.0 License
์ด ๋ชจ๋ธ์ ์ฐ๊ตฌ ๋ฐ ๊ต์ก ๋ชฉ์ ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
Model tree for psh3333/EXAONE-Policy-Violation-Detector-v1
Base model
LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct