repd79 commited on
Commit
e7873d1
·
verified ·
1 Parent(s): f849f21

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -23
app.py CHANGED
@@ -1,4 +1,3 @@
1
-
2
  import torch
3
  import gradio as gr
4
  from transformers import AutoTokenizer, AutoModelForCausalLM
@@ -6,48 +5,57 @@ from transformers import AutoTokenizer, AutoModelForCausalLM
6
  # Especifica el nombre del modelo
7
  model_name = "BSC-LT/ALIA-40b"
8
 
9
- # Cargar el tokenizador y el modelo
 
 
 
 
10
  tokenizer = AutoTokenizer.from_pretrained(model_name)
 
11
  model = AutoModelForCausalLM.from_pretrained(
12
  model_name,
13
- device_map="auto",
14
- torch_dtype=torch.bfloat16 # Reduce uso de memoria a la mitad
 
15
  )
16
 
17
- # Verificar en qué dispositivo está el modelo
18
- print(f"Modelo cargado en: {model.device}")
19
-
20
 
 
 
21
 
22
  def generar_texto(entrada):
23
- # Tokenizar la entrada
24
- input_ids = tokenizer.encode(entrada, return_tensors="pt").input_ids.to("cuda")
25
-
26
- # Generar texto con el modelo
 
 
 
27
  output = model.generate(
28
  input_ids,
29
- max_length=100, # Reduce la longitud de salida
30
- temperature=0.7, # Controla la aleatoriedad
31
- top_p=0.9, # Reduce la búsqueda del modelo
32
- num_return_sequences=1, # Evita múltiples respuestas simultáneas
33
- do_sample=True # Sampling para rapidez
 
34
  )
35
 
36
-
37
  # Decodificar y retornar el texto generado
38
  texto_generado = tokenizer.decode(output[0], skip_special_tokens=True)
39
  return texto_generado
40
 
41
- # Crear la interfaz de Gradio usando la sintaxis actualizada
42
  interfaz = gr.Interface(
43
  fn=generar_texto,
44
- inputs=gr.Textbox(lines=2, placeholder="Escribe tu prompt aquí..."),
45
- outputs=gr.Textbox(),
46
  title="Generador de Texto con ALIA-40b",
47
  description="Este modelo genera texto utilizando ALIA-40b, un modelo LLM entrenado por BSC-LT."
48
  )
49
 
50
-
51
-
52
  if __name__ == "__main__":
53
- interfaz.launch()
 
 
1
  import torch
2
  import gradio as gr
3
  from transformers import AutoTokenizer, AutoModelForCausalLM
 
5
  # Especifica el nombre del modelo
6
  model_name = "BSC-LT/ALIA-40b"
7
 
8
+ # Verificar si hay GPU disponible y configurarla
9
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
10
+ print(f"Usando dispositivo: {device}")
11
+
12
+ # Cargar el tokenizador y el modelo con optimizaciones
13
  tokenizer = AutoTokenizer.from_pretrained(model_name)
14
+
15
  model = AutoModelForCausalLM.from_pretrained(
16
  model_name,
17
+ device_map="auto", # Distribuye el modelo automáticamente entre las GPUs disponibles
18
+ torch_dtype=torch.bfloat16, # Reduce uso de memoria
19
+ offload_folder="offload_cache" # Guarda partes del modelo en disco si es necesario
20
  )
21
 
22
+ # Mover modelo al dispositivo seleccionado
23
+ model.to(device)
 
24
 
25
+ # Verificar en qué dispositivo está cargado el modelo
26
+ print(f"Modelo cargado en: {next(model.parameters()).device}")
27
 
28
  def generar_texto(entrada):
29
+ # Liberar memoria de la GPU antes de la inferencia
30
+ torch.cuda.empty_cache()
31
+
32
+ # Tokenizar la entrada y mover a GPU
33
+ input_ids = tokenizer(entrada, return_tensors="pt").input_ids.to(device)
34
+
35
+ # Configurar la generación con parámetros optimizados
36
  output = model.generate(
37
  input_ids,
38
+ max_length=50, # Ajuste del tamaño de salida para optimizar la memoria
39
+ temperature=0.7, # Controla la aleatoriedad
40
+ top_p=0.9, # Reduce la búsqueda del modelo
41
+ num_return_sequences=1, # Generar solo una respuesta
42
+ do_sample=True, # Sampling para rapidez
43
+ use_cache=True # Optimiza reutilizando cálculos previos
44
  )
45
 
 
46
  # Decodificar y retornar el texto generado
47
  texto_generado = tokenizer.decode(output[0], skip_special_tokens=True)
48
  return texto_generado
49
 
50
+ # Crear la interfaz de Gradio con entradas interactivas
51
  interfaz = gr.Interface(
52
  fn=generar_texto,
53
+ inputs=gr.Textbox(lines=2, placeholder="Escribe tu prompt aquí...", interactive=True),
54
+ outputs=gr.Textbox(interactive=True),
55
  title="Generador de Texto con ALIA-40b",
56
  description="Este modelo genera texto utilizando ALIA-40b, un modelo LLM entrenado por BSC-LT."
57
  )
58
 
59
+ # Lanzar la interfaz con opción de compartir
 
60
  if __name__ == "__main__":
61
+ interfaz.launch(share=True, server_port=7860)