Skip to content

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

OpenVINO Écosystè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 essentiel d'obtenir des performances optimales. Ce guide se penche sur l'utilisation de la boîte à outils OpenVINO de Intel pour optimiser l'inférence, en se concentrant sur la latence et le débit. Que vous travailliez sur des applications grand public ou sur des déploiements à grande échelle, la compréhension et l'application de ces stratégies d'optimisation permettront à vos modèles de fonctionner efficacement sur différents appareils.

Optimisation de la latence

L'optimisation de la latence est vitale pour les applications nécessitant 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 des 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 de la latence.
  • Exploiter les sous-dispositifs : Les appareils tels que les CPU multi-socket ou les GPU multi-tiroirs peuvent exĂ©cuter des requĂŞtes multiples avec une augmentation minimale de la latence en utilisant leurs sous-dispositifs internes.
  • OpenVINO Conseils de performance : En utilisant le site OpenVINO 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 et pĂ©renne.

Gestion de 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, il convient d'utiliser 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 CPU offrent gĂ©nĂ©ralement les temps de chargement de modèle les plus rapides.
  • Cartographie des modèles vs. lecture : Pour rĂ©duire les temps de chargement, OpenVINO a remplacĂ© la lecture du modèle par le mappage. Toutefois, si le modèle se trouve sur un disque amovible ou un disque rĂ©seau, il convient d'utiliser la fonction ov::enable_mmap(false) pour revenir Ă  la lecture.
  • SĂ©lection automatique des appareils : 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 manière transparente la latence de la première infĂ©rence.

Optimisation du débit

L'optimisation du débit est cruciale pour les scénarios servant simultanément de nombreuses requêtes d'inférence, maximisant l'utilisation des ressources sans sacrifier de manière significative la performance des requêtes 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 lots explicite et flux : Une approche plus granulaire impliquant la mise en lots explicite et l'utilisation de flux pour un réglage avancé des performances.

Conception d'applications axées sur le débit :

Pour maximiser le débit, les applications doivent

  • Traiter les entrĂ©es en parallèle, en exploitant pleinement les capacitĂ©s de l'appareil.
  • DĂ©composer le flux de donnĂ©es en demandes d'infĂ©rence concurrentes, programmĂ©es pour une exĂ©cution parallèle.
  • Utilisez l'API asynchrone avec des rappels pour maintenir l'efficacitĂ© et Ă©viter la saturation de l'appareil.

Exécution multi-appareils :

OpenVINOLe mode multi-appareils de la solution simplifie l'augmentation 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 améliorer considérablement les performances de votre application. En appliquant soigneusement les stratégies décrites dans ce guide, les développeurs peuvent s'assurer que leurs modèles fonctionnent efficacement et répondent aux exigences des différents scénarios de déploiement. N'oubliez pas que le choix entre l'optimisation de la latence ou du débit dépend des besoins spécifiques de votre 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, consultez la documentationOpenVINO et le référentielUltralytics YOLO . Ces ressources fournissent des guides détaillés, des tutoriels et une assistance communautaire pour vous aider à tirer le meilleur parti de vos modèles d'apprentissage profond.


Pour que vos modèles atteignent des performances optimales, il ne suffit pas d'ajuster les configurations ; il faut aussi comprendre les besoins de votre 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 boîte à outils puissante 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 : Limitez les inférences à une seule à la fois par appareil pour réduire les délais.
  2. Exploiter les sous-dispositifs : Utiliser des dispositifs tels que des processeurs multi-socket ou des GPU multi-tiroirs qui peuvent traiter plusieurs requĂŞtes avec une augmentation minimale de la latence.
  3. OpenVINO Conseils de performance : Utilisez le site OpenVINO ov::hint::PerformanceMode::LATENCY lors de la compilation du modèle pour une mise au point simplifiée et adaptée à l'appareil.

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

Pourquoi 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 : Optimisation simple et de haut niveau des performances des appareils.
  • Batching explicite et flux de donnĂ©es : RĂ©glage fin pour des performances avancĂ©es.
  • ExĂ©cution sur plusieurs 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)

Pour en savoir plus sur l'optimisation du débit, consultez 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 le temps de latence de la première inférence, il convient d'adopter les pratiques suivantes :

  1. Mise en cache du modèle : utiliser la mise en cache du modèle pour réduire les temps de chargement et de compilation.
  2. Cartographie des modèles vs. lecture : Utiliser 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 lecteur amovible ou un lecteur réseau.
  3. Sélection de l'appareil AUTO : Utilisez le mode AUTO pour commencer avec l'inférence CPU et passer à un accélérateur en toute transparence.

Pour des stratégies détaillées sur la gestion de la latence de première inférence, reportez-vous à 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 votre application :

  • Optimisation du temps de 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 : Meilleure solution pour les scĂ©narios comportant de nombreuses infĂ©rences simultanĂ©es, afin de maximiser 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 vous aider à trouver le bon équilibre. Choisissez les conseils de performanceOpenVINO appropriés en fonction de vos besoins spécifiques.

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

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

Découvrez d'autres intégrations sur la pageUltralytics Integrations.

📅 Created 9 months ago ✏️ Updated 4 days ago

Commentaires