π Summary
Ultralytics v8.4.22 focuses on better hardware support and reliability, led by a key new feature: basic Huawei Ascend NPU device support in select_device π.
π Key Changes
-
π₯ Major (Current PR #23902 by @GiantAxeWhy): Huawei Ascend NPU parsing added
- You can now use
device=npuordevice=npu:0in Ultralytics. - Added checks for
torch_npuinstallation and NPU availability. - Validates NPU index and gives clearer errors for invalid inputs.
- Explicitly blocks unsupported multi-NPU strings like
npu:0,1for now.
- You can now use
-
π§ Multi-GPU training fix (DDP + Albumentations)
- Custom Albumentations transforms are now serialized/deserialized safely for DDP subprocesses.
- Fixes failures where custom augmentations could break in multi-GPU runs.
-
π¦ Export stability improvements
- ONNX opset selection is safer on newer Torch versions (Torch 2.9+ capped more conservatively).
- TensorRT INT8 exports now auto-disable
end2endfor incompatible TensorRT versions (<=10.3.0) to prevent known build failures. - INT8 calibration now handles small datasets more gracefully by reducing batch size instead of hard-failing in some cases.
-
π³ Docker and CI environment updates
- Base Docker image moved to PyTorch 2.10.0 (CUDA/cuDNN runtime unchanged).
- Added
UV_BREAK_SYSTEM_PACKAGES=1across Dockerfiles for more consistent installs. - New
Dockerfile-runner-cpuand broader CI runner improvements (CPU labels, tooling likesudo,nodejs,npm,gpg). - CI expanded to test Torch 2.10.0 + Torchvision 0.25.0.
-
π οΈ Reliability/bug fixes
- FastSAM text-prompt index remapping fix (better mask selection consistency).
- ClearML callback fix to prevent remote override conflicts with Ray Tune hyperparameters.
- Dataset cache loading/saving made more robust against environment mismatches and partial-write failures.
-
π Docs and dataset additions
- Added DOTA128 OBB dataset config/docs (good middle ground between DOTA8 and full DOTA).
- Expanded Ultralytics Platform docs (SAM model selection incl. SAM 3, team/workspace docs, training/billing clarifications, Docker image guides).
- Device docs updated to include NPU usage.
π― Purpose & Impact
- For Ascend users: You now get first-class basic device selection for Huawei NPUs, making it easier to run training/inference without custom hacks β‘.
- For training at scale: Multi-GPU workflows with custom augmentations are more dependable, reducing frustrating DDP issues β .
- For deployment/export users: Fewer export-time surprises, especially with ONNX/TensorRT compatibility on modern stacks π€.
- For Docker/CI users: More up-to-date and consistent environments mean fewer setup/build breakages π§©.
- For everyone: Overall this release is about practical robustnessβbetter hardware compatibility, safer exports, and smoother day-to-day usage with YOLO11/YOLO26 ecosystems π.
What's Changed
- FROM pytorch/pytorch:2.10.0-cuda12.8-cudnn9-runtime by @glenn-jocher in #23807
- Add UV_BREAK_SYSTEM_PACKAGES environment variable by @glenn-jocher in #23809
- Add Torch 2.10 with updated Torch and torchvision versions by @glenn-jocher in #23808
- Bump docker/setup-buildx-action from 3 to 4 in /.github/workflows by @dependabot[bot] in #23813
- Fix index remapping in FastSAM by @orcinus in #23764
- Update RUNNER_VERSION to 2.332.0 by @glenn-jocher in #23826
- Add Dockerfile-runner-cpu by @glenn-jocher in #23827
- Update Dockerfile-python description and derivatives by @glenn-jocher in #23828
- Remove Runner SHA checks by @glenn-jocher in #23829
- Update Dockerfile-runner-cpu with sudo by @glenn-jocher in #23830
- Add nodejs and npm to runner images by @glenn-jocher in #23832
- Platform SAM3 docs by @glenn-jocher in #23834
- Fix
callabletype hint toCallableinBasePredictor.add_callback()by @ahmet-f-gumustas in #23836 - Remove unused
taskattribute from metrics classes by @raimbekovm in #23835 - fix: prevent ClearML task.connect() from overriding Ray Tune hyperparam by @knotgrass in #23833
- Fix incorrect link in ONNX integration docs FAQ by @sjsr-0401 in #23838
- remove resolved TODO comment from OBB head by @raimbekovm in #23848
- Exclude OpenVINO
2026.0.0from Conda CI by @Y-T-G in #23839 - fix: π Enable Albumentations augmentations for DDP training by serializing and deserializing transforms by @onuralpszr in #23849
- Update setuptools requirement from <=81.0.0 to <=82.0.1 by @dependabot[bot] in #23846
- Disable
end2endfor TensorRT INT8 exports withtensorrt<=10.3.0by @lakshanthad in #23872 - docs: π notes for multi-GPU training for custom code by @onuralpszr in #23876
- Add
gpgpackage forDockerfile-runner-cpuby @Laughing-q in #23878 - docs: π update Docker image list with new images by @onuralpszr in #23884
- Add
dota128dataset by @Laughing-q in #23885 - Add
ModuleNotFoundErrorin classify caching check to prevent numpy version conflict by @Laughing-q in #23892 - Docs: Fix CoreML export table to include agnostic_nms when nms=True by @K-saif in #23867
- Add https://youtu.be/4VTuqfrOIws to docs by @RizwanMunawar in #23873
- Remove unused tip from
export-table.mdby @Y-T-G in #23898 - fix build_docs.py portability for local development by @raimbekovm in #23883
- Docs reference strict mode by @glenn-jocher in #23900
- Calibration dataset size <
batchfix by @glenn-jocher in #23899 - fix docs CI: remove unused
blackdep and fix publish commit message by @raimbekovm in #23896 - Update format.yml to
cpu-latestby @glenn-jocher in #23901 - handle prettier failures gracefully in build_reference.py by @raimbekovm in #23882
- docs: β‘ Update Triton Inference Server guide by @onuralpszr in #23880
- Update docs.yml to
cpu-latestrunner by @glenn-jocher in #23904 - Greyscale test fix by @glenn-jocher in #23903
- docs(export): add FAQ explaining FP32 output with end2end=True and ha⦠by @Shreyas-S-809 in #23759
- Update local docs build instructions in README by @raimbekovm in #23877
- Docs: Platform prelaunch documentation updates by @mykolaxboiko in #23888
- Fix screenshot placeholders in Teams and Cloud Training docs by @mykolaxboiko in #23905
ultralytics 8.4.22Huawei Ascend NPU device parsing inselect_deviceby @GiantAxeWhy in #23902
New Contributors
- @sjsr-0401 made their first contribution in #23838
- @Shreyas-S-809 made their first contribution in #23759
- @mykolaxboiko made their first contribution in #23888
- @GiantAxeWhy made their first contribution in #23902
- @knotgrass made their first contribution in #23833
- @orcinus made their first contribution in #23764
Full Changelog: v8.4.21...v8.4.22