Vai al contenuto

Ottimizzazione dell'inferenza OpenVINO per i modelli Ultralytics YOLO : Una guida completa

OpenVINO Ecosistema

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 tu stia lavorando ad applicazioni di tipo consumer o a implementazioni su larga scala, la comprensione e l'applicazione di queste strategie di ottimizzazione ti garantiranno un'esecuzione efficiente dei tuoi modelli sui vari dispositivi.

Ottimizzazione della latenza

L'ottimizzazione della latenza è fondamentale per le applicazioni che richiedono una risposta immediata da parte di un singolo modello dato un singolo input, tipico degli scenari consumer. L'obiettivo è ridurre al minimo il ritardo tra l'input e il risultato dell'inferenza. Tuttavia, ottenere 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 è quello di limitare a una sola inferenza alla volta per dispositivo. Un'ulteriore concomitanza porta spesso a un aumento della latenza.
  • Sfruttare i sotto-dispositivi: 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 il ov::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 interferenza:

  • Caching dei modelli: per ridurre i tempi di caricamento e compilazione dei modelli che incidono sulla latenza, usa il caching dei modelli quando è possibile. Per gli scenari in cui la cache non è praticabile, le CPU offrono generalmente i tempi di caricamento dei modelli più rapidi.
  • Mappatura del modello vs. 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, considera 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:

  1. 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.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. Batching esplicito e flussi: Un approccio più granulare che prevede il batching esplicito e l'uso di flussi per la regolazione avanzata delle prestazioni.

Progettare applicazioni orientate al throughput:

Per massimizzare il throughput, le applicazioni devono:

  • Elabora gli input in parallelo, sfruttando appieno le capacità del dispositivo.
  • Decomporre il flusso di dati in richieste di inferenza concorrenti, programmate per l'esecuzione in parallelo.
  • Utilizza l'API Async con le callback per mantenere l'efficienza ed evitare l'inedia del dispositivo.

Esecuzione su più dispositivi:

OpenVINOLa modalità multidispositivo semplifica la scalata 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 della tua 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. Ricorda che la scelta tra ottimizzare la latenza o il throughput dipende dalle esigenze specifiche della tua applicazione e dalle caratteristiche dell'ambiente di distribuzione.

Per informazioni tecniche più dettagliate e per gli ultimi aggiornamenti, consulta la documentazione diOpenVINO e l'archivioUltralytics YOLO . Queste risorse forniscono guide approfondite, tutorial e il supporto della comunità per aiutarti a ottenere il massimo dai tuoi modelli di deep learning.


Garantire ai tuoi modelli prestazioni ottimali non significa solo modificare le configurazioni, ma anche comprendere le esigenze della tua applicazione e prendere decisioni informate. Sia 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 di Ultralytics YOLO e di OpenVINO offre agli sviluppatori un potente kit di strumenti per implementare soluzioni di intelligenza artificiale ad alte prestazioni.

DOMANDE FREQUENTI

Come posso ottimizzare i modelli Ultralytics YOLO per ottenere una bassa latenza utilizzando OpenVINO?

L'ottimizzazione dei modelli di Ultralytics YOLO per una bassa latenza comporta diverse strategie chiave:

  1. Singola inferenza per dispositivo: Limita le inferenze a una alla volta per dispositivo per ridurre al minimo i ritardi.
  2. Sfruttare i sotto-dispositivi: Utilizza dispositivi come CPU multi-socket o GPU multi-tile che possono gestire più richieste con un aumento minimo della latenza.
  3. OpenVINO Suggerimenti sulle prestazioni: Utilizza il sito OpenVINO ov::hint::PerformanceMode::LATENCY durante la compilazione del modello per una messa a punto semplificata e indipendente dal dispositivo.

Per ulteriori consigli pratici sull'ottimizzazione della latenza, consulta la sezione Ottimizzazione della latenza della nostra guida.

Perché dovrei usare 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 su tutti i dispositivi.
  • Batching esplicito e flussi: Messa a punto per prestazioni avanzate.
  • Esecuzione su più dispositivi: Bilanciamento automatico del carico di inferenza, per facilitare 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, consulta 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 della prima inferenza, considera queste pratiche:

  1. Caching del modello: usa il caching del modello per ridurre i tempi di caricamento e compilazione.
  2. Mappatura del modello vs. lettura: Usa 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.
  3. Selezione automatica del dispositivo: Utilizza 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, consulta 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 della tua applicazione:

  • Ottimizzazione della latenza: Ideale per le applicazioni in tempo reale che richiedono risposte immediate (ad esempio, le applicazioni consumer).
  • Ottimizzazione del throughput: Ideale per scenari con molte inferenze simultanee, massimizzando l'uso delle risorse (ad esempio, implementazioni su larga scala).

L'utilizzo dei suggerimenti sulle prestazioni di alto livello e delle modalità multidispositivo di OpenVINO può aiutarti a trovare il giusto equilibrio. Scegli i suggerimenti appropriati per le prestazioni diOpenVINO in base alle tue esigenze specifiche.

Posso utilizzare i modelli di Ultralytics YOLO con altri framework di intelligenza artificiale 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:

Scopri altre integrazioni nella pagina delle integrazioni diUltralytics .



Creato 2024-03-17, Aggiornato 2024-07-05
Autori: glenn-jocher (5)

Commenti