|
|
--- |
|
|
license: cc-by-nc-4.0 |
|
|
library_name: peft |
|
|
base_model: naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B |
|
|
tags: |
|
|
- text-to-sql |
|
|
- erp |
|
|
- hyperclova |
|
|
- korean |
|
|
- nlp |
|
|
- lora |
|
|
- generated_from_trainer |
|
|
--- |
|
|
|
|
|
# HyperCLOVAX-1.5B-ERP-SQL ๐ |
|
|
|
|
|
์ด ๋ชจ๋ธ์ [naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B](https://huggingface.co/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. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น |
|
|
```bash |
|
|
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()) |