|
|
--- |
|
|
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"]) |