pypi ultralytics 8.3.184
v8.3.184 - `ultralytics 8.3.184` New SystemLogger class (#21764)

latest releases: 8.3.192, 8.3.191, 8.3.190...
12 days ago

🌟 Summary

v8.3.184 introduces a new SystemLogger for real-time system metrics and a high-performance ConsoleLogger for early, continuous training log capture — improving observability, reliability, and integrations across YOLO11 workflows. 📈🖥️📝

📊 Key Changes

  • New SystemLogger (ultralytics.utils.logger.SystemLogger)
    • Collects CPU, RAM, disk I/O, network I/O, and NVIDIA GPU stats via pynvml.
    • Integrated into training via platform callbacks; metrics sampled at epoch end.
  • New ConsoleLogger (ultralytics.utils.logger.ConsoleLogger)
    • Captures stdout/stderr and Ultralytics logger output early in training.
    • Deduplicates noisy lines/progress bars and streams to file (train.log) or an API.
    • Enabled via new platform callbacks; logging now starts on trainer initialization.
  • Platform callbacks module
    • ultralytics.utils.callbacks.platform registers start/stop hooks for console capture and metrics collection.
  • Metrics type consistency
    • Checkpoints now save metrics as plain Python floats for better serialization and tool compatibility.
  • Cleaner CI progress bars
    • TQDM updates are throttled on GitHub Actions for cleaner logs; no change for local runs.
  • Documentation improvements
    • API docs now include async functions and a reference for the new NDJSON-to-YOLO converter.
    • New docs pages for platform callbacks and the logger utilities.

🎯 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 and deduplicates noise for stable, searchable training logs locally or via APIs. 📜
  • Smoother integrations and exports
    • Float metrics avoid serialization errors when working with Ultralytics HUB, W&B, TensorBoard, JSON/CSV/YAML. 🔗
  • 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 examples:

  • 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': {...}}

See the Ultralytics Docs for details.

What's Changed

Full Changelog: v8.3.183...v8.3.184

Don't miss a new ultralytics release

NewReleases is sending notifications on new releases.