Scopri come ONNX migliora la portabilità e l'interoperabilità dei modelli di AI, consentendo l'implementazione fluida dei modelli YOLO di Ultralytics su diverse piattaforme.
ONNX (Open Neural Network Exchange) è un formato open-source per la rappresentazione di modelli di machine learning (ML). Sviluppato congiuntamente da aziende come Microsoft e Facebook, ONNX funge da traduttore universale, consentendo agli sviluppatori di spostare i modelli tra diversi framework e strumenti di ML. Questa interoperabilità è fondamentale per semplificare il percorso dallo sviluppo del modello alla produzione. Invece di essere vincolati a un singolo ecosistema, i team possono addestrare un modello in un framework, come PyTorch, e distribuirlo per l'inferenza utilizzando un altro, come TensorFlow o un motore di inferenza specializzato. I modelli Ultralytics YOLO, ad esempio, possono essere facilmente esportati nel formato ONNX, offrendo la massima flessibilità per la distribuzione su varie piattaforme.
ONNX fornisce una definizione standard per un grafo computazionale, insieme a un elenco di operatori integrati. Quando si converte un modello nel formato ONNX, la sua architettura, composta da livelli e operazioni matematiche, viene mappata a questo standard universale. Il risultato .onnx
file contiene sia la struttura della rete che i dati addestrati pesi del modello.
Questo file standardizzato può quindi essere caricato da qualsiasi strumento che supporti la specifica ONNX. Questo include:
La flessibilità di ONNX lo rende prezioso in molti scenari di computer vision e ML.
Distribuzione dell'IA su dispositivi Edge: Uno sviluppatore potrebbe addestrare un modello complesso di object detection come Ultralytics YOLO11 su un desktop potente con GPU NVIDIA. Affinché l'applicazione venga eseguita su un dispositivo edge a basso consumo energetico come un Raspberry Pi o una smart camera utilizzata nell'analisi retail, il modello viene esportato in ONNX. Può quindi essere ottimizzato da un runtime come ONNX Runtime o OpenVINO per prestazioni efficienti sull'hardware di destinazione senza la necessità dell'ambiente PyTorch originale.
Integrazione di modelli in diverse applicazioni: Si consideri un'azienda sanitaria che crea un modello di analisi di immagini mediche utilizzando Python e TensorFlow. L'infrastruttura software esistente dell'ospedale è costruita utilizzando C# e .NET. Invece di riscrivere il modello, il team lo esporta in ONNX. L'applicazione C# può quindi utilizzare l'ONNX Runtime per .NET per integrare direttamente le capacità del modello, riducendo significativamente i tempi di sviluppo e la complessità.
È importante distinguere ONNX da termini correlati:
.pt
o SavedModel di TensorFlow sono nativi dei rispettivi framework. ONNX funge da intermediario, consentendo la conversione tra questi formati o il deployment tramite un runtime comune. TorchScript è un altro formato per la serializzazione di modelli PyTorch, a volte utilizzato come alternativa o precursore dell'esportazione ONNX.In sintesi, ONNX è uno standard fondamentale per garantire flessibilità e interoperabilità nella pipeline di machine learning operations (MLOps), consentendo agli sviluppatori di scegliere gli strumenti migliori per l'addestramento e la distribuzione senza essere vincolati dalle limitazioni del framework. Piattaforme come Ultralytics HUB sfruttano tali formati per semplificare il percorso dallo sviluppo del modello all'applicazione nel mondo reale. Per saperne di più, visita il sito web ufficiale di ONNX ed esplora il progetto su GitHub.