[object Object]

← 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

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 →