YOLO Vision 2026 :

Intégration Huawei Ascend pour Ultralytics YOLO#

Déployer des modèles de vision par ordinateur sur des processeurs IA Huawei Ascend nécessite de les compiler au format de modèle hors ligne .om exécuté par l'Ascend AI Core. Exporter des modèles Ultralytics YOLO vers Ascend te permet d'exécuter une inférence rapide et à faible consommation sur les cartes de développement Atlas et les appareils OrangePi AIPro utilisés dans la robotique, l'inspection industrielle et les déploiements de caméras intelligentes.

Qu'est-ce que Huawei Ascend ?#

Huawei Ascend est une famille de processeurs IA associée à CANN (Compute Architecture for Neural Networks), la pile de calcul hétérogène de Huawei. CANN intègre le ATC (Ascend Tensor Compiler), un outil côté hôte qui convertit un graphe ONNX standard en un modèle hors ligne .om spécifique au matériel ciblant l'Ascend AI Core.

Étant donné que l'ATC s'exécute entièrement sur l'hôte, tu peux compiler des modèles sur une machine Linux x86-64 ou ARM64 classique sans aucun matériel Ascend connecté, puis copier le .om résultant sur l'appareil cible pour l'inférence.

Entraîner sur des NPU Ascend#

Ultralytics prend en charge l'entraînement sur un ou plusieurs NPU avec torch_npu, incluant l'AMP, la validation, la création de points de contrôle (checkpointing), la reprise et AutoBatch. Sélectionne un NPU avec device=npu:0 ou plusieurs NPU avec device=npu:0,1 ; l'entraînement distribué utilise HCCL. Installe des versions compatibles de CANN, PyTorch et torch_npu et source d'abord l'environnement CANN. Consulte la section d'entraînement sur NPU Ascend pour des exemples d'installation et d'utilisation.

Format d'exportation Ascend#

L'exportateur Ultralytics écrit d'abord un graphe ONNX intermédiaire, puis invoque l'ATC pour le compiler pour le SoC que tu cibles avec l'argument name. Le résultat est un répertoire de modèle autonome contenant le binaire .om et ses métadonnées Ultralytics.

Fonctionnalités clés des modèles Ascend#

  • Cœur d'IA dédié : Les modèles compilés s'exécutent sur l'Ascend AI Core plutôt que sur le processeur hôte, offrant un débit nettement supérieur pour les pipelines de caméras en temps réel.
  • Compilation côté hôte : L'ATC ne nécessite aucun NPU connecté, l'exportation s'exécute donc dans la CI, dans des conteneurs ou sur un ordinateur portable.
  • ONNX d'abord : L'exportation ONNX d'Ultralytics standard s'intègre directement dans la chaîne d'outils CANN sans aucun format intermédiaire propriétaire.
  • Formes statiques : La forme d'entrée est intégrée dans le .om au moment de la compilation, ce qui supprime la surcharge de négociation de forme à l'exécution.
  • Ciblage multi-appareil : Le même graphe ONNX se compile pour n'importe quel SoC pris en charge en modifiant name.

Tâches prises en charge#

L'exportation Huawei Ascend prend en charge les sept tâches Ultralytics. La segmentation sémantique et l'estimation de profondeur sont disponibles uniquement avec YOLO26, la seule famille qui intègre ces têtes.

TâcheYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Appareils pris en charge#

Passe le SoC cible avec name ; l'ATC l'intègre dans le .om en tant que --soc_version, il doit donc correspondre à la carte sur laquelle tu effectues le déploiement. Localement, tu peux compiler pour n'importe quel SoC pour lequel ton installation CANN fournit des noyaux (kernels). Ultralytics Platform prend en charge les cibles Ascend310P1, Ascend310P3, Ascend310B1 et Ascend310B4.

nameAppareilsExportation localePlateforme
Ascend310P3Atlas 300I Pro, Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T, Atlas 200I A2
Ascend310B1OrangePi AIPro 8T

