File size: 1,892 Bytes
1d4d4c2
 
 
 
714792b
 
 
 
 
 
 
1d4d4c2
714792b
1d4d4c2
 
 
714792b
1d4d4c2
714792b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1d4d4c2
 
 
714792b
 
1d4d4c2
 
 
1aacf8b
1d4d4c2
714792b
 
1d4d4c2
714792b
1d4d4c2
 
 
 
 
714792b
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
license: apache-2.0
base_model: LiquidAI/LFM2.5-1.2B-Instruct
tags:
  - text2sql
  - sql
  - fine-tuned
  - lora
  - mlx
datasets:
  - synthetic
language:
  - en
pipeline_tag: text-generation
---

# LFM2.5-1.2B-Text2SQL (MLX)

A fine-tuned version of [LiquidAI/LFM2.5-1.2B-Instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct) for Text-to-SQL generation.

## Model Description

This model was fine-tuned on 2000 synthetic Text-to-SQL examples generated using a teacher model (DeepSeek V3).
The fine-tuning was performed using LoRA adapters with MLX on Apple Silicon, then fused into the base model.

### Training Details

- **Base Model**: LiquidAI/LFM2.5-1.2B-Instruct
- **Training Data**: 2000 synthetic examples
- **Training Method**: LoRA fine-tuning (FP16)
- **Iterations**: 5400
- **Hardware**: Apple Silicon (MLX)

## Performance

### Model Comparison

![Model Comparison](model_comparison.png)

| Metric | Teacher (DeepSeek V3) | Base Model | Fine-tuned |
|--------|----------------------|------------|------------|
| Exact Match | 60% | 48% | **72%** |
| LLM-as-Judge | 90% | 75% | 87% |
| ROUGE-L | 92% | 83% | **94%** |
| BLEU | 85% | 70% | **89%** |
| Semantic Similarity | 96% | 93% | **97%** |

### Training Progression

![Training Progression](training_progression.png)

The model shows consistent improvement across all checkpoints with no signs of overfitting.

## Usage

### MLX (Apple Silicon)

```python
from mlx_lm import load, generate

model, tokenizer = load("hybridaione/LFM2.5-1.2B-Text2SQL-MLX")

# Example query
prompt = '''CREATE TABLE employees (id INT, name VARCHAR, salary DECIMAL);

Question: What are the names of employees earning more than 50000?'''

response = generate(model, tokenizer, prompt=prompt, max_tokens=256)
print(response)
```

## License

This model is released under the Apache 2.0 license, following the base model's license.