File size: 2,336 Bytes
833ca90
2304d6b
 
 
 
 
 
 
 
 
ce1c444
 
 
833ca90
 
ce1c444
833ca90
ce1c444
833ca90
ce1c444
 
 
 
833ca90
ce1c444
833ca90
ce1c444
833ca90
ce1c444
833ca90
ce1c444
 
 
 
833ca90
ce1c444
 
833ca90
ce1c444
 
 
 
 
 
 
833ca90
ce1c444
 
 
833ca90
ce1c444
 
 
833ca90
ce1c444
833ca90
ce1c444
 
 
2304d6b
ce1c444
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
---
base_model: TinyLlama/TinyLlama-1.1B-Chat-v1.0
library_name: peft
pipeline_tag: text-generation
tags:
- base_model:adapter:TinyLlama/TinyLlama-1.1B-Chat-v1.0
- lora
- sft
- transformers
- trl
- text-to-sql
datasets:
- b-mc2/sql-create-context
---

# 🤖 TinyLlama Text-to-SQL (LoRA Adapter)

هذا النموذج عبارة عن **LoRA Adapter** تم تدريبه لتعديل سلوك نموذج `TinyLlama-1.1B` ليصبح متخصصاً في تحويل الأسئلة باللغة الطبيعية إلى كود SQL دقيق بناءً على هيكل الجدول (Schema) المعطى له، دون أي ثرثرة زائدة.

- **Developed by:** Adam Abu Hamdan
- **Model type:** PEFT (LoRA)
- **Language:** English (Text & SQL)
- **Finetuned from model:** TinyLlama/TinyLlama-1.1B-Chat-v1.0

---

## 💡 كيف يعمل النموذج (How to Get Started)

يمكنك تشغيل هذا النموذج ودمج الأدابتر (الـ 20 ميجابايت) مع النموذج الأساسي باستخدام الكود التالي في بايثون:

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

BASE_MODEL = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
ADAPTER_MODEL = "adamabuhamdan/tinyllama-sql-lora"

# 1. تحميل المترجم والنموذج الأساسي
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
base_model = AutoModelForCausalLM.from_pretrained(
    BASE_MODEL,
    torch_dtype=torch.float16,
    device_map="auto",
)

# 2. دمج أوزان LoRA التي قمنا بتدريبها
model = PeftModel.from_pretrained(base_model, ADAPTER_MODEL)
model.eval()

# 3. تجربة توليد كود SQL
schema = "CREATE TABLE employees (id INT, name TEXT, department TEXT, salary INT);"
question = "List the names of employees in Engineering earning more than 100000."

prompt = f"<|system|>\nYou are a SQL assistant. Given a table schema and a question, reply with ONLY the SQL query, nothing else.</s>\n<|user|>\nSchema:\n{schema}\n\nQuestion: {question}</s>\n<|assistant|>\n"

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
    outputs = model.generate(**inputs, max_new_tokens=100, do_sample=False)

print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True).strip())