import torch from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig from peft import PeftModel import gradio as gr base_model_name = "meta-llama/Llama-2-7b-chat-hf" adapter_name = "mostafa33/llama2-ecommerce-lora2" bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", ) # Load model base_model = AutoModelForCausalLM.from_pretrained( base_model_name, quantization_config=bnb_config, device_map="auto" ) model = PeftModel.from_pretrained(base_model, adapter_name) tokenizer = AutoTokenizer.from_pretrained(base_model_name) tokenizer.pad_token = tokenizer.eos_token def generate_response(prompt): inputs = tokenizer(prompt, return_tensors="pt").to(model.device) outputs = model.generate( **inputs, max_new_tokens=256, temperature=0.7, top_p=0.9, do_sample=True, ) return tokenizer.decode(outputs[0], skip_special_tokens=True) # Gradio Interface demo = gr.Interface( fn=generate_response, inputs=gr.Textbox(lines=4, label="Enter your product or query"), outputs=gr.Textbox(label="Model Response"), title="🦙 LLaMA2 LoRA Ecommerce Chatbot", description="Fine-tuned LoRA model for ecommerce text generation and chat.", ) demo.launch()