Open Neural Network Exchange (ONNX)

ONNX è un formato open-source che consente lo scambio di modelli AI tra piattaforme, supportando interoperabilità, standardizzazione e deployment efficiente.

Che cos’è ONNX?

Open Neural Network Exchange (ONNX) è un formato open-source creato per facilitare l’intercambiabilità dei modelli di machine learning tra diverse piattaforme e strumenti. Nato dalla collaborazione tra Facebook e Microsoft, ONNX è stato lanciato ufficialmente nel settembre 2017. Funziona come un ponte tra diversi framework di machine learning, permettendo agli sviluppatori di trasferire i modelli senza doverli ristrutturare o riaddestrare. Questa standardizzazione favorisce un approccio più efficiente e flessibile al deployment dei modelli in ambienti diversi.

Caratteristiche principali di ONNX

  1. Interoperabilità: ONNX è pensato principalmente per consentire uno scambio fluido di modelli tra i principali framework di machine learning come TensorFlow, PyTorch, Caffe2 e Microsoft Cognitive Toolkit (CNTK). Questa interoperabilità si estende sia ai modelli di deep learning che a quelli di machine learning tradizionale, consentendo agli sviluppatori di sfruttare i punti di forza di diversi strumenti senza essere vincolati a un unico ecosistema.
  2. Standardizzazione: ONNX fornisce un formato unificato che include un insieme comune di operatori e tipi di dati. Questa standardizzazione assicura che i modelli siano consistenti e funzionanti quando vengono trasferiti tra piattaforme, riducendo i problemi di compatibilità che spesso si riscontrano con i formati proprietari.
  3. Guidato dalla community: Il successo e l’evoluzione di ONNX sono dovuti in gran parte alla sua vivace community di sviluppatori e organizzazioni. Questo sforzo collaborativo garantisce che ONNX sia regolarmente aggiornato e migliorato, favorendo l’innovazione nel deployment dei modelli AI.
  4. Ottimizzazione hardware: ONNX supporta molteplici piattaforme hardware, offrendo ottimizzazioni dei modelli per migliorare le prestazioni su diversi dispositivi, inclusi GPU e CPU. Questa capacità è fondamentale per il deployment di modelli in ambienti con risorse limitate o per migliorare i tempi di inferenza nei sistemi di produzione.
  5. Versioning e compatibilità: ONNX mantiene la retrocompatibilità, consentendo ai modelli sviluppati con versioni precedenti di funzionare efficacemente in ambienti più recenti. Questo approccio garantisce che i modelli possano evolvere senza sacrificare funzionalità o prestazioni.

ONNX Runtime

ONNX Runtime è un motore ad alte prestazioni che esegue modelli ONNX, garantendo un funzionamento efficiente su hardware e piattaforme diverse. Offre numerose ottimizzazioni e supporta diversi provider di esecuzione, rendendolo indispensabile per il deployment di modelli AI in produzione. ONNX Runtime può essere integrato con modelli provenienti da framework come PyTorch, TensorFlow e scikit-learn, tra gli altri. Applica ottimizzazioni al grafo e assegna i sotto-grafi ad acceleratori hardware specifici, garantendo prestazioni superiori rispetto ai framework originali.

Casi d’uso ed esempi

  1. Sanità: Nell’imaging medico, ONNX facilita il deployment di modelli di deep learning per compiti come il rilevamento di tumori nelle scansioni MRI su diverse piattaforme diagnostiche.
  2. Automotive: ONNX svolge un ruolo fondamentale nei veicoli autonomi, permettendo l’integrazione di modelli di rilevamento oggetti che supportano il decision-making in tempo reale nei sistemi di guida autonoma.
  3. Retail: ONNX semplifica il deployment di sistemi di raccomandazione nell’e-commerce, migliorando l’esperienza di shopping personalizzata grazie a modelli addestrati su diversi framework.
  4. Manifatturiero: Modelli di manutenzione predittiva possono essere sviluppati in un framework e distribuiti nei sistemi di fabbrica utilizzando ONNX, migliorando l’efficienza operativa.
  5. Finanza: Modelli di rilevamento delle frodi creati in un framework possono essere integrati senza soluzione di continuità nei sistemi bancari tramite ONNX, rafforzando le misure di prevenzione delle frodi.
  6. Agricoltura: ONNX supporta l’agricoltura di precisione permettendo l’integrazione di modelli su colture e suolo in diversi sistemi di gestione agricola.
  7. Educazione: Sistemi di apprendimento adattivo sfruttano ONNX per incorporare modelli AI che personalizzano l’esperienza di apprendimento su varie piattaforme educative.

Framework popolari compatibili con ONNX

  • PyTorch: Conosciuto per il suo grafo computazionale dinamico e la facilità d’uso, PyTorch è ampiamente adottato nella ricerca e nello sviluppo.
  • TensorFlow: Un framework completo sviluppato da Google, che offre API per la creazione e il deployment di modelli di machine learning.
  • Microsoft Cognitive Toolkit (CNTK): Efficiente per l’addestramento di modelli di deep learning, in particolare in compiti di riconoscimento vocale e immagini.
  • Apache MXNet: Sostenuto da Amazon, MXNet è noto per la sua flessibilità ed efficienza su piattaforme cloud e mobile.
  • Scikit-Learn: Popolare per algoritmi di machine learning tradizionale, con supporto alla conversione ONNX tramite sklearn-onnx.
  • Keras: Un’API di alto livello che si appoggia a TensorFlow, focalizzata sulla sperimentazione rapida.
  • Apple Core ML: Consente l’integrazione di modelli nelle applicazioni iOS, con supporto per conversioni ONNX.

