Integrazione di Huawei Ascend per Ultralytics YOLO#
Distribuire modelli di visione artificiale su Huawei Ascend AI Processors richiede di compilarli nel formato di modello offline .om eseguito dall'Ascend AI Core. Esportare i modelli Ultralytics YOLO su Ascend ti consente di eseguire inferenza rapida e a basso consumo su schede di sviluppo Atlas e dispositivi OrangePi AIPro utilizzati in robotica, ispezione industriale e distribuzioni di telecamere intelligenti.
Cos'è Huawei Ascend?#
Huawei Ascend è una famiglia di processori IA abbinata a CANN (Compute Architecture for Neural Networks), lo stack di calcolo eterogeneo di Huawei. CANN include ATC (Ascend Tensor Compiler), uno strumento lato host che converte un grafo ONNX standard in un modello offline .om specifico per l'hardware che punta all'Ascend AI Core.
Poiché l'ATC viene eseguito interamente sull'host, puoi compilare i modelli su una normale macchina Linux x86-64 o ARM64 senza alcun hardware Ascend collegato, per poi copiare il file .om risultante sul dispositivo di destinazione per l'inferenza.
Allena su NPU Ascend#
Ultralytics supporta l'addestramento su NPU singola e multipla con torch_npu, inclusi AMP, convalida, 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 carica prima l'ambiente CANN. Consulta la
sezione sull'addestramento su Ascend NPU per esempi di installazione e utilizzo.
Formato di esportazione Ascend#
L'esportatore di Ultralytics scrive prima un grafo ONNX intermedio, quindi richiama l'ATC per compilarlo per il SoC di destinazione con l'argomento name. Il risultato è una directory di modello autonoma contenente il file binario .om e i suoi metadati di Ultralytics.
Caratteristiche 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: L'ATC non richiede alcuna NPU collegata, quindi l'esportazione viene eseguita in CI, nei container o su un laptop.
- Prima ONNX: L'esportazione ONNX di Ultralytics standard si alimenta direttamente nella toolchain CANN senza alcun formato intermedio proprietario.
- Forme statiche: La forma dell'input viene incorporata in
.omin fase di compilazione, eliminando l'overhead di negoziazione della forma a runtime. - Target multi-dispositivo: Lo stesso grafo ONNX viene compilato per qualsiasi SoC supportato modificando
name.
Attività supportate#
L'esportazione su Huawei Ascend supporta tutti e sette i task di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste teste.
Dispositivi supportati#
Passa il SoC di destinazione con name; l'ATC lo inserisce nel file .om come --soc_version, quindi deve corrispondere alla scheda su cui effettui la distribuzione. Localmente puoi compilare per qualsiasi SoC per cui la tua installazione CANN fornisce i 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 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Esportazione su Ascend: Conversione del tuo modello YOLO#
L'esportazione su Ascend richiede il toolkit CANN, che è disponibile solo per Linux. Il compilatore atc deve trovarsi nel tuo PATH: carica lo script dell'ambiente CANN prima di esportare, 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 o utilizza una delle immagini container ascendai/cann ufficiali, che includono ATC e le relative dipendenze.
L'ATC può compilare solo per famiglie di SoC i cui kernel degli operatori sono installati. Un toolkit che contiene solo kernel ascend310p fallisce con No supported Ops kernel and engine are found for ... Conv2D quando viene richiesto un target Ascend310B4. Installa il pacchetto Ascend-cann-kernels-<soc> corrispondente per il 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 tuo modello, quindi carica il modello esportato per eseguire l'inferenza o validarne la precisione.
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 IA Ascend. |
name | str | 'Ascend310B4' | SoC di destinazione passato all'ATC come --soc_version, ad esempio Ascend310P3. Qualsiasi SoC per cui la tua installazione CANN dispone di kernel è valido; vedi Dispositivi supportati. Deve corrispondere al tuo dispositivo di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello, incorporata in .om come forma statica. |
batch | int | 1 | Dimensione del batch statico compilata nel modello offline. |
quantize | int | 16 | Precisione di quantizzazione. L'esportazione su Ascend è solo in FP16 e abilita automaticamente 16 se non specificato. Sostituisce i flag deprecati half/int8. |
opset | int | 17 | Opset ONNX per il grafico intermedio. Limitato a 17, la versione più alta accettata dal parser ONNX di CANN. |
simplify | bool | True | Semplifica il grafico ONNX intermedio con onnxslim. |
nms | bool | False | Aggiunge la soppressione dei massimi non coincidenti (Non-Maximum Suppression) ai modelli di rilevamento, segmentazione, posa e OBB supportati. |
L'Ascend AI Core accetta solo input DT_FLOAT16 e DT_INT8 per le convoluzioni, quindi un modello offline in FP32 non può essere eseguito sull'hardware. Richiedere quantize=32 genera un errore anziché produrre silenziosamente un modello che non verrà eseguito.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Struttura dell'output#
Dopo un'esportazione riuscita, viene creata una directory del modello con il seguente layout:
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 in modo che l'artefatto sia auto-esplicativo; mantieni un solo .om per directory, poiché il loader sceglie l'unico modello che trova lì. Il file metadata.yaml contiene i nomi delle classi, la dimensione dell'immagine e altre informazioni utilizzate dalla pipeline di inferenza di Ultralytics.
Distribuzione dei modelli YOLO Ascend esportati#
Una volta esportato con successo 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 più il pacchetto Python ais_bench, che incapsula 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 usando la modalità di addestramento di Ultralytics, oppure parti da un checkpoint pre-addestrato.
- Esporta su Ascend su qualsiasi host Linux con CANN installato, passando il file
nameche corrisponde al tuo SoC di destinazione. - Copia la directory del modello esportato sul dispositivo Ascend.
- Distribuisci con il runtime CANN e
ais_benchper l'inferenza sul dispositivo.
Applicazioni nel mondo reale#
I modelli YOLO in esecuzione su 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.
- Sorveglianza intelligente: Rilevamento di oggetti multi-telecamera in tempo reale su 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à a bordo strada a basso consumo.
Riepilogo#
In questa guida hai imparato ad addestrare Ultralytics YOLO su Huawei Ascend NPU 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 modello autonoma e si rivolge a qualsiasi SoC Ascend supportato tramite un singolo argomento name.
Per ulteriori dettagli sull'utilizzo, visita la documentazione ufficiale di CANN.
Inoltre, se desideri saperne di più su altre integrazioni di Ultralytics YOLO, visita la nostra pagina della guida alle integrazioni per trovare molte risorse utili.
FAQ#
Installa Ultralytics e il toolkit CANN, carica l'ambiente CANN in modo che
atcsia 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 tuo dispositivo di distribuzione.No. Il compilatore ATC viene eseguito interamente sull'host, quindi la compilazione funziona su una normale macchina Linux x86-64 o ARM64 senza alcuna NPU collegata. Ti serve solo l'hardware Ascend per eseguire l'inferenza sul file
.omesportato.La tua installazione CANN non contiene i kernel degli operatori per il SoC che hai richiesto. Ogni toolkit include kernel per specifiche famiglie di SoC, quindi installa il pacchetto
Ascend-cann-kernels-<soc>corrispondente al tuo target, oppure usa un'immagine container creata per quella famiglia di dispositivi.Le convoluzioni dell'Ascend AI Core accettano solo tensori
DT_FLOAT16eDT_INT8. Un modello offline in FP32 non riuscirebbe a essere eseguito sull'hardware, quindi l'esportatore compila con--precision_mode=force_fp16e rifiuta una richiesta esplicita diquantize=32.Qualsiasi SoC per cui il tuo toolkit CANN installato fornisce kernel, selezionato tramite l'argomento
name. Vedi Dispositivi supportati per i quattro target convalidati e la loro disponibilità su Ultralytics Platform.