# New Release: Ultralytics v8.4.22

**URL:** <https://community.ultralytics.com/t/new-release-ultralytics-v8-4-22/1868>\
**Category:** Discussion\
**Tags:** ultralytics-official, releases, announcements\
**Created:** [March 15, 2026, 1:22pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-4-22/1868 "2026-03-15T13:22:03Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![glenn-jocher](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/glenn-jocher/32/83_2.png) [@glenn-jocher](https://community.ultralytics.com/u/glenn-jocher)\
**Post date:** [March 15, 2026, 1:22pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-4-22/1868/1 "2026-03-15T13:22:03Z")

</div>

# 🎉 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 🚀

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](https://platform.ultralytics.com/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](https://github.com/ultralytics/ultralytics/releases/tag/v8.4.22) and compare all changes in the [full changelog from v8.4.21 to v8.4.22](https://github.com/ultralytics/ultralytics/compare/v8.4.21...v8.4.22).

* * *

## 🌟 Highlights

### 🔥 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](https://github.com/ultralytics/ultralytics/pull/23902) with thanks to [@GiantAxeWhy](https://github.com/GiantAxeWhy) for the first contribution 🎊

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 ⚡

### 🧠 More reliable multi-GPU training

Custom Albumentations pipelines now work more safely with DDP subprocesses thanks to [PR #23849 by @onuralpszr](https://github.com/ultralytics/ultralytics/pull/23849), contributed by [@onuralpszr](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/23876).

### 📦 Export stability improvements

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

- **TensorRT INT8 compatibility:** [PR #23872 by @lakshanthad](https://github.com/ultralytics/ultralytics/pull/23872) from [@lakshanthad](https://github.com/lakshanthad) disables `end2end` automatically for incompatible `tensorrt<=10.3.0`
- **Small calibration dataset handling:** [PR #23899 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23899) adjusts batch sizing more gracefully instead of failing in some cases
- **ONNX and export docs improvements:** [PR #23759 by @Shreyas-S-809](https://github.com/ultralytics/ultralytics/pull/23759) by [@Shreyas-S-809](https://github.com/Shreyas-S-809), [PR #23867 by @K-saif](https://github.com/ultralytics/ultralytics/pull/23867) by [@K-saif](https://github.com/K-saif), and [PR #23838 by @sjsr-0401](https://github.com/ultralytics/ultralytics/pull/23838) by [@sjsr-0401](https://github.com/sjsr-0401)

* * *

## 🛠 Improvements and Fixes

### 🐳 Docker and CI updates

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

- Base Docker image updated to **PyTorch 2.10.0** in [PR #23807 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23807)
- Torch 2.10 / Torchvision 0.25.0 CI coverage added in [PR #23808 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23808)
- `UV_BREAK_SYSTEM_PACKAGES=1` added across Dockerfiles in [PR #23809 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23809)
- New CPU runner image in [PR #23827 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23827)
- Runner updates and image improvements in [PR #23826](https://github.com/ultralytics/ultralytics/pull/23826), [PR #23828](https://github.com/ultralytics/ultralytics/pull/23828), [PR #23829](https://github.com/ultralytics/ultralytics/pull/23829), [PR #23830](https://github.com/ultralytics/ultralytics/pull/23830), [PR #23832](https://github.com/ultralytics/ultralytics/pull/23832), and [PR #23878 by @Laughing-q](https://github.com/ultralytics/ultralytics/pull/23878)
- CI runner label updates in [PR #23901 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23901) and [PR #23904 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23904)
- Workflow dependency bump in [PR #23813 by @dependabot[bot]](https://github.com/ultralytics/ultralytics/pull/23813)

### 🐞 Reliability fixes

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

- FastSAM text-prompt index remapping fix in [PR #23764 by @orcinus](https://github.com/ultralytics/ultralytics/pull/23764), contributed by [@orcinus](https://github.com/orcinus)
- ClearML callback fix to avoid Ray Tune override conflicts in [PR #23833 by @knotgrass](https://github.com/ultralytics/ultralytics/pull/23833), contributed by [@knotgrass](https://github.com/knotgrass)
- Dataset/classification cache robustness improvement in [PR #23892 by @Laughing-q](https://github.com/ultralytics/ultralytics/pull/23892), contributed by [@Laughing-q](https://github.com/Laughing-q)
- Greyscale test fix in [PR #23903 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23903)
- OpenVINO Conda CI exclusion update in [PR #23839 by @Y-T-G](https://github.com/ultralytics/ultralytics/pull/23839), contributed by [@Y-T-G](https://github.com/Y-T-G)

### 🧹 Code quality and maintenance

A few cleanup and maintenance improvements also shipped:

- `Callable` type hint fix in [PR #23836 by @ahmet-f-gumustas](https://github.com/ultralytics/ultralytics/pull/23836), contributed by [@ahmet-f-gumustas](https://github.com/ahmet-f-gumustas)
- Removed unused `task` attribute from metrics classes in [PR #23835 by @raimbekovm](https://github.com/ultralytics/ultralytics/pull/23835), contributed by [@raimbekovm](https://github.com/raimbekovm)
- Removed resolved TODO from OBB head in [PR #23848 by @raimbekovm](https://github.com/ultralytics/ultralytics/pull/23848)
- `setuptools` requirement bump in [PR #23846 by @dependabot[bot]](https://github.com/ultralytics/ultralytics/pull/23846)

* * *

## 📚 Docs and Dataset Updates

### 🗂 New dataset: DOTA128

A new **DOTA128** OBB dataset config was added in [PR #23885 by @Laughing-q](https://github.com/ultralytics/ultralytics/pull/23885). It provides a nice middle ground between lightweight tiny subsets and the full DOTA dataset for oriented bounding box workflows.

### 🌐 Ultralytics Platform docs expanded

We also continued improving the [Ultralytics Platform documentation](https://docs.ultralytics.com/platform/), including:

- SAM 3 docs in [PR #23834 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23834)
- Platform prelaunch documentation updates in [PR #23888 by @mykolaxboiko](https://github.com/ultralytics/ultralytics/pull/23888), contributed by [@mykolaxboiko](https://github.com/mykolaxboiko)
- Teams and Cloud Training doc fixes in [PR #23905 by @mykolaxboiko](https://github.com/ultralytics/ultralytics/pull/23905)
- Docker image docs in [PR #23884 by @onuralpszr](https://github.com/ultralytics/ultralytics/pull/23884)
- Triton Inference Server guide updates in [PR #23880 by @onuralpszr](https://github.com/ultralytics/ultralytics/pull/23880)
- Strict mode docs in [PR #23900 by @glenn-jocher](https://github.com/ultralytics/ultralytics/pull/23900)
- README local docs build improvements in [PR #23877 by @raimbekovm](https://github.com/ultralytics/ultralytics/pull/23877)
- Local docs portability and CI fixes in [PR #23883 by @raimbekovm](https://github.com/ultralytics/ultralytics/pull/23883), [PR #23896 by @raimbekovm](https://github.com/ultralytics/ultralytics/pull/23896), [PR #23882 by @raimbekovm](https://github.com/ultralytics/ultralytics/pull/23882)
- ONNX/CoreML/export doc fixes in [PR #23838 by @sjsr-0401](https://github.com/ultralytics/ultralytics/pull/23838), [PR #23867 by @K-saif](https://github.com/ultralytics/ultralytics/pull/23867), and [PR #23898 by @Y-T-G](https://github.com/ultralytics/ultralytics/pull/23898)
- Additional docs media update in [PR #23873 by @RizwanMunawar](https://github.com/ultralytics/ultralytics/pull/23873)

* * *

## 🙌 New Contributors

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

- [@sjsr-0401](https://github.com/sjsr-0401) in [PR #23838](https://github.com/ultralytics/ultralytics/pull/23838)
- [@Shreyas-S-809](https://github.com/Shreyas-S-809) in [PR #23759](https://github.com/ultralytics/ultralytics/pull/23759)
- [@mykolaxboiko](https://github.com/mykolaxboiko) in [PR #23888](https://github.com/ultralytics/ultralytics/pull/23888)
- [@GiantAxeWhy](https://github.com/GiantAxeWhy) in [PR #23902](https://github.com/ultralytics/ultralytics/pull/23902)
- [@knotgrass](https://github.com/knotgrass) in [PR #23833](https://github.com/ultralytics/ultralytics/pull/23833)
- [@orcinus](https://github.com/orcinus) in [PR #23764](https://github.com/ultralytics/ultralytics/pull/23764)

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

* * *

## 🚀 Try it out

Update with:

```bash
pip install -U ultralytics

```

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

```python
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](https://platform.ultralytics.com), which is the simplest way to annotate datasets, train, deploy, and monitor YOLO projects.

* * *

## 💬 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](https://github.com/ultralytics/ultralytics).
