jalonso24's picture
Update app.py
674da6b verified
raw
history blame contribute delete
1.87 kB
import gradio as gr
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
base_model_id = "openlm-research/open_llama_3b"
adapter_path = "jalonso24/lora-lateblight-v3"
# Load to CPU (safe on Spaces)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.float32
).to("cpu")
model = PeftModel.from_pretrained(base_model, adapter_path)
tokenizer = AutoTokenizer.from_pretrained(base_model_id, use_fast=False)
tokenizer.pad_token = tokenizer.eos_token
# New structured prompt logic
def predict_risk(prompt):
structured_prompt = (
f"{prompt.strip()}\n\n"
"Clasifica el riesgo de tiz贸n tard铆o (elige una sola opci贸n):\n"
"- Bajo\n- Moderado\n- Alto\n\nRespuesta:"
)
inputs = tokenizer(structured_prompt, return_tensors="pt")
inputs = {k: v.to("cpu") for k, v in inputs.items()}
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=10,
temperature=0.5,
do_sample=False,
pad_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
result = response.split("Respuesta:")[-1].strip().split("\n")[0]
return result
# Interface
examples = [[
"Variedad: INIA-302 Amarilis\n"
"Precipitaci贸n: 18.4 mm\n"
"Temperatura M谩xima: 17.2掳C\n"
"Temperatura M铆nima: 6.1掳C\n"
"Humedad Promedio: 84.12%\n"
"Mes de siembra: noviembre"
]]
gr.Interface(
fn=predict_risk,
inputs=gr.Textbox(lines=8, label="Escenario estructurado"),
outputs=gr.Textbox(label="Predicci贸n del modelo"),
title="馃尡 Riesgo de Tiz贸n Tard铆o (LLaMA + LoRA)",
description="Predice si el riesgo es Bajo, Moderado o Alto usando datos estructurados.",
examples=examples
).launch()