Integrazione Huawei Ascend per Ultralytics YOLO#
La distribuzione di modelli di visione artificiale sui processori AI Huawei Ascend richiede la loro compilazione nel formato offline .om, eseguito dall'Ascend AI Core. L'esportazione dei modelli Ultralytics YOLO su Ascend consente di eseguire inferenze rapide e a basso consumo sulle schede di sviluppo Atlas e sui dispositivi OrangePi AIPro impiegati nella robotica, nell'ispezione industriale e nelle installazioni di 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 eseguito sull'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 collegare hardware Ascend, quindi copiare il .om risultante sul dispositivo target per l'inferenza.
Addestramento sulle NPU Ascend#
Ultralytics supporta l'addestramento su una o più NPU con torch_npu, inclusi AMP, convalida, salvataggio dei checkpoint, ripresa dell'addestramento e AutoBatch. Seleziona una NPU con device=npu:0 oppure più NPU con device=npu:0,1; l'addestramento distribuito usa HCCL. Installa versioni compatibili di CANN, PyTorch e torch_npu e, prima, carica l'ambiente CANN. Consulta la sezione sull'addestramento sulle NPU Ascend per esempi di installazione e utilizzo.
Formato di esportazione Ascend#
L'esportatore Ultralytics scrive prima un grafo ONNX intermedio, poi invoca ATC per compilarlo per il SoC target specificato con l'argomento name. Il risultato è una directory del modello autonoma contenente il file binario .om e i metadati Ultralytics.
Caratteristiche principali dei modelli Ascend#
- AI Core dedicato: i modelli compilati vengono eseguiti sull'Ascend AI Core anziché sulla CPU host, offrendo una velocità di elaborazione nettamente superiore per le pipeline di telecamere in tempo reale.
- Compilazione sull'host: ATC non richiede una NPU collegata, quindi l'esportazione può essere eseguita in CI, nei container o su un laptop.
- Basato su ONNX: l'esportazione ONNX standard di Ultralytics alimenta direttamente la toolchain CANN senza alcun formato intermedio proprietario.
- Forme statiche: la forma dell'input viene incorporata in
.omdurante la compilazione, eliminando l'overhead della negoziazione delle forme in fase di esecuzione. - Supporto di 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 | ✅ | ✅ | ✅ |
| Stima della posa | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Dispositivi supportati#
Passa il SoC target con name; ATC lo incorpora in .om come --soc_version, quindi deve corrispondere alla scheda su cui esegui la distribuzione. In locale puoi compilare per qualsiasi SoC per cui l'installazione CANN fornisce kernel. Ultralytics Platform supporta i target Ascend310P1, Ascend310P3, Ascend310B1 e Ascend310B4.
name | Dispositivi | Esportazione locale | Piattaforma |
|---|---|---|---|
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) | ✅ | ✅ |
Esportazione su Ascend: convertire il modello YOLO#
L'esportazione Ascend richiede il toolkit CANN, disponibile solo per Linux. Il compilatore atc deve essere nel tuo PATH: prima di esportare, carica lo script dell'ambiente CANN, 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 dei download della community Ascend oppure usa una delle ascendai/cann immagini container ufficiali, che includono ATC e le sue dipendenze.
ATC può compilare solo per le famiglie di SoC di cui sono installati i kernel degli operatori. Un toolkit che include solo i kernel ascend310p genera un errore 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 la distribuzione.
Utilizzo#
Il formato Ascend supporta le modalità Export, Predict e Validate. L'inferenza e la convalida vengono eseguite su hardware Ascend. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne la precisione.
from ultralytics import YOLO
# Carica un modello YOLO26
model = YOLO("yolo26n.pt")
# Esporta il modello nel formato Ascend per una scheda Atlas 200I / OrangePi AIPro
model.export(format="ascend", name="Ascend310B4")
# Carica il modello Ascend esportato ed esegui l'inferenza sul dispositivo
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 del 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 di CANN include i kernel; consulta Dispositivi supportati. Deve corrispondere al dispositivo di deployment. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello, incorporata in .om come forma 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 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, facoltativo | None | Seleziona l'output grezzo (None, predefinito), NMS integrato (True) oppure la testa senza NMS (False). |
device | str | None | Dispositivo per la fase intermedia di esportazione ONNX, CPU per impostazione predefinita (device=cpu). La compilazione ATC non lo utilizza. |
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. Se richiedi quantize=32, viene generato un errore invece di produrre silenziosamente un modello non eseguibile.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics dedicata all'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 nome indica il SoC di destinazione, rendendo l'artefatto autoesplicativo; mantieni un solo .om per directory, poiché il loader seleziona l'unico modello che trova. metadata.yaml contiene i nomi delle classi, la dimensione dell'immagine e altre informazioni utilizzate dalla pipeline di inferenza Ultralytics.
Deployment dei modelli YOLO Ascend esportati#
Dopo aver esportato correttamente il 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 racchiude i binding pyACL di CANN. Compilalo e installalo dal repository degli strumenti Ascend di Huawei Ascend:
# 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 modello con la modalità di addestramento di Ultralytics oppure parti da un checkpoint preaddestrato.
- Esporta in formato Ascend su qualsiasi host Linux con CANN installato, passando
namecorrispondente al 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 in esecuzione sull'hardware Ascend sono adatti a un'ampia gamma di applicazioni di visione embedded e industriale:
- Automazione industriale: ispezione qualità ad alta velocità e rilevamento dei difetti sulle linee di produzione.
- Videosorveglianza intelligente: rilevamento di oggetti in tempo reale su più telecamere, tramite 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 sugli NPU Huawei Ascend e a esportare i modelli nel formato .om di Ascend usando il compilatore CANN ATC. L'esportazione viene eseguita interamente sull'host, produce una directory del modello autonoma e supporta qualsiasi SoC Ascend compatibile tramite un unico argomento name.
Per maggiori dettagli sull'utilizzo, consulta la documentazione ufficiale di CANN.
Inoltre, se vuoi saperne di più sulle altre integrazioni Ultralytics YOLO, visita la nostra pagina delle guide alle integrazioni per trovare molte risorse utili.
Domande frequenti#
Installa Ultralytics e il toolkit CANN, carica l'ambiente CANN affinché
atcsia nel tuoPATH, quindi esporta conmodel.export(format="ascend", name="Ascend310B4")in Python oppure conyolo 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 x86-64 o ARM64 standard senza NPU collegato. Ti serve hardware Ascend solo per eseguire l'inferenza con il modello esportato
.om.L'installazione di CANN non include 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 destinazione oppure usa un'immagine container creata per quella famiglia di dispositivi.Le convoluzioni di Ascend AI Core accettano solo tensori
DT_FLOAT16eDT_INT8. Un modello offline FP32 non sarebbe eseguibile sull'hardware, quindi l'esportatore compila con--precision_mode=force_fp16e rifiuta una richiesta esplicita diquantize=32.Qualsiasi SoC per cui il toolkit CANN installato fornisce kernel, selezionato tramite l'argomento
name. Consulta Dispositivi supportati per i quattro target convalidati e la loro disponibilità su Ultralytics Platform.