New Release: Ultralytics v8.4.70

Ultralytics v8.4.70 is out :tada:

Summary

Ultralytics v8.4.70 is a stability and usability release focused on reliability :hammer_and_wrench:
The headline fix improves multi-GPU training consistency by correctly synchronizing AMP state across DDP ranks, alongside safer checkpoint loading, a segmentation plotting fix, and several helpful documentation improvements for Ultralytics YOLO and Ultralytics Platform.

If you’re training on multiple GPUs, working with segmentation outputs, or deploying newer YOLO26 workflows, this release is especially worth updating to :white_check_mark:

Highlights

  • :rocket: Critical fix for DDP AMP synchronization in multi-GPU training
  • :shield: Clearer, safer checkpoint loading errors
  • :artist_palette: Fixed Results.plot() for masks-only segmentation outputs
  • :fire: Improved YOLO26 heatmaps docs with real tracking use cases
  • :file_folder: Better training docs for save_dir output control

New Features and Improvements

:rocket: Multi-GPU training fix

The most important change in v8.4.70 is PR #24810 by @LZ-QWQ, which fixes DDP AMP broadcast state synchronization.

Previously, during distributed multi-GPU training, AMP mixed precision could be disabled on one GPU rank while remaining enabled on others. That mismatch could lead to unstable or confusing behavior. With this fix, all ranks now correctly share the same AMP setting.

This is a big reliability improvement for users training Ultralytics YOLO models across multiple GPUs.

:shield: Safer checkpoint loading

PR #24857 by @glenn-jocher improves checkpoint loading by raising clear, user-friendly errors for unsupported formats, including plain state_dict files and some older YOLOv5-style module references.

Instead of cryptic failures like AttributeError or KeyError, users now get much clearer feedback about what went wrong.

:artist_palette: Segmentation plotting fix

PR #24635 by @ahmet-f-gumustas fixes an AttributeError in Results.plot() when handling masks-only results.

This makes segmentation workflows more robust, especially for custom result objects or pipelines that don’t include bounding boxes.

Documentation Updates

:fire: YOLO26 heatmaps guide refresh

PR #24815 by @raimbekovm rewrites the heatmaps guide with a stronger focus on tracking and video analytics.

The updated docs now better explain practical YOLO26 heatmap use cases like:

  • traffic flow analysis
  • crowd movement monitoring
  • region-based counting
  • retail and transportation analytics

:file_folder: save_dir training argument documented

PR #24831 by @raimbekovm adds documentation for the save_dir training argument, making it easier to send training outputs to an exact folder without auto-increment behavior.

:puzzle_piece: Quality-of-life doc and config fixes

A set of smaller improvements also landed in this release:

Why this release matters

v8.4.70 is not a flashy feature release, but it delivers meaningful day-to-day improvements:

  • :white_check_mark: more reliable distributed training
  • :white_check_mark: fewer confusing checkpoint-loading failures
  • :white_check_mark: better segmentation result handling
  • :white_check_mark: clearer guidance for real-world YOLO26 workflows
  • :white_check_mark: smoother docs and configuration experience

In short, this release makes Ultralytics YOLO more dependable for training, debugging, and deployment.

New Contributor :raising_hands:

A big welcome to @LZ-QWQ, who made their first contribution with PR #24810 — and it was an important one!

Try it out

You can upgrade with:

pip install -U ultralytics

Then explore the release notes in the v8.4.70 release page or review everything included in the full changelog.

If you test the release, we’d love to hear how it works for your workflows, especially for multi-GPU training, segmentation, and YOLO26 tracking or heatmap use cases :speech_balloon: