Spaces:
Running on Zero
Running on Zero
| import gc | |
| from typing import List | |
| import gradio as gr | |
| from core.settings import ALL_MODEL_MAP | |
| from utils.app_utils import _ensure_model_downloaded | |
| class ModelManager: | |
| _instance = None | |
| def __new__(cls, *args, **kwargs): | |
| if not cls._instance: | |
| cls._instance = super(ModelManager, cls).__new__(cls, *args, **kwargs) | |
| return cls._instance | |
| def __init__(self): | |
| if hasattr(self, 'initialized'): | |
| return | |
| self.initialized = True | |
| print("✅ ModelManager initialized.") | |
| def ensure_models_downloaded(self, required_models: List[str], progress): | |
| print(f"--- [ModelManager] Ensuring models are downloaded: {required_models} ---") | |
| for i, display_name in enumerate(required_models): | |
| if progress and hasattr(progress, '__call__'): | |
| progress(i / len(required_models), desc=f"Checking file: {display_name}") | |
| try: | |
| _ensure_model_downloaded(display_name, progress) | |
| except Exception as e: | |
| raise gr.Error(f"Failed to download model '{display_name}'. Reason: {e}") | |
| print(f"--- [ModelManager] ✅ All required models are present on disk. ---") | |
| model_manager = ModelManager() |