test2 / space_config.py
Ntdeseb's picture
Fix Space configuration and add missing files - Corregir configuración del Space y agregar archivos faltantes
5e6d9aa
#!/usr/bin/env python3
"""
Script de configuración para Hugging Face Space
Resuelve problemas comunes de configuración y dependencias
"""
import os
import sys
import subprocess
import logging
# Configurar logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def check_environment():
"""Verifica el entorno de ejecución"""
logger.info("🔍 Verificando entorno...")
# Verificar variables de entorno del Space
space_id = os.getenv("SPACE_ID")
space_host = os.getenv("SPACE_HOST")
if space_id:
logger.info(f"✅ Space ID: {space_id}")
if space_host:
logger.info(f"✅ Space Host: {space_host}")
# Verificar GPU
try:
import torch
if torch.cuda.is_available():
logger.info(f"✅ GPU disponible: {torch.cuda.get_device_name()}")
logger.info(f"✅ Memoria GPU: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")
else:
logger.warning("⚠️ GPU no disponible")
except ImportError:
logger.error("❌ PyTorch no está instalado")
def install_mmaudio():
"""Instala el paquete mmaudio local"""
logger.info("📦 Instalando mmaudio...")
try:
# Verificar si mmaudio ya está instalado
import mmaudio
logger.info("✅ mmaudio ya está instalado")
return True
except ImportError:
pass
try:
# Instalar mmaudio desde el directorio local
result = subprocess.run(
["pip", "install", "-e", "."],
capture_output=True,
text=True,
cwd=os.getcwd()
)
if result.returncode == 0:
logger.info("✅ mmaudio instalado correctamente")
return True
else:
logger.error(f"❌ Error instalando mmaudio: {result.stderr}")
return False
except Exception as e:
logger.error(f"❌ Error en instalación: {e}")
return False
def verify_dependencies():
"""Verifica que todas las dependencias estén instaladas"""
logger.info("🔍 Verificando dependencias...")
dependencies = [
"torch",
"torchvision",
"torchaudio",
"diffusers",
"transformers",
"accelerate",
"gradio",
"numpy",
"Pillow",
"librosa",
"soundfile",
"av"
]
missing = []
for dep in dependencies:
try:
__import__(dep)
logger.info(f"✅ {dep}")
except ImportError:
logger.error(f"❌ {dep} no está instalado")
missing.append(dep)
if missing:
logger.warning(f"⚠️ Dependencias faltantes: {', '.join(missing)}")
return False
logger.info("✅ Todas las dependencias están instaladas")
return True
def setup_models():
"""Configura los modelos necesarios"""
logger.info("🤖 Configurando modelos...")
# Verificar que los directorios de modelos existan
model_dirs = ["models", "checkpoints"]
for dir_name in model_dirs:
if not os.path.exists(dir_name):
os.makedirs(dir_name)
logger.info(f"📁 Creado directorio: {dir_name}")
def main():
"""Función principal de configuración"""
logger.info("🚀 Iniciando configuración del Space...")
# Verificar entorno
check_environment()
# Instalar mmaudio
if not install_mmaudio():
logger.error("❌ No se pudo instalar mmaudio")
return False
# Verificar dependencias
if not verify_dependencies():
logger.error("❌ Faltan dependencias")
return False
# Configurar modelos
setup_models()
logger.info("✅ Configuración completada exitosamente")
return True
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)