Exporter vers Ascend : Conversion de ton modèle YOLO#

Remarque

L'exportation Ascend nécessite la boîte à outils CANN, qui est réservée à Linux. Le compilateur atc doit se trouver dans ton PATH — source le script d'environnement CANN avant d'exporter, par exemple source /usr/local/Ascend/ascend-toolkit/set_env.sh.

Installation#

Installe Ultralytics, puis installe CANN séparément depuis Huawei.

Installation
# Install the required package for YOLO
pip install ultralytics

La boîte à outils CANN est distribuée par Huawei et n'est pas installée automatiquement. Télécharge-la depuis la page de téléchargement de la communauté Ascend ou utilise l'une des images de conteneur ascendai/cann officielles, qui regroupent l'ATC et ses dépendances.

Fais correspondre la boîte à outils à ton SoC cible

L'ATC ne peut compiler que pour les familles de SoC dont les noyaux d'opérateurs sont installés. Une boîte à outils ne contenant que des noyaux ascend310p échoue avec No supported Ops kernel and engine are found for ... Conv2D lorsqu'on lui demande une cible Ascend310B4. Installe le paquet Ascend-cann-kernels-<soc> correspondant pour l'appareil sur lequel tu effectues le déploiement.

Utilisation#

Le format Ascend prend en charge les modes Export, Predict et Validate. L'inférence et la validation s'exécutent sur le matériel Ascend. Exporte ton modèle, puis charge le modèle exporté pour exécuter l'inférence ou valider sa précision.

Exporter (Export)
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")

Arguments d'exportation#

ArgumentTypeDéfautDescription
formatstr'ascend'Format cible pour le modèle exporté, définissant la compatibilité avec les processeurs d'IA Ascend.
namestr'Ascend310B4'SoC cible transmis à l'ATC sous la forme --soc_version, par exemple Ascend310P3. Tout SoC pour lequel ton installation CANN dispose de noyaux est valide ; voir Appareils pris en charge. Doit correspondre à ton appareil de déploiement.
imgszint ou tuple640Taille d'image souhaitée pour l'entrée du modèle, intégrée dans le .om sous forme de forme statique.
batchint1Taille de lot statique compilée dans le modèle hors ligne.
quantizeint16Précision de quantification. L'exportation Ascend est exclusivement en FP16 et active automatiquement 16 si elle n'est pas spécifiée. Remplace les indicateurs dépréciés half/int8.
opsetint17Ensemble d'opérations ONNX pour le graphe intermédiaire. Plafonné à 17, la version la plus élevée acceptée par l'analyseur ONNX de CANN.
simplifyboolTrueSimplifie le graphe ONNX intermédiaire avec onnxslim.
nmsboolFalseAjoute la suppression non maximale (NMS) aux modèles pris en charge de détection, segmentation, pose et OBB.
Pourquoi le FP32 n'est-il pas disponible ?

L'Ascend AI Core n'accepte que les entrées DT_FLOAT16 et DT_INT8 pour les convolutions, de sorte qu'un modèle hors ligne FP32 ne peut pas s'exécuter sur le matériel. Demander quantize=32 déclenche une erreur plutôt que de produire silencieusement un modèle qui ne s'exécutera pas.

Pour plus de détails sur le processus d'exportation, visite la page de documentation d'Ultralytics sur l'exportation.

Structure de sortie#

Après une exportation réussie, un répertoire de modèle est créé avec la structure suivante :

yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om  # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml           # Model metadata (classes, image size, task, etc.)

Le fichier .om est le modèle hors ligne compilé que le runtime CANN charge sur l'appareil. Son nom porte le SoC cible afin que l'artefact soit auto-descriptif ; conserve un seul .om par répertoire, car le chargeur sélectionne le modèle unique qu'il y trouve. Le metadata.yaml contient les noms de classes, la taille de l'image et d'autres informations utilisées par le pipeline d'inférence Ultralytics.

Déploiement de modèles YOLO Ascend exportés#

