File size: 3,923 Bytes
5e6d9aa |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
#!/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) |