C2MV commited on
Commit
5a798cc
·
verified ·
1 Parent(s): 7a3c61f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -0
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from transformers import AutoModelForCausalLM, AutoTokenizer
4
+
5
+ # Verificar si CUDA está disponible
6
+ device = "cuda" if torch.cuda.is_available() else "cpu"
7
+ if device == "cpu":
8
+ print("Advertencia: CUDA no está disponible. Se usará la CPU, lo que puede ser lento.")
9
+
10
+ # Cargar el tokenizador y el modelo desde HuggingFace
11
+ model_name = "dmis-lab/selfbiorag_7b"
12
+ print("Cargando el tokenizador y el modelo desde HuggingFace...")
13
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
14
+ model = AutoModelForCausalLM.from_pretrained(
15
+ model_name,
16
+ torch_dtype=torch.float16 if device == "cuda" else torch.float32
17
+ ).to(device)
18
+
19
+ def generar_respuesta(consulta):
20
+ """
21
+ Función que genera una respuesta a partir de una consulta dada.
22
+ """
23
+ # Tokenizar la consulta
24
+ inputs = tokenizer.encode(consulta, return_tensors="pt").to(device)
25
+
26
+ # Configurar los parámetros de generación
27
+ generation_kwargs = {
28
+ "max_new_tokens": 200,
29
+ "temperature": 0.0,
30
+ "top_p": 1.0,
31
+ "do_sample": False,
32
+ "skip_special_tokens": True
33
+ }
34
+
35
+ # Generar la respuesta
36
+ with torch.no_grad():
37
+ outputs = model.generate(**inputs, **generation_kwargs)
38
+
39
+ # Decodificar la respuesta
40
+ respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
41
+ return respuesta
42
+
43
+ # Definir la interfaz de Gradio
44
+ titulo = "Generador de Respuestas con SelfBioRAG 7B"
45
+ descripcion = "Ingresa una consulta y el modelo generará una respuesta basada en el contenido proporcionado."
46
+
47
+ iface = gr.Interface(
48
+ fn=generar_respuesta,
49
+ inputs=gr.inputs.Textbox(lines=5, placeholder="Escribe tu consulta aquí..."),
50
+ outputs=gr.outputs.Textbox(),
51
+ title=titulo,
52
+ description=descripcion,
53
+ examples=[
54
+ [
55
+ "Clasifica el siguiente informe de radiología según la parte del cuerpo a la que se refiere (por ejemplo, pecho, abdomen, cerebro, etc.): Los discos intervertebrales en L4-L5 y L5-S1 muestran signos de degeneración con leve abultamiento que comprime la raíz nerviosa adyacente."
56
+ ],
57
+ [
58
+ "Resume los puntos clave sobre el papel de las mutaciones en los genes BRCA1 y BRCA2 en el aumento del riesgo de cáncer de mama."
59
+ ]
60
+ ],
61
+ cache_examples=False
62
+ )
63
+
64
+ # Ejecutar la interfaz
65
+ if __name__ == "__main__":
66
+ iface.launch()