π Summary
π Ultralytics 8.4.111 expands hardware support with validated Huawei Ascend NPU training, broader accelerator compatibility, and important tracking, MPS, deployment, and documentation improvements.
π Key Changes
-
Huawei Ascend NPU training support π§
- Added single- and multi-NPU training and validation through
torch_npu. - Supports standard training features including AMP, checkpointing, resume, AutoBatch, profiling, memory management, and validation.
- Multi-NPU training uses Huaweiβs HCCL distributed backend.
- Example device selections include
device=npu:0anddevice=npu:0,1. - Ascend documentation now covers the workflow from training through
.omexport and deployment.
- Added single- and multi-NPU training and validation through
-
Unified accelerator handling βοΈ
- Device behavior is now derived from the selected PyTorch device rather than being hard-coded for CUDA.
- Improves compatibility with:
- Huawei Ascend
npu - Intel
xpu - AMD ROCm through PyTorchβs standard CUDA-style device interface
- Huawei Ascend
- Distributed training now selects the appropriate backend: NCCL for NVIDIA, HCCL for Ascend, and XCCL for Intel.
-
AMD ROCm integration guide π΄
- Added documentation for training, validation, and inference on supported AMD GPUs using PyTorch ROCm.
- Clarifies that ROCm uses
device=0ordevice=cuda:0, notdevice=rocm:0. - Clearly distinguishes supported ROCm workflows from currently unsupported or separate technologies such as MIGraphX, DirectML, and Ryzen AI NPU.
-
Improved accelerator-aware data loading and profiling π
- Dataloaders, pinned memory, synchronization, memory checks, profiling, automatic batch sizing, and mixed precision now account for more device types.
- NPU and XPU execution avoids unsupported operations such as torchvision NMS kernels where necessary.
-
Tracking and numerical stability improvements π―
- Object counting now detects objects that pass through polygon regions between frames, even when no centroid is sampled inside the region.
- Deep OC-SORT preserves homography precision.
- Kalman filter states consistently use float64.
- Re-identification features are stored safely as float32.
- GMC matching now retains valid zero-variance and boundary-distance matches.
- NumPy assignment now raises a clear error for infeasible cost matrices instead of potentially hanging.
-
Apple MPS reliability fixes π
- Avoids problematic in-place operations on strided MPS tensors across affected macOS and PyTorch versions.
- Prevents autocast crashes on MPS with PyTorch versions older than 2.5.
-
Documentation and platform updates π
- Added LabelMe dataset import instructions for converting offline annotations to YOLO format and uploading them to the Ultralytics Platform.
- Updated Rust inference documentation for
ultralytics-inference0.0.32, including Intel CPU, GPU, and NPU device options. - Refreshed Raspberry Pi 5 YOLO26 benchmarks with LiteRT and clarified that LiteRT export must be performed off-device.
- Added a monocular depth estimation tutorial to the YOLO26 documentation.
- Normalized GPU names in usage telemetry to improve reporting consistency.
π― Purpose & Impact
- π Broader hardware choice: Users can train Ultralytics models on Huawei Ascend NPUs, AMD GPUs, Intel accelerators, and NVIDIA GPUs through more consistent device handling.
- π Easier enterprise and edge deployment: Ascend training now connects directly to existing export and deployment workflows, while AMD and Raspberry Pi guidance makes hardware-specific setup clearer.
- π§© Less backend-specific code: The shared PyTorch device abstraction reduces the need for separate trainers or parallel implementations for each accelerator.
- π More dependable tracking: Object counters and trackers should behave more accurately in fast-motion, low-variance, and mixed-precision scenarios.
- π‘οΈ Improved reliability: MPS fixes prevent crashes and inconsistent detections, while the assignment fallback now fails safely on impossible inputs.
- π Better onboarding: New LabelMe, AMD, Ascend, Rust, Raspberry Pi, and depth resources help users move from dataset preparation to training and deployment more easily.
- π’ The package version is updated to 8.4.111.
What's Changed
- Document LabelMe Platform dataset import by @glenn-jocher in #25491
- Normalize GPU names in usage events by @glenn-jocher in #25503
- Bump ultralytics-inference version to 0.0.32 in documentation by @onuralpszr in #25502
- Refactor inference documentation to improve header placement and formatting by @onuralpszr in #25505
- Add https://youtu.be/i-V1kRCJD0M to docs by @RizwanMunawar in #25506
- Preserve the GMC homography precision in Deep OC-SORT by @raimbekovm in #25504
- Fix autocast crash on MPS with torch<2.5.0 by @Y-T-G in #25494
- Fix tracker docstring examples to run as written by @raimbekovm in #25509
- Keep gmc matches when the spatial distance variance is zero by @raimbekovm in #25507
- Declare the Kalman filter state dtype as float64 by @raimbekovm in #25499
- Fix PyTorch MPS strided tensor bugs in in-place operations by @Rahulbiradar9 in #25496
- Count objects that cross an
ObjectCounterregion between frames by @JESUSROYETH in #25492 - Store ReID appearance features as float32 by @raimbekovm in #25484
- Update Raspberry Pi 5 benchmarks with LiteRT by @lakshanthad in #25489
- Raise on an infeasible cost matrix in the NumPy
linear_sum_assignmentfallback by @ErenAta16 in #25508 - Add Huawei Ascend NPU training support by @glenn-jocher in #25500
New Contributors
- @Rahulbiradar9 made their first contribution in #25496
- @ErenAta16 made their first contribution in #25508
Full Changelog: v8.4.110...v8.4.111