Link to this sectionOttimizzazione dell'inferenza OpenVINO per YOLO#
Link to this sectionIntroduzione#
Quando distribuisci modelli di deep learning, in particolare quelli per il rilevamento di oggetti come i modelli Ultralytics YOLO, ottenere prestazioni ottimali è fondamentale. Questa guida approfondisce l'utilizzo del toolkit OpenVINO di Intel per ottimizzare l'inferenza, concentrandosi su latenza e throughput. Che tu stia lavorando su applicazioni consumer o distribuzioni su larga scala, comprendere e applicare queste strategie di ottimizzazione garantirà che i tuoi modelli funzionino in modo efficiente su vari dispositivi.
Link to this sectionOttimizzazione per la latenza#
L'ottimizzazione della latenza è vitale per le applicazioni che richiedono una risposta immediata da un singolo modello dato un singolo input, tipico negli scenari consumer. L'obiettivo è ridurre al minimo il ritardo tra input e risultato dell'inferenza. Tuttavia, ottenere una bassa latenza comporta un'attenta considerazione, specialmente quando si eseguono inferenze simultanee o si gestiscono più modelli.
Link to this sectionStrategie chiave per l'ottimizzazione della latenza:#
- Singola inferenza per dispositivo: Il modo più semplice per ottenere una bassa latenza è limitarsi a un'inferenza alla volta per dispositivo. La concorrenza aggiuntiva spesso porta 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.
- Suggerimenti sulle prestazioni di OpenVINO: L'utilizzo di
ov::LATENCYdi OpenVINO per la proprietàov::performance_modedurante la compilazione del modello semplifica la messa a punto delle prestazioni, offrendo un approccio agnostico rispetto al dispositivo e a prova di futuro.
Link to this sectionGestione della latenza di prima inferenza:#
- Caching del modello: Per mitigare il caricamento del modello e i tempi di compilazione che influiscono sulla latenza, usa il caching del modello dove possibile. Per gli scenari in cui il caching non è fattibile, le CPU generalmente offrono i tempi di caricamento del modello più rapidi.
- Mapping vs. Lettura del modello: Per ridurre i tempi di caricamento, OpenVINO ha sostituito la lettura del modello con il mapping. Tuttavia, se il modello si trova su un'unità rimovibile o di rete, considera l'utilizzo di
ov::enable_mmap(false)per tornare alla lettura. - Selezione del dispositivo AUTO: Questa modalità avvia l'inferenza sulla CPU, passando a un acceleratore una volta pronto, riducendo senza problemi la latenza della prima inferenza.
Link to this sectionOttimizzazione per il throughput#
L'ottimizzazione del throughput è fondamentale per gli scenari che servono numerose richieste di inferenza contemporaneamente, massimizzando l'utilizzo delle risorse senza sacrificare significativamente le prestazioni della singola richiesta.
Link to this sectionApprocci all'ottimizzazione del throughput:#
-
Suggerimenti sulle prestazioni di OpenVINO: Un metodo di alto livello a prova di futuro per migliorare il throughput tra i dispositivi utilizzando suggerimenti sulle prestazioni.
import openvino.properties.hint as hints config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT} compiled_model = core.compile_model(model, "GPU", config) -
Batching esplicito e flussi: Un approccio più granulare che coinvolge il batching esplicito e l'uso di flussi (streams) per un'avanzata messa a punto delle prestazioni.
Link to this sectionProgettazione di applicazioni orientate al throughput:#
Per massimizzare il throughput, le applicazioni dovrebbero:
- Elaborare gli input in parallelo, sfruttando appieno le capacità del dispositivo.
- Decomporre il flusso di dati in richieste di inferenza simultanee, pianificate per l'esecuzione in parallelo.
- Utilizzare l'API asincrona con callback per mantenere l'efficienza ed evitare il sotto-utilizzo del dispositivo.
Link to this sectionEsecuzione multi-dispositivo:#
La modalità multi-dispositivo di OpenVINO semplifica il ridimensionamento del throughput bilanciando automaticamente le richieste di inferenza tra i dispositivi senza richiedere la gestione del dispositivo a livello di applicazione.
Link to this sectionGuadagni di prestazioni nel mondo reale#
L'implementazione delle ottimizzazioni OpenVINO con i modelli Ultralytics YOLO può produrre miglioramenti significativi delle prestazioni. Come dimostrato nei benchmark, gli utenti possono sperimentare velocità di inferenza fino a 3 volte superiori sulle CPU Intel, con accelerazioni ancora maggiori possibili sull'intero spettro hardware di Intel, inclusi GPU integrate, GPU dedicate e VPU.
Ad esempio, quando si eseguono modelli YOLO26 su CPU Intel Xeon, le versioni ottimizzate per OpenVINO superano costantemente le controparti PyTorch in termini di tempo di inferenza per immagine, senza compromettere l'accuratezza.
Link to this sectionImplementazione pratica#
Per esportare e ottimizzare il tuo modello Ultralytics YOLO per OpenVINO, puoi utilizzare la funzionalità di export:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Export the model to OpenVINO format
model.export(format="openvino", quantize=16) # Export with FP16 precisionDopo l'esportazione, puoi eseguire l'inferenza con il modello ottimizzato:
# Load the OpenVINO model
ov_model = YOLO("yolo26n_openvino_model/")
# Run inference (Ultralytics auto-selects OpenVINO LATENCY mode for batch=1)
results = ov_model("https://ultralytics.com/images/bus.jpg", verbose=True)Link to this sectionConclusione#
Ottimizzare i modelli Ultralytics YOLO per latenza e throughput con OpenVINO può migliorare significativamente le prestazioni della tua applicazione. Applicando attentamente le strategie delineate in questa guida, gli sviluppatori possono garantire che i loro modelli funzionino in modo efficiente, soddisfacendo le richieste di vari scenari di distribuzione. Ricorda, la scelta tra l'ottimizzazione per 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 gli ultimi aggiornamenti, consulta la documentazione di OpenVINO e il repository Ultralytics YOLO. Queste risorse forniscono guide approfondite, tutorial e supporto dalla community per aiutarti a ottenere il massimo dai tuoi modelli di deep learning.
Assicurarsi che i tuoi modelli raggiungano prestazioni ottimali non riguarda solo la modifica delle configurazioni; si tratta di comprendere le esigenze della tua applicazione e prendere decisioni informate. Che tu stia ottimizzando per risposte in tempo reale o massimizzando il throughput per l'elaborazione su larga scala, la combinazione dei modelli Ultralytics YOLO e OpenVINO offre un potente toolkit per gli sviluppatori per distribuire soluzioni AI ad alte prestazioni.
Link to this sectionFAQ#
Link to this sectionCome posso ottimizzare i modelli Ultralytics YOLO per una bassa latenza utilizzando OpenVINO?#
L'ottimizzazione dei modelli Ultralytics YOLO per una bassa latenza coinvolge diverse strategie chiave:
- Singola inferenza per dispositivo: Limita le inferenze a una alla volta per dispositivo per ridurre al minimo i ritardi.
- Sfruttare i sotto-dispositivi: Utilizza dispositivi come CPU multi-socket o GPU multi-tile in grado di gestire più richieste con un aumento minimo della latenza.
- Suggerimenti sulle prestazioni di OpenVINO: Usa
ov::LATENCYdi OpenVINO durante la compilazione del modello per una messa a punto semplificata e agnostica rispetto al dispositivo.
Per suggerimenti più pratici sull'ottimizzazione della latenza, consulta la sezione Ottimizzazione della Latenza della nostra guida.
Link to this sectionPerché 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 chiave includono:
- Suggerimenti sulle prestazioni: Messa a punto delle prestazioni semplice e di alto livello tra i dispositivi.
- Batching esplicito e flussi: Messa a punto per prestazioni avanzate.
- Esecuzione multi-dispositivo: Bilanciamento automatico del carico di inferenza, facilitando 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)Scopri di più sull'ottimizzazione del throughput nella sezione Ottimizzazione del Throughput della nostra guida dettagliata.
Link to this sectionQual è la best practice per ridurre la latenza della prima inferenza in OpenVINO?#
Per ridurre la latenza della prima inferenza, considera queste pratiche:
- Caching del modello: Usa il caching del modello per ridurre i tempi di caricamento e compilazione.
- Mapping vs. Lettura del modello: Usa il mapping (
ov::enable_mmap(true)) come impostazione predefinita, ma passa alla lettura (ov::enable_mmap(false)) se il modello si trova su un'unità rimovibile o di rete. - Selezione del dispositivo AUTO: Utilizza la modalità AUTO per iniziare con l'inferenza CPU e passare a un acceleratore senza problemi.
Per strategie dettagliate sulla gestione della latenza della prima inferenza, consulta la sezione Gestione della Latenza di Prima Inferenza.
Link to this sectionCome posso bilanciare l'ottimizzazione per latenza e throughput con Ultralytics YOLO e OpenVINO?#
Bilanciare l'ottimizzazione di latenza e throughput richiede la comprensione delle esigenze della tua applicazione:
- Ottimizzazione della Latenza: Ideale per applicazioni in tempo reale che richiedono risposte immediate (es. app consumer).
- Ottimizzazione del Throughput: Ideale per scenari con molte inferenze simultanee, massimizzando l'uso delle risorse (es. distribuzioni su larga scala).
L'utilizzo dei suggerimenti sulle prestazioni di alto livello di OpenVINO e delle modalità multi-dispositivo può aiutare a trovare il giusto equilibrio. Scegli i suggerimenti sulle prestazioni OpenVINO appropriati in base ai tuoi requisiti specifici.
Link to this sectionPosso usare i modelli Ultralytics YOLO con altri framework AI oltre a OpenVINO?#
Sì, i modelli Ultralytics YOLO sono altamente versatili e possono essere integrati con vari framework AI. Le opzioni includono:
- TensorRT: Per l'ottimizzazione della GPU NVIDIA, segui la guida all'integrazione di TensorRT.
- CoreML: Per i dispositivi Apple, consulta le nostre istruzioni per l'esportazione CoreML.
- TensorFlow.js: Per app web e Node.js, vedi la guida alla conversione TF.js.
Esplora ulteriori integrazioni sulla pagina Integrazioni di Ultralytics.