Une fois que tu as exporté avec succès ton modèle Ultralytics YOLO au format Ascend, l'étape suivante consiste à le déployer sur le matériel Ascend.

Installation du runtime#

L'inférence nécessite le runtime CANN sur l'appareil ainsi que le paquet Python ais_bench, qui encapsule les liaisons pyACL de CANN. Compile-le et installe-le depuis le dépôt d'outils Ascend de 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-*.whl

Copie le répertoire yolo26n_ascend_model exporté sur l'appareil, puis exécute l'inférence exactement comme tu le ferais avec n'importe quel autre format Ultralytics.

Flux de travail recommandé#

  1. Entraîne (Train) ton modèle en utilisant le mode d'entraînement d'Ultralytics, ou commence à partir d'un point de contrôle pré-entraîné.
  2. Exporte vers Ascend sur n'importe quel hôte Linux doté de CANN, en passant le name qui correspond à ton SoC cible.
  3. Copie le répertoire du modèle exporté sur l'appareil Ascend.
  4. Déploie avec le runtime CANN et ais_bench pour une inférence sur l'appareil.

Applications concrètes#

Les modèles YOLO s'exécutant sur le matériel Ascend conviennent à un large éventail d'applications de vision embarquée et industrielle :

  • Automatisation industrielle : Inspection de qualité à grande vitesse et détection de défauts sur les lignes de production.
  • Surveillance intelligente : Détection d'objets multi-caméras en temps réel sur des passerelles de périphérie sans serveur central.
  • Robotique : Perception embarquée pour les robots mobiles autonomes et les bras collaborateurs.
  • Villes intelligentes : Surveillance du trafic et analyse des piétons sur des unités de bord de route à faible consommation.

Résumé#

Dans ce guide, tu as appris à entraîner Ultralytics YOLO sur des NPU Huawei Ascend et à exporter des modèles vers le format Ascend .om à l'aide du compilateur CANN ATC. L'exportation s'exécute entièrement sur l'hôte, produit un répertoire de modèle autonome et cible n'importe quel SoC Ascend pris en charge via un seul argument name.

Pour plus de détails sur l'utilisation, visite la documentation officielle de CANN.

De plus, si tu souhaites en savoir plus sur les autres intégrations d'Ultralytics YOLO, visite notre page de guide d'intégration pour trouver de nombreuses ressources utiles.

FAQ#

  • Installe Ultralytics et la boîte à outils CANN, source l'environnement CANN pour que atc soit dans ton PATH, puis exporte avec model.export(format="ascend", name="Ascend310B4") en Python ou yolo export model=yolo26n.pt format=ascend name=Ascend310B4 depuis la CLI. Définis name sur le SoC de ton appareil de déploiement.

  • Non. Le compilateur ATC s'exécute entièrement sur l'hôte, de sorte que la compilation fonctionne sur une machine Linux x86-64 ou ARM64 standard sans aucun NPU connecté. Tu as seulement besoin de matériel Ascend pour exécuter l'inférence sur le .om exporté.

  • Ton installation CANN ne contient pas de noyaux d'opérateurs pour le SoC que tu as demandé. Chaque boîte à outils regroupe des noyaux pour des familles de SoC spécifiques, alors installe le paquet Ascend-cann-kernels-<soc> correspondant à ta cible, ou utilise une image de conteneur construite pour cette famille d'appareils.

  • Les convolutions de l'Ascend AI Core n'acceptent que les tenseurs DT_FLOAT16 et DT_INT8. Un modèle hors ligne FP32 ne parviendrait pas à s'exécuter sur le matériel, l'exportateur compile donc avec --precision_mode=force_fp16 et rejette une requête explicite quantize=32.

  • N'importe quel SoC pour lequel ta boîte à outils CANN installée fournit des noyaux, sélectionné via l'argument name. Consulte la section Appareils pris en charge pour connaître les quatre cibles validées et leur disponibilité sur Ultralytics Platform.

Contributeurs

Commentaires