← back to Exo
Reduce download log spam (#1249)
fc8e6ad06bfc2dab4f49f5b0f2ac47291434ac3b · 2026-01-22 11:28:36 +0000 · rltakashige
## Motivation
<!-- Why is this change needed? What problem does it solve? -->
<!-- If it fixes an open issue, please link to the issue here -->
## Changes
<!-- Describe what you changed in detail -->
## Why It Works
<!-- Explain why your approach solves the problem -->
## Test Plan
### Manual Testing
<!-- Hardware: (e.g., MacBook Pro M1 Max 32GB, Mac Mini M2 16GB,
connected via Thunderbolt 4) -->
<!-- What you did: -->
<!-- - -->
### Automated Testing
<!-- Describe changes to automated tests, or how existing tests cover
this change -->
<!-- - -->
Files touched
M src/exo/shared/models/model_cards.pyM src/exo/worker/download/download_utils.pyM src/exo/worker/download/impl_shard_downloader.py
Diff
commit fc8e6ad06bfc2dab4f49f5b0f2ac47291434ac3b
Author: rltakashige <rl.takashige@gmail.com>
Date: Thu Jan 22 11:28:36 2026 +0000
Reduce download log spam (#1249)
## Motivation
<!-- Why is this change needed? What problem does it solve? -->
<!-- If it fixes an open issue, please link to the issue here -->
## Changes
<!-- Describe what you changed in detail -->
## Why It Works
<!-- Explain why your approach solves the problem -->
## Test Plan
### Manual Testing
<!-- Hardware: (e.g., MacBook Pro M1 Max 32GB, Mac Mini M2 16GB,
connected via Thunderbolt 4) -->
<!-- What you did: -->
<!-- - -->
### Automated Testing
<!-- Describe changes to automated tests, or how existing tests cover
this change -->
<!-- - -->
---
src/exo/shared/models/model_cards.py | 4 ++--
src/exo/worker/download/download_utils.py | 4 ++--
src/exo/worker/download/impl_shard_downloader.py | 4 +++-
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/exo/shared/models/model_cards.py b/src/exo/shared/models/model_cards.py
index 2aebc154..13b6e9aa 100644
--- a/src/exo/shared/models/model_cards.py
+++ b/src/exo/shared/models/model_cards.py
@@ -627,7 +627,7 @@ async def get_config_data(model_id: ModelId) -> ConfigData:
"main",
"config.json",
target_dir,
- lambda curr_bytes, total_bytes, is_renamed: logger.info(
+ lambda curr_bytes, total_bytes, is_renamed: logger.debug(
f"Downloading config.json for {model_id}: {curr_bytes}/{total_bytes} ({is_renamed=})"
),
)
@@ -650,7 +650,7 @@ async def get_safetensors_size(model_id: ModelId) -> Memory:
"main",
"model.safetensors.index.json",
target_dir,
- lambda curr_bytes, total_bytes, is_renamed: logger.info(
+ lambda curr_bytes, total_bytes, is_renamed: logger.debug(
f"Downloading model.safetensors.index.json for {model_id}: {curr_bytes}/{total_bytes} ({is_renamed=})"
),
)
diff --git a/src/exo/worker/download/download_utils.py b/src/exo/worker/download/download_utils.py
index c64add0f..273621dd 100644
--- a/src/exo/worker/download/download_utils.py
+++ b/src/exo/worker/download/download_utils.py
@@ -463,7 +463,7 @@ async def download_shard(
allow_patterns: list[str] | None = None,
) -> tuple[Path, RepoDownloadProgress]:
if not skip_download:
- logger.info(f"Downloading {shard.model_card.model_id=}")
+ logger.debug(f"Downloading {shard.model_card.model_id=}")
revision = "main"
target_dir = await ensure_models_dir() / str(shard.model_card.model_id).replace(
@@ -476,7 +476,7 @@ async def download_shard(
allow_patterns = await resolve_allow_patterns(shard)
if not skip_download:
- logger.info(f"Downloading {shard.model_card.model_id=} with {allow_patterns=}")
+ logger.debug(f"Downloading {shard.model_card.model_id=} with {allow_patterns=}")
all_start_time = time.time()
file_list = await fetch_file_list_with_cache(
diff --git a/src/exo/worker/download/impl_shard_downloader.py b/src/exo/worker/download/impl_shard_downloader.py
index bba76e38..fe7b2e50 100644
--- a/src/exo/worker/download/impl_shard_downloader.py
+++ b/src/exo/worker/download/impl_shard_downloader.py
@@ -3,6 +3,8 @@ from collections.abc import Awaitable
from pathlib import Path
from typing import AsyncIterator, Callable
+from loguru import logger
+
from exo.shared.models.model_cards import MODEL_CARDS, ModelCard, ModelId
from exo.shared.types.worker.shards import (
PipelineShardMetadata,
@@ -166,7 +168,7 @@ class ResumableShardDownloader(ShardDownloader):
yield await task
# TODO: except Exception
except Exception as e:
- print("Error downloading shard:", e)
+ logger.error("Error downloading shard:", e)
async def get_shard_download_status_for_shard(
self, shard: ShardMetadata
← 023108a1 Disable image model cards temporarily (#1247)
·
back to Exo
·
implement mlx-lm tool calling 2e3c33db →