Views
No views yet
| Model | Exact Match | ROUGE-L | Δ vs Base |
|---|---|---|---|
| Phi-2 Base | 2.0% | 0.886 | — |
| This model (lr=2e-4) | 76.0% | 0.9903 | +74pp |
| Parameter | Value |
|---|---|
| Method | QLoRA (4-bit NF4 + LoRA) |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| Target modules | q_proj, v_proj |
| Dataset | 20,000 samples from sql-create-context |
| Epochs | 2 |
| Learning rate | 2e-4 |
| Effective batch size | 16 |
| Hardware | Kaggle T4 x2 |
| Training time | ~7 hours |
1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer, AutoConfig
3import torch
4
5model_name = "microsoft/phi-2"
6tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
7tokenizer.pad_token = tokenizer.eos_token
8
9config = AutoConfig.from_pretrained(model_name, trust_remote_code=True)
10config.__dict__['pad_token_id'] = tokenizer.pad_token_id
11
12base = AutoModelForCausalLM.from_pretrained(
13 model_name, config=config,
14 dtype=torch.float16, device_map="auto", trust_remote_code=True
15)
16model = PeftModel.from_pretrained(base, "antony-bryan-3D2Y/phi2-sql-lora-lr2e4")
17model.eval()
18
19prompt = """### SQL Schema:
20CREATE TABLE employees (id INT, name VARCHAR, department VARCHAR, salary INT)
21
22### Question:
23What are the names of employees in the engineering department?
24
25### SQL Query:
26"""
27
28inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
29with torch.no_grad():
30 output = model.generate(**inputs, max_new_tokens=100, do_sample=False,
31 eos_token_id=tokenizer.eos_token_id)
32n = inputs['input_ids'].shape[1]
33result = tokenizer.decode(output[0][n:], skip_special_tokens=True)
34result = result.replace("</s>", "").replace("<|endoftext|>", "").split('\n')[0].strip()
35print(result)
36# → SELECT name FROM employees WHERE department = "engineering"