Intégration de Huawei Ascend pour Ultralytics YOLO#
Le déploiement de modèles de vision par ordinateur sur les processeurs IA Huawei Ascend nécessite leur compilation au format de modèle hors ligne .om, exécuté par l'Ascend AI Core. L'exportation des modèles Ultralytics YOLO vers Ascend te permet d'effectuer des inférences rapides et peu énergivores 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 (Architecture de calcul pour réseaux neuronaux), la pile de calcul hétérogène de Huawei. CANN fournit ATC (Compilateur de tenseurs Ascend), un outil côté hôte qui convertit un graphe ONNX standard en modèle hors ligne spécifique au matériel .om ciblant l'Ascend AI Core.
Comme ATC s'exécute entièrement sur l'hôte, tu peux compiler des modèles sur une machine Linux x86-64 ou ARM64 standard sans aucun matériel Ascend connecté, puis copier le fichier .om obtenu sur l'appareil cible pour effectuer l'inférence.
Entraîner sur des NPU Ascend#
Ultralytics prend en charge l'entraînement avec un ou plusieurs NPU avec torch_npu, notamment AMP, la validation, la création de points de contrôle, 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, puis initialise d'abord l'environnement CANN. Consulte la
section sur l'entraînement avec les NPU Ascend pour découvrir des exemples d'installation et d'utilisation.
Format d'exportation Ascend#
L'exportateur Ultralytics écrit d'abord un graphe ONNX intermédiaire, puis appelle 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 les métadonnées Ultralytics associées.
Fonctionnalités clés des modèles Ascend#
- AI Core dédié : les modèles compilés s'exécutent sur l'Ascend AI Core plutôt que sur le CPU hôte, offrant un débit nettement supérieur pour les pipelines de caméras en temps réel.
- Compilation côté hôte : ATC ne nécessite aucun NPU connecté ; l'exportation peut donc s'exécuter dans la CI, dans des conteneurs ou sur un ordinateur portable.
- ONNX en priorité : l'exportation ONNX standard d'Ultralytics alimente directement la chaîne d'outils CANN, sans format intermédiaire propriétaire.
- Formes statiques : la forme d'entrée est intégrée au
.omlors de la compilation, ce qui élimine la surcharge liée à la négociation de la forme au moment de l'exécution. - Ciblage de plusieurs appareils : le même graphe ONNX se compile pour tout 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 fournit ces têtes.
| Tâche | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Détection | ✅ | ✅ | ✅ |
| Segmentation | ✅ | ✅ | ✅ |
| Sémantique | ❌ | ❌ | ✅ |
| Profondeur | ❌ | ❌ | ✅ |
| Classification | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Appareils pris en charge#
Indique le SoC cible avec name ; ATC l'intègre au .om sous la forme --soc_version, qui doit donc correspondre à la carte sur laquelle tu déploies le modèle. En local, tu peux compiler pour tout SoC dont ton installation CANN fournit les noyaux. Ultralytics Platform prend en charge les cibles Ascend310P1, Ascend310P3, Ascend310B1 et Ascend310B4.
name | Appareils | Exportation locale | Plateforme |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Exporter vers Ascend : convertir ton modèle YOLO#
L'exportation Ascend nécessite la boîte à outils CANN, disponible uniquement sous Linux. Le compilateur atc doit se trouver dans ton PATH — initialise le script d'environnement CANN avant l'exportation, par exemple avec source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Installation#
Installe Ultralytics, puis installe séparément CANN depuis Huawei.
# Install the required package for YOLO
pip install ultralyticsLa 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 officielles ascendai/cann, qui intègrent ATC et ses dépendances.
ATC ne peut compiler que pour les familles de SoC dont les noyaux d'opérateurs sont installés. Une boîte à outils contenant uniquement les 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 à l'appareil sur lequel tu déploies le modèle.
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 effectuer une inférence ou valider sa précision.
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#
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
format | str | 'ascend' | Format cible du modèle exporté, définissant sa compatibilité avec les processeurs IA Ascend. |
name | str | 'Ascend310B4' | SoC cible transmis à ATC sous la forme --soc_version, par exemple Ascend310P3. Tout SoC pour lequel ton installation CANN possède des noyaux est valide ; consulte Appareils pris en charge. Il doit correspondre à l'appareil de déploiement. |
imgsz | int ou tuple | 640 | Taille d'image souhaitée pour l'entrée du modèle, intégrée au .om sous la forme d'une forme statique. |
batch | int | 1 | Taille de lot statique compilée dans le modèle hors ligne. |
quantize | int | 16 | Précision de quantification. L'exportation Ascend est limitée à FP16 et active automatiquement 16 si aucune valeur n'est indiquée. Remplace les indicateurs obsolètes half/int8. |
opset | int | 17 | Jeu d'opérateurs ONNX du graphe intermédiaire. Limité à 17, la version la plus élevée acceptée par l'analyseur ONNX de CANN. |
simplify | bool | True | Simplifie le graphe ONNX intermédiaire avec onnxslim. |
nms | bool | False | Ajoute la suppression des non-maxima aux modèles pris en charge de détection, de segmentation, de pose et d'OBB. |
L'Ascend AI Core n'accepte que des entrées DT_FLOAT16 et DT_INT8 pour les convolutions ; un modèle hors ligne FP32 ne peut donc pas s'exécuter sur le matériel. Demander quantize=32 génère une erreur plutôt que de produire silencieusement un modèle qui ne fonctionnerait pas.
Pour plus de détails sur le processus d’exportation, consulte la page de la documentation Ultralytics consacrée à 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 contient le SoC cible afin que l'artefact soit auto-descriptif ; conserve un seul .om par répertoire, car le chargeur sélectionne le seul modèle qu'il y trouve. Le metadata.yaml contient les noms de classes, la taille d'image et d'autres informations utilisées par le pipeline d'inférence Ultralytics.
Déployer des modèles YOLO Ascend exportés#
Une fois ton modèle Ultralytics YOLO exporté avec succès au format Ascend, l'étape suivante consiste à le déployer sur du matériel Ascend.
Installation de l’environnement d’exécution#
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-*.whlCopie le répertoire yolo26n_ascend_model exporté sur l'appareil, puis exécute l'inférence exactement comme avec n'importe quel autre format Ultralytics.
Flux de travail recommandé#
- Entraîne ton modèle avec le mode Entraînement d'Ultralytics, ou pars d'un point de contrôle préentraîné.
- Exporte vers Ascend sur n'importe quel hôte Linux où CANN est installé, en transmettant le
namecorrespondant à ton SoC cible. - Copie le répertoire du modèle exporté sur l'appareil Ascend.
- Déploie avec le runtime CANN et
ais_benchpour effectuer l'inférence sur l'appareil.
Applications concrètes#
Les modèles YOLO exécutés sur du matériel Ascend conviennent à un large éventail d'applications de vision embarquée et industrielle :
- Automatisation industrielle : inspection qualité à grande vitesse et détection des défauts sur les lignes de production.
- Surveillance intelligente : détection d'objets en temps réel avec plusieurs caméras sur des passerelles périphériques, sans serveur central.
- Robotique : perception embarquée pour les robots mobiles autonomes et les bras collaboratifs.
- Villes intelligentes : surveillance du trafic et analyse des piétons sur des unités routières basse consommation.
Résumé#
Dans ce guide, tu as appris à entraîner Ultralytics YOLO sur des NPU Huawei Ascend et à exporter des modèles au 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 tout SoC Ascend pris en charge grâce à un seul argument name.
Pour plus de détails sur l'utilisation, consulte la documentation officielle de CANN.
Si tu souhaites également en savoir plus sur les autres intégrations Ultralytics YOLO, consulte notre page du guide des intégrations pour trouver de nombreuses ressources utiles.
FAQ#
Non. Le compilateur ATC s'exécute entièrement sur l'hôte ; la compilation fonctionne donc sur une machine Linux x86-64 ou ARM64 standard sans NPU connecté. Tu as seulement besoin de matériel Ascend pour exécuter l'inférence sur le
.omexporté.Ton installation CANN ne contient pas les noyaux d'opérateurs correspondant au SoC demandé. Chaque boîte à outils regroupe les noyaux de familles de SoC spécifiques ; installe donc le paquet
Ascend-cann-kernels-<soc>correspondant à ta cible ou utilise une image de conteneur conçue pour cette famille d'appareils.Les convolutions de l'Ascend AI Core n'acceptent que les tenseurs
DT_FLOAT16etDT_INT8. Un modèle hors ligne FP32 ne pourrait pas s'exécuter sur le matériel ; l'exportateur compile donc avec--precision_mode=force_fp16et rejette une demande explicitequantize=32.Tout SoC pour lequel ta boîte à outils CANN installée fournit des noyaux, sélectionné via l'argument
name. Consulte Appareils pris en charge pour connaître les quatre cibles validées et leur disponibilité sur Ultralytics Platform.
Installe Ultralytics et la boîte à outils CANN, initialise l'environnement CANN afin que
atcsoit présent dans tonPATH, puis exporte avecmodel.export(format="ascend", name="Ascend310B4")en Python ouyolo export model=yolo26n.pt format=ascend name=Ascend310B4depuis la CLI. Définisnamesur le SoC de ton appareil de déploiement.