Skip to content

Optimisation de l'inférence OpenVINO pour les modèles Ultralytics YOLO : Un guide complet

OpenVINO Ecosystème

Introduction

Lors du déploiement de modèles d'apprentissage profond, en particulier ceux destinés à la détection d'objets tels que les modèles Ultralytics YOLO , il est crucial d'obtenir des performances optimales. Ce guide approfondit l'exploitation de la boîte à outils Intel's OpenVINO pour optimiser l'inférence, en se concentrant sur la latence et le débit. Que tu travailles sur des applications grand public ou sur des déploiements à grande échelle, la compréhension et l'application de ces stratégies d'optimisation te permettront de t'assurer que tes modèles fonctionnent efficacement sur différents appareils.

Optimisation de la latence

L'optimisation de la latence est vitale pour les applications qui exigent une réponse immédiate d'un seul modèle à partir d'une seule entrée, ce qui est typique des scénarios de consommation. L'objectif est de minimiser le délai entre l'entrée et le résultat de l'inférence. Cependant, l'obtention d'une faible latence nécessite une attention particulière, notamment lors de l'exécution d'inférences simultanées ou de la gestion de plusieurs modèles.

Stratégies clés pour l'optimisation du temps de latence :

  • Une seule infĂ©rence par appareil : La façon la plus simple d'obtenir une faible latence est de se limiter Ă  une seule infĂ©rence Ă  la fois par appareil. Une concurrence supplĂ©mentaire entraĂ®ne souvent une augmentation du temps de latence.
  • Exploiter les sous-dispositifs : Les appareils tels que les CPU multi-socket ou les GPU multi-tiroirs peuvent exĂ©cuter plusieurs requĂŞtes avec une augmentation minimale de la latence en utilisant leurs sous-dispositifs internes.
  • OpenVINO Conseils de performance : En utilisant OpenVINO's ov::hint::PerformanceMode::LATENCY pour les ov::hint::performance_mode lors de la compilation du modèle simplifie le rĂ©glage des performances, offrant ainsi une approche agnostique des appareils et Ă  l'Ă©preuve du temps.

Gérer la latence de la première inférence :

  • Mise en cache du modèle : pour attĂ©nuer l'impact du chargement du modèle et des temps de compilation sur la latence, utilise la mise en cache du modèle lorsque c'est possible. Pour les scĂ©narios oĂą la mise en cache n'est pas viable, les unitĂ©s centrales offrent gĂ©nĂ©ralement les temps de chargement de modèle les plus rapides.
  • Cartographie du modèle vs. lecture : Pour rĂ©duire les temps de chargement, OpenVINO a remplacĂ© la lecture du modèle par le mappage. Cependant, si le modèle se trouve sur un disque amovible ou un disque rĂ©seau, il faut envisager d'utiliser ov::enable_mmap(false) pour revenir Ă  la lecture.
  • AUTO SĂ©lection de l'appareil : Ce mode commence l'infĂ©rence sur le site CPU, et passe Ă  un accĂ©lĂ©rateur une fois qu'il est prĂŞt, ce qui rĂ©duit de façon transparente le temps de latence de la première infĂ©rence.

Optimiser le débit

L'optimisation du débit est cruciale pour les scénarios servant simultanément de nombreuses demandes d'inférence, maximisant l'utilisation des ressources sans sacrifier de manière significative la performance des demandes individuelles.

Approches de l'optimisation du débit :

  1. OpenVINO Indices de performance : Une méthode de haut niveau, à l'épreuve du temps, pour améliorer le débit entre les appareils à l'aide de conseils de performance.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. Mise en lot explicite et flux : Une approche plus granulaire impliquant la mise en lot explicite et l'utilisation de flux pour un réglage avancé des performances.

Concevoir des applications axées sur le débit :

Pour maximiser le débit, les applications doivent :

  • Traite les entrĂ©es en parallèle, en utilisant pleinement les capacitĂ©s de l'appareil.
  • DĂ©compose le flux de donnĂ©es en demandes d'infĂ©rence concurrentes, programmĂ©es pour une exĂ©cution parallèle.
  • Utilise l'API asynchrone avec des rappels pour maintenir l'efficacitĂ© et Ă©viter la famine des appareils.

Exécution multi-appareils :

OpenVINOLe mode multi-appareils du logiciel simplifie la mise à l'échelle du débit en équilibrant automatiquement les demandes d'inférence entre les appareils, sans nécessiter de gestion des appareils au niveau de l'application.

Conclusion

L'optimisation des modèles Ultralytics YOLO pour la latence et le débit avec OpenVINO peut considérablement améliorer les performances de ton application. En appliquant soigneusement les stratégies décrites dans ce guide, les développeurs peuvent s'assurer que leurs modèles fonctionnent efficacement, en répondant aux exigences des différents scénarios de déploiement. N'oublie pas que le choix entre l'optimisation de la latence ou du débit dépend des besoins spécifiques de ton application et des caractéristiques de l'environnement de déploiement.

