tinyllama-sql-lora / README.md
adamabuhamdan's picture
Update README.md
ce1c444 verified
metadata
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 ميجابايت) مع النموذج الأساسي باستخدام الكود التالي في بايثون:

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