🌟 Summary
Huawei Ascend support arrives in Ultralytics, enabling YOLO models to export and run as hardware-optimized .om models on Ascend NPUs. 🚀
📊 Key Changes
-
Huawei Ascend export and inference 🧠
- Adds
format=ascendto compile YOLO models through Huawei’s CANN ATC compiler. - Produces self-describing
.omfiles with metadata, targeting a specified Ascend SoC throughname, such asAscend310P3orAscend310B4. - Adds
AutoBackendsupport usingais_benchfor inference on Ascend hardware. - Supports detection, segmentation, pose, OBB, classification, semantic segmentation, and depth models.
- Uses static-shape FP16 compilation and supports host-side export without requiring an attached Ascend device.
- Adds aliases including
huawei,cann, andom, while preventingcannfrom being incorrectly routed to NCNN. - Adds documentation and API references for the new Ascend exporter and inference backend.
- Adds
-
Ultralytics Platform support ☁️
- Increases supported deployment formats from 19 to 20 by adding Huawei Ascend export.
- Ascend export is now reflected throughout the Ultralytics Platform documentation and format selection guides.
-
Faster and cleaner FLOPs profiling ⚡
- Profiles models directly instead of creating expensive deep copies.
- Removes the unused
get_flops_with_torch_profilerutility. - Updates
ultralytics-thopto version 2.1.0 or newer for improved profiling performance and cleanup reliability.
-
More reliable distributed training 🌐
- DDP now prefers random available ports below the operating system’s ephemeral range.
- Reduces rendezvous failures caused by port reuse, while retaining an operating-system fallback.
-
Tracking and evaluation fixes ✅
- Restores TrackTrack deleted-detection recovery for PyTorch models.
- Corrects class-name and AP alignment in
PR_curve.pngwhen classes have no predictions. - Prevents empty segmentation annotations from corrupting bounding boxes in
GroundingDataset. - Makes optimizer names case-insensitive for MuSGD, so values such as
musgdwork correctly.
-
Clearer low-disk-space reporting 💾
- Reports available disk space in KB below 1 MB instead of displaying ambiguous
0.0 MBvalues.
- Reports available disk space in KB below 1 MB instead of displaying ambiguous
🎯 Purpose & Impact
-
Broader hardware deployment: Users targeting Huawei Atlas boards and OrangePi AIPro devices now have a direct path from a trained YOLO checkpoint to accelerated Ascend inference. 🏭🤖
-
Simpler deployment workflow: Export with a familiar command such as:
yolo export model=yolo26n.pt format=ascend name=Ascend310B4The generated model directory can then be loaded through standard Ultralytics prediction APIs.
-
Improved edge performance potential: Ascend’s AI Core executes compiled FP16 models on-device, supporting low-power applications such as robotics, industrial inspection, and smart cameras.
-
Faster development workflows: FLOPs profiling should require less time and memory, particularly for larger models.
-
More dependable training and tracking: Distributed jobs, TrackTrack recovery, optimizer selection, and evaluation plots behave more consistently.
-
Better diagnostics: Disk-space errors now provide actionable information, making it easier to distinguish a nearly full disk from one with only a small amount of free space.
⚠️ Ascend export requires the Linux-based CANN toolkit and the
atccompiler. Ascend inference additionally requires the CANN runtime andais_benchon the target device.
What's Changed
- Report disk space in KB below 1 MB by @glenn-jocher in #25433
- Profile models directly instead of copying them for FLOPs by @glenn-jocher in #25434
- Pick DDP rendezvous ports below the OS ephemeral range by @glenn-jocher in #25435
- Drop get_flops_with_torch_profiler and require thop>=2.1.0 by @glenn-jocher in #25438
- Fix TrackTrack deleted-detection recovery with PyTorch models by @JESUSROYETH in #25418
- Fix misaligned class labels and AP values in
PR_curve.pngwhen a class has no predictions by @JESUSROYETH in #25419 - Fix bbox corruption from empty segmentation in
GroundingDatasetby @JESUSROYETH in #25420 - Canonicalize the optimizer name before the MuSGD and auto checks by @JESUSROYETH in #25417
- Add Huawei Ascend export by @glenn-jocher in #25432
Full Changelog: v8.4.106...v8.4.107