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
- Collects CPU, RAM, disk I/O, network I/O, and NVIDIA GPU stats via
- 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
- Fix missing async functions in Docs by @glenn-jocher in #21760
- Add ConsoleLogger class by @glenn-jocher in #21761
- Update metrics.py from numpy to floats by @glenn-jocher in #21773
- Cleaner TQDM in CI by @glenn-jocher in #21775
- New SystemLogger class by @glenn-jocher in #21764
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!