C2MV commited on
Commit
3d55aee
verified
1 Parent(s): 76b0414

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -24
app.py CHANGED
@@ -4,6 +4,7 @@ from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import time
5
  from functools import wraps
6
  import sys
 
7
 
8
  # Decorador para medir el tiempo de ejecuci贸n
9
  def medir_tiempo(func):
@@ -17,36 +18,17 @@ def medir_tiempo(func):
17
  return resultado
18
  return wrapper
19
 
20
- # Verificar si CUDA est谩 disponible
21
- device = "cuda" if torch.cuda.is_available() else "cpu"
22
- if device == "cpu":
23
- print("Advertencia: CUDA no est谩 disponible. Se usar谩 la CPU, lo que puede ser lento.")
24
-
25
- # Cargar el tokenizador y el modelo desde HuggingFace
26
- model_name = "dmis-lab/selfbiorag_7b"
27
-
28
- try:
29
- print("Cargando el tokenizador y el modelo desde HuggingFace...")
30
- tokenizer = AutoTokenizer.from_pretrained(model_name)
31
- except ValueError as e:
32
- print(f"Error al cargar el tokenizador: {e}")
33
- sys.exit(1)
34
-
35
- try:
36
- model = AutoModelForCausalLM.from_pretrained(
37
- model_name,
38
- torch_dtype=torch.float16 if device == "cuda" else torch.float32
39
- ).to(device)
40
- except Exception as e:
41
- print(f"Error al cargar el modelo: {e}")
42
- sys.exit(1)
43
-
44
  @medir_tiempo
45
  def generar_respuesta(consulta):
46
  """
47
  Funci贸n que genera una respuesta a partir de una consulta dada.
48
  """
49
  try:
 
 
 
50
  # Tokenizar la consulta
51
  inputs = tokenizer.encode(consulta, return_tensors="pt").to(device)
52
 
@@ -67,8 +49,33 @@ def generar_respuesta(consulta):
67
  respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
68
  return respuesta
69
  except Exception as e:
 
70
  return f"Error al generar la respuesta: {e}"
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  # Definir la interfaz de Gradio
73
  titulo = "Generador de Respuestas con SelfBioRAG 7B"
74
  descripcion = "Ingresa una consulta y el modelo generar谩 una respuesta basada en el contenido proporcionado."
 
4
  import time
5
  from functools import wraps
6
  import sys
7
+ import spaces # Aseg煤rate de que este import es correcto seg煤n la documentaci贸n de Hugging Face
8
 
9
  # Decorador para medir el tiempo de ejecuci贸n
10
  def medir_tiempo(func):
 
18
  return resultado
19
  return wrapper
20
 
21
+ # Decorador para asignar GPU en Hugging Face Spaces
22
+ @spaces.GPU(duration=120)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  @medir_tiempo
24
  def generar_respuesta(consulta):
25
  """
26
  Funci贸n que genera una respuesta a partir de una consulta dada.
27
  """
28
  try:
29
+ if not consulta.strip():
30
+ return "Por favor, ingresa una consulta v谩lida."
31
+
32
  # Tokenizar la consulta
33
  inputs = tokenizer.encode(consulta, return_tensors="pt").to(device)
34
 
 
49
  respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
50
  return respuesta
51
  except Exception as e:
52
+ print(f"Error durante la generaci贸n de respuesta: {e}")
53
  return f"Error al generar la respuesta: {e}"
54
 
55
+ # Verificar si CUDA est谩 disponible
56
+ device = "cuda" if torch.cuda.is_available() else "cpu"
57
+ if device == "cpu":
58
+ print("Advertencia: CUDA no est谩 disponible. Se usar谩 la CPU, lo que puede ser lento.")
59
+
60
+ # Cargar el tokenizador y el modelo desde HuggingFace
61
+ model_name = "dmis-lab/selfbiorag_7b"
62
+
63
+ try:
64
+ print("Cargando el tokenizador y el modelo desde HuggingFace...")
65
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
66
+ except ValueError as e:
67
+ print(f"Error al cargar el tokenizador: {e}")
68
+ sys.exit(1)
69
+
70
+ try:
71
+ model = AutoModelForCausalLM.from_pretrained(
72
+ model_name,
73
+ torch_dtype=torch.float16 if device == "cuda" else torch.float32
74
+ ).to(device)
75
+ except Exception as e:
76
+ print(f"Error al cargar el modelo: {e}")
77
+ sys.exit(1)
78
+
79
  # Definir la interfaz de Gradio
80
  titulo = "Generador de Respuestas con SelfBioRAG 7B"
81
  descripcion = "Ingresa una consulta y el modelo generar谩 una respuesta basada en el contenido proporcionado."