praveends's picture
Add model card with benchmark results and training details
ae71f44 verified
|
Raw
History Blame Contribute Delete
3.28 kB
---
language:
- en
license: mit
tags:
- pyspark
- sql
- code-generation
- migration
- fintech
- fine-tuned
base_model: deepseek-ai/deepseek-coder-1.3b-instruct
---
# migration-copilot-deepseek-coder-1-3b-instruct
Fine-tuned [deepseek-coder-1.3b-instruct](https://huggingface.co/deepseek-ai/deepseek-coder-1.3b-instruct) for enterprise SQL/HiveQL/PL-SQL/Stored Procedure → PySpark migration.
Part of the [Enterprise Migration Copilot](https://github.com/praveenkumar993/enterprise-migration-copilot) project.
## Benchmark Results
Evaluated on 480 held-out scripts (120 per language), never seen during training:
| Language | Pass Rate |
|---|---|
| SQL | 29% |
| HiveQL | 32% |
| PL/SQL | 27% |
| Stored Procedure | 20% |
| **Overall** | **27%** |
Metrics: `syntax_valid` AND `has_pyspark_ops` AND `semantic_sim` (60% table name coverage).
## Training Details
- **Base model**: deepseek-ai/deepseek-coder-1.3b-instruct (1.3B parameters)
- **Method**: LoRA fine-tuning (r=16, alpha=32)
- **Training data**: 1,312 validated SQL→PySpark pairs
- **Data sources**: 300 hand-crafted Claude examples (99.67% validation pass rate) + 1,012 Ollama-generated pairs (79.58% pass rate)
- **Languages**: SQL, HiveQL, PL/SQL, Stored Procedures (T-SQL)
- **Epochs**: 3
- **Train loss**: 0.347 → 0.258 (best training convergence across all 3 models)
- **Eval loss**: 0.363 → 0.329
- **Hardware**: Google Colab T4 GPU (free tier)
- **Training time**: ~19 minutes (fastest training due to smallest model size)
## Prompt Format
```
### Instruction:
Convert the following {SOURCE_LANGUAGE} code to PySpark.
Difficulty: {difficulty}
### Input:
{source_code}
### Response:
```
## Example
**Input (HiveQL):**
```sql
SELECT user_id, tag
FROM user_tags
LATERAL VIEW EXPLODE(tags) t AS tag
WHERE size(tags) > 0
DISTRIBUTE BY user_id
SORT BY tag;
```
**Output (PySpark):**
```python
from pyspark.sql import functions as F
result = (
user_tags
.filter(F.size('tags') > 0)
.select('user_id', F.explode('tags').alias('tag'))
.repartition('user_id')
.sortWithinPartitions('tag')
)
result.show()
```
## Intended Use
- Enterprise legacy SQL migration to Apache Spark / Databricks
- Lightweight/edge deployment (1.3B params, smallest memory footprint of the 3 models)
- Fast prototyping and experimentation
## Limitations
- Lowest overall accuracy (27%) due to smallest base model size
- Best training loss convergence (0.258) but smallest base model capacity limits output quality
- Stored Procedure migration accuracy is 20% — complex T-SQL constructs require manual review
## Model Comparison
| Model | Params | Overall | Train Loss | Eval Loss |
|---|---|---|---|---|
| **deepseek-coder-1.3b** (this) | 1.3B | 27% | 0.258 | 0.329 |
| qwen2.5-coder-1.5b | 1.5B | 45% | 0.307 | 0.344 |
| phi-3.5-mini | 3.8B | 57% | 2.133 | 0.294 |
## Links
- 📁 GitHub: [enterprise-migration-copilot](https://github.com/praveenkumar993/enterprise-migration-copilot)
- 📊 Dataset: [praveends/enterprise-migration-dataset](https://huggingface.co/datasets/praveends/enterprise-migration-dataset)
- 🤗 All models: [praveends](https://huggingface.co/praveends)