Update app.py
Browse files
app.py
CHANGED
@@ -1,11 +1,25 @@
|
|
1 |
import gradio as gr
|
2 |
import torch
|
3 |
-
from transformers import AutoTokenizer
|
4 |
import time
|
5 |
from functools import wraps
|
6 |
-
|
7 |
-
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
# Decorador para medir el tiempo de ejecución
|
11 |
def medir_tiempo(func):
|
@@ -19,8 +33,36 @@ def medir_tiempo(func):
|
|
19 |
return resultado
|
20 |
return wrapper
|
21 |
|
22 |
-
#
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
@medir_tiempo
|
25 |
def generar_rna_sequence(prompt, max_length=256):
|
26 |
"""
|
@@ -54,33 +96,6 @@ def generar_rna_sequence(prompt, max_length=256):
|
|
54 |
print(f"Error durante la generación de secuencia: {e}")
|
55 |
return f"Error al generar la secuencia: {e}"
|
56 |
|
57 |
-
# Configurar el dispositivo (GPU si está disponible)
|
58 |
-
device = "cuda" if torch.cuda.is_available() else "cpu"
|
59 |
-
if device == "cpu":
|
60 |
-
print("Advertencia: CUDA no está disponible. Se usará la CPU, lo que puede ser lento.")
|
61 |
-
|
62 |
-
# Cargar el tokenizador
|
63 |
-
try:
|
64 |
-
print("Cargando el tokenizador...")
|
65 |
-
tokenizer = AutoTokenizer.from_pretrained("tokenizer_bpe_1024")
|
66 |
-
except ValueError as e:
|
67 |
-
print(f"Error al cargar el tokenizador: {e}")
|
68 |
-
sys.exit(1)
|
69 |
-
|
70 |
-
# Cargar el modelo GenerRNA
|
71 |
-
try:
|
72 |
-
print("Cargando el modelo GenerRNA...")
|
73 |
-
# Cargar la configuración del modelo si es necesario
|
74 |
-
config = GPT2Config.from_pretrained("tokenizer_bpe_1024") # Ajusta el path si tienes una configuración específica
|
75 |
-
model = GenerRNA(config) # Instancia tu modelo personalizado
|
76 |
-
model.load_state_dict(torch.load("model.pt.recombined", map_location=device))
|
77 |
-
model.to(device)
|
78 |
-
model.eval()
|
79 |
-
print("Modelo GenerRNA cargado exitosamente.")
|
80 |
-
except Exception as e:
|
81 |
-
print(f"Error al cargar el modelo GenerRNA: {e}")
|
82 |
-
sys.exit(1)
|
83 |
-
|
84 |
# Definir la interfaz de Gradio
|
85 |
titulo = "GenerRNA - Generador de Secuencias de RNA"
|
86 |
descripcion = (
|
|
|
1 |
import gradio as gr
|
2 |
import torch
|
3 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
4 |
import time
|
5 |
from functools import wraps
|
6 |
+
|
7 |
+
# Asegúrate de que el módulo 'spaces' esté disponible y correctamente instalado.
|
8 |
+
# Si 'spaces.GPU' no está disponible, puedes omitir o implementar una alternativa.
|
9 |
+
# En este ejemplo, se asume que 'spaces.GPU' es un decorador válido en tu entorno.
|
10 |
+
|
11 |
+
try:
|
12 |
+
import spaces
|
13 |
+
except ImportError:
|
14 |
+
# Si el módulo 'spaces' no está disponible, define un decorador vacío
|
15 |
+
# para evitar errores. Esto es útil si no estás utilizando características
|
16 |
+
# específicas de Hugging Face Spaces que requieran este decorador.
|
17 |
+
def GPU(duration):
|
18 |
+
def decorator(func):
|
19 |
+
return func
|
20 |
+
return decorator
|
21 |
+
|
22 |
+
spaces = type('spaces', (), {'GPU': GPU})
|
23 |
|
24 |
# Decorador para medir el tiempo de ejecución
|
25 |
def medir_tiempo(func):
|
|
|
33 |
return resultado
|
34 |
return wrapper
|
35 |
|
36 |
+
# Configurar el dispositivo (GPU si está disponible)
|
37 |
+
device = "cuda" if torch.cuda.is_available() else "cpu"
|
38 |
+
if device == "cpu":
|
39 |
+
print("Advertencia: CUDA no está disponible. Se usará la CPU, lo que puede ser lento.")
|
40 |
+
|
41 |
+
# Cargar el tokenizador desde Hugging Face Hub
|
42 |
+
model_name = "pfnet/GenerRNA"
|
43 |
+
|
44 |
+
try:
|
45 |
+
print("Cargando el tokenizador desde Hugging Face Hub...")
|
46 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
47 |
+
except ValueError as e:
|
48 |
+
print(f"Error al cargar el tokenizador: {e}")
|
49 |
+
sys.exit(1)
|
50 |
+
|
51 |
+
# Cargar el modelo desde Hugging Face Hub
|
52 |
+
try:
|
53 |
+
print("Cargando el modelo GenerRNA desde Hugging Face Hub...")
|
54 |
+
model = AutoModelForCausalLM.from_pretrained(
|
55 |
+
model_name,
|
56 |
+
torch_dtype=torch.float16 if device == "cuda" else torch.float32,
|
57 |
+
revision="main" # Asegúrate de que la rama correcta esté especificada
|
58 |
+
).to(device)
|
59 |
+
model.eval()
|
60 |
+
print("Modelo GenerRNA cargado exitosamente.")
|
61 |
+
except Exception as e:
|
62 |
+
print(f"Error al cargar el modelo GenerRNA: {e}")
|
63 |
+
sys.exit(1)
|
64 |
+
|
65 |
+
@spaces.GPU(duration=120) # Decorador para asignar GPU durante 120 segundos
|
66 |
@medir_tiempo
|
67 |
def generar_rna_sequence(prompt, max_length=256):
|
68 |
"""
|
|
|
96 |
print(f"Error durante la generación de secuencia: {e}")
|
97 |
return f"Error al generar la secuencia: {e}"
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
# Definir la interfaz de Gradio
|
100 |
titulo = "GenerRNA - Generador de Secuencias de RNA"
|
101 |
descripcion = (
|