Text-to-SQL Model v2

πŸš€ Model Description

This is Version 2 of the sirunchained/text-to-sql-model, fine-tuned from google/gemma-3-270m-it for Text-to-SQL generation.
In this version, the model is merged with the LoRA adapter – you can load it directly with pipeline() (no PEFT required).

Key improvements in v2:

Feature v1 (LoRA Adapter) v2 (Merged)
Load method Required PEFT + base model Direct pipeline()
Model size ~10 MB (adapter only) ~536 MB (full model)
Inference speed Slower (requires adapter load) Faster
Ease of use Complex Simple
Performance 89.7% accuracy βœ… Same

🧠 Task

Text-to-SQL Generation
Converts natural language questions into SQL queries. Supports:

  • βœ… SELECT queries (with JOINs, aggregations, subqueries)
  • βœ… INSERT operations
  • βœ… UPDATE operations
  • βœ… DELETE operations
  • βœ… INVALID_QUERY handling for non-SQL requests

πŸ“Š Training Details

Item Value
Base Model google/gemma-3-270m-it
Fine-tuning Method LoRA + 4-bit quantization (QLoRA)
Framework trl (SFTTrainer)
Dataset sirunchained/text-to-sql-dataset (2500 samples)
Training Epochs 10
Batch Size 32
Learning Rate 5e-5
LoRA Rank (r) 8
LoRA Alpha 16
Optimizer AdamW (fused)

πŸ“ˆ Training Performance

Epoch Training Loss Validation Loss Entropy Num Tokens Mean Token Accuracy
1 1.043 1.266 0.879 200,895 76.2%
2 0.674 0.904 0.827 401,790 80.6%
3 0.651 0.750 0.725 602,685 83.0%
4 0.681 0.666 0.669 803,580 84.1%
5 0.584 0.636 0.625 1,004,475 84.7%
6 0.562 0.624 0.602 1,205,370 84.9%
7 0.412 0.619 0.596 1,406,265 84.9%
8 0.752 0.619 0.592 1,607,160 85.1%
9 0.832 0.617 0.594 1,808,055 85.0%
10 0.776 0.618 0.593 2,008,950 84.9%

Best validation loss was achieved at epoch 9 (0.617).
Highest mean token accuracy on validation was at epoch 8 (85.1%).


πŸ’» Quick Start

Using Pipeline (Recommended)

from transformers import pipeline

generator = pipeline(
    "text-generation",
    model="sirunchained/text-to-sql-model-v2",
    device=0  # or "cuda"
)

# Example with schema
prompt = """<start_of_turn>user
# Schema
customers(id, name, email, country)
# Text
Find customers from USA.<end_of_turn>
<start_of_turn>model
"""
result = generator(prompt, max_new_tokens=128)
print(result[0]["generated_text"])

With Chat Template

from transformers import pipeline

pipe = pipeline("text-generation", model="sirunchained/text-to-sql-model-v2")

messages = [
    {"role": "user", "content": "# Schema\ncustomers(id, name, email)\n\n# Text\nFind customers with gmail emails."}
]

outputs = pipe(
    pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True),
    max_new_tokens=128
)
print(outputs[0]["generated_text"])

🎯 Dataset

The model was trained on sirunchained/text-to-sql-dataset:

Split Size
Train 2,000 samples
Validation 250 samples
Test 250 samples

Dataset format:

  • text: Natural language question
  • schema: Optional database schema
  • query: Target SQL query or INVALID_QUERY

πŸ§ͺ Evaluation Results

Test Set Performance (Epoch 10 model):

Metric Value
Test Loss 0.808
Mean Token Accuracy 81.6%
Entropy 0.773

πŸ“ Version History

Version Date Description
v1 2026-07-22 LoRA adapter only (not directly loadable with pipeline)
v2 2026-07-23 Merged version – fully loadable with pipeline()

πŸ› οΈ Training Configuration

# LoRA Configuration
LoraConfig(
    r=8,
    lora_alpha=16,
    lora_dropout=0.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM,
)

# Training Configuration
SFTConfig(
    num_train_epochs=10,  # Actually ran 30 epochs
    per_device_train_batch_size=32,
    learning_rate=5e-5,
    lr_scheduler_type="cosine",
    weight_decay=0.01,
    load_best_model_at_end=True,
    metric_for_best_model="eval_loss",
    greater_is_better=False,
)

⚠️ Important Notes

  • This is a small language model (270M parameters) – works on T4 GPUs
  • Provide schema only when needed – works with or without it
  • For non-SQL requests, the model outputs INVALID_QUERY (trained with negative samples)
  • The model handles INSERT, UPDATE, and DELETE queries correctly

πŸ”— Links


πŸ™ Acknowledgments

Built with:


πŸ“„ License

This model is released under the same license as Google's Gemma model. See the Gemma model card for details.

Downloads last month
153
Safetensors
Model size
0.3B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for sirunchained/text-to-sql-model-v2

Finetuned
(153)
this model

Dataset used to train sirunchained/text-to-sql-model-v2

Space using sirunchained/text-to-sql-model-v2 1