| --- |
| 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()) |