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 zorgt ervoor 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 inferentielatentie 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 as props
import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
  1. 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.



Gemaakt op 2024-03-17, Bijgewerkt op 2024-03-17
Auteurs: glenn-jocher (1)

Reacties