Ultralytics v8.3.244 is out!
TL;DR: YOLO inference is now safer in long-running apps when switching device= (CPU ↔ GPU) between predict() calls—Ultralytics will automatically reset the predictor to avoid stale state issues ![]()
![]()
![]()
You can view the release details as part of the v8.3.244 GitHub release and browse the full changelog from v8.3.243 to v8.3.244.
New Features (Main Update)
Predictor reset on device change
When device= changes between predict() calls, Ultralytics now re-initializes self.predictor instead of reusing a predictor tied to the previous device.
Why it matters: In real services and notebooks where you may alternate between device="cpu" and device=0, you won’t accidentally “carry over” device-specific predictor state.
Minimal usage example:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.predict("image.jpg", device="cpu")
model.predict("image.jpg", device=0) # predictor safely resets when device changes
Improvements

ExecuTorch export dependency fix for ARM64 Docker
A broad setuptools<71.0.0 workaround was removed and replaced with a targeted requirement: on Linux + ARM64 + Docker, require packaging>=22.0 to avoid build/export issues.
Reliability + Polish
Docker build improvements
Cleaner, more reproducible Docker builds with less layer bloat and more consistent installs.
Examples/tests hardening + YAML fixes
Includes robustness tweaks (notably in example integrations) plus small config/documentation wording cleanup (including references updated to YOLO11).
- PR: YAML fixes by @glenn-jocher
How to try it
Upgrade:
pip install -U ultralytics
Then run a quick check:
yolo predict model=yolo11n.pt source=https://ultralytics.com/images/bus.jpg
Feedback welcome
If you hit any edge cases (especially with device switching in long-lived processes, ARM64 Docker exports, or example builds), please share your repro details in the community—your reports help keep Ultralytics YOLO rock-solid for everyone ![]()