New Release: Ultralytics v8.3.184

Ultralytics v8.3.184 Release — System & Console Logging Upgrades for Better Training Visibility

Summary
v8.3.184 delivers two major logging utilities—SystemLogger for real-time system metrics and ConsoleLogger for early, continuous training log capture—boosting observability, reliability, and integrations across YOLO11 workflows.

New Features

  • SystemLogger (ultralytics.utils.logger.SystemLogger)
    • Collects CPU, RAM, disk I/O, network I/O, and NVIDIA GPU stats via pynvml.
    • Integrated via platform callbacks; samples metrics at epoch end.
    • PR: Fix missing async docs functions by @glenn-jocher in #21760 and New SystemLogger class in #21764
  • ConsoleLogger (ultralytics.utils.logger.ConsoleLogger)
    • Captures stdout/stderr and Ultralytics logger output from trainer initialization.
    • Deduplicates noisy lines and progress bars; streams to file (train.log) or an API.
    • PR: Add ConsoleLogger class by @glenn-jocher in #21761
  • Platform callbacks module
    • ultralytics.utils.callbacks.platform registers start/stop hooks for console capture and metrics collection.
    • See related updates in the above PRs.

Improvements

  • Metrics type consistency
    • Checkpoints now store metrics as plain Python floats (instead of NumPy types) for better serialization and tool compatibility (Ultralytics HUB, W&B, TensorBoard, JSON/CSV/YAML).
    • PR: Update metrics.py from numpy to floats by @glenn-jocher in #21773
  • Cleaner CI progress bars
    • Throttled TQDM updates on GitHub Actions for quieter logs; no change for local runs.
    • PR: Cleaner TQDM in CI by @glenn-jocher in #21775
  • Documentation updates
    • API docs now include async functions and a reference for the new NDJSON-to-YOLO converter.
    • New docs pages for platform callbacks and logger utilities.
    • PR: Fix missing async functions in Docs by @glenn-jocher in #21760

Bug Fixes

  • Addressed missing async functions in API docs (see #21760).

Purpose & Impact

  • Better training visibility and debugging
    • SystemLogger provides actionable telemetry (CPU/GPU/memory/disk/network) to diagnose bottlenecks and environment issues.
  • More reliable, complete logs
    • ConsoleLogger starts early, deduplicates noise, and streams logs for stable, searchable records locally or via APIs.
  • Smoother integrations and exports
    • Float metrics prevent serialization errors and improve compatibility across tools.
  • Cleaner CI pipelines
    • Reduced log spam and fewer rate-limit risks on GitHub Actions.
  • Documentation catch-up
    • Clearer API references and discoverability for new utilities and data conversion tools.

Quick Start

  • Capture console output to file:
from ultralytics.utils.logger import ConsoleLogger

logger = ConsoleLogger("train.log")
logger.start_capture()
print("Training starts...")
logger.stop_capture()
  • Fetch system metrics on demand:
from ultralytics.utils.logger import SystemLogger

syslog = SystemLogger()
print(syslog.get_metrics())  # {'cpu': ..., 'ram': ..., 'disk': {...}, 'network': {...}, 'gpus': {...}}

What’s Changed

Links

  • Release: See the v8.3.184 notes on GitHub Releases
  • Full Changelog: Compare versions in the diff view
  • Documentation: Explore new pages on platform callbacks, logger utilities, and converters in the Ultralytics Docs

Try It & Share Feedback
Upgrade to v8.3.184 and give the new loggers a spin in your training runs. We’d love your feedback—what worked well, what could be improved, and any integration ideas you have. Thank you to the YOLO community and the Ultralytics team for continually pushing things forward!