jalonso24 commited on
Commit
d80aa94
·
verified ·
1 Parent(s): 787f6e4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -12
app.py CHANGED
@@ -6,7 +6,7 @@ from peft import PeftModel
6
  base_model_id = "openlm-research/open_llama_3b"
7
  adapter_path = "jalonso24/lora-lateblight-v3"
8
 
9
- # ✅ Load model fully onto CPU (no device_map)
10
  base_model = AutoModelForCausalLM.from_pretrained(
11
  base_model_id,
12
  torch_dtype=torch.float32
@@ -16,9 +16,23 @@ model = PeftModel.from_pretrained(base_model, adapter_path)
16
  tokenizer = AutoTokenizer.from_pretrained(base_model_id, use_fast=False)
17
  tokenizer.pad_token = tokenizer.eos_token
18
 
19
- def predict_risk(prompt):
20
- inputs = tokenizer(prompt, return_tensors="pt")
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  inputs = {k: v.to("cpu") for k, v in inputs.items()}
 
22
  with torch.no_grad():
23
  outputs = model.generate(
24
  **inputs,
@@ -27,21 +41,22 @@ def predict_risk(prompt):
27
  do_sample=True,
28
  pad_token_id=tokenizer.eos_token_id
29
  )
 
30
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
31
- return response
32
 
 
33
  examples = [[
34
- "La variedad es INIA-302 Amarilis, sembrada en noviembre.\n"
35
- "La precipitación fue 18.4 mm, la temperatura máxima 17.2°C, "
36
- "la mínima 6.1°C y la humedad promedio 84.12%.\n\n"
37
- "¿Cuál es el riesgo de tizón tardío?"
38
  ]]
39
 
40
  gr.Interface(
41
  fn=predict_risk,
42
- inputs=gr.Textbox(lines=6, label="Escenario de entrada (español)"),
43
- outputs=gr.Textbox(lines=4, label="Respuesta del modelo"),
44
  title="🌱 Predicción de Tizón Tardío (OpenLLaMA 3B + LoRA)",
45
- examples=examples,
46
- description="Predice el riesgo de tizón tardío a partir de clima, variedad y fecha de siembra."
47
  ).launch()
 
6
  base_model_id = "openlm-research/open_llama_3b"
7
  adapter_path = "jalonso24/lora-lateblight-v3"
8
 
9
+ # ✅ Load model fully onto CPU (safe for Spaces)
10
  base_model = AutoModelForCausalLM.from_pretrained(
11
  base_model_id,
12
  torch_dtype=torch.float32
 
16
  tokenizer = AutoTokenizer.from_pretrained(base_model_id, use_fast=False)
17
  tokenizer.pad_token = tokenizer.eos_token
18
 
19
+ # ✅ Few-shot prompt + user input
20
+ def predict_risk(user_prompt):
21
+ few_shot = (
22
+ "Escenario: La variedad es Yungay, sembrada en octubre. "
23
+ "Hubo 2 mm de lluvia, temperatura máxima de 15°C y humedad promedio de 70%.\n"
24
+ "Respuesta esperada: Riesgo: Bajo\n\n"
25
+ "Escenario: La variedad es INIA-302 Amarilis, sembrada en noviembre. "
26
+ "La precipitación fue 18.4 mm, temperatura máxima 17.2°C, la mínima 6.1°C y la humedad promedio 84.12%.\n"
27
+ "Respuesta esperada:"
28
+ )
29
+
30
+ # Append user prompt in same format
31
+ full_prompt = few_shot + "\n" + user_prompt.strip()
32
+
33
+ inputs = tokenizer(full_prompt, return_tensors="pt")
34
  inputs = {k: v.to("cpu") for k, v in inputs.items()}
35
+
36
  with torch.no_grad():
37
  outputs = model.generate(
38
  **inputs,
 
41
  do_sample=True,
42
  pad_token_id=tokenizer.eos_token_id
43
  )
44
+
45
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
46
+ return response.split("Respuesta esperada:")[-1].strip() # remove echo
47
 
48
+ # UI
49
  examples = [[
50
+ "Escenario: La variedad es INIA-302 Amarilis, sembrada en noviembre. "
51
+ "La precipitación fue 18.4 mm, la temperatura máxima 17.2°C, la mínima 6.1°C "
52
+ "y la humedad promedio 84.12%.\nRespuesta esperada:"
 
53
  ]]
54
 
55
  gr.Interface(
56
  fn=predict_risk,
57
+ inputs=gr.Textbox(lines=6, label="Escenario en español"),
58
+ outputs=gr.Textbox(lines=3, label="Predicción del modelo"),
59
  title="🌱 Predicción de Tizón Tardío (OpenLLaMA 3B + LoRA)",
60
+ description="Predice el riesgo de tizón tardío (bajo, moderado o alto) según el clima y la variedad de papa.",
61
+ examples=examples
62
  ).launch()