Vantaggi dell’utilizzo di ONNX

  • Flessibilità tra framework: ONNX permette di passare tra diversi framework di machine learning, favorendo la flessibilità nello sviluppo e nel deployment dei modelli.
  • Efficienza nel deployment: Consente di distribuire modelli su diverse piattaforme e dispositivi senza modifiche sostanziali.
  • Supporto di community e industria: Una solida community e il sostegno dell’industria garantiscono miglioramenti continui e un’adozione diffusa di ONNX.

Sfide nell’adozione di ONNX

  • Complessità nella conversione: Il processo di conversione dei modelli nel formato ONNX può essere complesso, soprattutto per modelli con layer o operazioni personalizzate.
  • Compatibilità tra versioni: Garantire la compatibilità tra diverse versioni di ONNX e dei framework può essere una sfida.
  • Supporto limitato per operazioni proprietarie: Alcune operazioni avanzate potrebbero non essere supportate in ONNX, limitandone l’applicabilità in certi scenari.

Comprendere ONNX (Open Neural Network Exchange)

L’Open Neural Network Exchange (ONNX) è un formato open-source progettato per facilitare l’intercambiabilità dei modelli AI tra diversi framework di machine learning. Ha guadagnato popolarità nella community AI per la sua capacità di fornire un formato unificato e portabile per rappresentare modelli di deep learning, consentendo un deployment fluido su piattaforme eterogenee. Di seguito sono riportati i riassunti di alcuni importanti articoli scientifici relativi a ONNX, che ne evidenziano applicazioni e sviluppo:

1. Compilazione di modelli ONNX Neural Network tramite MLIR

  • Autori: Tian Jin, Gheorghe-Teodor Bercea, Tung D. Le, Tong Chen, Gong Su, Haruki Imai, Yasushi Negishi, Anh Leu, Kevin O’Brien, Kiyokuni Kawachiya, Alexandre E. Eichenberger
  • Sintesi: Questo articolo descrive il compilatore onnx-mlir, che converte i modelli ONNX in codice eseguibile utilizzando l’infrastruttura Multi-Level Intermediate Representation (MLIR). Gli autori introducono due nuovi dialetti all’interno di MLIR per ottimizzare l’inferenza dei modelli ONNX. Questo lavoro è fondamentale per migliorare la portabilità e l’ottimizzazione dei modelli in diversi ambienti di calcolo.

2. Sionnx: Generatore automatico di unit test per la conformità ONNX

  • Autori: Xinli Cai, Peng Zhou, Shuhan Ding, Guoyang Chen, Weifeng Zhang
  • Sintesi: L’articolo introduce Sionnx, un framework per la generazione di unit test finalizzati alla verifica della conformità degli operatori ONNX nelle varie implementazioni. Utilizzando un linguaggio di specifica degli operatori di alto livello (Operator Specification Language, OSL), Sionnx assicura una copertura completa dei test, facilitando una verifica robusta tra framework. Questo strumento è cruciale per mantenere coerenza e affidabilità nell’esecuzione dei modelli ONNX.

3. QONNX: Rappresentazione di reti neurali quantizzate a precisione arbitraria

  • Autori: Alessandro Pappalardo, Yaman Umuroglu, Michaela Blott, Jovan Mitrevski, Ben Hawks, Nhan Tran, Vladimir Loncar, Sioni Summers, Hendrik Borras, Jules Muhizi, Matthew Trahms, Shih-Chieh Hsu, Scott Hauck, Javier Duarte
  • Sintesi: Questo articolo estende il formato ONNX per supportare reti neurali quantizzate a precisione arbitraria. L’introduzione di nuovi operatori come Quant, BipolarQuant e Trunc all’interno del formato Quantized ONNX (QONNX) consente una rappresentazione efficiente della quantizzazione a bassa precisione. Questo progresso favorisce deployment più efficienti di reti neurali su hardware con requisiti di precisione differenti.

Domande frequenti

Cos’è ONNX?

ONNX (Open Neural Network Exchange) è un formato open-source creato per facilitare lo scambio di modelli di machine learning tra diverse piattaforme e strumenti, consentendo agli sviluppatori di distribuire modelli su diversi framework senza doverli ristrutturare o riaddestrare.

Quali sono le caratteristiche principali di ONNX?

ONNX offre interoperabilità tra i principali framework AI, standardizzazione della rappresentazione dei modelli, forte supporto della community, ottimizzazione hardware su diversi dispositivi e mantiene la compatibilità tra versioni per un deployment senza problemi.

Quali framework sono compatibili con ONNX?

I framework più diffusi compatibili con ONNX includono PyTorch, TensorFlow, Microsoft Cognitive Toolkit (CNTK), Apache MXNet, Scikit-Learn, Keras e Apple Core ML.

Quali sono i vantaggi dell’utilizzo di ONNX?

ONNX consente di passare agilmente tra framework, di distribuire modelli in modo efficiente su diversi dispositivi e beneficia di un forte supporto da parte della community e dell’industria.

Quali sfide sono associate all’adozione di ONNX?

Le sfide includono la complessità nella conversione di modelli con operazioni personalizzate, problemi di compatibilità tra versioni e supporto limitato per alcune operazioni proprietarie o avanzate.

Prova FlowHunt con supporto ONNX

Inizia a costruire e distribuire soluzioni AI con integrazione senza soluzione di continuità di modelli ONNX su FlowHunt.

Scopri di più