π Summary
v8.4.144 improves model reliability, numerical stability, inference precision, and deployment workflows without changing model architectures. π
π Key Changes
-
More reliable model YAML loading π§©
Explicitly requested files such ascustom26n.yamlare now loaded before attempting a scale-unified fallback likecustom26.yaml. This prevents custom model definitions from being silently replaced. -
Safer training and assignment edge cases π‘οΈ
Empty-label batches now return correctly typed boolean foreground masks, keeping task-aligned assigners consistent with their normal output contract. -
Stable CIoU calculations for reduced precision π’
The overlap calculation now avoidsNaNvalues and invalid gradients for identical FP16 and BF16 boxes, improving training stability on lower-precision hardware. -
More efficient repeated
model.to()calls β‘
Cached predictors are preserved when a model is already on the requested device or precision. This avoids unnecessary rebuilding, reducing latency and memory use during repeated inference setup. -
Improved Triton FP32 behavior π―
Triton client tensors now remain in FP32 even whenquantize=16is requested. This prevents unintended input rounding and output conversion on the client while leaving the server-side model precision unchanged. -
Faster semantic segmentation mosaic loading πΌοΈ
Semantic masks for buffered mosaic images are now retained in RAM instead of being decoded repeatedly. Benchmarks showed approximately 1.26Γ to 1.77Γ faster data loading, depending on the configuration. -
More flexible CLI configuration π οΈ
Arguments provided beforecfg=<file>are now preserved, and blankdatavalues in copied configuration files correctly fall back to the taskβs default dataset. -
Broader OpenVINO/NNCF compatibility π¦
The general upper version limit for NNCF has been removed, allowing newer NNCF 3.x releases with modern PyTorch and OpenVINO installations while retaining legacy restrictions where required. -
More informative quantization documentation π
QAT versus post-training quantization results are now documented for YOLO26 models. The examples show that QAT provides little benefit for the smallest model but can recover substantially more INT8 accuracy for larger models. -
More robust CI and test infrastructure β
CLA permissions were corrected, DEEPX export environments are skipped on machines with less than 15 GiB of RAM, and checkpoint corruption tests now work correctly with channels-last tensors. -
Documentation maintenance π
The DL Streamer system requirements link was fixed, and the documentation license banner now uses a CDN-hosted asset.
π― Purpose & Impact
- Users get more predictable model behavior, especially when working with custom YAML files or unusual training batches.
- Training with FP16 or BF16 is more robust, reducing the risk of silent
NaNvalues that can interrupt training or corrupt gradients. - Inference pipelines can be faster and lighter, particularly when repeatedly moving models between devices or processing semantic segmentation datasets with mosaic augmentation.
- Triton deployments preserve the intended FP32 data path, helping maintain accuracy when the remote server uses FP32 inference.
- INT8 deployment decisions are easier to make: QAT is most valuable for larger YOLO26 models or cases where calibration causes a noticeable accuracy drop, while smaller models may benefit little from the additional training cost.
- Export and CI workflows are more dependable across hardware and software environments, with clearer handling of memory limitations and newer OpenVINO dependencies.
What's Changed
- Fix broken DL Streamer system requirements link by @onuralpszr in #26096
- Quote the measured INT8 accuracy of QAT against calibration by @Bovey0809 in #26093
- Serve the buffered mosaic tile's semantic mask from ram instead of re-decoding it by @raimbekovm in #26099
- Keep Triton client tensors in FP32 when quantize=16 is requested by @raimbekovm in #26097
- Honor CLI arguments placed before cfg= and a blank data in the cfg file by @raimbekovm in #26092
- Keep the cached predictor when .to() does not move the model by @onuralpszr in #26098
- Write EMA test poison by index so it lands on channels_last CUDA weights by @onuralpszr in #26100
- Remove general NNCF upper version bound by @glenn-jocher in #26104
- Update license banner image to CDN asset by @raimbekovm in #26103
- Fix model loading, numerical edge cases, and CI setup by @glenn-jocher in #26106
Full Changelog: v8.4.143...v8.4.144