Optimisation de l'inférence OpenVINO pour les modèles Ultralytics YOLO : Un guide complet
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 lesov::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 :
-
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.
-
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 :
- Une seule inférence par appareil : Limitez les inférences à une seule à la fois par appareil pour réduire les délais.
- 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.
- 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 :
- Mise en cache du modèle : utiliser la mise en cache du modèle pour réduire les temps de chargement et de compilation.
- 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. - 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 :
- TensorRT: Pour l'optimisation de NVIDIA GPU , suivez le guide d'intégrationTensorRT .
- CoreML: Pour les appareils Apple, consultez nos instructions d'exportation surCoreML .
- TensorFlow.js : Pour les applications web et Node.js, voir le guide de conversionTF.js.
Découvrez d'autres intégrations sur la pageUltralytics Integrations.