Update app.py
Browse files
app.py
CHANGED
@@ -4,6 +4,7 @@ from transformers import AutoModelForCausalLM, AutoTokenizer, MarianMTModel, Mar
|
|
4 |
import time
|
5 |
from functools import wraps
|
6 |
import sys
|
|
|
7 |
import spaces # Aseg煤rate de que este m贸dulo est茅 correctamente instalado y disponible
|
8 |
|
9 |
# Decorador para medir el tiempo de ejecuci贸n
|
@@ -23,15 +24,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 de generaci贸n desde HuggingFace
|
27 |
model_name = "dmis-lab/selfbiorag_7b"
|
28 |
|
29 |
try:
|
30 |
print("Cargando el tokenizador y el modelo de generaci贸n desde HuggingFace...")
|
31 |
-
tokenizer_gen = AutoTokenizer.from_pretrained(model_name)
|
32 |
model_gen = AutoModelForCausalLM.from_pretrained(
|
33 |
model_name,
|
34 |
-
torch_dtype=torch.float16 if device == "cuda" else torch.float32
|
|
|
35 |
).to(device)
|
36 |
except ValueError as e:
|
37 |
print(f"Error al cargar el tokenizador de generaci贸n: {e}")
|
@@ -57,8 +65,8 @@ model_trans = {}
|
|
57 |
for lang, model_name_trans in translation_models.items():
|
58 |
try:
|
59 |
print(f"Cargando el tokenizador y el modelo de traducci贸n para {lang} desde HuggingFace...")
|
60 |
-
tokenizer = MarianTokenizer.from_pretrained(model_name_trans)
|
61 |
-
model = MarianMTModel.from_pretrained(model_name_trans).to(device)
|
62 |
tokenizer_trans[lang] = tokenizer
|
63 |
model_trans[lang] = model
|
64 |
except Exception as e:
|
@@ -98,11 +106,11 @@ def generar_y_traducir_respuesta(consulta, idioma_destino):
|
|
98 |
model_tr = model_trans[idioma_destino]
|
99 |
|
100 |
# Preparar la entrada para la traducci贸n
|
101 |
-
traducir_inputs = tokenizer_tr.
|
102 |
|
103 |
# Realizar la traducci贸n
|
104 |
with torch.no_grad():
|
105 |
-
traduccion_outputs = model_tr.generate(
|
106 |
|
107 |
# Decodificar la traducci贸n
|
108 |
respuesta_traducida = tokenizer_tr.decode(traduccion_outputs[0], skip_special_tokens=True)
|
|
|
4 |
import time
|
5 |
from functools import wraps
|
6 |
import sys
|
7 |
+
import os
|
8 |
import spaces # Aseg煤rate de que este m贸dulo est茅 correctamente instalado y disponible
|
9 |
|
10 |
# Decorador para medir el tiempo de ejecuci贸n
|
|
|
24 |
if device == "cpu":
|
25 |
print("Advertencia: CUDA no est谩 disponible. Se usar谩 la CPU, lo que puede ser lento.")
|
26 |
|
27 |
+
# Obtener el token de Hugging Face desde las variables de entorno
|
28 |
+
hf_token = os.getenv("HUGGINGFACE_TOKEN")
|
29 |
+
if not hf_token:
|
30 |
+
print("Error: El token de Hugging Face no est谩 configurado en los secretos.")
|
31 |
+
sys.exit(1)
|
32 |
+
|
33 |
# Cargar el tokenizador y el modelo de generaci贸n desde HuggingFace
|
34 |
model_name = "dmis-lab/selfbiorag_7b"
|
35 |
|
36 |
try:
|
37 |
print("Cargando el tokenizador y el modelo de generaci贸n desde HuggingFace...")
|
38 |
+
tokenizer_gen = AutoTokenizer.from_pretrained(model_name, use_auth_token=hf_token)
|
39 |
model_gen = AutoModelForCausalLM.from_pretrained(
|
40 |
model_name,
|
41 |
+
torch_dtype=torch.float16 if device == "cuda" else torch.float32,
|
42 |
+
use_auth_token=hf_token
|
43 |
).to(device)
|
44 |
except ValueError as e:
|
45 |
print(f"Error al cargar el tokenizador de generaci贸n: {e}")
|
|
|
65 |
for lang, model_name_trans in translation_models.items():
|
66 |
try:
|
67 |
print(f"Cargando el tokenizador y el modelo de traducci贸n para {lang} desde HuggingFace...")
|
68 |
+
tokenizer = MarianTokenizer.from_pretrained(model_name_trans, use_auth_token=hf_token)
|
69 |
+
model = MarianMTModel.from_pretrained(model_name_trans, use_auth_token=hf_token).to(device)
|
70 |
tokenizer_trans[lang] = tokenizer
|
71 |
model_trans[lang] = model
|
72 |
except Exception as e:
|
|
|
106 |
model_tr = model_trans[idioma_destino]
|
107 |
|
108 |
# Preparar la entrada para la traducci贸n
|
109 |
+
traducir_inputs = tokenizer_tr.encode(respuesta_en, return_tensors="pt").to(device)
|
110 |
|
111 |
# Realizar la traducci贸n
|
112 |
with torch.no_grad():
|
113 |
+
traduccion_outputs = model_tr.generate(input_ids=traducir_inputs, max_length=512)
|
114 |
|
115 |
# Decodificar la traducci贸n
|
116 |
respuesta_traducida = tokenizer_tr.decode(traduccion_outputs[0], skip_special_tokens=True)
|