| | |
| | """ |
| | Script de configuración para Hugging Face Space |
| | Resuelve problemas comunes de configuración y dependencias |
| | """ |
| |
|
| | import os |
| | import sys |
| | import subprocess |
| | import logging |
| |
|
| | |
| | logging.basicConfig(level=logging.INFO) |
| | logger = logging.getLogger(__name__) |
| |
|
| | def check_environment(): |
| | """Verifica el entorno de ejecución""" |
| | logger.info("🔍 Verificando entorno...") |
| | |
| | |
| | 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}") |
| | |
| | |
| | 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: |
| | |
| | import mmaudio |
| | logger.info("✅ mmaudio ya está instalado") |
| | return True |
| | except ImportError: |
| | pass |
| | |
| | try: |
| | |
| | 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...") |
| | |
| | |
| | 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...") |
| | |
| | |
| | check_environment() |
| | |
| | |
| | if not install_mmaudio(): |
| | logger.error("❌ No se pudo instalar mmaudio") |
| | return False |
| | |
| | |
| | if not verify_dependencies(): |
| | logger.error("❌ Faltan dependencias") |
| | return False |
| | |
| | |
| | setup_models() |
| | |
| | logger.info("✅ Configuración completada exitosamente") |
| | return True |
| |
|
| | if __name__ == "__main__": |
| | success = main() |
| | sys.exit(0 if success else 1) |