Huawei Ascend-Integration für Ultralytics YOLO#
Das Bereitstellen von Computer-Vision-Modellen auf Huawei Ascend AI Processors erfordert deren Kompilierung in das Offline-Modellformat .om, das vom Ascend AI Core ausgeführt wird. Das Exportieren von Ultralytics YOLO-Modellen nach Ascend ermöglicht es dir, schnelle Inferenz mit geringem Stromverbrauch auf Atlas-Entwicklerplatinen und OrangePi AIPro-Geräten auszuführen, die in der Robotik, industriellen Inspektion und bei intelligenten Kamera-Bereitstellungen eingesetzt werden.
Was ist Huawei Ascend?#
Huawei Ascend ist eine Familie von KI-Prozessoren, die mit CANN (Compute Architecture for Neural Networks), dem heterogenen Computing-Stack von Huawei, kombiniert sind. CANN enthält den ATC (Ascend Tensor Compiler), ein hostseitiges Tool, das einen standardmäßigen ONNX-Graphen in ein hardwarespezifisches Offline-Modell .om für den Ascend AI Core konvertiert.
Da der ATC vollständig auf dem Host läuft, kannst du Modelle auf einem normalen x86-64- oder ARM64-Linux-Rechner ohne angeschlossene Ascend-Hardware kompilieren und das resultierende .om dann zur Inferenz auf das Zielgerät kopieren.
Trainieren auf Ascend NPUs#
Ultralytics unterstützt Single- und Multi-NPU-Training mit torch_npu, einschließlich AMP, Validierung, Checkpointing, Fortsetzen und AutoBatch. Wähle eine NPU mit device=npu:0 oder mehrere NPUs mit device=npu:0,1; das verteilte Training verwendet HCCL. Installiere kompatible CANN-, PyTorch- und torch_npu-Versionen und lade zuerst die CANN-Umgebung. Siehe den Ascend NPU-Trainingsbereich für Installations- und Nutzungsbeispiele.
Ascend-Exportformat#
Der Ultralytics-Exporter schreibt zuerst einen intermediären ONNX-Graphen und ruft dann den ATC auf, um ihn für das SoC zu kompilieren, das du mit dem Argument name adressierst. Das Ergebnis ist ein in sich geschlossenes Modellverzeichnis, das die .om-Binärdatei und ihre Ultralytics-Metadaten enthält.
Hauptmerkmale von Ascend-Modellen#
- Dedizierter AI Core: Kompilierte Modelle werden auf dem Ascend AI Core anstelle der Host-CPU ausgeführt, was einen wesentlich höheren Durchsatz für Echtzeit-Kamerabereitstellungen bietet.
- Hostseitige Kompilierung: Der ATC benötigt keine angeschlossene NPU, sodass der Export in CI, in Containern oder auf einem Laptop ausgeführt werden kann.
- ONNX-first: Der Standard Ultralytics ONNX export speist sich direkt in die CANN-Toolchain ein, ohne ein proprietäres Zwischenformat.
- Statische Formen: Die Eingabeform wird zur Kompilierzeit in das
.omeingebettet, wodurch der Aufwand für die Formverhandlung zur Laufzeit entfällt. - Multi-Device-Targeting: Derselbe ONNX-Graph wird für jedes unterstützte SoC kompiliert, indem
namegeändert wird.
Unterstützte Aufgaben#
Der Huawei Ascend Export unterstützt alle sieben Ultralytics Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Familie, die diese Köpfe mitbringt.
Unterstützte Geräte#
Übergebe das Ziel-SoC mit name; ATC backt es als --soc_version in die .om ein, daher muss es zu dem Board passen, auf das du deployst. Lokal kannst du für jedes SoC kompilieren, für das deine CANN-Installation Kernels bereitstellt. Ultralytics Platform unterstützt die Ziele Ascend310P1, Ascend310P3, Ascend310B1 und Ascend310B4.
name | Geräte | Lokaler Export | Plattform |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Nach Ascend exportieren: Konvertierung deines YOLO-Modells#
Der Ascend-Export erfordert das CANN-Toolkit, welches nur für Linux verfügbar ist. Der Compiler atc muss sich auf deinem PATH befinden – lade das CANN-Umgebungsskript vor dem Exportieren, z. B. source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Installation#
Installiere Ultralytics und installiere anschließend das CANN separat von Huawei.
# Install the required package for YOLO
pip install ultralyticsDas CANN-Toolkit wird von Huawei vertrieben und nicht automatisch installiert. Lade es von der Ascend Community-Download-Seite herunter oder verwende eines der offiziellen ascendai/cann Container-Images, die den ATC und seine Abhängigkeiten bündeln.
Der ATC kann nur für SoC-Familien kompilieren, deren Operator-Kernel installiert sind. Ein Toolkit, das nur ascend310p-Kernel enthält, schlägt mit No supported Ops kernel and engine are found for ... Conv2D fehl, wenn ein Ascend310B4-Ziel angefordert wird. Installiere das passende Ascend-cann-kernels-<soc>-Paket für das Gerät, auf dem du bereitstellst.
Verwendung#
Das Ascend-Format unterstützt die Modi Export, Predict und Validate. Inferenz und Validierung werden auf Ascend-Hardware ausgeführt. Exportiere dein Modell und lade dann das exportierte Modell, um die Inferenz auszuführen oder dessen Genauigkeit zu validieren.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to Ascend format for an Atlas 200I / OrangePi AIPro board
model.export(format="ascend", name="Ascend310B4")
# Load the exported Ascend model and run inference on the device
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")Export-Argumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'ascend' | Zielformat für das exportierte Modell, das die Kompatibilität mit Ascend-KI-Prozessoren definiert. |
name | str | 'Ascend310B4' | Ziel-SoC, das als --soc_version an den ATC übergeben wird, z. B. Ascend310P3. Jedes SoC, für das deine CANN-Installation Kernel besitzt, ist gültig; siehe Supported Devices. Muss mit deinem Bereitstellungsgerät übereinstimmen. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe, die als statische Form in das .om eingebettet wird. |
batch | int | 1 | Statische Batch-Größe, die in das Offline-Modell kompiliert wird. |
quantize | int | 16 | Quantisierungsgenauigkeit. Der Ascend-Export ist auf FP16 beschränkt und aktiviert 16 automatisch, sofern nicht anders angegeben. Ersetzt die veralteten Flags half/int8. |
opset | int | 17 | ONNX-Opset für den Zwischengraphen. Begrenzt auf 17, die höchste Version, die der CANN ONNX-Parser akzeptiert. |
simplify | bool | True | Vereinfacht den intermediären ONNX-Graphen mit onnxslim. |
nms | bool | False | Fügt Non-Maximum Suppression zu unterstützten Detektions-, Segmentierungs-, Pose- und OBB-Modellen hinzu. |
Der Ascend AI Core akzeptiert nur Eingaben in den Formaten DT_FLOAT16 und DT_INT8 für Faltungen, sodass ein Offline-Modell in FP32 nicht auf der Hardware ausgeführt werden kann. Das Anfordern von quantize=32 löst einen Fehler aus, anstatt stillschweigend ein Modell zu erzeugen, das nicht ausgeführt wird.
Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.
Ausgabestruktur#
Nach einem erfolgreichen Export wird ein Modellverzeichnis mit der folgenden Struktur erstellt:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)Die Datei .om ist das kompilierte Offline-Modell, das die CANN-Laufzeitumgebung auf dem Gerät lädt. Ihr Name enthält das Ziel-SoC, damit das Artefakt selbsterklärend ist; behalte nur ein .om pro Verzeichnis bei, da das Ladeprogramm das einzige dort vorgefundene Modell auswählt. Das metadata.yaml enthält Klassennamen, Bildgröße und andere Informationen, die von der Ultralytics-Inferenz-Pipeline verwendet werden.
Bereitstellung exportierter YOLO Ascend-Modelle#
Sobald du dein Ultralytics YOLO-Modell erfolgreich in das Ascend-Format exportiert hast, besteht der nächste Schritt in der Bereitstellung auf Ascend-Hardware.
Installation der Laufzeitumgebung#
Die Inferenz erfordert die CANN-Laufzeitumgebung auf dem Gerät sowie das Python-Paket ais_bench, welches die pyACL-Bindings von CANN umschließt. Baue und installiere es aus dem Huawei Ascend Tools-Repository:
# On the Ascend device, with CANN installed and sourced
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# Build and install the ais_bench inference wheel
git clone https://gitee.com/ascend/tools.git
cd tools/ais-bench_workload/tool/ais_bench
pip3 wheel ./backend -v
pip3 install ./aclruntime-*.whl
pip3 wheel ./ -v
pip3 install ./ais_bench-*.whlKopiere das exportierte Verzeichnis yolo26n_ascend_model auf das Gerät und führe die Inferenz dann genau so aus wie mit jedem anderen Ultralytics-Format.
Empfohlener Arbeitsablauf#
- Trainiere dein Modell mit dem Ultralytics Train Mode oder starte von einem vortrainierten Checkpoint.
- Exportiere nach Ascend auf einem beliebigen Linux-Host mit installiertem CANN, indem du das
nameübergibst, das zu deinem Ziel-SoC passt. - Kopiere das exportierte Modellverzeichnis auf das Ascend-Gerät.
- Stelle bereit mit der CANN-Laufzeitumgebung und
ais_benchfür die geräteinterne Inferenz.
Anwendungen in der Praxis#
YOLO-Modelle, die auf Ascend-Hardware laufen, eignen sich für eine Vielzahl von eingebetteten und industriellen Vision-Anwendungen:
- Industrielle Automatisierung: Hochgeschwindigkeits-Qualitätsprüfung und Fehlererkennung an Produktionslinien.
- Smart Surveillance: Objekterkennung mit mehreren Kameras in Echtzeit an Edge-Gateways ohne zentralen Server.
- Robotik: On-Board-Wahrnehmung für autonome mobile Roboter und kollaborative Roboterarme.
- Smart Cities: Verkehrsüberwachung und Fußgängeranalyse an energieeffizienten Straßeneinheiten.
Zusammenfassung#
In diesem Leitfaden hast du gelernt, wie man Ultralytics YOLO auf Huawei Ascend NPUs trainiert und Modelle mit dem CANN ATC-Compiler in das Ascend-Format .om exportiert. Der Export läuft vollständig auf dem Host, erzeugt ein in sich geschlossenes Modellverzeichnis und adressiert jedes unterstützte Ascend-SoC über ein einziges Argument name.
Weitere Details zur Verwendung findest du in der offiziellen CANN-Dokumentation.
Wenn du mehr über andere Ultralytics YOLO-Integrationen erfahren möchtest, besuche außerdem unsere Integrationsanleitungsseite, um viele hilfreiche Ressourcen zu finden.
FAQ#
Installiere Ultralytics und das CANN-Toolkit, lade die CANN-Umgebung, sodass sich
atcauf deinemPATHbefindet, und exportiere dann mitmodel.export(format="ascend", name="Ascend310B4")in Python oderyolo export model=yolo26n.pt format=ascend name=Ascend310B4über die CLI. Setzenameauf das SoC deines Bereitstellungsgeräts.Nein. Der ATC-Compiler läuft vollständig auf dem Host, sodass die Kompilierung auf einem Standard-Linux-Rechner (x86-64 oder ARM64) ohne angeschlossene NPU funktioniert. Du benötigst Ascend-Hardware nur, um die Inferenz auf dem exportierten
.omauszuführen.Deine CANN-Installation enthält keine Operator-Kernel für das von dir angeforderte SoC. Jedes Toolkit bündelt Kernel für bestimmte SoC-Familien; installiere daher das Paket
Ascend-cann-kernels-<soc>, das zu deinem Ziel passt, oder verwende ein Container-Image, das für diese Gerätefamilie erstellt wurde.Faltungen im Ascend AI Core akzeptieren nur Tensoren im Format
DT_FLOAT16undDT_INT8. Ein FP32-Offline-Modell würde bei der Ausführung auf der Hardware fehlschlagen, weshalb der Exporter mit--precision_mode=force_fp16kompiliert und eine ausdrücklichequantize=32-Anfrage ablehnt.Jedes SoC, für das dein installiertes CANN-Toolkit Kernel bereitstellt, ausgewählt über das Argument
name. Siehe Supported Devices für die vier validierten Ziele und deren Verfügbarkeit auf der Ultralytics Platform.