Huawei-Ascend-Integration für Ultralytics YOLO#
Für die Bereitstellung von Computer-Vision-Modellen auf Huawei Ascend-KI-Prozessoren müssen die Modelle in das Offline-Modellformat .om kompiliert werden, das vom Ascend AI Core ausgeführt wird. Durch den Export von Ultralytics YOLO-Modellen für Ascend kannst du schnelle Inferenz mit geringem Stromverbrauch auf Atlas-Entwicklerboards und OrangePi-AIPro-Geräten ausführen, die in der Robotik, bei industriellen Inspektionen und in intelligenten Kamerasystemen eingesetzt werden.
Was ist Huawei Ascend?#
Huawei Ascend ist eine Familie von KI-Prozessoren, die mit CANN (Rechenarchitektur für neuronale Netze), dem heterogenen Computing-Stack von Huawei, kombiniert werden. CANN umfasst ATC (Ascend-Tensor-Compiler), ein hostseitiges Werkzeug, das einen standardmäßigen ONNX-Graphen in ein hardwarespezifisches Offline-Modell .om für den Ascend AI Core umwandelt.
Da ATC vollständig auf dem Host ausgeführt wird, kannst du Modelle auf einem gewöhnlichen x86-64- oder ARM64-Linux-Rechner ohne angeschlossene Ascend-Hardware kompilieren und das resultierende .om anschließend zur Inferenz auf das Zielgerät kopieren.
Auf Ascend-NPUs trainieren#
Ultralytics unterstützt Einzel- und Mehrfach-NPU-Training mit torch_npu, einschließlich AMP, Validierung, Prüfpunkten, Fortsetzen und AutoBatch. Wähle mit device=npu:0 eine NPU oder mit device=npu:0,1 mehrere NPUs aus; für verteiltes Training wird HCCL verwendet. Installiere zueinander passende Versionen von CANN, PyTorch und torch_npu und richte zuerst die CANN-Umgebung ein. Installations- und Anwendungsbeispiele findest du im Abschnitt zum Ascend-NPU-Training.
Ascend-Exportformat#
Der Ultralytics-Exporter schreibt zunächst einen zwischengeschalteten ONNX-Graphen und ruft dann ATC auf, um ihn für das mit dem Argument name angegebene SoC zu kompilieren. Das Ergebnis ist ein eigenständiges Modellverzeichnis mit der Binärdatei .om und den Ultralytics-Metadaten.
Wichtige Merkmale von Ascend-Modellen#
- Dedizierter AI Core: Kompilierte Modelle werden auf dem Ascend AI Core statt auf der Host-CPU ausgeführt. Dadurch erzielen Echtzeit-Kamerapipelines einen deutlich höheren Durchsatz.
- Kompilierung auf dem Host: ATC benötigt keine angeschlossene NPU, sodass der Export in CI, in Containern oder auf einem Laptop ausgeführt werden kann.
- ONNX als Ausgangspunkt: Der standardmäßige Ultralytics-ONNX-Export wird ohne proprietäres Zwischenformat direkt in die CANN-Toolchain eingespeist.
- Statische Formen: Die Eingabeform wird beim Kompilieren in
.omfestgelegt, wodurch der Aufwand für die Laufzeitabstimmung der Formen entfällt. - Unterstützung mehrerer Geräte: Derselbe ONNX-Graph lässt sich für jedes unterstützte SoC kompilieren, indem du
nameänderst.
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 Modellfamilie mit diesen Heads.
| Aufgabe | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Erkennung | ✅ | ✅ | ✅ |
| Segmentierung | ✅ | ✅ | ✅ |
| Semantik | ❌ | ❌ | ✅ |
| Tiefe | ❌ | ❌ | ✅ |
| Klassifizierung | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Unterstützte Geräte#
Gib das Ziel-SoC mit name an. ATC legt es als --soc_version in .om fest; deshalb muss es zum Zielboard passen. Lokal kannst du für jedes SoC kompilieren, für das deine CANN-Installation Kernel bereitstellt. Die 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 8T, Atlas 200I A2 (8 TOPS) | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 20T, Atlas 200I A2 (20 TOPS) | ✅ | ✅ |
Nach Ascend exportieren: YOLO-Modell umwandeln#
Für den Ascend-Export ist das CANN-Toolkit erforderlich, das nur unter Linux verfügbar ist. Der Compiler atc muss sich in deinem PATH befinden – richte vor dem Export die CANN-Umgebung mit dem Skript ein, z. B. source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Installation#
Installiere Ultralytics und anschließend CANN separat von Huawei.
# Install the required package for YOLO
pip install ultralyticsDas CANN-Toolkit wird von Huawei bereitgestellt und nicht automatisch installiert. Lade es von der Ascend-Community-Downloadseite herunter oder verwende eines der offiziellen ascendai/cann-Container-Images, die ATC und seine Abhängigkeiten enthalten.
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 es für ein Ziel vom Typ Ascend310B4 verwendet wird. Installiere das passende Paket Ascend-cann-kernels-<soc> für das Gerät, auf dem du die Anwendung bereitstellst.
Verwendung#
Das Ascend-Format unterstützt die Modi Export, Vorhersage und Validierung. Inferenz und Validierung werden auf Ascend-Hardware ausgeführt. Exportiere dein Modell und lade anschließend das exportierte Modell, um Inferenz auszuführen oder seine Genauigkeit zu validieren.
from ultralytics import YOLO
# Ein YOLO26-Modell laden
model = YOLO("yolo26n.pt")
# Das Modell für ein Atlas 200I-/OrangePi-AIPro-Board ins Ascend-Format exportieren
model.export(format="ascend", name="Ascend310B4")
# Das exportierte Ascend-Modell laden und Inferenz auf dem Gerät ausführen
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")Exportargumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'ascend' | Zielformat des exportierten Modells, das die Kompatibilität mit Ascend AI-Prozessoren festlegt. |
name | str | 'Ascend310B4' | Als Ziel-SoC wird ATC --soc_version übergeben, z. B. Ascend310P3. Jeder SoC, für den deine CANN-Installation Kernel enthält, ist geeignet; siehe Unterstützte Geräte. Er muss zu deinem Bereitstellungsgerät passen. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe, die als statische Form in .om festgelegt wird. |
batch | int | 1 | Statische Batchgröße, die in das Offline-Modell kompiliert wird. |
quantize | int | 16 | Quantisierungsgenauigkeit. Der Ascend-Export unterstützt nur FP16 und aktiviert automatisch 16, sofern nicht anders angegeben. Ersetzt die veralteten Flags half/int8. |
opset | int | 17 | ONNX-Opset für den Zwischengraphen. Auf 17 begrenzt, die höchste Version, die der CANN-ONNX-Parser akzeptiert. |
simplify | bool | True | Vereinfacht den zwischengeschalteten ONNX-Graphen mit onnxslim. |
nms | bool, optional | None | Wähle die Rohausgabe (None, Standard), eingebettetes NMS (True) oder den NMS-freien Kopf (False). |
device | str | None | Gerät für den Zwischenschritt des ONNX-Exports, standardmäßig CPU (device=cpu). Die ATC-Kompilierung verwendet es nicht. |
Der Ascend AI Core akzeptiert für Faltungen nur Eingaben im Format DT_FLOAT16 und DT_INT8, daher kann ein FP32-Offline-Modell nicht auf der Hardware ausgeführt werden. Wenn du quantize=32 anforderst, wird ein Fehler ausgelöst, anstatt stillschweigend ein nicht ausführbares Modell zu erzeugen.
Weitere Informationen zum Exportvorgang findest du auf der Ultralytics-Dokumentationsseite zum Export.
Ausgabestruktur#
Nach einem erfolgreichen Export wird ein Modellverzeichnis mit folgender 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-Laufzeit auf dem Gerät lädt. Der Name enthält den Ziel-SoC, damit das Artefakt sich selbst beschreibt. Lege pro Verzeichnis nur eine .om ab, da der Loader das einzelne dort vorhandene Modell auswählt. metadata.yaml enthält Klassennamen, Bildgröße und weitere Informationen, die die Ultralytics-Inferenzpipeline verwendet.
Exportierte YOLO-Ascend-Modelle bereitstellen#
Nachdem du dein Ultralytics-YOLO-Modell erfolgreich ins Ascend-Format exportiert hast, besteht der nächste Schritt darin, es auf Ascend-Hardware bereitzustellen.
Installation der Laufzeitumgebung#
Für die Inferenz werden die CANN-Laufzeit auf dem Gerät und das Python-Paket ais_bench benötigt, das die pyACL-Bindings von CANN kapselt. Erstelle und installiere es aus dem Ascend-Tools-Repository von Huawei:
# 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 genauso aus wie mit jedem anderen Ultralytics-Format.
Empfohlener Arbeitsablauf#
- Trainiere dein Modell mit dem Ultralytics-Trainingsmodus oder beginne mit einem vortrainierten Checkpoint.
- Exportiere das Modell auf einem beliebigen Linux-Host mit installiertem CANN nach Ascend und übergib
name, passend zum Ziel-SoC. - Kopiere das exportierte Modellverzeichnis auf das Ascend-Gerät.
- Stelle das Modell mit der CANN-Laufzeit und
ais_benchfür die Inferenz auf dem Gerät bereit.
Anwendungen in der Praxis#
YOLO-Modelle auf Ascend-Hardware eignen sich für zahlreiche eingebettete und industrielle Bildverarbeitungsanwendungen:
- Industrielle Automatisierung: Hochgeschwindigkeits-Qualitätsprüfung und Fehlererkennung an Fertigungslinien.
- Intelligente Videoüberwachung: Objekterkennung in Echtzeit mit mehreren Kameras auf Edge-Gateways ohne zentralen Server.
- Robotik: Bordsysteme zur Wahrnehmung für autonome mobile Roboter und kollaborative Roboterarme.
- Intelligente Städte: Verkehrsüberwachung und Fußgängeranalyse auf stromsparenden Straßenrandgeräten.
Zusammenfassung#
In dieser Anleitung hast du gelernt, wie du Ultralytics YOLO auf Huawei-Ascend-NPUs trainierst und Modelle mit dem CANN-ATC-Compiler in das Ascend-Format .om exportierst. Der Export wird vollständig auf dem Host ausgeführt, erzeugt ein eigenständiges Modellverzeichnis und unterstützt jeden Ascend-SoC über ein einziges Argument name.
Weitere Informationen zur Verwendung findest du in der offiziellen CANN-Dokumentation.
Wenn du außerdem mehr über andere Ultralytics-YOLO-Integrationen erfahren möchtest, findest du auf unserer Seite mit Integrationsanleitungen zahlreiche hilfreiche Ressourcen.
Häufig gestellte Fragen#
Installiere Ultralytics und das CANN-Toolkit, lade die CANN-Umgebung, damit
atcin deinemPATHverfügbar ist, und exportiere dann mitmodel.export(format="ascend", name="Ascend310B4")in Python oder mityolo export model=yolo26n.pt format=ascend name=Ascend310B4über die CLI. Setzenameauf den SoC deines Bereitstellungsgeräts.Nein. Der ATC-Compiler wird vollständig auf dem Host ausgeführt. Daher funktioniert die Kompilierung auf einem gewöhnlichen x86-64- oder ARM64-Linux-Rechner ohne angeschlossene NPU. Ascend-Hardware benötigst du nur, um Inferenz mit dem exportierten
.omauszuführen.Deine CANN-Installation enthält keine Operator-Kernel für den angeforderten SoC. Jedes Toolkit enthält Kernel für bestimmte SoC-Familien. Installiere daher das zum Ziel passende Paket
Ascend-cann-kernels-<soc>oder verwende ein Container-Image, das für diese Gerätefamilie erstellt wurde.Faltungen auf dem Ascend AI Core akzeptieren nur Tensoren im Format
DT_FLOAT16undDT_INT8. Ein FP32-Offline-Modell könnte nicht auf der Hardware ausgeführt werden. Deshalb kompiliert der Exporter mit--precision_mode=force_fp16und weist eine ausdrückliche Anforderung vonquantize=32zurück.Jeder SoC, für den dein installiertes CANN-Toolkit Kernel bereitstellt; die Auswahl erfolgt über das Argument
name. Unter Unterstützte Geräte findest du die vier validierten Ziele und ihre Verfügbarkeit auf der Ultralytics Platform.