🌟 Summary
v8.4.70 is a reliability-focused release 🛠️ led by an important fix for multi-GPU training, plus safer checkpoint loading, a plotting fix for segmentation results, and clearer docs around YOLO26 heatmaps, training outputs, and deployment 📚
📊 Key Changes
-
🐛 Fixed DDP AMP synchronization in multi-GPU training in PR #24810 by @LZ-QWQ
- This is the main update in the release.
- It fixes a bug where AMP mixed-precision training could be disabled on one GPU rank but remain enabled on others during Distributed Data Parallel training.
- After the fix, all ranks now correctly share the same AMP setting.
-
✅ Safer checkpoint loading with clearer errors in PR #24857 by @glenn-jocher
- Ultralytics now gives a clear, user-friendly error when loading unsupported checkpoint formats, such as plain
state_dictfiles or some older YOLOv5-style module references. - This replaces confusing crashes like
AttributeErrororKeyError.
- Ultralytics now gives a clear, user-friendly error when loading unsupported checkpoint formats, such as plain
-
🎨 Fixed
Results.plot()for masks-only outputs in PR #24635 by @ahmet-f-gumustas- Segmentation results that contain masks but no bounding boxes no longer crash during plotting.
- This helps users working with custom or partial result objects.
-
🔥 Heatmaps guide was rewritten around real tracking use cases in PR #24815 by @raimbekovm
- The documentation now better explains that YOLO26 heatmaps are for object tracking over video, not just generic data visualization.
- It clarifies real-world uses like traffic flow, crowd movement, and region-based counting.
-
📁 Documented the
save_dirtraining argument in PR #24831 by @raimbekovm- Users can now more easily understand how to send training outputs to an exact folder without auto-increment behavior.
-
🧩 Small quality-of-life fixes in docs and config
- Removed an unused
regionargument from the instance segmentation guide in PR #24833 by @raimbekovm - Corrected
figsizetyping to floats in Solutions config in PR #24832 by @raimbekovm - Fixed doc rendering issues and broken links, including TensorRT quantization docs, in PRs #24822, #24856, and #24858 📘
- Removed an unused
🎯 Purpose & Impact
-
🚀 More reliable distributed training
- The AMP/DDP fix is especially important for users training on multiple GPUs.
- It prevents inconsistent precision behavior across devices, which could otherwise lead to unstable training, debugging headaches, or hard-to-trace performance issues.
-
🛡️ Fewer cryptic failures
- The checkpoint-loading improvements make model-loading problems much easier to understand.
- This is especially helpful for users migrating from older formats or using custom-saved weights.
-
🎯 Better support for segmentation workflows
- The plotting fix makes Ultralytics more robust for segmentation-only results and edge cases.
-
📚 Clearer guidance for real-world YOLO26 usage
- The heatmaps documentation update makes it easier for a broad audience to understand how YOLO26 can be used for video analytics, such as retail, transportation, and crowd analysis.
-
⚙️ Smoother day-to-day experience
- While many of the remaining changes are documentation and maintenance updates, they reduce confusion, improve discoverability, and make the platform easier to use overall.
In short: v8.4.70 is mainly a stability and usability release ✅ with the standout improvement being a critical fix for consistent AMP behavior in distributed multi-GPU training.
What's Changed
- Fix TensorRT quantization docs link by @glenn-jocher in #24856
- Remove region from instance segmentation guide arguments table by @raimbekovm in #24833
- Fix docs content rendering as raw code blocks by @raimbekovm in #24822
- Update formatting, headers, and redirects by @pderrenger in #24826
- Refactor heatmaps guide with tracking-focused framing by @raimbekovm in #24815
- Document save_dir training argument by @raimbekovm in #24831
- Fix figsize type annotation in SolutionConfig by @raimbekovm in #24832
- Raise clear error for non-Module checkpoints and YOLOv5
models.yoloby @glenn-jocher in #24857 - Fix AttributeError in Results.plot() for masks-only results by @ahmet-f-gumustas in #24635
- Fix docs workflow PR branch sync by @glenn-jocher in #24858
- Fix DDP AMP broadcast state synchronization by @LZ-QWQ in #24810
New Contributors
Full Changelog: v8.4.69...v8.4.70