Ntdeseb commited on
Commit
b48b72d
·
1 Parent(s): df5c53d

Optimización de estimación de cuota GPU - timeout 30s y estimación precisa

Browse files
Files changed (1) hide show
  1. app.py +19 -2
app.py CHANGED
@@ -22,6 +22,10 @@ print("🚀 Iniciando NTIA Space con ZeroGPU H200...")
22
  print(f"📁 Directorio actual: {os.getcwd()}")
23
  print(f"🐍 Python version: {os.sys.version}")
24
 
 
 
 
 
25
  # Optimización para ZeroGPU H200
26
  device = "cuda" if torch.cuda.is_available() else "cpu"
27
  print(f"🖥️ Dispositivo detectado: {device}")
@@ -731,9 +735,9 @@ def generate_text(prompt, model_name, max_length=100):
731
  except Exception as e:
732
  return f"Error generando texto: {str(e)}"
733
 
734
- @spaces.GPU # Requerido para habilitar GPU en Hugging Face Spaces
735
  def generate_image(prompt, model_name, negative_prompt="", seed=0, width=1024, height=1024, guidance_scale=7.5, num_inference_steps=20):
736
- """Generar imagen optimizada para H200"""
737
  try:
738
  print(f"\n🎨 Iniciando generación de imagen con H200...")
739
  print(f"📝 Prompt: {prompt}")
@@ -744,6 +748,19 @@ def generate_image(prompt, model_name, negative_prompt="", seed=0, width=1024, h
744
  print(f"📐 Dimensiones: {width}x{height}")
745
  print(f"🎯 Guidance scale: {guidance_scale}")
746
 
 
 
 
 
 
 
 
 
 
 
 
 
 
747
  start_time = time.time()
748
 
749
  # Convertir parámetros a tipos correctos
 
22
  print(f"📁 Directorio actual: {os.getcwd()}")
23
  print(f"🐍 Python version: {os.sys.version}")
24
 
25
+ # Configuración específica para optimizar estimación de cuota
26
+ os.environ["SPACES_GPU_TIMEOUT"] = "30" # Máximo 30 segundos por request
27
+ os.environ["SPACES_GPU_MEMORY"] = "8" # Máximo 8GB de memoria GPU
28
+
29
  # Optimización para ZeroGPU H200
30
  device = "cuda" if torch.cuda.is_available() else "cpu"
31
  print(f"🖥️ Dispositivo detectado: {device}")
 
735
  except Exception as e:
736
  return f"Error generando texto: {str(e)}"
737
 
738
+ @spaces.GPU(compute_unit="gpu.t4.micro", timeout=30) # Estimación más precisa: máximo 30 segundos
739
  def generate_image(prompt, model_name, negative_prompt="", seed=0, width=1024, height=1024, guidance_scale=7.5, num_inference_steps=20):
740
+ """Generar imagen optimizada para H200 con estimación precisa de cuota"""
741
  try:
742
  print(f"\n🎨 Iniciando generación de imagen con H200...")
743
  print(f"📝 Prompt: {prompt}")
 
748
  print(f"📐 Dimensiones: {width}x{height}")
749
  print(f"🎯 Guidance scale: {guidance_scale}")
750
 
751
+ # Estimación precisa de tiempo basada en parámetros
752
+ estimated_time = 5 # Base de 5 segundos
753
+ if "turbo" in model_name.lower():
754
+ estimated_time = 2 # Modelos turbo son muy rápidos
755
+ elif "ldm-text2im" in model_name.lower():
756
+ estimated_time = 8 # LDM es más lento
757
+ elif num_inference_steps > 20:
758
+ estimated_time += (num_inference_steps - 20) * 0.2 # 0.2 segundos por paso adicional
759
+ elif width > 512 or height > 512:
760
+ estimated_time += 2 # Resoluciones grandes toman más tiempo
761
+
762
+ print(f"⏱️ Tiempo estimado: {estimated_time:.1f} segundos")
763
+
764
  start_time = time.time()
765
 
766
  # Convertir parámetros a tipos correctos