Integrazione di Huawei Ascend per Ultralytics YOLO#
Per distribuire modelli di visione artificiale sui processori AI Huawei Ascend è necessario compilarli nel formato di modello offline .om, eseguito dall'Ascend AI Core. L'esportazione dei modelli Ultralytics YOLO su Ascend ti consente di eseguire inferenze veloci e a basso consumo sulle schede di sviluppo Atlas e sui dispositivi OrangePi AIPro utilizzati in applicazioni di robotica, ispezione industriale e telecamere intelligenti.
Che cos'è Huawei Ascend?#
Huawei Ascend è una famiglia di processori AI abbinati a CANN (Architettura di calcolo per reti neurali), lo stack di calcolo eterogeneo di Huawei. CANN include ATC (Compilatore Tensor Ascend), uno strumento lato host che converte un grafo ONNX standard in un modello offline .om specifico per l'hardware e destinato all'Ascend AI Core.
Poiché ATC viene eseguito interamente sull'host, puoi compilare i modelli su una normale macchina Linux x86-64 o ARM64 senza alcun hardware Ascend collegato, quindi copiare il modello .om risultante sul dispositivo di destinazione per l'inferenza.
Addestra su NPU Ascend#
Ultralytics supporta l'addestramento su una o più NPU con torch_npu, inclusi AMP, convalida, salvataggio dei checkpoint, ripresa e
AutoBatch. Seleziona una NPU con device=npu:0 o più NPU con device=npu:0,1; l'addestramento distribuito utilizza HCCL.
Installa versioni compatibili di CANN, PyTorch e torch_npu e configura innanzitutto l'ambiente CANN. Consulta la
sezione sull'addestramento su NPU Ascend per esempi di installazione e utilizzo.
Formato di esportazione Ascend#
L'esportatore Ultralytics scrive innanzitutto un grafo ONNX intermedio, quindi richiama ATC per compilarlo per il SoC di destinazione specificato con l'argomento name. Il risultato è una directory di modelli autonoma contenente il binario .om e i relativi metadati Ultralytics.
Funzionalità principali dei modelli Ascend#
- AI Core dedicato: i modelli compilati vengono eseguiti sull'Ascend AI Core anziché sulla CPU host, offrendo un throughput notevolmente superiore per le pipeline di telecamere in tempo reale.
- Compilazione lato host: ATC non richiede una NPU collegata, quindi l'esportazione può essere eseguita in CI, nei container o su un laptop.
- ONNX come base: l'esportazione ONNX standard di Ultralytics alimenta direttamente la toolchain CANN senza alcun formato intermedio proprietario.
- Shape statiche: la shape di input viene incorporata in
.omal momento della compilazione, eliminando l'overhead della negoziazione delle shape a runtime. - Destinazione per più dispositivi: lo stesso grafo ONNX viene compilato per qualsiasi SoC supportato modificando
name.
Attività supportate#
L'esportazione Huawei Ascend supporta tutti e sette i task Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste head.
| Attività | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Rilevamento | ✅ | ✅ | ✅ |
| Segmentazione | ✅ | ✅ | ✅ |
| Semantica | ❌ | ❌ | ✅ |
| Profondità | ❌ | ❌ | ✅ |
| Classificazione | ✅ | ✅ | ✅ |
| Posa | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Dispositivi supportati#
Passa il SoC di destinazione con name; ATC lo incorpora in .om come --soc_version, quindi deve corrispondere alla scheda su cui esegui il deployment. In locale puoi compilare per qualsiasi SoC per cui la tua installazione CANN fornisce i kernel. Ultralytics Platform supporta le destinazioni Ascend310P1, Ascend310P3, Ascend310B1 e Ascend310B4.
name | Dispositivi | Esportazione locale | Piattaforma |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Esporta su Ascend: converti il tuo modello YOLO#
L'esportazione su Ascend richiede il toolkit CANN, disponibile solo su Linux. Il compilatore atc deve trovarsi nel tuo PATH: configura lo script dell'ambiente CANN prima dell'esportazione, ad esempio source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Installazione#
Installa Ultralytics, quindi installa CANN separatamente da Huawei.
# Install the required package for YOLO
pip install ultralyticsIl toolkit CANN è distribuito da Huawei e non viene installato automaticamente. Scaricalo dalla pagina di download della community Ascend, oppure usa una delle immagini container ufficiali di ascendai/cann, che includono ATC e le relative dipendenze.
ATC può compilare solo per le famiglie di SoC per cui sono installati i kernel degli operatori. Un toolkit contenente solo i kernel ascend310p fallisce con No supported Ops kernel and engine are found for ... Conv2D quando gli viene richiesto un target Ascend310B4. Installa il pacchetto Ascend-cann-kernels-<soc> corrispondente al dispositivo su cui esegui il deployment.
Utilizzo#
Il formato Ascend supporta le modalità Export, Predict e Validate. L'inferenza e la convalida vengono eseguite sull'hardware Ascend. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza.
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")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'ascend' | Formato di destinazione per il modello esportato, che definisce la compatibilità con i processori AI Ascend. |
name | str | 'Ascend310B4' | SoC di destinazione passato ad ATC come --soc_version, ad esempio Ascend310P3. È valido qualsiasi SoC per cui l'installazione CANN dispone dei kernel; consulta Dispositivi supportati. Deve corrispondere al dispositivo di deployment. |
imgsz | int o tuple | 640 | Dimensione immagine desiderata per l'input del modello, incorporata in .om come shape statica. |
batch | int | 1 | Dimensione statica del batch compilata nel modello offline. |
quantize | int | 16 | Precisione della quantizzazione. L'esportazione Ascend supporta solo FP16 e abilita automaticamente 16 se non viene specificato. Sostituisce i flag deprecati half/int8. |
opset | int | 17 | Opset ONNX per il grafo intermedio. Limitato a 17, la versione più alta accettata dal parser ONNX di CANN. |
simplify | bool | True | Semplifica il grafo ONNX intermedio con onnxslim. |
nms | bool | False | Aggiunge la soppressione dei non massimi ai modelli supportati di rilevamento, segmentazione, posa e OBB. |
L'Ascend AI Core accetta solo input DT_FLOAT16 e DT_INT8 per le convoluzioni, quindi un modello offline FP32 non può essere eseguito sull'hardware. La richiesta di quantize=32 genera un errore invece di produrre silenziosamente un modello non eseguibile.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics sull'esportazione.
Struttura dell'output#
Dopo un'esportazione riuscita, viene creata una directory del modello con la seguente struttura:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)Il file .om è il modello offline compilato che il runtime CANN carica sul dispositivo. Il suo nome contiene il SoC di destinazione, rendendo l'artefatto auto-descrittivo; mantieni un solo .om per directory, poiché il loader seleziona l'unico modello che trova al suo interno. Il file metadata.yaml contiene i nomi delle classi, la dimensione dell'immagine e altre informazioni utilizzate dalla pipeline di inferenza Ultralytics.
Distribuzione dei modelli YOLO Ascend esportati#
Dopo aver esportato correttamente il tuo modello Ultralytics YOLO nel formato Ascend, il passaggio successivo consiste nel distribuirlo sull'hardware Ascend.
Installazione del runtime#
L'inferenza richiede il runtime CANN sul dispositivo e il pacchetto Python ais_bench, che integra i binding pyACL di CANN. Compilalo e installalo dal repository degli strumenti Ascend di 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-*.whlCopia la directory yolo26n_ascend_model esportata sul dispositivo, quindi esegui l'inferenza esattamente come faresti con qualsiasi altro formato Ultralytics.
Flusso di lavoro consigliato#
- Addestra il tuo modello utilizzando la Modalità di addestramento di Ultralytics, oppure parti da un checkpoint pre-addestrato.
- Esporta su Ascend da qualsiasi host Linux con CANN installato, passando
namein corrispondenza del SoC di destinazione. - Copia la directory del modello esportato sul dispositivo Ascend.
- Esegui il deployment con il runtime CANN e
ais_benchper l'inferenza sul dispositivo.
Applicazioni nel mondo reale#
I modelli YOLO eseguiti sull'hardware Ascend sono adatti a un'ampia gamma di applicazioni di visione embedded e industriale:
- Automazione industriale: ispezione della qualità ad alta velocità e rilevamento dei difetti sulle linee di produzione.
- Videosorveglianza intelligente: rilevamento di oggetti in tempo reale con più telecamere sui gateway edge, senza un server centrale.
- Robotica: percezione a bordo per robot mobili autonomi e bracci collaborativi.
- Città intelligenti: monitoraggio del traffico e analisi dei pedoni su unità stradali a basso consumo.
Riepilogo#
In questa guida hai imparato ad addestrare Ultralytics YOLO sulle NPU Huawei Ascend e a esportare i modelli nel formato Ascend .om utilizzando il compilatore CANN ATC. L'esportazione viene eseguita interamente sull'host, produce una directory di modelli autonoma e supporta qualsiasi SoC Ascend compatibile tramite un singolo argomento name.
Per maggiori dettagli sull'utilizzo, visita la documentazione ufficiale di CANN.
Inoltre, se vuoi saperne di più sulle altre integrazioni Ultralytics YOLO, visita la nostra pagina della guida alle integrazioni per trovare numerose risorse utili.
FAQ#
Installa Ultralytics e il toolkit CANN, configura l'ambiente CANN in modo che
atcsi trovi nel tuoPATH, quindi esporta conmodel.export(format="ascend", name="Ascend310B4")in Python oyolo export model=yolo26n.pt format=ascend name=Ascend310B4dalla CLI. Impostanamesul SoC del dispositivo di deployment.No. Il compilatore ATC viene eseguito interamente sull'host, quindi la compilazione funziona su una macchina Linux standard x86-64 o ARM64 senza NPU collegata. Ti serve l'hardware Ascend solo per eseguire l'inferenza sul modello esportato
.om.La tua installazione CANN non include i kernel degli operatori per il SoC richiesto. Ogni toolkit include kernel per famiglie di SoC specifiche, quindi installa il pacchetto
Ascend-cann-kernels-<soc>corrispondente alla tua destinazione oppure usa un'immagine container compilata per quella famiglia di dispositivi.Le convoluzioni dell'Ascend AI Core accettano solo tensori
DT_FLOAT16eDT_INT8. Un modello offline FP32 non potrebbe essere eseguito sull'hardware, quindi l'esportatore compila con--precision_mode=force_fp16e rifiuta una richiesta esplicitaquantize=32.Qualsiasi SoC per cui il toolkit CANN installato fornisce i kernel, selezionato tramite l'argomento
name. Consulta Dispositivi supportati per le quattro destinazioni convalidate e la loro disponibilità su Ultralytics Platform.