Glossario

ONNX (Open Neural Network Exchange)

Scopri come ONNX migliora la portabilità e l'interoperabilità dei modelli di AI, consentendo l'implementazione senza problemi dei modelli di Ultralytics YOLO su diverse piattaforme.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

Nel campo in rapida evoluzione dell'intelligenza artificiale (AI) e dell'apprendimento automatico (ML), spostare i modelli tra diversi strumenti e piattaforme in modo efficiente è fondamentale. ONNX (Open Neural Network Exchange) affronta questa sfida fornendo un formato open-source progettato appositamente per i modelli di intelligenza artificiale. Funge da traduttore universale, consentendo agli sviluppatori di addestrare un modello in un framework, come ad esempio PyTorche poi distribuirlo con un altro framework o motore di inferenza, come ad esempio TensorFlow o runtime specializzati. Questa interoperabilità semplifica il percorso dalla ricerca alla produzione.

Rilevanza di ONNX

Il valore fondamentale di ONNX consiste nel promuovere la portabilità e l'interoperabilità all'interno dell'ecosistema dell'intelligenza artificiale. Invece di essere bloccati nell'ecosistema di un framework specifico, gli sviluppatori possono sfruttare ONNX per spostare i modelli liberamente. Definendo un insieme comune di operatori e un formato di file standard, ONNX assicura che la struttura di un modello e i parametri appresi(pesi) siano rappresentati in modo coerente. Questo è particolarmente vantaggioso per gli utenti di Ultralytics YOLO in quanto Ultralytics offre metodi semplici per esportare i modelli in formato ONNX . Questa funzionalità di esportazione consente agli utenti di prendere modelli come YOLOv8 o YOLO11 e distribuirli su un'ampia varietà di piattaforme hardware e software, spesso utilizzando motori di inferenza ottimizzati per migliorare le prestazioni.

Come funziona ONNX

ONNX raggiunge l'interoperabilità grazie a diverse caratteristiche chiave:

  • Rappresentazione comune del modello: Definisce un insieme standard di operatori (come i livelli di convoluzione o le funzioni di attivazione) e di tipi di dati. Quando un modello viene convertito in ONNX, la sua architettura viene tradotta in questo linguaggio condiviso.
  • Struttura a grafo: I modelli sono rappresentati come grafi computazionali, dove i nodi sono operazioni e i bordi rappresentano il flusso di dati (tensori). Si tratta di una struttura comune utilizzata dalla maggior parte dei framework di deep learning.
  • Estensibilità: Sebbene ONNX definisca un insieme di operatori di base, permette di utilizzare operatori personalizzati, consentendo il supporto di nuove architetture di modelli.
  • Versioni: ONNX mantiene le versioni degli operatori per garantire la retrocompatibilità, il che significa che i modelli creati con le versioni precedenti possono ancora essere utilizzati man mano che lo standard si evolve.

Applicazioni di ONNX

ONNX è ampiamente utilizzato per colmare il divario tra gli ambienti di formazione dei modelli e gli obiettivi di distribuzione. Ecco due esempi:

  1. Distribuzione ottimizzata su dispositivi edge: Uno sviluppatore addestra un modello di rilevamento degli oggetti utilizzando Ultralytics YOLO su un potente server con GPU. Per distribuire questo modello su dispositivi edge con risorse limitate, esporta il modello in ONNX. Il modello ONNX può essere ottimizzato con strumenti come NVIDIA TensorRT per l'hardware NVIDIA o OpenVINO diIntel per le CPU/VPU Intel , ottenendo un'inferenza in tempo reale più rapida ed efficiente. Per maggiori dettagli, consulta la nostra guida sulle opzioni di distribuzione dei modelli.
  2. Collaborazione cross-framework: Un team di ricerca sviluppa un nuovo componente di modello in PyTorch. Un altro team, responsabile dell'integrazione di questo componente in un'applicazione più ampia costruita con TensorFlow, può ricevere il componente come file ONNX . In questo modo si evita la necessità di tradurre il codice in modo complesso o di mantenere versioni separate del modello per diversi framework, favorendo una collaborazione più semplice all'interno di organizzazioni come quelle elencate nella nostra pagina clienti.

Concetti correlati

La comprensione di ONNX spesso coinvolge tecnologie correlate:

  • ONNX Runtime: Si tratta di un motore di inferenza ad alte prestazioni specificamente progettato per eseguire i modelli ONNX in modo efficiente su diversi hardwareCPU, GPUecc.). Mentre ONNX definisce il formato, ONNX Runtime fornisce l'ambiente di esecuzione.
  • TensorRT: un SDK di NVIDIA per l'inferenza di deep learning ad alte prestazioni, che può importare modelli ONNX per l'ottimizzazione su GPU NVIDIA . Ultralytics offre l'integrazione diTensorRT .
  • OpenVINO: un toolkit Intel per l'ottimizzazione e la distribuzione dell'inferenza AI, che supporta i modelli ONNX per l'esecuzione su hardware Intel .
  • Modello di esportazione: Il processo di conversione di un modello addestrato dal formato del framework originale (ad esempio, PyTorch .pt) in un formato standardizzato come ONNX.
  • Distribuzione del modello: Il processo complessivo che consiste nel prendere un modello addestrato e renderlo disponibile per l'uso in un ambiente di produzione, dove ONNX svolge un ruolo chiave nel semplificare la compatibilità multipiattaforma. Puoi gestire la distribuzione dei tuoi modelli ONNX utilizzando piattaforme come Ultralytics HUB.

Facilitando lo scambio e la distribuzione dei modelli, ONNX svolge un ruolo fondamentale nel rendere il ciclo di vita dello sviluppo dell'intelligenza artificiale più flessibile ed efficiente.

Leggi tutto