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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -28
app.py CHANGED
@@ -4,7 +4,7 @@ from transformers import AutoModelForCausalLM, AutoTokenizer
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,8 +18,31 @@ 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
  """
@@ -43,7 +66,7 @@ def generar_respuesta(consulta):
43
 
44
  # Generar la respuesta
45
  with torch.no_grad():
46
- outputs = model.generate(**inputs, **generation_kwargs)
47
 
48
  # Decodificar la respuesta
49
  respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
@@ -52,30 +75,6 @@ def generar_respuesta(consulta):
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."
 
4
  import time
5
  from functools import wraps
6
  import sys
7
+ import spaces # Aseg煤rate de que este m贸dulo est茅 disponible y correctamente instalado
8
 
9
  # Decorador para medir el tiempo de ejecuci贸n
10
  def medir_tiempo(func):
 
18
  return resultado
19
  return wrapper
20
 
21
+ # Verificar si CUDA est谩 disponible
22
+ device = "cuda" if torch.cuda.is_available() else "cpu"
23
+ if device == "cpu":
24
+ print("Advertencia: CUDA no est谩 disponible. Se usar谩 la CPU, lo que puede ser lento.")
25
+
26
+ # Cargar el tokenizador y el modelo desde HuggingFace
27
+ model_name = "dmis-lab/selfbiorag_7b"
28
+
29
+ try:
30
+ print("Cargando el tokenizador y el modelo desde HuggingFace...")
31
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
32
+ except ValueError as e:
33
+ print(f"Error al cargar el tokenizador: {e}")
34
+ sys.exit(1)
35
+
36
+ try:
37
+ model = AutoModelForCausalLM.from_pretrained(
38
+ model_name,
39
+ torch_dtype=torch.float16 if device == "cuda" else torch.float32
40
+ ).to(device)
41
+ except Exception as e:
42
+ print(f"Error al cargar el modelo: {e}")
43
+ sys.exit(1)
44
+
45
+ @spaces.GPU(duration=120) # Decorador para asignar GPU durante 120 segundos
46
  @medir_tiempo
47
  def generar_respuesta(consulta):
48
  """
 
66
 
67
  # Generar la respuesta
68
  with torch.no_grad():
69
+ outputs = model.generate(input_ids=inputs, **generation_kwargs)
70
 
71
  # Decodificar la respuesta
72
  respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
 
75
  print(f"Error durante la generaci贸n de respuesta: {e}")
76
  return f"Error al generar la respuesta: {e}"
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  # Definir la interfaz de Gradio
79
  titulo = "Generador de Respuestas con SelfBioRAG 7B"
80
  descripcion = "Ingresa una consulta y el modelo generar谩 una respuesta basada en el contenido proporcionado."