Ottimizzazione dell'inferenza OpenVINO per i modelli Ultralytics YOLO : Una guida completa
Introduzione
Quando si utilizzano modelli di deep learning, in particolare quelli per il rilevamento di oggetti come i modelli di Ultralytics YOLO , è fondamentale ottenere prestazioni ottimali. Questa guida analizza l'utilizzo del toolkit di Intel OpenVINO per ottimizzare l'inferenza, concentrandosi su latenza e throughput. Sia che si tratti di applicazioni consumer che di implementazioni su larga scala, la comprensione e l'applicazione di queste strategie di ottimizzazione garantiranno un'esecuzione efficiente dei modelli su vari dispositivi.
Ottimizzazione della latenza
L'ottimizzazione della latenza è fondamentale per le applicazioni che richiedono una risposta immediata da un singolo modello in presenza di un singolo input, tipico degli scenari consumer. L'obiettivo è ridurre al minimo il ritardo tra l'input e il risultato dell'inferenza. Tuttavia, il raggiungimento di una bassa latenza richiede un'attenta considerazione, soprattutto quando si eseguono inferenze simultanee o si gestiscono più modelli.
Strategie chiave per l'ottimizzazione della latenza:
- Singola inferenza per dispositivo: Il modo più semplice per ottenere una bassa latenza è limitare a una sola inferenza alla volta per dispositivo. Un'ulteriore concomitanza porta spesso a un aumento della latenza.
- Sfruttare i sottodispositivi: Dispositivi come CPU multi-socket o GPU multi-tile possono eseguire più richieste con un aumento minimo della latenza utilizzando i loro sotto-dispositivi interni.
- OpenVINO Suggerimenti sulle prestazioni: Utilizzando il sito OpenVINO
ov::hint::PerformanceMode::LATENCY
per ilov::hint::performance_mode
durante la compilazione del modello semplifica la messa a punto delle prestazioni, offrendo un approccio indipendente dal dispositivo e a prova di futuro.
Gestire la latenza della prima inferenza:
- Caching dei modelli: per ridurre i tempi di caricamento e compilazione dei modelli che incidono sulla latenza, utilizzare il caching dei modelli ove possibile. Per gli scenari in cui la cache non è praticabile, le CPU offrono generalmente i tempi di caricamento dei modelli più rapidi.
- Mappatura dei modelli e lettura: Per ridurre i tempi di caricamento, OpenVINO ha sostituito la lettura del modello con la mappatura. Tuttavia, se il modello si trova su un'unità rimovibile o di rete, si può considerare l'uso di
ov::enable_mmap(false)
per tornare a leggere. - Selezione automatica del dispositivo: Questa modalità inizia l'inferenza su CPU, passando a un acceleratore una volta pronto, riducendo così la latenza della prima inferenza.
Ottimizzazione del throughput
L'ottimizzazione del throughput è fondamentale per gli scenari che servono numerose richieste di inferenza simultaneamente, massimizzando l'utilizzo delle risorse senza sacrificare in modo significativo le prestazioni delle singole richieste.
Approcci all'ottimizzazione del throughput:
-
OpenVINO Suggerimenti sulle prestazioni: Un metodo di alto livello e a prova di futuro per migliorare il throughput tra i dispositivi utilizzando i suggerimenti sulle prestazioni.
-
Batching esplicito e flussi: Un approccio più granulare che prevede il batching esplicito e l'uso di stream per la regolazione avanzata delle prestazioni.
Progettazione di applicazioni orientate al throughput:
Per massimizzare il throughput, le applicazioni devono:
- Elaborare gli ingressi in parallelo, sfruttando appieno le capacità del dispositivo.
- Decomporre il flusso di dati in richieste di inferenza concorrenti, programmate per l'esecuzione in parallelo.
- Utilizzate l'API Async con callback per mantenere l'efficienza ed evitare l'inedia del dispositivo.
Esecuzione su più dispositivi:
OpenVINOLa modalità multidispositivo semplifica la scalabilità del throughput, bilanciando automaticamente le richieste di inferenza tra i dispositivi senza richiedere la gestione dei dispositivi a livello di applicazione.
Conclusione
L'ottimizzazione dei modelli Ultralytics YOLO per la latenza e il throughput con OpenVINO può migliorare significativamente le prestazioni dell'applicazione. Applicando attentamente le strategie descritte in questa guida, gli sviluppatori possono assicurarsi che i loro modelli funzionino in modo efficiente, soddisfacendo le esigenze dei vari scenari di distribuzione. La scelta tra l'ottimizzazione della latenza o del throughput dipende dalle esigenze specifiche dell'applicazione e dalle caratteristiche dell'ambiente di distribuzione.
Per informazioni tecniche più dettagliate e per gli ultimi aggiornamenti, consultare la documentazione diOpenVINO e il repositoryUltralytics YOLO . Queste risorse forniscono guide approfondite, esercitazioni e il supporto della comunità per aiutarvi a ottenere il massimo dai vostri modelli di deep learning.
Per garantire che i modelli raggiungano prestazioni ottimali non basta modificare le configurazioni, ma è necessario comprendere le esigenze dell'applicazione e prendere decisioni informate. Che si tratti di ottimizzare le risposte in tempo reale o di massimizzare il throughput per l'elaborazione su larga scala, la combinazione dei modelli Ultralytics YOLO e di OpenVINO offre agli sviluppatori un potente kit di strumenti per implementare soluzioni di intelligenza artificiale ad alte prestazioni.
FAQ
Come si ottimizzano i modelli Ultralytics YOLO per una bassa latenza utilizzando OpenVINO?
L'ottimizzazione dei modelli Ultralytics YOLO per una bassa latenza comporta diverse strategie chiave:
- Singola inferenza per dispositivo: Limitare le inferenze a una alla volta per dispositivo per ridurre al minimo i ritardi.
- Sfruttare i sottodispositivi: Utilizzare dispositivi come CPU multi-socket o GPU multi-tile che possono gestire più richieste con un aumento minimo della latenza.
- OpenVINO Suggerimenti sulle prestazioni: Utilizzare OpenVINO's
ov::hint::PerformanceMode::LATENCY
durante la compilazione del modello per una messa a punto semplificata e indipendente dal dispositivo.
Per ulteriori suggerimenti pratici sull'ottimizzazione della latenza, consultate la sezione Ottimizzazione della latenza della nostra guida.
Perché utilizzare OpenVINO per ottimizzare il throughput di Ultralytics YOLO ?
OpenVINO migliora il throughput del modello Ultralytics YOLO massimizzando l'utilizzo delle risorse del dispositivo senza sacrificare le prestazioni. I vantaggi principali includono:
- Suggerimenti sulle prestazioni: Semplice messa a punto delle prestazioni di alto livello tra i dispositivi.
- Batching esplicito e flussi: Messa a punto per prestazioni avanzate.
- Esecuzione su più dispositivi: Bilanciamento automatico del carico di inferenza, che facilita la gestione a livello di applicazione.
Esempio di configurazione:
import openvino.properties.hint as hints
config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
Per saperne di più sull'ottimizzazione del throughput, consultate la sezione Ottimizzazione del throughput della nostra guida dettagliata.
Qual è la pratica migliore per ridurre la latenza della prima inferenza in OpenVINO?
Per ridurre la latenza di prima inferenza, considerate queste pratiche:
- Cache del modello: utilizzare la cache del modello per ridurre i tempi di caricamento e compilazione.
- Mappatura dei modelli e lettura: Utilizzare la mappatura (
ov::enable_mmap(true)
) per impostazione predefinita, ma passa alla lettura (ov::enable_mmap(false)
) se il modello si trova su un'unità rimovibile o di rete. - Selezione automatica del dispositivo: Utilizzate la modalità AUTO per iniziare con l'inferenza di CPU e passare all'acceleratore senza problemi.
Per informazioni dettagliate sulle strategie di gestione della latenza di prima inferenza, consultare la sezione Gestione della latenza di prima inferenza.
Come posso bilanciare l'ottimizzazione della latenza e del throughput con Ultralytics YOLO e OpenVINO?
Per bilanciare l'ottimizzazione della latenza e del throughput è necessario comprendere le esigenze dell'applicazione:
- Ottimizzazione della latenza: Ideale per applicazioni in tempo reale che richiedono risposte immediate (ad esempio, applicazioni di tipo consumer).
- Ottimizzazione del throughput: Ideale per scenari con molte inferenze simultanee, che massimizzano l'uso delle risorse (ad esempio, implementazioni su larga scala).
L'uso dei suggerimenti sulle prestazioni di alto livello e delle modalità multidispositivo di OpenVINO può aiutare a trovare il giusto equilibrio. Scegliete i suggerimenti appropriati di OpenVINO Performance in base alle vostre esigenze specifiche.
Posso utilizzare i modelli di Ultralytics YOLO con altri framework di IA oltre a OpenVINO?
Sì, i modelli di Ultralytics YOLO sono molto versatili e possono essere integrati con diversi framework di intelligenza artificiale. Le opzioni includono:
- TensorRT: Per l'ottimizzazione di NVIDIA GPU , seguire la guida all'integrazione diTensorRT .
- CoreML: Per i dispositivi Apple, consultare le nostre istruzioni per l'esportazione suCoreML .
- TensorFlow.js: Per le applicazioni web e Node.js, consultare la guida alla conversione diTF.js.
Esplorate altre integrazioni nella pagina delle integrazioni diUltralytics .