Ultralytics v8.4.159 Released
Ultralytics v8.4.159 delivers smarter dataset split handling, immediate training system metrics, and more memory-efficient INT8 SavedModel exports. These updates reduce unnecessary downloads, improve training visibility, and make exports more reliable on memory-constrained devices.
Smarter Dataset Preparation
Training with Platform NDJSON datasets now respects the requested validation split throughout conversion, caching, loading, and evaluation.
- Using
split=valskips unused test images by default. - Using
split=testretains test images and validates against the test split. - Split-aware caching prevents validation and test conversions from incorrectly sharing cached data.
- YOLO, RT-DETR, and classification training now consistently use the selected split and dataset fractions.
- Existing standalone conversion, metadata inference, classification fallbacks, and depth-calibration provenance remain supported.
The result is faster preparation, reduced storage usage, and more predictable validation behavior.
Earlier Training System Metrics
The existing training_started Platform request now includes an initial system snapshot, allowing CPU, memory, disk, and related metrics to appear before the first epoch finishes.
Epoch-level reporting remains unchanged, and no additional requests, timers, or periodic monitoring signals are introduced. Optional monitoring also remains isolated from required training dependencies.
This improvement was contributed by Glenn Jocher in PR #26276: Skip unused test downloads and report initial training system metrics.
Lower-Memory INT8 SavedModel Export
INT8 SavedModel export now creates calibration data only when required for ONNX-to-SavedModel conversion and releases it immediately afterward.
Testing on an Apple M4 system showed:
- Approximately 533.7 MiB lower peak process memory
- An 18.2% reduction in peak memory
- Unchanged export behavior, runtime, calibration data, and tested full-integer TFLite outputs
This should reduce the risk of out-of-memory failures on constrained systems. The optimization was contributed by Aman Harsh in PR #26272: Reduce peak memory during INT8 SavedModel export.
Tests and Documentation
This release also expands coverage for:
- Validation and test split selection
- Split-aware cache behavior
- Depth-calibration handling
- Internal Platform system-metrics documentation
Try v8.4.159
Upgrade with:
pip install -U ultralytics
Explore the complete release details in the Ultralytics v8.4.159 release, or review every change in the full v8.4.158 to v8.4.159 changelog.
Give the new release a try and share your results, feedback, or any issues you encounter with the Ultralytics community! ![]()