🌟 Summary (single-line synopsis)
Ultralytics 8.4.14 adds Ultralytics Platform “Cancel training” support so you can stop runs quickly and still keep/upload partial results ⛔️📤
📊 Key Changes
- Platform-driven training cancellation (priority change) 🛑
- Detects cancellation even before training starts (during session registration) and prevents wasted startup time.
- Checks for cancellation at epoch end via a send-and-check response flow, then sets
trainer.stop=Truewhencancelled=true. - Tracks cancellation state with
trainer._platform_cancelledand logs clear messages. - Continues to upload partial artifacts/metadata when a run is cancelled (so you don’t lose everything).
- Faster responsiveness to stop requests between batches ⚡
- Training loop now breaks if
self.stopis set, allowing external stops (like Platform cancellation) to take effect sooner.
- Training loop now breaks if
- YOLO26 Pose training stability fix 🧍♂️📈
- Clamps negative
rle_lossto zero to prevent loss from going negative and destabilizing training (helps avoid mAP dropping across epochs).
- Clamps negative
- Segmentation → bounding box conversion edge-case fix 🖼️📦
segment2box()now excludes points exactly on the image border after clipping, avoiding boxes incorrectly snapping to edges (better box regression + mask quality).
- Hyperparameter tuning crash fix 🧪🔧
- Prevents
TypeErrorwhenfitnessis present butNoneduring tuning (safer/cleaner tuning runs).
- Prevents
- Docs clarity: Params/FLOPs reporting after
model.fuse()📚- Adds notes explaining why Params/FLOPs in docs may differ from what you see locally (fused inference vs full training architecture).
🎯 Purpose & Impact
- Better control on Ultralytics Platform 🎛️
- If you hit Cancel in the Platform, training should stop reliably and promptly—without waiting for a long delay.
- Lower wasted compute + cost 💸
- Cancelled jobs exit earlier and more predictably, especially helpful for long training runs.
- Keeps useful outputs even when cancelling 📦
- Partial uploads mean you can still inspect progress, logs, and intermediate artifacts after stopping.
- More stable YOLO26 Pose training ✅
- Reduces risk of training “going backwards” due to negative loss behavior; improves consistency of pose metrics over epochs.
- Higher-quality results for segmentation-derived boxes 🎯
- Fewer edge-snapped boxes after augmentations can improve both training quality and final predictions.
- Fewer interruptions in automated workflows 🤖
- Tuning and reporting are more robust, reducing flaky failures in pipelines.
If you train via the Ultralytics Platform, this release is especially impactful due to the new cancellation behavior 🛑.
What's Changed
- Fix TypeError when fitness is None during hyperparameter tuning by @Mr-Neutr0n in #23603
- Clamp negative rle_loss to zero in Pose26 training by @Mr-Neutr0n in #23604
- Fix
segment2boxboundary condition for edge-snapped segment points by @Mr-Neutr0n in #23602 - Add footnote clarifying param/FLOP counts after
model.fuse()by @raimbekovm in #23601 ultralytics 8.4.14Platform training cancel feature by @glenn-jocher in #23614
Full Changelog: v8.4.13...v8.4.14