Add better logging for background Paladin model downloads
Browse files- Add emoji indicators for download progress visibility
- Set _model_download_complete flag when download finishes
- Add early return if download already started
- Add traceback on errors for debugging
- Improved logging messages throughout download pipeline
Background download works correctly - completes quickly when cached.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- src/mosaic/gradio_app.py +3 -3
- src/mosaic/ui/app.py +16 -10
src/mosaic/gradio_app.py
CHANGED
|
@@ -103,14 +103,14 @@ def download_paladin_models():
|
|
| 103 |
|
| 104 |
Lower priority models downloaded after core models.
|
| 105 |
"""
|
| 106 |
-
logger.info("Downloading all Paladin models...")
|
| 107 |
-
snapshot_download(
|
| 108 |
repo_id="PDM-Group/paladin-aeon-models",
|
| 109 |
allow_patterns=[
|
| 110 |
"*.pkl", # All Paladin model files
|
| 111 |
],
|
| 112 |
)
|
| 113 |
-
logger.info("
|
| 114 |
|
| 115 |
|
| 116 |
def download_and_process_models():
|
|
|
|
| 103 |
|
| 104 |
Lower priority models downloaded after core models.
|
| 105 |
"""
|
| 106 |
+
logger.info("📦 Downloading all Paladin models...")
|
| 107 |
+
cache_dir = snapshot_download(
|
| 108 |
repo_id="PDM-Group/paladin-aeon-models",
|
| 109 |
allow_patterns=[
|
| 110 |
"*.pkl", # All Paladin model files
|
| 111 |
],
|
| 112 |
)
|
| 113 |
+
logger.info(f"✅ Paladin models downloaded successfully to: {cache_dir}")
|
| 114 |
|
| 115 |
|
| 116 |
def download_and_process_models():
|
src/mosaic/ui/app.py
CHANGED
|
@@ -58,21 +58,27 @@ def start_background_model_download():
|
|
| 58 |
"""
|
| 59 |
global _model_download_thread, _model_download_complete
|
| 60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
def download_worker():
|
| 62 |
try:
|
| 63 |
from mosaic.gradio_app import download_paladin_models
|
| 64 |
-
logger.info("Starting background download of Paladin models...")
|
| 65 |
download_paladin_models()
|
| 66 |
-
|
|
|
|
|
|
|
| 67 |
except Exception as e:
|
| 68 |
-
logger.error(f"Error during background Paladin model download: {e}")
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
|
| 77 |
|
| 78 |
def analyze_slides(
|
|
|
|
| 58 |
"""
|
| 59 |
global _model_download_thread, _model_download_complete
|
| 60 |
|
| 61 |
+
if _model_download_thread is not None:
|
| 62 |
+
logger.info("Background model download already started, skipping")
|
| 63 |
+
return
|
| 64 |
+
|
| 65 |
def download_worker():
|
| 66 |
try:
|
| 67 |
from mosaic.gradio_app import download_paladin_models
|
| 68 |
+
logger.info("🔄 Starting background download of Paladin models...")
|
| 69 |
download_paladin_models()
|
| 70 |
+
global _model_download_complete
|
| 71 |
+
_model_download_complete = True
|
| 72 |
+
logger.info("✅ Background Paladin model download complete")
|
| 73 |
except Exception as e:
|
| 74 |
+
logger.error(f"❌ Error during background Paladin model download: {e}")
|
| 75 |
+
import traceback
|
| 76 |
+
traceback.print_exc()
|
| 77 |
+
|
| 78 |
+
import threading
|
| 79 |
+
_model_download_thread = threading.Thread(target=download_worker, daemon=True)
|
| 80 |
+
_model_download_thread.start()
|
| 81 |
+
logger.info("🚀 Paladin model download started in background thread")
|
| 82 |
|
| 83 |
|
| 84 |
def analyze_slides(
|