Overslaan naar inhoud

OpenVINO Inferentie optimaliseren voor Ultralytics YOLO Modellen: Een uitgebreide gids

OpenVINO Ecosysteem

Inleiding

Bij het inzetten van deep learning modellen, vooral die voor objectdetectie zoals Ultralytics YOLO modellen, is het bereiken van optimale prestaties cruciaal. Deze gids gaat dieper in op het gebruik van Intel's OpenVINO toolkit om inferentie te optimaliseren, met de nadruk op latentie en doorvoer. Of je nu werkt aan consumententoepassingen of grootschalige implementaties, het begrijpen en toepassen van deze optimalisatiestrategieƫn zal ervoor zorgen dat je modellen efficiƫnt werken op verschillende apparaten.

Optimaliseren voor latentie

Latency optimalisatie is van vitaal belang voor toepassingen die een onmiddellijke reactie vereisen van een enkel model gegeven een enkele invoer, typisch voor consumentenscenario's. Het doel is om de vertraging tussen invoer en inferentie resultaat te minimaliseren. Het doel is om de vertraging tussen invoer en inferentieresultaat te minimaliseren. Om een lage latentie te bereiken moet je echter goed nadenken, vooral als je gelijktijdige inferenties uitvoert of meerdere modellen beheert.

Belangrijkste strategieƫn voor latentieoptimalisatie:

  • EĆ©n inferentie per apparaat: De eenvoudigste manier om een lage latency te bereiken is door te beperken tot Ć©Ć©n inferentie per apparaat. Extra gelijktijdigheid leidt vaak tot een hogere latentie.
  • Gebruik maken van subapparaten: Apparaten zoals multi-socket CPU's of multi-tile GPU's kunnen meerdere verzoeken uitvoeren met minimale latentietoename door gebruik te maken van hun interne subapparaten.
  • OpenVINO Prestatie Hints: Met behulp van OpenVINO's ov::hint::PerformanceMode::LATENCY voor de ov::hint::performance_mode eigenschap tijdens het compileren van het model vereenvoudigt het afstemmen van de prestaties en biedt een apparaatagnostische en toekomstbestendige aanpak.

De eerste-inferentietijd beheren:

  • Model caching: Om het laden van modellen en compileertijden die latency beĆÆnvloeden te beperken, gebruik je waar mogelijk model caching. Voor scenario's waar caching niet mogelijk is, bieden CPU's over het algemeen de snelste modellaadtijden.
  • Model Mapping vs. Lezen: Om de laadtijd te verkorten, heeft OpenVINO het lezen van modellen vervangen door mapping. Als het model echter op een verwisselbare schijf of netwerkschijf staat, overweeg dan het gebruik van ov::enable_mmap(false) om terug te gaan naar lezen.
  • AUTO apparaatselectie: Deze modus begint met inferentie op de CPU en schakelt over naar een versneller zodra deze gereed is, waardoor de eerste inferentie latentie naadloos wordt verminderd.

Optimaliseren voor doorvoer

Doorvoeroptimalisatie is cruciaal voor scenario's waarin een groot aantal inferentieverzoeken gelijktijdig wordt verwerkt, waarbij het gebruik van bronnen wordt gemaximaliseerd zonder dat dit ten koste gaat van de prestaties van individuele verzoeken.

Benaderingen voor doorvoeroptimalisatie:

  1. OpenVINO Prestatie Hints: Een toekomstvaste methode op hoog niveau om de doorvoer tussen apparaten te verbeteren met behulp van prestatiehints.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. Explicieteatching en streams: Een meer granulaire aanpak met expliciete batching en het gebruik van streams voor geavanceerde prestatie-afstemming.

Doorvoergeoriƫnteerde toepassingen ontwerpen:

Om de doorvoer te maximaliseren, moeten applicaties:

  • Invoer parallel verwerken, zodat de mogelijkheden van het apparaat volledig worden benut.
  • Ontbind de gegevensstroom in gelijktijdige inferentieverzoeken, gepland voor parallelle uitvoering.
  • Gebruik de Async API met callbacks om de efficiĆ«ntie te behouden en apparaatsterfte te voorkomen.

Uitvoering op meerdere apparaten:

OpenVINODe modus voor meerdere apparaten vereenvoudigt het schalen van de doorvoer door inferentieverzoeken automatisch over apparaten te verdelen zonder dat apparaatbeheer op applicatieniveau nodig is.

Conclusie

Het optimaliseren van Ultralytics YOLO modellen voor latency en throughput met OpenVINO kan de prestaties van je applicatie aanzienlijk verbeteren. Door de strategieƫn die in deze gids worden beschreven zorgvuldig toe te passen, kunnen ontwikkelaars ervoor zorgen dat hun modellen efficiƫnt draaien en voldoen aan de eisen van verschillende implementatiescenario's. Onthoud dat de keuze tussen optimaliseren voor latentie of doorvoer afhangt van je specifieke applicatiebehoeften en de kenmerken van de implementatieomgeving.

