Ultralytics v8.4.48 is out 
Summary
Ultralytics v8.4.48 is a stability-focused release that improves training reliability, makes failure cases much clearer, and adds a few important fixes across benchmarking, reporting, and documentation. While this release is not centered on new model launches, it makes existing Ultralytics YOLO workflows safer and more production-friendly ![]()
If you train on the Ultralytics Platform or run automated pipelines, this update is especially worth pulling.
Highlights
Platform training edge-case fixes
The biggest improvements in v8.4.48 come from PR #24431 by @glenn-jocher:
- Added guards for empty semantic-mask batches to prevent segmentation training crashes

- Added safe handling for empty RLE keypoint masks during loss computation

- Training now fails early with a clear error if no
bestorlastcheckpoint is saved
- Model loading now raises a much clearer error when a checkpoint depends on a missing
ultralytics.*module, with guidance to retrain or use current official models
These changes are especially helpful for edge cases in mixed or imperfect datasets and for automated training jobs where fast, understandable failures matter.
Better benchmark and export robustness
With PR #24418 by @lakshanthad, the data argument is now only passed to export formats that actually support it.
That means fewer avoidable failures during benchmark/export workflows and more reliable cross-format testing ![]()
Correct bestEpoch reporting on Platform
Thanks to PR #24425 by @mykolaxboiko, training_complete.bestEpoch now reports the true best epoch, including when early stopping is used.
This makes experiment tracking on Platform more accurate and more trustworthy ![]()
Documentation Improvements
Safer multi-GPU guidance with SyncBatchNorm
PR #24422 by @artest08 adds a practical SyncBatchNorm example to the custom trainer guide.
This is particularly useful for multi-GPU training with small per-GPU batch sizes, where batch norm behavior can otherwise be tricky.
CI docs cleanup
PR #24430 by @glenn-jocher updates CI docs with a corrected iOS App Store link and some table cleanup.
Maintenance
Dependabot schedule update
With PR #24411 by @glenn-jocher, Dependabot pip updates now run monthly instead of daily, reducing maintenance noise while keeping dependencies fresh.
Why this release matters
v8.4.48 is all about reliability:
- More resilient training for segmentation and pose edge cases
- Clearer failures when checkpoints are missing or incompatible
- More accurate Platform metrics for experiment tracking
- More stable benchmark/export behavior across formats
In short, this release helps make YOLO training and deployment workflows more predictable, easier to debug, and friendlier for production use ![]()
Getting started
Update with:
pip install -U ultralytics
Then explore the release details in the v8.4.48 release page or review every change in the full changelog from v8.4.47 to v8.4.48.
If youβre starting a new project, we recommend YOLO26 as the latest stable and recommended model family. YOLO11 remains fully supported as the previous generation model.
Try it and let us know 
Please give v8.4.48 a try and share your feedback, especially if you work with:
- Platform training jobs
- segmentation datasets with sparse or empty masks
- pose workflows with unusual annotations
- export/benchmark pipelines across multiple formats
Thanks to all contributors and community members helping improve Ultralytics YOLO every release ![]()