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)