ds / app.py
tamilanda's picture
Update app.py
b08a73f verified
Raw History Blame Contribute Delete
1.57 kB
import gradio as gr
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
from peft import PeftModel
BASE_MODEL = "codellama/CodeLlama-7b-Instruct-hf"
ADAPTER_ID = "tamilanda/my-sql-model"
# 1️⃣ Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
# 2️⃣ Force FULL model load first (no meta device)
dtype = torch.float16 if torch.cuda.is_available() else torch.float32
device = 0 if torch.cuda.is_available() else -1
model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
torch_dtype=dtype,
low_cpu_mem_usage=False, # ❗ prevent meta loading
device_map=None # ❗ don't auto offload during LoRA merge
)
# 3️⃣ Load LoRA adapter
model = PeftModel.from_pretrained(model, ADAPTER_ID)
# 4️⃣ Move model to correct device
if torch.cuda.is_available():
model = model.to("cuda")
else:
model = model.to("cpu")
# 5️⃣ Build pipeline
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device=device
)
# Gradio UI
def generate_sql(prompt):
if not prompt.strip():
return "⚠️ Please enter a prompt."
result = pipe(
prompt,
max_new_tokens=150,
do_sample=True,
temperature=0.2,
top_p=0.9,
)
return result[0]["generated_text"]
demo = gr.Interface(
fn=generate_sql,
inputs=gr.Textbox(label="Enter Natural Language Query"),
outputs=gr.Textbox(label="Generated SQL"),
title="🧠 NL → SQL (CodeLlama + LoRA)",
)
if __name__ == "__main__":
demo.launch()