SQLQwen / README.md
AaronTekle's picture
Update README.md
7c50a2b verified
|
Raw History Blame Contribute Delete
6.66 kB
---
base_model: Qwen/Qwen2.5-Coder-0.5B-Instruct
library_name: peft
pipeline_tag: text-generation
tags:
- "base_model:adapter:Qwen/Qwen2.5-Coder-0.5B-Instruct"
- lora
- sft
- text-to-sql
---
# **SQLQwen - Qwen2.5 Text-to-SQL Fine-Tuning with LoRA**
LoRA fine-tuning of **Qwen2.5-Coder-0.5B-Instruct** for **Text-to-SQL generation** using the **Gretel synthetic_text_to_sql** dataset.
Text-to-SQL systems translate natural-language questions into SQL using a provided database schema or SQL context. SQLQwen is designed to specialize a lightweight code-focused language model for this task while keeping the fine-tuning process parameter-efficient and practical on day-to-day (normal) hardware.
Given:
1. a database schema or SQL context
2. a natural-language request
the model generates the relevant SQL query
### Example
**Database context:**
```sql
CREATE TABLE customers (
id INTEGER PRIMARY KEY,
name TEXT,
country TEXT,
revenue DECIMAL(12, 2)
);
```
**Natural-language request:**
```text
Find the five customers with the highest revenue.
```
**Expected output:**
```sql
SELECT id, name, country, revenue
FROM customers
ORDER BY revenue DESC
LIMIT 5;
```
## Why LoRA
LoRA (**Low-Rank Adaptation**) provides a parameter-efficient alternative to full fine-tuning.
Instead of updating all parameters in the pretrained model, LoRA freezes the original model weights and introduces small trainable low-rank matrices into selected Transformer layers.
for this project, LoRA adapters are applied to the attention projection layers:
```text
q_proj
k_proj
v_proj
o_proj
```
this reduces the number of trainable parameters, GPU memory requirements, and adapter storage size while preserving the capabilities of the original pretrained model.
Only **2,162,688 of 496,195,456 parameters**, or approximately **0.4359%**, were trainable during fine-tuning.
## Model
* **Base model:** [`Qwen/Qwen2.5-Coder-0.5B-Instruct`](https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B-Instruct)
* **Fine-tuning:** PEFT LoRA
* **Training:** TRL `SFTTrainer`
* **LoRA rank:** `16`
* **LoRA alpha:** `32`
* **LoRA dropout:** `0.05`
* **Target modules:** `q_proj`, `k_proj`, `v_proj`, `o_proj`
* **Training objective:** Completion-only supervised fine-tuning
Qwen2.5-Coder was selected because SQL generation is fundamentally a structured code-generation task rather than conventional natural-language classification.
## Dataset
### Gretel Synthetic Text-to-SQL
[`gretelai/synthetic_text_to_sql`](https://huggingface.co/datasets/gretelai/synthetic_text_to_sql)
Gretel Synthetic Text-to-SQL dataset provides natural-language SQL requests, database context, target SQL queries, and supporting metadata.
3 fields are used directly during training:
| Dataset field | Purpose |
| ------------- | ------------------------------ |
| `sql_context` | Database schema or SQL context |
| `sql_prompt` | Natural-language request |
| `sql` | Ground-truth SQL completion |
## Training Run
| Metric | Result |
| ------------------------------- | ----------: |
| Training examples | **20,000** |
| Validation examples | **1,000** |
| Epochs | **2** |
| Optimizer steps | **2,500** |
| Final training loss | **0.2381** |
| Best evaluation loss | **0.2198** |
| Final evaluation loss | **0.2200** |
| Final evaluation token accuracy | **93.54%** |
| Best checkpoint | **2,400** |
| Training runtime | **~1h 35m** |
Training was completed locally on an **NVIDIA GeForce RTX 3050**.
Validation loss decreased from **0.2839** at the first logged evaluation to a best value of **0.2198** at checkpoint 2,400. The final checkpoint shows an evaluation loss of **0.2200**, indicating that training had largely converged by the end of the second epoch.
## Held-Out Generation Evaluation
A held-out generation benchmark of **50 examples** was used to evaluate SQL generation code quality.
| Metric | Result |
| ------------------------ | ----------: |
| Evaluation examples | **50** |
| Exact-match accuracy | **28.0%** |
| SQL syntax validity | **100.0%** |
| Exact matches | **14 / 50** |
| Syntax-valid generations | **50 / 50** |
All **50 generated SQL queries were successfully parsed by SQLGlot**, resulting in a **100% syntax-validity rate**.
**28% exact-match score** uses strict string-level comparison. Semantically or execution-equivalent SQL queries may differ from the reference query while still producing the correct result, so exact match should not be interpreted as the model's full semantic accuracy.
## Model Limitations:
* model may hallucinate tables or columns when the supplied database context is incomplete.
* **0.5B parameter** base model prioritizes lightweight training and inference over maximum reasoning capacity.
* Training uses synthetic Text-to-SQL examples, which may not represent every real-world database schema or production SQL workload.
* Exact-match evaluation does not account for all semantically equivalent SQL formulations.
Additional Note: SQL execution accuracy against live databases was not measured in the reported benchmark.
## Results:
completed fine-tuning run shows:
* **parameter-efficient adaptation**, with approximately **0.4359%** of model parameters trainable
* **stable convergence**, with validation loss reaching approximately **0.22**
* **100% syntax-valid SQL generation** across the 50-example held-out benchmark
* successful local fine-tuning of a code-focused language model using an **NVIDIA GeForce RTX 3050**
## Imports (PEFT library):
```python
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-0.5B-Instruct")
model = PeftModel.from_pretrained(base_model, "AaronTekle/SQLQwen")
```
## References:
- Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., and Chen, W. *LoRA: Low-Rank Adaptation of Large Language Models*. arXiv:2106.09685, 2021.](https://arxiv.org/abs/2106.09685)
- Hugging Face. *PEFT LoRA Documentation*. Parameter-Efficient Fine-Tuning documentation. (https://huggingface.co/docs/transformers/en/peft) (https://huggingface.co/docs/peft/en/package_reference/lora)
- Qwen Team. Qwen2.5-Coder-0.5B-Instruct Model Card
- Hui, B. et al. Qwen2.5-Coder Technical Report. arXiv:2409.12186, 2024
- Gretel.ai. synthetic_text_to_sql Dataset Card. Hugging Face Datasets