File size: 3,375 Bytes
8f62e25 832150e 8f62e25 ab0ecb2 8f62e25 832150e ff2110d 124e842 8f62e25 832150e 8f62e25 ab0ecb2 8f62e25 832150e 8f62e25 832150e 8f62e25 124e842 8f62e25 832150e 124e842 8f62e25 832150e 8f62e25 ab0ecb2 8f62e25 832150e 8f62e25 832150e 8f62e25 832150e 8f62e25 832150e 8f62e25 832150e 8f62e25 832150e 8f62e25 832150e 8f62e25 832150e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
---
library_name: transformers
license: mit
datasets:
- shangrilar/ko_text2sql
base_model:
- EleutherAI/polyglot-ko-1.3b
---
# polyglot-ko-1b-txt2sql
`polyglot-ko-1b-txt2sql`์ ํ๊ตญ์ด ์์ฐ์ด ์ง๋ฌธ์ SQL ์ฟผ๋ฆฌ๋ก ๋ณํํ๊ธฐ ์ํด ํ์ธํ๋๋ ํ
์คํธ ์์ฑ ๋ชจ๋ธ์
๋๋ค.
๊ธฐ๋ฐ ๋ชจ๋ธ์ [`EleutherAI/polyglot-ko-1.3b`](https://huggingface.co/EleutherAI/polyglot-ko-1.3b)๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ, LoRA๋ฅผ ํตํด ๊ฒฝ๋ ํ์ธํ๋๋์์ต๋๋ค.
ํ์ธํ๋์ ์ฒ์ ํด๋ณธ ๊ธ์ด์ด๊ฐ ์ค์ต์ฉ์ผ๋ก ๋ง๋ ์ฒซ ๋ชจ๋ธ๋ก ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
---
## ๋ชจ๋ธ ์ ๋ณด
- **Base model**: EleutherAI/polyglot-ko-1.3b
- **Fine-tuning**: QLoRA (4bit quantization + PEFT)
- **Task**: Text2SQL (์์ฐ์ด โ SQL ๋ณํ)
- **Tokenizer**: ๋์ผํ ํ ํฌ๋์ด์ ์ฌ์ฉ
---
## ํ์ต ๋ฐ์ดํฐ์
๋ชจ๋ธ์ ํ๊ตญ์ด SQL ๋ณํ ํ์คํฌ๋ฅผ ์ํด ์ค๊ณ๋ ์์ฐ์ด ์ง๋ฌธ-์ฟผ๋ฆฌ ํ์ด๋ก ํ์ธํ๋๋์์ต๋๋ค.
- [shangrilar/ko_text2sql](https://huggingface.co/datasets/shangrilar/ko_text2sql) ๋ฐ์ดํฐ์
์ผ๋ถ
- ์ ์ฒ๋ฆฌ: DDL-Question-SQL ๊ตฌ์กฐ๋ก prompt ๊ตฌ์ฑ
- ํฌ๊ธฐ: ์ฝ 25,000๊ฑด์ DDL + ์์ฐ์ด ์ง๋ฌธ + SQL ์ ๋ต ์
---
## ํ๊ฐ ๊ฒฐ๊ณผ
- ํ๊ฐ ๋ฐฉ์: GPT-4.1-nano ๋ชจ๋ธ์๊ฒ gen_sql๊ณผ gt_sql ๋น๊ต ํ ํ๊ฐ ์์ฒญ
- ํ๊ฐ ๊ธฐ์ค: ๊ฒฐ๊ณผ ๋์ผ ์ฌ๋ถ ๊ธฐ๋ฐ yes/no ํ๋จ (JSON response: {"resolve_yn": "yes"})
- ํ๊ฐ ๊ฒฐ๊ณผ:
- **๋ฒ ์ด์ค ๋ชจ๋ธ ์ ํ๋**: 68%
- **ํ์ธํ๋ ๋ชจ๋ธ ์ ํ๋**: 19%
---
## ๋ฌธ์ ์
- ๋ฒ ์ด์ค๋ผ์ธ ๋ชจ๋ธ์ gen_sql์ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ์ง ๋ชปํ๊ณ , ์ง๋ฌธ์ ๋ฐ๋ณตํ๊ฑฐ๋ ์๋ฏธ ์๋ ํ
์คํธ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.
- ํ์ธํ๋ ๋ชจ๋ธ์ SQL ํํ๋ฅผ ํ๋ด๋ด๊ธด ํ์ง๋ง, ์กด์ฌํ์ง ์๋ ์ปฌ๋ผ๋ช
์ด๋ ํ
์ด๋ธ๋ช
์ ํฌํจํ๋ ๋ฑ ๋
ผ๋ฆฌ์ ์ผ๋ก ํ๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- ํ๊ฐ ๋ชจ๋ธ(GPT-4.1-nano)์ ๋ฒ ์ด์ค๋ผ์ธ ๋ชจ๋ธ์ด ์๋ชป ์์ฑํ ์ฟผ๋ฆฌ์ ๋ํด "resolve_yn": "yes"๋ผ๊ณ ์๋ชป ํ๋จํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.
- ์๋ฅผ ๋ค์ด, gen_sql์ด SQL ํ์์ ์ ํ ๋ฐ๋ฅด์ง ์๋๋ผ๋ resolve_yn = yes๋ก ์๋ชป ํ๊ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค.
- ์ปฌ๋ผ๋ช
๋ฐ ํ
์ด๋ธ๋ช
์ด ์กด์ฌํ์ง ์๊ฑฐ๋ ์๋ชป๋ ์ฟผ๋ฆฌ์์๋ resolve_yn = yes๋ก ์๋ชป ๋ถ๋ฅ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค.
- ํ๊ฐ์(GPT ๋ชจ๋ธ)๋ ๋ฌธ๋ฒ์ ํ๋น์ฑ์ด๋ ํ
์ด๋ธ ๊ตฌ์กฐ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ ๋๋ก ํ๋จํ์ง ๋ชปํ๊ณ , ๋จ์ ํ
์คํธ ์ ์ฌ์ฑ์ ๊ธฐ๋ฐํด ํ๋ณํ๋ ๊ฒฝํฅ์ ๋ณด์๋ค.
---
## ์ฌ์ฉ ์์
```python
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
model = AutoModelForCausalLM.from_pretrained("your-username/polyglot-ko-1b-txt2sql", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("your-username/polyglot-ko-1b-txt2sql")
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
prompt = """
๋น์ ์ SQL ์ ๋ฌธ๊ฐ์
๋๋ค.
### DDL:
CREATE TABLE players (
player_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
date_joined DATETIME NOT NULL,
last_login DATETIME
);
### Question:
์ฌ์ฉ์ ์ด๋ฆ์ 'admin'์ด ํฌํจ๋ ๊ณ์ ์๋?
### SQL:
"""
outputs = generator(prompt, do_sample=False, max_new_tokens=128)
print(outputs[0]["generated_text"]) |