Esportazione e distribuzione con Axelera AI#
Ultralytics collabora con Axelera AI per abilitare inferenze ad alte prestazioni e a basso consumo energetico sui dispositivi Edge AI. Esporta e distribuisci i modelli Ultralytics YOLO direttamente sull'AIPU Metis® utilizzando il Voyager SDK.
Axelera AI offre un'accelerazione hardware dedicata per la visione artificiale all'edge, utilizzando un'architettura proprietaria basata sul flusso dei dati e il calcolo in memoria per offrire fino a 856 TOPS con un basso consumo energetico.
Scegliere l'hardware giusto#
Axelera AI offre diversi fattori di forma per soddisfare i vari vincoli di distribuzione. Il grafico seguente aiuta a identificare l'hardware ottimale per la distribuzione di Ultralytics YOLO.
Gamma di hardware#
La gamma di hardware Axelera è ottimizzata per eseguire Ultralytics YOLO26 e le versioni precedenti con un'elevata efficienza in termini di FPS per watt.
Schede acceleratrici#
Queste schede consentono di accelerare l'AI sui dispositivi host esistenti, facilitando le distribuzioni in ambienti esistenti.
| Prodotto | Fattore di forma | Calcolo | Prestazioni (INT8) | Applicazione di destinazione |
|---|---|---|---|---|
| Metis PCIe x4 | PCIe Gen3 x16 | 4x AIPU Metis | 856 TOPS | Analisi video ad alta densità, città intelligenti |
| Metis PCIe x1 | PCIe Gen3 x1 | 1x AIPU Metis | 214 TOPS | PC industriali, gestione delle code nel commercio al dettaglio |
| Metis M.2 | M.2 2280 M-Key | 1x AIPU Metis | 214 TOPS | Droni, robotica, dispositivi medici portatili |
| Metis M.2 MAX | M.2 2280 | 1x AIPU Metis | 214 TOPS | Ambienti che richiedono una gestione termica avanzata |
Sistemi integrati#
Per offrire soluzioni chiavi in mano, Axelera collabora con i produttori per fornire sistemi convalidati in anticipo per l'AIPU Metis.
- Scheda di calcolo Metis: un dispositivo edge autonomo che abbina l'AIPU Metis a una CPU ARM Rockchip RK3588.
- Workstation: tower aziendali di Dell (Precision 3460XE) e Lenovo (ThinkStation P360 Ultra).
- PC industriali: sistemi rinforzati di Advantech e Aetina, progettati per l'automazione della produzione.
Attività supportate#
L’esportazione Axelera 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.
I modelli YOLO26 di rilevamento, segmentazione di istanze, stima della posa e OBB esportano per impostazione predefinita la loro head one-to-one senza NMS, che viene decodificata dall’host dal runtime Axelera. Passando nms=True si esporta invece la head one-to-many, che ottiene risultati inferiori su Metis: in questo modo, il rilevamento YOLO26n raggiunge mAP50-95 0.212 su COCO128, contro 0.453 con la head senza NMS.
| Attività | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Rilevamento | ✅ | ✅ | ✅ |
| Segmentazione | ✅ | ✅ | ✅ |
| Semantica | ❌ | ❌ | ✅ |
| Profondità | ❌ | ❌ | ✅ |
| Classificazione | ✅ | ✅ | ✅ |
| Stima della posa | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Gli intervalli di quantizzazione sono ricavati dalle immagini di calibrazione e il valore predefinito per la profondità, depth8.yaml, contiene quattro frame di interni. Sullo split di validazione di 654 immagini di NYU Depth V2, il modello YOLO26n di profondità calibrato con questi valori predefiniti ottiene delta1 0.742 su Metis, contro 0.783 del modello PyTorch; usando 100 frame di training di NYU, il risultato è 0.780. Passa data= con uno YAML del dataset il cui split val contenga almeno 100 immagini delle scene che il modello dovrà elaborare; la calibrazione legge lo split val.
Installazione#
L'esportazione nel formato Axelera richiede:
- Sistema operativo: solo Linux (consigliati Ubuntu 22.04/24.04)
- Hardware: acceleratore Axelera AI (dispositivi Metis)
- Python: versioni 3.10, 3.11, 3.12 e 3.13
- PyTorch:
torch>=2.8,<2.15 - Voyager SDK: 1.9.0; l’esportazione installa questa versione del devkit e l’inferenza installa questa versione del runtime
- Driver kernel Metis:
metis-dkms1.7.0 o versione successiva, installato separatamente dapip - Dipendenza di sistema:
sudo apt install libgl1(richiesta da OpenCV, non inclusa tramitepip)
Installazione di Ultralytics#
pip install ultralyticsPer istruzioni dettagliate, consulta la nostra guida all'installazione di Ultralytics. Se riscontri difficoltà, consulta la nostra guida ai problemi comuni.
Installazione del driver Axelera#
-
Aggiungi la chiave del repository Axelera:
sudo sh -c "curl -fsSL https://software.axelera.ai/artifactory/api/security/keypair/axelera/public | gpg --dearmor -o /etc/apt/keyrings/axelera.gpg" -
Aggiungi il repository ad apt:
Scegli lo snippet appropriato qui sotto in base al sistema operativo in uso.
# Ubuntu 22.04 sudo sh -c "echo 'deb [signed-by=/etc/apt/keyrings/axelera.gpg] https://software.axelera.ai/artifactory/axelera-apt-source ubuntu22 main' > /etc/apt/sources.list.d/axelera.list"# Ubuntu 24.04 sudo sh -c "echo 'deb [signed-by=/etc/apt/keyrings/axelera.gpg] https://software.axelera.ai/artifactory/axelera-apt-source ubuntu24 main' > /etc/apt/sources.list.d/axelera.list" -
Installa il driver e caricalo. SDK 1.9 richiede
metis-dkms1.7.0 o versione successiva; qui viene installata la versione più recente:sudo apt update sudo apt install -y metis-dkms sudo modprobe metis
Il driver kernel viene installato separatamente dai pacchetti Python SDK, quindi dopo aver aggiornato l’SDK devi anche aggiornare il driver almeno alla versione minima richiesta da quell’SDK: 1.7.0 per SDK 1.9. Questo requisito non viene verificato durante l’installazione e un driver precedente alla versione minima rende il dispositivo non disponibile: axdevice indica la versione richiesta e non riesce ad aprire il dispositivo.
[libaxldev.c:285] Found kernel driver version 1.6.2, but at least version 1.7.0 is required. Please update the kernel driver
ERROR: AXR_ERROR_CONNECTION_ERROR: Failed to open device metis-0:4:0Vedi anche Passaggio 3: installa il driver del kernel Metis. Se stai già usando una versione precedente dell'SDK su Ubuntu, aggiorna il driver e ricarica il modulo del kernel (non è necessario riavviare):
sudo apt update
sudo apt install -y metis-dkms
sudo rmmod metis
sudo modprobe metisEsegui nuovamente axdevice per verificare che il dispositivo venga rilevato.
Al primo utilizzo di yolo export format=axelera o yolo predict con un modello Axelera, i pacchetti Axelera SDK verranno scaricati e installati automaticamente. L'operazione può richiedere diversi minuti, a seconda della velocità della connessione, e durante il download non viene mostrato alcun avanzamento. Per installare manualmente in anticipo:
pip install axelera-devkit==1.9.0 --extra-index-url https://software.axelera.ai/artifactory/api/pypi/axelera-pypi/simple
pip install axelera-rt==1.9.0 --extra-index-url https://software.axelera.ai/artifactory/api/pypi/axelera-pypi/simpleSDK 1.9 non incrementa il formato del modello compilato .axm, quindi una directory _axelera_model esportata con la versione 1.8 viene caricata ed eseguita senza modifiche. Riesporta solo per sfruttare i miglioramenti del compilatore.
Un SDK che incrementa il formato rifiuta al caricamento le directory create con versioni precedenti; è questo il messaggio che compare passando dalla versione 1.7 o precedente:
Error: Unsupported model version: 4.0, expected at least 5.0
Please re-deploy or re-download the model.Esportazione dei modelli YOLO per Axelera#
Il formato Axelera supporta le modalità Esporta, Predici e Valida. L'inferenza e la convalida vengono eseguite sull'hardware AIPU Metis di Axelera. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza.
from ultralytics import YOLO
# Carica un modello YOLO26
model = YOLO("yolo26n.pt")
# # Esporta il modello nel formato Axelera
model.export(format="axelera") # creates 'yolo26n_axelera_model'from ultralytics import YOLO
# # Carica il modello Axelera esportato
model = YOLO("yolo26n_axelera_model")
# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# # Carica il modello Axelera esportato
model = YOLO("yolo26n_axelera_model")
# # Convalida l'accuratezza sul dataset COCO8
metrics = model.val(data="coco8.yaml")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'axelera' | Formato di destinazione per l'hardware AIPU Metis di Axelera. |
imgsz | int o tuple | 640 | Dimensione dell'immagine di input del modello. |
batch* | int | 1 | Dimensione del batch di calibrazione. Il modello compilato elabora un’immagine alla volta. |
quantize | int o str | 8/auto | Precisione della quantizzazione. 8 (INT8) è obbligatorio e viene abilitato automaticamente per l'AIPU Axelera. Sostituisce i flag deprecati half/int8. Consulta la quantizzazione INT8. |
data | str | None | File YAML del dataset di calibrazione; per la classificazione è invece richiesta una directory del dataset o il nome di un dataset integrato. Se non specificato, Ultralytics seleziona un dataset di calibrazione specifico per l'attività. |
fraction | float, int o list | 1.0 | Sottoinsieme di calibrazione specificato come rapporto, numero di immagini o rapporti/quantità [train, val, test]. Gli elenchi con due elementi mantengono completo test, mentre 0 lo esclude (si consigliano 100-400 immagini). |
device | str | None | Dispositivo di esportazione: GPU (device=0) o CPU (device=cpu). |
* I modelli vengono compilati per una singola immagine, quindi l’opzione di esportazione batch imposta solo la dimensione del batch di calibrazione. Passa invece batch a predict per inviare più immagini contemporaneamente allo scheduler Axelera (Voyager SDK 1.8.0 o versione successiva): vedi Prestazioni massime.
Per tutte le opzioni di esportazione, consulta la documentazione della modalità Esporta.
Struttura dell'output#
yolo26n_axelera_model/
├── yolo26n.axm # Axelera model file
├── compiler_config_final.toml # Compiler configuration used for the build
└── metadata.yaml # Model metadata (classes, image size, etc.)Benchmark di Axelera AI#
L'AIPU Metis massimizza la velocità di elaborazione riducendo al minimo il consumo energetico.
| Modello | FPS di Metis PCIe (fotogrammi al secondo) | FPS di Metis M.2 (fotogrammi al secondo) |
|---|---|---|
| YOLOv8n | 847 | 771 |
| YOLO11n | 746 | 574 |
| YOLO26n | 648.6 | 484.9 |
Benchmark basati sui dati di Axelera AI. Gli FPS effettivi dipendono dalle dimensioni del modello, dal batching e dalla risoluzione di input.
Questi sono valori di throughput dell'host, misurati dal model zoo con la pipeline di streaming del Voyager SDK su un file video a 720p. Una singola chiamata predict riporta invece la latenza per immagine, che è una grandezza diversa.
Applicazioni nel mondo reale#
Ultralytics YOLO su hardware Axelera consente soluzioni avanzate di edge computing:
- Vendita al dettaglio intelligente: Conteggio degli oggetti in tempo reale e analisi delle mappe di calore per ottimizzare i negozi.
- Sicurezza industriale: Rilevamento dei DPI a bassa latenza negli ambienti di produzione.
- Analisi con droni: Rilevamento degli oggetti ad alta velocità sui UAV per l'agricoltura e le operazioni di ricerca e soccorso.
- Sistemi di gestione del traffico: Riconoscimento delle targhe e stima della velocità tramite edge computing.
Flusso di lavoro consigliato#
- Addestra il tuo modello usando la modalità Train di Ultralytics
- Esporta nel formato Axelera usando
model.export(format="axelera") - Convalida l'accuratezza con
yolo valper verificare che la perdita dovuta alla quantizzazione sia minima - Esegui la predizione usando
yolo predictper la convalida qualitativa - Distribuisci in una pipeline end-to-end ad alte prestazioni senza dipendenze da PyTorch — consulta gli esempi YOLO con Voyager SDK per pipeline Python componibili che usano
axelera-rt
Controllo dello stato del dispositivo#
Verifica che il dispositivo Axelera funzioni correttamente:
# if axdevice cannot be found, please run at least one inference (see above) to ensure the required packages are installed
axdevicePer una diagnostica dettagliata, consulta la documentazione di AxDevice.
Prestazioni massime#
I modelli vengono compilati per una singola immagine e una singola immagine viene eseguita su un core AIPU. Passare più immagini a Predict le invia insieme allo scheduler Axelera, che le distribuisce sui core del dispositivo:
yolo predict model=yolo26n_axelera_model source=path/to/images batch=32yolo26n a imgsz=640 sulle 128 immagini COCO128 contenute in una directory, Metis PCIe, mediana di tre esecuzioni:
| Voyager SDK | Dispositivi | batch=1 | batch=8 | batch=32 |
|---|---|---|---|---|
| 1.8.0 | 1 | 36 img/s | 45 img/s | 40 img/s |
| 1.8.0 | 2 | 39 img/s | 41 img/s | 41 img/s |
| 1.9.0 | 1 | 41 img/s | 85 img/s | 109 img/s |
| 1.9.0 | 2 | 35 img/s | 83 img/s | 113 img/s |
Con SDK 1.9, il batch è ciò che aumenta il throughput: di 2,7 volte a batch=32, mentre la versione 1.8 resta intorno a 40 img/s con qualsiasi dimensione del batch. Usa un batch grande per il throughput offline e batch=1 quando conta la latenza per immagine. Un secondo dispositivo aggiunge poco a predict: a batch=32 ogni immagine trascorre già circa 4 ms nella preelaborazione sull’host, tanto quanto il tempo trascorso sul dispositivo.
Oltre predict#
Per la produzione che richiede il massimo throughput, Axelera Voyager SDK offre:
- Pipeline di inferenza in streaming che mantengono più fotogrammi in elaborazione contemporaneamente
- Compilazione di un modello su più core
- Inferenza suddivisa in riquadri per telecamere ad alta risoluzione
Questi percorsi saltano la preelaborazione e la postelaborazione PyTorch che predict esegue sull’host. Consulta lo zoo di modelli per i benchmark FPS oppure contatta Axelera per il supporto in produzione.
Problemi noti#
- Limitazioni di alimentazione di M.2: i modelli grandi o extra-large possono causare errori di runtime sugli acceleratori M.2 a causa dei limiti dell'alimentazione.
Per ricevere assistenza, visita la community di Axelera.
Domande frequenti#
Voyager SDK supporta l'esportazione dei modelli YOLOv8, YOLO11 e YOLO26. Consulta le attività supportate per conoscere la disponibilità delle attività per ciascun modello.
Sì. Qualsiasi modello addestrato usando la modalità Train di Ultralytics può essere esportato nel formato Axelera, a condizione che utilizzi livelli e operazioni supportati.
Voyager SDK di Axelera quantizza automaticamente i modelli per l'architettura AIPU a precisione mista. Per la maggior parte delle attività di rilevamento degli oggetti, i vantaggi in termini di prestazioni (FPS più elevati e consumo energetico ridotto) superano ampiamente l'impatto minimo su mAP. La quantizzazione richiede da pochi secondi a diverse ore, a seconda delle dimensioni del modello. Esegui
yolo valdopo l'esportazione per verificare l'accuratezza.Consigliamo da 100 a 400 immagini. Oltre le 400 immagini non si ottengono ulteriori vantaggi e i tempi di quantizzazione aumentano. Prova con 100, 200 e 400 immagini per trovare il giusto equilibrio.
SDK, driver e strumenti di compilazione sono disponibili tramite il portale per sviluppatori Axelera.