import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM from peft import PeftModel import torch # Load base + adapter base_model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", torch_dtype="auto", device_map="auto") tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2") model = PeftModel.from_pretrained(base_model, "darshjoshi16/phi2-lora-math") tokenizer.pad_token = tokenizer.eos_token model.eval() def solve_math_question(question): prompt = f"Q: {question.strip()}\nA:" inputs = tokenizer(prompt, return_tensors="pt").to(model.device) with torch.no_grad(): outputs = model.generate(**inputs, max_new_tokens=100) return tokenizer.decode(outputs[0], skip_special_tokens=True) # Gradio app demo = gr.Interface( fn=solve_math_question, inputs=gr.Textbox(label="Enter Math Word Problem"), outputs=gr.Textbox(label="Model's Answer"), title="Phi-2 LoRA on GSM8K", description="Fine-tuned Phi-2 model using LoRA to solve math reasoning problems." ) demo.launch()