ZenJony's picture
Update app.py
90ec988 verified
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# ১. আপনার মডেলের তথ্য
# ফ্রি CPU তে চালানোর জন্য ৪-বিট ভার্সনের বদলে মূল ভার্সন ব্যবহার করা নিরাপদ (তবে এটি অনেক র‍্যাম নিবে)
base_model_id = "unsloth/llama-3-8b" # অথবা "meta-llama/Meta-Llama-3-8B-Instruct"
adapter_model_id = "ZenJony/bengali-sms-ai-model"
print("Loading model on CPU... This may take several minutes.")
# ২. টোকেনাইজার এবং মডেল লোড করা (CPU এর জন্য)
tokenizer = AutoTokenizer.from_pretrained(base_model_id)
model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.float32, # CPU তে float16 কাজ করে না সব সময়, তাই float32 নিরাপদ
device_map="cpu",
low_cpu_mem_usage=True
)
# আপনার লরা অ্যাডাপ্টার যুক্ত করা
model = PeftModel.from_pretrained(model, adapter_model_id)
print("Model loaded successfully on CPU! ✅")
# ৩. আলপাকা প্রম্পট ফরম্যাট
alpaca_prompt = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
### Instruction:
{}
### Input:
{}
### Response:
{}"""
def respond(message, history, system_message, max_tokens, temperature, top_p):
full_instruction = f"{system_message}\n\n{message}"
prompt = alpaca_prompt.format(full_instruction, "", "")
inputs = tokenizer([prompt], return_tensors="pt") # .to("cuda") দেওয়া যাবে না
with torch.no_grad():
generated_ids = model.generate(
**inputs,
max_new_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
do_sample=True,
eos_token_id=tokenizer.eos_token_id,
)
full_response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
if "### Response:" in full_response:
response = full_response.split("### Response:")[1].strip()
else:
response = full_response
return response
# ৪. ইন্টারফেস
chatbot = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="তুমি একজন আধুনিক ও স্মার্ট এআই অ্যাসিস্ট্যান্ট। তোমাকে তৈরি করেছেন ZenJony।", label="System message"),
gr.Slider(minimum=1, maximum=512, value=128, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="Temperature"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.9, step=0.05, label="Top-p"),
],
title="ZenJony AI Assistant 🤖"
)
if __name__ == "__main__":
chatbot.launch()