Pour obtenir des informations techniques plus détaillées et les dernières mises à jour, reporte-toi à la documentationOpenVINO et au référentielUltralytics YOLO . Ces ressources fournissent des guides approfondis, des tutoriels et une assistance communautaire pour t'aider à tirer le meilleur parti de tes modèles d'apprentissage profond.


Pour que tes modèles atteignent des performances optimales, il ne suffit pas d'ajuster les configurations ; il faut comprendre les besoins de ton application et prendre des décisions éclairées. Qu'il s'agisse d'optimiser les réponses en temps réel ou de maximiser le débit pour un traitement à grande échelle, la combinaison des modèles Ultralytics YOLO et OpenVINO offre aux développeurs une puissante boîte à outils pour déployer des solutions d'IA performantes.

FAQ

Comment optimiser les modèles Ultralytics YOLO pour une faible latence en utilisant OpenVINO?

L'optimisation des modèles Ultralytics YOLO pour une faible latence implique plusieurs stratégies clés :

  1. Une seule inférence par appareil : Limite les inférences à une seule à la fois par appareil pour minimiser les délais.
  2. Exploiter les sous-dispositifs : Utilise des appareils tels que des CPU multi-socket ou des GPU multi-tiroirs qui peuvent traiter plusieurs demandes avec une augmentation minimale du temps de latence.
  3. OpenVINO Conseils de performance : Utilise le site OpenVINO ov::hint::PerformanceMode::LATENCY pendant la compilation du modèle pour un réglage simplifié et adapté à l'appareil.

Pour plus de conseils pratiques sur l'optimisation de la latence, consulte la section Optimisation de la latence de notre guide.

Pourquoi devrais-je utiliser OpenVINO pour optimiser le débit de Ultralytics YOLO ?

OpenVINO améliore le débit du modèle Ultralytics YOLO en maximisant l'utilisation des ressources de l'appareil sans sacrifier les performances. Les principaux avantages sont les suivants :

  • Conseils de performance : RĂ©glage simple et de haut niveau des performances des appareils.
  • La mise en lots explicite et les flux : RĂ©glage fin pour des performances avancĂ©es.
  • ExĂ©cution multi-appareils : Équilibrage automatisĂ© de la charge d'infĂ©rence, facilitant la gestion au niveau de l'application.

Exemple de configuration :

import openvino.properties.hint as hints

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

Tu trouveras plus d'informations sur l'optimisation du débit dans la section Optimisation du débit de notre guide détaillé.

Quelle est la meilleure pratique pour réduire le temps de latence de la première inférence dans OpenVINO?

Pour réduire la latence de la première inférence, considère les pratiques suivantes :

  1. Mise en cache des modèles : utilise la mise en cache des modèles pour réduire les temps de chargement et de compilation.
  2. Cartographie du modèle vs. lecture : Utilise la cartographie (ov::enable_mmap(true)) par défaut, mais passe à la lecture (ov::enable_mmap(false)) si le modèle se trouve sur un disque amovible ou un disque réseau.
  3. Sélection de l'appareil AUTO : Utilise le mode AUTO pour commencer avec l'inférence CPU et passer à un accélérateur en douceur.

Pour obtenir des stratégies détaillées sur la gestion de la latence de première inférence, reporte-toi à la section Gestion de la latence de première inférence.

Comment équilibrer l'optimisation de la latence et du débit avec Ultralytics YOLO et OpenVINO?

L'équilibre entre l'optimisation de la latence et du débit nécessite de comprendre les besoins de ton application :

  • Optimisation de la latence : IdĂ©al pour les applications en temps rĂ©el nĂ©cessitant des rĂ©ponses immĂ©diates (par exemple, les applications grand public).
  • Optimisation du dĂ©bit : Meilleur pour les scĂ©narios avec de nombreuses infĂ©rences simultanĂ©es, maximisant l'utilisation des ressources (par exemple, les dĂ©ploiements Ă  grande Ă©chelle).

L'utilisation des conseils de performance de haut niveau et des modes multi-appareils de OpenVINO peut t'aider à trouver le bon équilibre. Choisis les conseils de performanceOpenVINO appropriés en fonction de tes besoins spécifiques.

Puis-je utiliser les modèles Ultralytics YOLO avec d'autres frameworks d'IA que OpenVINO?

Oui, les modèles de Ultralytics YOLO sont très polyvalents et peuvent être intégrés à divers cadres d'IA. Les options comprennent :

Explore d'autres intégrations sur la pageUltralytics Integrations.



Créé le 2024-03-17, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (5)

Commentaires