github ultralytics/ultralytics v8.4.159
v8.4.159 - Skip unused test downloads and report initial training system metrics (#26276)

3 hours ago

๐ŸŒŸ Summary

v8.4.159 improves dataset split handling, startup monitoring, and INT8 SavedModel export efficiency.

๐Ÿ“Š Key Changes

  • ๐Ÿ“ฅ Avoids unnecessary dataset downloads during training

    • NDJSON-to-YOLO conversion now respects the requested training validation split.
    • By default, training with split=val skips unused test images, reducing download time, storage, and preparation overhead.
    • Using split=test retains test images and makes the trainer validate against that selected split.
    • Split-aware caching prevents validation and test conversions from incorrectly reusing the same cached dataset.
    • Behavior remains compatible with standalone conversion, metadata inference, classification datasets without validation data, and depth-calibration provenance.
    • YOLO, RT-DETR, and classification training now consistently use the selected validation split and corresponding dataset fractions.
  • ๐Ÿ“Š Reports system metrics as soon as training starts

    • The existing training_started Platform request now includes an initial system snapshot.
    • CPU, memory, disk, and related monitoring data can appear before the first epoch completes.
    • Epoch-level reporting remains unchanged, with no additional requests, timers, or periodic monitoring signals.
    • Optional system monitoring remains isolated so it does not become a required training dependency.
  • ๐Ÿง  Reduces peak memory during INT8 SavedModel export

    • Calibration data is now created only when needed for the ONNX-to-SavedModel conversion and released immediately afterward.
    • Testing showed an approximately 533.7 MiB, or 18.2%, reduction in peak process memory on an Apple M4 system.
    • Export behavior, runtime, calibration data, and tested full-integer TFLite outputs remain unchanged.
  • ๐Ÿงช Adds and updates tests and documentation

    • Tests now cover validation/test split selection, cache behavior, and depth calibration handling.
    • The Platform callback documentation now includes the internal system-metrics helper.

๐ŸŽฏ Purpose & Impact

  • โšก Faster, lighter dataset preparation: Training workflows using Platform NDJSON datasets should avoid downloading images that are not needed for the selected split.
  • โœ… More predictable validation: The split setting now consistently controls which data is prepared, loaded, and evaluated across supported tasks.
  • ๐Ÿ‘€ Better training visibility: Platform users can see system resource information immediately when a run begins instead of waiting for the first epoch.
  • ๐Ÿ’ป More reliable exports on memory-constrained devices: INT8 SavedModel exports require less peak memory, reducing the risk of out-of-memory failures while preserving existing export results.
  • ๐Ÿ”„ Minimal workflow disruption: Existing epoch monitoring, standalone conversion, classification fallbacks, and export behavior are preserved.

What's Changed

Full Changelog: v8.4.158...v8.4.159

Don't miss a new ultralytics release

NewReleases is sending notifications on new releases.