Instructions to use ri7elyass/qwen2.5-coder-text2sql with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ri7elyass/qwen2.5-coder-text2sql with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("ri7elyass/qwen2.5-coder-text2sql", device_map="auto") - PEFT
How to use ri7elyass/qwen2.5-coder-text2sql with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Update README.md
Browse files
README.md
CHANGED
|
@@ -1,199 +1,149 @@
|
|
| 1 |
---
|
| 2 |
library_name: transformers
|
| 3 |
-
tags:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
---
|
| 5 |
|
| 6 |
-
# Model Card for
|
| 7 |
-
|
| 8 |
-
<!-- Provide a quick summary of what the model is/does. -->
|
| 9 |
-
|
| 10 |
|
|
|
|
| 11 |
|
| 12 |
## Model Details
|
| 13 |
|
| 14 |
### Model Description
|
| 15 |
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
|
| 19 |
|
| 20 |
-
- **Developed by:**
|
| 21 |
-
- **
|
| 22 |
-
- **
|
| 23 |
-
- **
|
| 24 |
-
- **
|
| 25 |
-
- **License:** [More Information Needed]
|
| 26 |
-
- **Finetuned from model [optional]:** [More Information Needed]
|
| 27 |
|
| 28 |
-
### Model Sources
|
| 29 |
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
- **Repository:** [More Information Needed]
|
| 33 |
-
- **Paper [optional]:** [More Information Needed]
|
| 34 |
-
- **Demo [optional]:** [More Information Needed]
|
| 35 |
|
| 36 |
## Uses
|
| 37 |
|
| 38 |
-
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
|
| 39 |
-
|
| 40 |
### Direct Use
|
| 41 |
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
[More Information Needed]
|
| 45 |
-
|
| 46 |
-
### Downstream Use [optional]
|
| 47 |
-
|
| 48 |
-
<!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
|
| 49 |
-
|
| 50 |
-
[More Information Needed]
|
| 51 |
|
| 52 |
### Out-of-Scope Use
|
| 53 |
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
[More Information Needed]
|
| 57 |
|
| 58 |
## Bias, Risks, and Limitations
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
[More Information Needed]
|
| 63 |
|
| 64 |
### Recommendations
|
| 65 |
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
|
| 69 |
|
| 70 |
## How to Get Started with the Model
|
| 71 |
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
|
| 76 |
## Training Details
|
| 77 |
|
| 78 |
### Training Data
|
| 79 |
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
[More Information Needed]
|
| 83 |
|
| 84 |
### Training Procedure
|
| 85 |
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
#### Preprocessing [optional]
|
| 89 |
|
| 90 |
-
|
| 91 |
|
|
|
|
| 92 |
|
| 93 |
#### Training Hyperparameters
|
| 94 |
|
| 95 |
-
- **Training regime:**
|
| 96 |
-
|
| 97 |
-
|
|
|
|
|
|
|
| 98 |
|
| 99 |
-
|
| 100 |
|
| 101 |
-
|
|
|
|
|
|
|
| 102 |
|
| 103 |
## Evaluation
|
| 104 |
|
| 105 |
-
<!-- This section describes the evaluation protocols and provides the results. -->
|
| 106 |
-
|
| 107 |
### Testing Data, Factors & Metrics
|
| 108 |
|
| 109 |
#### Testing Data
|
| 110 |
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
[More Information Needed]
|
| 114 |
-
|
| 115 |
-
#### Factors
|
| 116 |
-
|
| 117 |
-
<!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
|
| 118 |
-
|
| 119 |
-
[More Information Needed]
|
| 120 |
|
| 121 |
#### Metrics
|
| 122 |
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
[More Information Needed]
|
| 126 |
|
| 127 |
### Results
|
| 128 |
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
#### Summary
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
## Model Examination [optional]
|
| 136 |
-
|
| 137 |
-
<!-- Relevant interpretability work for the model goes here -->
|
| 138 |
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
## Environmental Impact
|
| 142 |
-
|
| 143 |
-
<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
|
| 144 |
-
|
| 145 |
-
Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
|
| 146 |
-
|
| 147 |
-
- **Hardware Type:** [More Information Needed]
|
| 148 |
-
- **Hours used:** [More Information Needed]
|
| 149 |
-
- **Cloud Provider:** [More Information Needed]
|
| 150 |
-
- **Compute Region:** [More Information Needed]
|
| 151 |
-
- **Carbon Emitted:** [More Information Needed]
|
| 152 |
-
|
| 153 |
-
## Technical Specifications [optional]
|
| 154 |
|
| 155 |
### Model Architecture and Objective
|
| 156 |
|
| 157 |
-
|
| 158 |
|
| 159 |
### Compute Infrastructure
|
| 160 |
|
| 161 |
-
[More Information Needed]
|
| 162 |
-
|
| 163 |
#### Hardware
|
| 164 |
|
| 165 |
-
|
| 166 |
|
| 167 |
#### Software
|
| 168 |
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
<!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
|
| 174 |
-
|
| 175 |
-
**BibTeX:**
|
| 176 |
-
|
| 177 |
-
[More Information Needed]
|
| 178 |
-
|
| 179 |
-
**APA:**
|
| 180 |
-
|
| 181 |
-
[More Information Needed]
|
| 182 |
-
|
| 183 |
-
## Glossary [optional]
|
| 184 |
-
|
| 185 |
-
<!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
|
| 186 |
-
|
| 187 |
-
[More Information Needed]
|
| 188 |
-
|
| 189 |
-
## More Information [optional]
|
| 190 |
-
|
| 191 |
-
[More Information Needed]
|
| 192 |
|
| 193 |
-
## Model Card Authors
|
| 194 |
|
| 195 |
-
|
| 196 |
|
| 197 |
## Model Card Contact
|
| 198 |
|
| 199 |
-
|
|
|
|
| 1 |
---
|
| 2 |
library_name: transformers
|
| 3 |
+
tags:
|
| 4 |
+
- text-to-sql
|
| 5 |
+
- lora
|
| 6 |
+
- peft
|
| 7 |
+
- qlora
|
| 8 |
+
- sql
|
| 9 |
+
- qwen2
|
| 10 |
+
license: apache-2.0
|
| 11 |
+
base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
|
| 12 |
+
datasets:
|
| 13 |
+
- xlangai/spider
|
| 14 |
+
language:
|
| 15 |
+
- en
|
| 16 |
---
|
| 17 |
|
| 18 |
+
# Model Card for Qwen2.5-Coder Text-to-SQL (LoRA)
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
+
Fine-tuning di Qwen2.5-Coder-1.5B-Instruct per generare query SQL a partire da domande in linguaggio naturale, dato lo schema di un database.
|
| 21 |
|
| 22 |
## Model Details
|
| 23 |
|
| 24 |
### Model Description
|
| 25 |
|
| 26 |
+
Questo modello è un adapter LoRA che estende Qwen2.5-Coder-1.5B-Instruct con la capacità di tradurre domande in linguaggio naturale in query SQL eseguibili, dato lo schema del database come contesto nel prompt.
|
|
|
|
|
|
|
| 27 |
|
| 28 |
+
- **Developed by:** Elyass Rochdi
|
| 29 |
+
- **Model type:** Causal Language Model (decoder-only Transformer) con adapter LoRA
|
| 30 |
+
- **Language(s) (NLP):** Inglese
|
| 31 |
+
- **License:** Apache 2.0
|
| 32 |
+
- **Finetuned from model:** [Qwen/Qwen2.5-Coder-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct)
|
|
|
|
|
|
|
| 33 |
|
| 34 |
+
### Model Sources
|
| 35 |
|
| 36 |
+
- **Repository:** https://huggingface.co/ri7elyass/qwen2.5-coder-text2sql
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
## Uses
|
| 39 |
|
|
|
|
|
|
|
| 40 |
### Direct Use
|
| 41 |
|
| 42 |
+
Generazione di query SQL a partire da una domanda in linguaggio naturale e uno schema di database fornito nel prompt. Pensato per prototipi di interfacce "chiedi al database in linguaggio naturale" e per scopi di portfolio/dimostrativi.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
### Out-of-Scope Use
|
| 45 |
|
| 46 |
+
Non pensato per essere usato in produzione senza validazione delle query generate (es. controllo sintattico, sandboxing dell'esecuzione). Non gestisce in modo affidabile query SQL molto complesse (subquery annidate multiple, window functions avanzate) o schemi molto diversi da quelli visti nel dataset Spider.
|
|
|
|
|
|
|
| 47 |
|
| 48 |
## Bias, Risks, and Limitations
|
| 49 |
|
| 50 |
+
Il modello è stato fine-tuned solo su Spider, un dataset generalista in inglese — su schemi di dominio molto specifico o in altre lingue le prestazioni possono degradare. Essendo stato allenato per 1 sola epoca, c'è margine di miglioramento. Come ogni sistema Text-to-SQL, le query generate vanno validate prima dell'esecuzione su dati reali (rischio di query errate o, in contesti non controllati, potenzialmente dannose).
|
|
|
|
|
|
|
| 51 |
|
| 52 |
### Recommendations
|
| 53 |
|
| 54 |
+
Validare sempre la query generata (sintassi + logica) prima di eseguirla su un database reale, specialmente in contesti con permessi di scrittura.
|
|
|
|
|
|
|
| 55 |
|
| 56 |
## How to Get Started with the Model
|
| 57 |
|
| 58 |
+
```python
|
| 59 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 60 |
+
from peft import PeftModel
|
| 61 |
+
import torch
|
| 62 |
|
| 63 |
+
base_model = "Qwen/Qwen2.5-Coder-1.5B-Instruct"
|
| 64 |
+
adapter = "ri7elyass/qwen2.5-coder-text2sql"
|
| 65 |
+
|
| 66 |
+
tokenizer = AutoTokenizer.from_pretrained(base_model)
|
| 67 |
+
model = AutoModelForCausalLM.from_pretrained(base_model, torch_dtype=torch.bfloat16, device_map="auto")
|
| 68 |
+
model = PeftModel.from_pretrained(model, adapter)
|
| 69 |
+
|
| 70 |
+
prompt = """Schema: singer : Singer_ID (number), Name (text), Country (text)
|
| 71 |
+
Domanda: How many singers are there?
|
| 72 |
+
SQL:"""
|
| 73 |
+
|
| 74 |
+
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
| 75 |
+
outputs = model.generate(**inputs, max_new_tokens=100, do_sample=False, pad_token_id=tokenizer.eos_token_id)
|
| 76 |
+
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
|
| 77 |
+
```
|
| 78 |
|
| 79 |
## Training Details
|
| 80 |
|
| 81 |
### Training Data
|
| 82 |
|
| 83 |
+
[Spider](https://huggingface.co/datasets/xlangai/spider) — dataset Text-to-SQL con 7.000 esempi domanda→query su 166 database diversi. Schema dei database ottenuto da [richardr1126/spider-schema](https://huggingface.co/datasets/richardr1126/spider-schema).
|
|
|
|
|
|
|
| 84 |
|
| 85 |
### Training Procedure
|
| 86 |
|
| 87 |
+
Ogni esempio è stato costruito concatenando schema del DB (formato testuale) + domanda come prompt, con la query SQL come completion target. Loss calcolata solo sui token della completion (loss masking sul prompt).
|
|
|
|
|
|
|
| 88 |
|
| 89 |
+
#### Preprocessing
|
| 90 |
|
| 91 |
+
Tokenizzazione con il tokenizer nativo di Qwen2.5-Coder, troncamento a 512 token, padding dinamico per batch.
|
| 92 |
|
| 93 |
#### Training Hyperparameters
|
| 94 |
|
| 95 |
+
- **Training regime:** bf16 mixed precision, base model quantizzato in 4-bit (QLoRA, NF4)
|
| 96 |
+
- **LoRA config:** r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], lora_dropout=0.05
|
| 97 |
+
- **Batch size:** 4 per device, gradient accumulation 4 (batch effettivo 16)
|
| 98 |
+
- **Epochs:** 1
|
| 99 |
+
- **Learning rate:** 2e-4
|
| 100 |
|
| 101 |
+
#### Speeds, Sizes, Times
|
| 102 |
|
| 103 |
+
- **Hardware:** GPU T4 (Google Colab, free tier)
|
| 104 |
+
- **Training time:** ~3h10
|
| 105 |
+
- **Adapter size:** ~4.4MB (solo i pesi LoRA)
|
| 106 |
|
| 107 |
## Evaluation
|
| 108 |
|
|
|
|
|
|
|
| 109 |
### Testing Data, Factors & Metrics
|
| 110 |
|
| 111 |
#### Testing Data
|
| 112 |
|
| 113 |
+
Split di validation di Spider (1.034 esempi, database mai visti durante il training).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
|
| 115 |
#### Metrics
|
| 116 |
|
| 117 |
+
Loss (cross-entropy) e ispezione qualitativa delle query generate (correttezza semantica, non solo match testuale esatto).
|
|
|
|
|
|
|
| 118 |
|
| 119 |
### Results
|
| 120 |
|
| 121 |
+
- **Training loss finale:** ~0.18 (partita da ~0.49 al primo logging step)
|
| 122 |
+
- Esempio qualitativo — Domanda: *"Show all countries and the number of singers in each country."* → SQL generato: `SELECT count(*), country FROM singer GROUP BY country` (semanticamente equivalente al ground truth, con solo l'ordine delle colonne diverso)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
|
| 124 |
+
## Technical Specifications
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
### Model Architecture and Objective
|
| 127 |
|
| 128 |
+
Architettura Transformer decoder-only (Qwen2.5-Coder-1.5B), con adapter LoRA applicati alle proiezioni Query e Value dell'attention, in ogni layer. Obiettivo: causal language modeling, con loss calcolata solo sui token della query SQL target.
|
| 129 |
|
| 130 |
### Compute Infrastructure
|
| 131 |
|
|
|
|
|
|
|
| 132 |
#### Hardware
|
| 133 |
|
| 134 |
+
1x NVIDIA Tesla T4 (16GB VRAM)
|
| 135 |
|
| 136 |
#### Software
|
| 137 |
|
| 138 |
+
- transformers
|
| 139 |
+
- peft
|
| 140 |
+
- bitsandbytes (quantizzazione 4-bit)
|
| 141 |
+
- datasets
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
|
| 143 |
+
## Model Card Authors
|
| 144 |
|
| 145 |
+
Elyass Rochdi
|
| 146 |
|
| 147 |
## Model Card Contact
|
| 148 |
|
| 149 |
+
huggingface.co/ri7elyass
|