New Release: Ultralytics v8.4.22

:tada: Ultralytics v8.4.22 is out!

We’re excited to share Ultralytics v8.4.22, a reliability-focused release that brings basic Huawei Ascend NPU support, more dependable multi-GPU training, safer export behavior, and smoother Docker/CI workflows for the Ultralytics YOLO ecosystem :rocket:

If you’re training with Ultralytics YOLO11 today, this release makes day-to-day workflows more robust. And if you’re starting something new, we recommend exploring Ultralytics YOLO26, our latest stable model family with smaller, faster, and more accurate models across detect, segment, classify, pose, and OBB.

You can review the full release on GitHub Releases for v8.4.22 and compare all changes in the full changelog from v8.4.21 to v8.4.22.


:glowing_star: Highlights

:fire: Basic Huawei Ascend NPU support

The headline feature in this release is Huawei Ascend NPU parsing in select_device, contributed in PR #23902 by @GiantAxeWhy with thanks to @GiantAxeWhy for the first contribution :confetti_ball:

You can now use:

  • device=npu
  • device=npu:0

This update adds:

  • torch_npu installation checks
  • NPU availability validation
  • clearer errors for invalid device strings
  • explicit blocking of unsupported multi-NPU strings like npu:0,1

This makes Ascend usage much more straightforward for training and inference without custom device-selection workarounds :high_voltage:

:brain: More reliable multi-GPU training

Custom Albumentations pipelines now work more safely with DDP subprocesses thanks to PR #23849 by @onuralpszr, contributed by @onuralpszr.

This change serializes and deserializes custom transforms correctly, which helps avoid failures in multi-GPU training setups.

Related documentation improvements were added in PR #23876 by @onuralpszr.

:package: Export stability improvements

Several export-related edge cases were improved in v8.4.22:


:hammer_and_wrench: Improvements and Fixes

:spouting_whale: Docker and CI updates

We’ve refreshed build and runner environments to keep installs and testing more consistent:

:lady_beetle: Reliability fixes

A set of practical fixes landed across training, caching, and integrations:

:broom: Code quality and maintenance

A few cleanup and maintenance improvements also shipped:


:books: Docs and Dataset Updates

:card_index_dividers: New dataset: DOTA128

A new DOTA128 OBB dataset config was added in PR #23885 by @Laughing-q. It provides a nice middle ground between lightweight tiny subsets and the full DOTA dataset for oriented bounding box workflows.

:globe_with_meridians: Ultralytics Platform docs expanded

We also continued improving the Ultralytics Platform documentation, including:


:raising_hands: New Contributors

A warm welcome to our new contributors who made their first contribution in this release:

Thank you to everyone who contributed code, docs, testing, and feedback :blue_heart:


:rocket: Try it out

Update with:

pip install -U ultralytics

And if you want to test the new NPU device parsing directly:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.predict(source="image.jpg", device="npu:0")

You can also explore training, deployment, and collaboration workflows on the Ultralytics Platform, which is the simplest way to annotate datasets, train, deploy, and monitor YOLO projects.


:speech_balloon: Feedback welcome

Please give v8.4.22 a try and let us know how it works for your workflows, especially if you’re using:

  • Huawei Ascend NPUs
  • multi-GPU DDP with custom augmentations
  • ONNX or TensorRT export
  • Docker or CI-heavy setups

As always, feedback, bug reports, and PRs are welcome in the Ultralytics repository.