Ultralytics v8.3.202 is out
Leaner and more accurate TFLite INT8, smoother tuning, steadier CI
Quick summary: v8.3.202 delivers a targeted upgrade to TFLite INT8 export with a per-channel quantization fix and smaller artifacts, plus robustness improvements to the distributed Tuner and more reliable CI on macOS. This is a great release for anyone exporting YOLO11 to edge devices. ![]()
Highlights
- TFLite INT8 per-channel quantization is fixed and now preferred for convolution-heavy models like YOLO11.
- INT8 exports are significantly slimmer by disabling
batchmatmul_unfoldfor INT8 paths. - Distributed Tuner starts immediately when the MongoDB collection exists, improving multi-worker workflows.
- CI builds stabilize by pinning the macOS runner to a specific image.
New and Notable
- We resolved TFLite per-channel INT8 quantization accuracy and file size concerns in the detailed write-up from the TFLite per-channel INT8 quantization fix PR by Y-T-G, which also addresses Issue #21030. You can review the implementation details in the linked PR: TFLite per-channel INT8 quantization fix.

- Distributed hyperparameter tuning is more robust thanks to the Start distributed Tuner mutation if Mongo collection exists PR by glenn-jocher, which you can read about in Start distributed Tuner mutation if Mongo collection exists.

- CI reliability improved with a pinned runner as documented in the Update CI workflow to run on macOS 26 PR by onuralpszr; see the details in Update CI workflow to run on macOS 26.

Purpose and Impact
- Better INT8 accuracy for TFLite: per-channel quantization typically improves performance on convolution-heavy architectures like YOLO11.

- Smaller and more deployable artifacts: disabling
batchmatmul_unfoldfor INT8 prevents large integer_quant files, making edge deployments lighter and faster to ship.
- Faster iteration in large experiments: distributed Tuner starts immediately when the MongoDB collection exists, reducing orchestration friction.

- More reliable CI: consistent macOS builds help contributors iterate smoothly and users receive steadier releases.

How to Try the New INT8 Export
Upgrade first:
pip install -U ultralytics
Export a YOLO11 model to TFLite INT8 with the new behavior:
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # or your trained YOLO11 model
model.export(format="tflite", int8=True) # per-channel INT8 fix and leaner artifacts
If youβre new to exporting, you can find more options in the Export mode docs where we explain supported formats and arguments in the dedicated guide at Ultralytics Export mode documentation.
Improvements
- INT8 per-channel quantization fix and artifact size reduction for TFLite exports.
- Distributed Tuner seeding behavior improved for existing-but-empty MongoDB collections.
- CI macOS runner pinned for consistency.
Bug Fixes
- Addressed incorrect INT8 per-channel handling in TFLite that impacted accuracy and file size.
Full Changelog and Release
You can browse all changes between v8.3.201 and v8.3.202 in the curated comparison at the page for the full changelog from v8.3.201 to v8.3.202, and you can find the packaged notes on the Ultralytics v8.3.202 release page.
Call for Feedback
Weβd love your feedback on TFLite INT8 exports and distributed tuning in real-world workloads. Share your experience in Ultralytics Discussions, or report issues and requests by opening an item in Ultralytics Issues. Your insights help the community and the team make YOLO better for everyone. ![]()
Thanks to all contributors and users pushing these improvements forward, and we hope you enjoy v8.3.202!