HyperCLOVAX-1.5B-ERP-SQL ๐
์ด ๋ชจ๋ธ์ naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ตญ์ด ERP ๋๋ฉ์ธ์ Text-to-SQL ์์ ์ ์ํด ํ์ธํ๋๋ ๋ชจ๋ธ์ ๋๋ค.
1.5B๋ผ๋ ์ด๊ฒฝ๋ ๋ชจ๋ธ์์๋ ๋ถ๊ตฌํ๊ณ , ํ์ธํ๋ ํ 0.5%์์ 62.0%๋ก ๊ทน์ ์ธ ์ฑ๋ฅ ํฅ์์ ๋ฌ์ฑํ์ต๋๋ค. ํนํ ๋ณต์กํ ์ถ๋ก (Lv 5) ์์ญ์์๋ 2B๊ธ ๋ชจ๋ธ๋ค์ ์ํํ๋ ํจ์จ์ฑ์ ๋ณด์ฌ์ค๋๋ค.
๐ ๋ชจ๋ธ ์ฑ๋ฅ (Dramatic Improvement)
์์ฒด ๊ตฌ์ถํ ERP-SQL ๋ฐ์ดํฐ์ ํ๊ฐ ๊ฒฐ๊ณผ์ ๋๋ค. ์ฌ์ ํ์ต(Baseline) ์ํ์์๋ ๋๋ฉ์ธ ์ง์์ด ์์ด ๊ฑฐ์ ์ ๋ต์ ๋งํ์ง ๋ชปํ์ผ๋, ํ์ต ํ ์ค๋ฌด ํฌ์ ๊ฐ๋ฅํ ์์ค์ผ๋ก ํ๊ณจํํํ์์ต๋๋ค.
| ๋ชจ๋ธ (Model) | ํ์ต ์ํ | ์ ์ฒด ์ ํ๋ | Lv 1 (์ฌ์) | Lv 5 (๋งค์ฐ ์ด๋ ค์) |
|---|---|---|---|---|
| HyperCLOVA X 1.5B | Baseline | 0.5% | 2.5% | 0.0% |
| HyperCLOVA X 1.5B | Fine-tuned (Ours) | 62.0% | 92.5% | 47.5% |
ํต์ฌ ๋ถ์: ์ ์ฒด ์ ํ๋๋ 2B๊ธ ๋ชจ๋ธ ๋๋น ์ํญ ๋ฎ์ ์ ์์ผ๋, **๊ณ ๋์ด๋(Lv 5) ์ถ๋ก ์ ํ๋(47.5%)**๋ 2.1B ๊ฒฝ์ ๋ชจ๋ธ(45.0%)๋ณด๋ค ์คํ๋ ค ๋๊ฒ ์ธก์ ๋์์ต๋๋ค. ์ด๋ ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ ๋ฐ๋๊ฐ ๋งค์ฐ ํจ์จ์ ์์ ์์ฌํฉ๋๋ค.
๐ง ํ์ต ์ ๋ณด (Training Details)
- ๋ฒ ์ด์ค ๋ชจ๋ธ: naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B
- ํ์ต ๋ฐฉ๋ฒ: LoRA (Low-Rank Adaptation)
- ์ต์ ์ํญ(Epoch): 5 (์ง์์ ์ธ ์ฑ๋ฅ ์ฐ์ํฅ ํ์ธ)
- ๋ฐ์ดํฐ์ : ์คํค๋ง๊ฐ ๋ฐ์๋ ํฉ์ฑ(Synthetic) ํ๊ตญ์ด ERP ์ง๋ฌธ-์ฟผ๋ฆฌ ์
- ํ๋์จ์ด: NVIDIA RTX 4060 Ti (16GB) x 2ea
๐ป ์ฌ์ฉ ๊ฐ์ด๋ (How to Use)
1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
pip install torch transformers peft accelerate
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
# 1. ๋ชจ๋ธ ๋ก๋
base_model_id = "naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B"
adapter_id = "yeongseok11/hyperclovax-1.5b-erp-nl2sql"
tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True
)
model = PeftModel.from_pretrained(base_model, adapter_id)
model.eval()
# 2. ํ๋กฌํํธ ์ ์
schema_context = """
[Tables]
employees(emp_id, name, dept_id, hire_date, salary)
departments(dept_id, dept_name, location)
"""
question = "์ธ์ฌํ ์ง์๋ค์ ์ด๋ฆ์ ์๋ ค์ค."
prompt = f"""Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
### Instruction:
์๋ ์คํค๋ง๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ง๋ฌธ์ SQL๋ก ๋ณํํ์ธ์.
### Input:
### ์ง๋ฌธ:
{question}
### ์คํค๋ง:
{schema_context}
### Response:
"""
# 3. ์ถ๋ก
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
do_sample=False,
eos_token_id=tokenizer.eos_token_id
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split("### Response:")[-1].strip())
- Downloads last month
- 18