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
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for yeongseok11/hyperclovax-1.5b-erp-nl2sql