Ultralytics v8.4.156: Reliable NDJSON Datasets and Faster INT8 TensorRT
Ultralytics v8.4.156 is now available! This release improves remote NDJSON dataset reliability, accelerates INT8 TensorRT exports while preserving accuracy, and strengthens cross-platform testing. ![]()
Dataset Reliability
Remote NDJSON conversion is now safer and more efficient thanks to PR #26242 from @cainiao33:
- Refreshes remote manifests inside the existing conversion lock to prevent stale datasets from being reused.
- Isolates downloads in private temporary directories, avoiding collisions between similarly named manifests.
- Reuses cached datasets when content is unchanged, including when signed URLs rotate.
- Creates separate dataset directories for changed manifests, protecting files used by active training jobs.
- Improves predictable file handling by removing NDJSON-specific deletion behavior from
check_file. - Covers detection, classification, depth, local sources, concurrent downloads, interrupted conversions, and URL basename collisions.
These changes mean more trustworthy dataset updates with less unnecessary network and disk usage. ![]()
Faster INT8 TensorRT Exports
INT8 deployment receives significant QAT and PTQ improvements through PR #26171 by @Y-T-G:
- Quantizes more of the model head during QAT.
- Keeps accuracy-sensitive output layers and DFL operations in floating point.
- Fuses BatchNorm layers during export, prediction, and validation to reduce runtime overhead.
- Adjusts quantization ranges after BatchNorm fusion so effective INT8 values remain stable.
- Uses FP16 where appropriate for sensitive PTQ head operations.
- Refines precision handling across newer and older TensorRT versions.
The result is faster, more efficient TensorRT engines without unnecessarily quantizing accuracy-sensitive operations. ![]()
Testing Improvements
Cross-platform model validation is more robust following PR #26217 from @glenn-jocher.
Restricted-load testing now uses tolerant numerical comparison instead of requiring bit-for-bit identical outputs across every hardware backend. This reduces harmless false failures—particularly on embedded and Jetson environments—while continuing to validate model weights, criteria, and fused layers.
Maintenance and Documentation
This release also includes several infrastructure and documentation updates:
- PR #26229 by @UltralyticsAssistant updates the self-hosted GitHub Actions cleanup runner from
v1.4.39tov1.4.40. - PR #26235 by @RizwanMunawar refreshes the embedded video in the Security Alarm System guide.
- Export documentation now describes the more precise QAT model-head behavior.
Upgrade Today
Install or upgrade to v8.4.156 with:
pip install -U ultralytics
There are no major user-facing API changes, so existing workflows should continue working while benefiting from improved dataset conversion, TensorRT deployment, and test stability.
Explore the complete details on the Ultralytics v8.4.156 release page, or review every update in the full v8.4.155 to v8.4.156 changelog.
Give the new release a try, and let the Ultralytics team and YOLO community know how it performs in your training and deployment workflows! ![]()