← back to Exo
Reduce log spam (#1241)
ede779219c23d06ffd9962d12392b16cd2715bae · 2026-01-21 19:08:30 +0000 · rltakashige
## Motivation
Way too much spam. Some logs were also obsolete, leading to users
thinking there was something wrong during expected behaviour.
## 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/master/placement.pyM src/exo/master/placement_utils.pyM src/exo/utils/info_gatherer/net_profile.pyM src/exo/worker/engines/mlx/generator/generate.pyM src/exo/worker/runner/runner.py
Diff
commit ede779219c23d06ffd9962d12392b16cd2715bae
Author: rltakashige <rl.takashige@gmail.com>
Date: Wed Jan 21 19:08:30 2026 +0000
Reduce log spam (#1241)
## Motivation
Way too much spam. Some logs were also obsolete, leading to users
thinking there was something wrong during expected behaviour.
## 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/master/placement.py | 6 ------
src/exo/master/placement_utils.py | 4 ++--
src/exo/utils/info_gatherer/net_profile.py | 2 +-
src/exo/worker/engines/mlx/generator/generate.py | 2 +-
src/exo/worker/runner/runner.py | 2 +-
5 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/src/exo/master/placement.py b/src/exo/master/placement.py
index 5bf7c829..23b1574c 100644
--- a/src/exo/master/placement.py
+++ b/src/exo/master/placement.py
@@ -3,8 +3,6 @@ from collections.abc import Mapping
from copy import deepcopy
from typing import Sequence
-from loguru import logger
-
from exo.master.placement_utils import (
Cycle,
filter_cycles_by_memory,
@@ -120,10 +118,6 @@ def place_instance(
target_instances = dict(deepcopy(current_instances))
if len(selected_cycle) == 1:
- logger.warning(
- "You have likely selected jaccl for a single node instance; falling back to MlxRing"
- )
-
command.instance_meta = InstanceMeta.MlxRing
# TODO: Single node instances
diff --git a/src/exo/master/placement_utils.py b/src/exo/master/placement_utils.py
index 73d857e9..876fe084 100644
--- a/src/exo/master/placement_utils.py
+++ b/src/exo/master/placement_utils.py
@@ -214,7 +214,7 @@ def get_hosts_from_subgraph(cycle_digraph: Topology) -> list[Host]:
if cycle_digraph.is_thunderbolt_cycle(cycle):
get_thunderbolt = True
- logger.info(f"Using thunderbolt cycle: {get_thunderbolt}")
+ logger.debug(f"Using thunderbolt cycle: {get_thunderbolt}")
hosts: list[Host] = []
for i in range(len(cycle)):
@@ -406,7 +406,7 @@ def get_mlx_jaccl_coordinators(
Select an IP address that each node can reach for the rank 0 node. Returns
address in format "X.X.X.X:PORT" per node.
"""
- logger.info(f"Selecting coordinator: {coordinator}")
+ logger.debug(f"Selecting coordinator: {coordinator}")
def get_ip_for_node(n: NodeId) -> str:
if n == coordinator:
diff --git a/src/exo/utils/info_gatherer/net_profile.py b/src/exo/utils/info_gatherer/net_profile.py
index 94e8a9fa..1c8fa01b 100644
--- a/src/exo/utils/info_gatherer/net_profile.py
+++ b/src/exo/utils/info_gatherer/net_profile.py
@@ -64,7 +64,7 @@ async def check_reachability(
return
if remote_node_id != expected_node_id:
- logger.warning(
+ logger.debug(
f"Discovered node with unexpected node_id; "
f"ip={target_ip}, expected_node_id={expected_node_id}, "
f"remote_node_id={remote_node_id}"
diff --git a/src/exo/worker/engines/mlx/generator/generate.py b/src/exo/worker/engines/mlx/generator/generate.py
index 65dba4cb..b4ea2a6c 100644
--- a/src/exo/worker/engines/mlx/generator/generate.py
+++ b/src/exo/worker/engines/mlx/generator/generate.py
@@ -126,7 +126,7 @@ def mlx_generate(
is_bench: bool = isinstance(task, BenchChatCompletionTaskParams)
# Currently we support chat-completion tasks only.
- logger.info(f"task_params: {task}")
+ logger.debug(f"task_params: {task}")
if task.seed is not None:
mx.random.seed(task.seed)
diff --git a/src/exo/worker/runner/runner.py b/src/exo/worker/runner/runner.py
index 9628b8d3..d868c7d2 100644
--- a/src/exo/worker/runner/runner.py
+++ b/src/exo/worker/runner/runner.py
@@ -207,7 +207,7 @@ def main(
case ChatCompletion(task_params=task_params, command_id=command_id) if (
isinstance(current_status, RunnerReady)
):
- logger.info(f"received chat request: {str(task)[:500]}")
+ logger.info(f"received chat request: {task}")
current_status = RunnerRunning()
logger.info("runner running")
event_sender.send(
← a7e205e4 treefmt: add Svelte file formatting
·
back to Exo
·
Fix config.json download errors for image models (#1245) 8f6726d6 →