Raadpleeg voor meer gedetailleerde technische informatie en de nieuwste updates de OpenVINO documentatie en Ultralytics YOLO repository. Deze bronnen bieden diepgaande gidsen, tutorials en ondersteuning van de community om je te helpen het meeste uit je deep learning modellen te halen.


Om ervoor te zorgen dat je modellen optimaal presteren, moet je niet alleen configuraties aanpassen, maar ook de behoeften van je toepassing begrijpen en weloverwogen beslissingen nemen. Of je nu optimaliseert voor realtime reacties of de doorvoer maximaliseert voor grootschalige verwerking, de combinatie van Ultralytics YOLO modellen en OpenVINO biedt een krachtige toolkit voor ontwikkelaars om krachtige AI-oplossingen in te zetten.

FAQ

Hoe optimaliseer ik Ultralytics YOLO modellen voor lage latency met OpenVINO?

Het optimaliseren van Ultralytics YOLO modellen voor lage latency omvat verschillende belangrijke strategieƫn:

  1. EĆ©n conclusie per apparaat: Beperk inferenties tot Ć©Ć©n per apparaat om vertragingen te minimaliseren.
  2. Subapparaten inzetten: Gebruik apparaten zoals multi-socket CPU's of multi-tile GPU's die meerdere verzoeken kunnen verwerken met minimale vertragingstoename.
  3. OpenVINO Prestatie Hints: Gebruik OpenVINO's ov::hint::PerformanceMode::LATENCY tijdens het compileren van het model voor vereenvoudigde, apparaatagnostische afstemming.

Bekijk voor meer praktische tips over het optimaliseren van latency het gedeelte Latency Optimization van onze gids.

Waarom zou ik OpenVINO gebruiken voor het optimaliseren van Ultralytics YOLO doorvoer?

OpenVINO verbetert de verwerkingscapaciteit van Ultralytics YOLO modellen door het gebruik van bronnen op het apparaat te maximaliseren zonder dat dit ten koste gaat van de prestaties. De belangrijkste voordelen zijn:

  • Prestatie Hints: Eenvoudige prestatieafstemming op hoog niveau voor verschillende apparaten.
  • Explicieteatching en streams: Fijnafstemming voor geavanceerde prestaties.
  • Uitvoering op meerdere apparaten: Geautomatiseerde inferentie load balancing, waardoor het beheer op applicatieniveau eenvoudiger wordt.

Voorbeeldconfiguratie:

import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)

Lees meer over doorvoeroptimalisatie in het gedeelte Doorvoeroptimalisatie van onze gedetailleerde handleiding.

Wat is de beste werkwijze voor het verminderen van de first-inference latency in OpenVINO?

Om de eerste-inferentiewachttijd te verminderen, kun je de volgende werkwijzen overwegen:

  1. Model caching: Gebruik model caching om laad- en compileertijden te verminderen.
  2. Model Mapping vs. Lezen: Gebruik mapping (ov::enable_mmap(true)) standaard, maar schakel over naar lezen (ov::enable_mmap(false)) als het model op een verwisselbaar station of een netwerkstation staat.
  3. AUTO apparaatselectie: Gebruik de AUTO-modus om te beginnen met CPU inferentie en naadloos over te schakelen naar een versneller.

Voor gedetailleerde strategieƫn voor het beheren van de eerste-inferentielatentie, raadpleeg het hoofdstuk Het beheren van de eerste-inferentielatentie.

Hoe breng ik optimalisatie voor latency en throughput in balans met Ultralytics YOLO en OpenVINO?

Het in evenwicht brengen van latentie- en doorvoeroptimalisatie vereist inzicht in de behoeften van je applicatie:

  • Latency optimalisatie: Ideaal voor realtime toepassingen die onmiddellijke reacties vereisen (bijv. apps voor consumenten).
  • Doorvoeroptimalisatie: Het beste voor scenario's met veel gelijktijdige inferenties, om het gebruik van bronnen te maximaliseren (bijv. grootschalige implementaties).

Het gebruik van OpenVINO's hints voor prestaties op hoog niveau en modi voor meerdere apparaten kan helpen om de juiste balans te vinden. Kies de juiste OpenVINO Prestatie hints op basis van je specifieke eisen.

Kan ik Ultralytics YOLO modellen gebruiken met andere AI frameworks dan OpenVINO?

Ja, Ultralytics YOLO modellen zijn zeer veelzijdig en kunnen worden geĆÆntegreerd met verschillende AI-frameworks. Opties zijn onder andere:

Ontdek meer integraties op de paginaUltralytics Integraties.



Gemaakt op 2024-03-17, Bijgewerkt op 2024-07-05
Auteurs: glenn-jocher (5)

Reacties