mahin1234's picture
Update app.py
266419b verified
Raw
History Blame
4.02 kB
import gradio as gr
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import os
# Model configuration
MODEL_ID = "mx-llms/Lychee-GPT-9B"
MAX_NEW_TOKENS = 256
TEMPERATURE = 0.7
TOP_P = 0.9
# Load model and tokenizer
print("Loading model... (এটা প্রথমবার একটু সময় লাগবে)")
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
# CPU optimization - 8-bit quantization
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
device_map="cpu", # CPU তে run করবে
load_in_8bit=False, # CPU তে 8bit সাপোর্ট নেই, তাই False
torch_dtype=torch.float32, # CPU তে float32 ব্যবহার করতে হয়
trust_remote_code=True,
)
# Set to eval mode
model.eval()
def generate_response(user_message, temperature=0.7, top_p=0.9, max_tokens=256):
"""Generate response from Lychee-GPT"""
try:
# Prepare input
inputs = tokenizer(user_message, return_tensors="pt")
# Generate
with torch.no_grad():
outputs = model.generate(
inputs.input_ids,
max_new_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
do_sample=True,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
# Decode
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Remove the input from response
if user_message in response:
response = response.replace(user_message, "", 1).strip()
return response
except Exception as e:
return f"Error: {str(e)}"
# Gradio Interface
with gr.Blocks(title="Lychee-GPT-9B") as demo:
gr.Markdown("""
# 🎉 Lychee-GPT-9B
### আপনার নিজস্ব LLM Model!
> ⚠️ **নোট:** CPU তে চলছে তাই response 30-90 সেকেন্ড লাগতে পারে।
""")
with gr.Row():
with gr.Column():
user_input = gr.Textbox(
label="আপনার প্রশ্ন/বার্তা",
placeholder="কিছু লিখুন...",
lines=3
)
with gr.Row():
temp_slider = gr.Slider(
label="Temperature",
minimum=0.0,
maximum=1.0,
value=0.7,
step=0.1,
info="বেশি = সৃজনশীল, কম = সুসংগত"
)
top_p_slider = gr.Slider(
label="Top P",
minimum=0.0,
maximum=1.0,
value=0.9,
step=0.05,
info="শব্দ নির্বাচন নিয়ন্ত্রণ"
)
submit_btn = gr.Button("✨ Generate Response", variant="primary", size="lg")
with gr.Column():
output_text = gr.Textbox(
label="Response",
lines=8,
interactive=False
)
# Examples
gr.Examples(
examples=[
["বাংলা ভাষা কি?"],
["আমাকে একটা গল্প বলো"],
["পাইথন প্রোগ্রামিং কি?"],
],
inputs=user_input,
)
# Button click handler
submit_btn.click(
fn=generate_response,
inputs=[user_input, temp_slider, top_p_slider],
outputs=output_text,
)
# Enter key handler
user_input.submit(
fn=generate_response,
inputs=[user_input, temp_slider, top_p_slider],
outputs=output_text,
)
if __name__ == "__main__":
demo.launch()