Intel OpenVINO Export
Dans ce guide, nous couvrons l'exportation des modèles YOLOv8 au format OpenVINO qui permet de tripler la vitesse du processeur et d'accélérer l'inférence YOLO sur le matériel Intel GPU et NPU.
OpenVINO, abréviation de Open Visual Inference & Neural Network Optimization toolkit, est une boîte à outils complète pour l'optimisation et le déploiement de modèles d'inférence d'IA. Bien que le nom contienne Visual, OpenVINO prend également en charge diverses tâches supplémentaires, notamment le langage, l'audio, les séries temporelles, etc.
Regarde : Comment exporter et optimiser un modèle Ultralytics YOLOv8 pour l'inférence avec OpenVINO.
Exemples d'utilisation
Exporte un modèle YOLOv8n au format OpenVINO et effectue une inférence avec le modèle exporté.
Exemple
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')
# Export the model
model.export(format='openvino') # creates 'yolov8n_openvino_model/'
# Load the exported OpenVINO model
ov_model = YOLO('yolov8n_openvino_model/')
# Run inference
results = ov_model('https://ultralytics.com/images/bus.jpg')
Arguments
Clé | Valeur | Description |
---|---|---|
format |
'openvino' |
format vers lequel exporter |
imgsz |
640 |
taille de l'image sous forme de scalaire ou de liste (h, w), c'est-Ă -dire (640, 480) |
half |
False |
Quantification FP16 |
Avantages de la OpenVINO
- Performance: OpenVINO offre une inférence de haute performance en utilisant la puissance des CPU Intel, des GPU intégrés et discrets, et des FPGA.
- Prise en charge de l'exécution hétérogène: OpenVINO fournit une API permettant d'écrire une fois et de déployer sur n'importe quel matériel Intel pris en charge (CPU, GPU, FPGA, VPU, etc.).
- Optimiseur de modèle: OpenVINO fournit un optimiseur de modèle qui importe, convertit et optimise les modèles des frameworks d'apprentissage profond populaires tels que PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle, et Caffe.
- Facilité d'utilisation: La boîte à outils est livrée avec plus de 80 cahiers de tutoriels (y compris YOLOv8 optimization) qui enseignent différents aspects de la boîte à outils.
OpenVINO Structure des exportations
Lorsque tu exporteras un modèle au format OpenVINO , tu obtiendras un répertoire contenant les éléments suivants :
- Fichier XML: Décrit la topologie du réseau.
- Fichier BIN: Contient les données binaires de weights and biases .
- Fichier de correspondance: Contient les correspondances entre les tenseurs de sortie du modèle original et les noms de OpenVINO tensor .
Tu peux utiliser ces fichiers pour faire de l'inférence avec le moteur d'inférence OpenVINO .
Utilisation de OpenVINO Export dans le déploiement
Une fois que tu as les fichiers OpenVINO , tu peux utiliser le Runtime OpenVINO pour exécuter le modèle. Le Runtime fournit une API unifiée pour l'inférence sur tout le matériel Intel pris en charge. Il offre également des fonctionnalités avancées telles que l'équilibrage de la charge sur le matériel Intel et l'exécution asynchrone. Pour plus d'informations sur l'exécution de l'inférence, reporte-toi au Guide de l'inférence avec OpenVINO Runtime.
N'oublie pas que tu auras besoin des fichiers XML et BIN ainsi que de tous les paramètres spécifiques à l'application comme la taille de l'entrée, le facteur d'échelle pour la normalisation, etc. pour configurer et utiliser correctement le modèle avec le Runtime.
Dans ton application de déploiement, tu ferais généralement les étapes suivantes :
- Initialise OpenVINO en créant
core = Core()
. - Charge le modèle à l'aide de la fonction
core.read_model()
méthode. - Compile le modèle à l'aide de la fonction
core.compile_model()
fonction. - Prépare l'entrée (image, texte, audio, etc.).
- Exécute l'inférence en utilisant
compiled_model(input_data)
.
Pour des étapes plus détaillées et des extraits de code, reporte-toi à la documentation deOpenVINO ou au tutoriel de l'API.
OpenVINO YOLOv8 Repères
YOLOv8 Les benchmarks ci-dessous ont été réalisés par l'équipe de Ultralytics sur 4 formats de modèles différents, mesurant la vitesse et la précision : PyTorch, TorchScript, ONNX et OpenVINO. Les tests ont été effectués sur les GPU Intel Flex et Arc, ainsi que sur les CPU Intel Xeon en précision FP32 (avec la fonction half=False
argument).
Note
Les résultats des analyses comparatives ci-dessous sont donnés à titre de référence et peuvent varier en fonction de la configuration matérielle et logicielle exacte d'un système, ainsi que de la charge de travail actuelle du système au moment où les analyses comparatives sont effectuées.
Tous les points de repère sont exécutés avec openvino
Python version du paquet 2023.0.1.
Intel Flex GPU
La série Intel® Data Center GPU Flex est une solution polyvalente et robuste conçue pour le cloud visuel intelligent. Ce GPU prend en charge un large éventail de charges de travail, notamment le streaming multimédia, les jeux dans le cloud, l'inférence visuelle de l'IA et les charges de travail de l'infrastructure de bureau virtuel. Il se distingue par son architecture ouverte et sa prise en charge intégrée de l'encodage AV1, offrant une pile logicielle basée sur des normes pour des applications hautes performances et inter-architectures. Le GPU de la série Flex est optimisé pour la densité et la qualité, offrant une fiabilité, une disponibilité et une évolutivité élevées.
Les repères ci-dessous sont exécutés sur Intel® Data Center GPU Flex 170 à la précision FP32.
Modèle | Format | Statut | Taille (MB) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 21.79 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 23.24 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 37.22 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3703 | 3.29 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 31.89 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 32.71 |
YOLOv8s | ONNX | âś… | 42.8 | 0.4472 | 43.42 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4470 | 3.92 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 50.75 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 47.90 |
YOLOv8m | ONNX | âś… | 99.0 | 0.4999 | 63.16 |
YOLOv8m | OpenVINO | âś… | 49.8 | 0.4997 | 7.11 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 77.45 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.5268 | 85.71 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 88.94 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5264 | 9.37 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 100.09 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 114.64 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 110.32 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5367 | 15.02 |
Ce tableau représente les résultats du benchmark pour cinq modèles différents (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) sur quatre formats différents (PyTorch, TorchScript, ONNX, OpenVINO), nous donnant le statut, la taille, la métrique mAP50-95(B), et le temps d'inférence pour chaque combinaison.
Intel Arc GPU
Intel® Arc™ représente l'incursion d'Intel sur le marché des processeurs graphiques dédiés. La série Arc™, conçue pour concurrencer les principaux fabricants de GPU comme AMD et Nvidia, s'adresse aussi bien au marché des ordinateurs portables qu'à celui des ordinateurs de bureau. La série comprend des versions mobiles pour les appareils compacts comme les ordinateurs portables, et des versions plus grandes et plus puissantes pour les ordinateurs de bureau.
La série Arc™ est divisée en trois catégories : Arc™ 3, Arc™ 5 et Arc™ 7, chaque numéro indiquant le niveau de performance. Chaque catégorie comprend plusieurs modèles, et le 'M' dans le nom du modèle de GPU signifie une variante mobile et intégrée.
Les premières critiques ont fait l'éloge de la série Arc™, en particulier du GPU A770M intégré, pour ses performances graphiques impressionnantes. La disponibilité de la série Arc™ varie selon les régions, et d'autres modèles devraient bientôt être commercialisés. Les GPU Intel® Arc™ offrent des solutions très performantes pour toute une série de besoins informatiques, du jeu à la création de contenu.
Les repères ci-dessous sont exécutés sur le GPU Intel® Arc 770 avec une précision FP32.
Modèle | Format | Statut | Taille (MB) | métriques/mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 88.79 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 102.66 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 57.98 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3703 | 8.52 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 189.83 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 227.58 |
YOLOv8s | ONNX | âś… | 42.7 | 0.4472 | 142.03 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4469 | 9.19 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 411.64 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 517.12 |
YOLOv8m | ONNX | âś… | 98.9 | 0.4999 | 298.68 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.4996 | 12.55 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 725.73 |
YOLOv8l | TorchScript | âś… | 167.1 | 0.5268 | 892.83 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 576.11 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5262 | 17.62 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 988.92 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 1186.42 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 768.90 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5367 | 19 |
Processeur Intel Xeon
Le processeur Intel® Xeon® est un processeur haute performance de qualité serveur conçu pour les charges de travail complexes et exigeantes. Du cloud computing et de la virtualisation haut de gamme aux applications d'intelligence artificielle et d'apprentissage automatique, les CPU Xeon® offrent la puissance, la fiabilité et la flexibilité nécessaires aux centres de données d'aujourd'hui.
Notamment, les CPU Xeon® offrent une densité de calcul et une évolutivité élevées, ce qui les rend idéales pour les petites entreprises comme pour les grandes. En choisissant les CPU Intel® Xeon®, les entreprises peuvent gérer en toute confiance leurs tâches informatiques les plus exigeantes et favoriser l'innovation tout en maintenant la rentabilité et l'efficacité opérationnelle.
Les repères ci-dessous sont exécutés sur un processeur Intel® Xeon® Scalable de 4e génération à la précision FP32.
Modèle | Format | Statut | Taille (MB) | métriques/mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 24.36 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 23.93 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 39.86 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3704 | 11.34 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 33.77 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 34.84 |
YOLOv8s | ONNX | âś… | 42.8 | 0.4472 | 43.23 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4471 | 13.86 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 53.91 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 53.51 |
YOLOv8m | ONNX | âś… | 99.0 | 0.4999 | 64.16 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.4996 | 28.79 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 75.78 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.5268 | 79.13 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 88.45 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5263 | 56.23 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 96.60 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 114.28 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 111.02 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5371 | 83.28 |
Intel Core CPU
La série Intel® Core® est une gamme de processeurs haute performance d'Intel. La gamme comprend le Core i3 (entrée de gamme), le Core i5 (milieu de gamme), le Core i7 (haut de gamme) et le Core i9 (performances extrêmes). Chaque série répond à différents besoins informatiques et budgets, des tâches quotidiennes aux charges de travail professionnelles exigeantes. À chaque nouvelle génération, des améliorations sont apportées aux performances, à l'efficacité énergétique et aux fonctionnalités.
Les tests ci-dessous sont effectués avec le processeur Intel® Core® i7-13700H de 13e génération à la précision FP32.
Modèle | Format | Statut | Taille (MB) | métriques/mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.4478 | 104.61 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.4525 | 112.39 |
YOLOv8n | ONNX | âś… | 12.2 | 0.4525 | 28.02 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.4504 | 23.53 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.5885 | 194.83 |
YOLOv8s | TorchScript | âś… | 43.0 | 0.5962 | 202.01 |
YOLOv8s | ONNX | âś… | 42.8 | 0.5962 | 65.74 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.5966 | 38.66 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.6101 | 355.23 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.6120 | 424.78 |
YOLOv8m | ONNX | âś… | 99.0 | 0.6120 | 173.39 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.6091 | 69.80 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.6591 | 593.00 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.6580 | 697.54 |
YOLOv8l | ONNX | âś… | 166.8 | 0.6580 | 342.15 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.0708 | 117.69 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.6651 | 804.65 |
YOLOv8x | TorchScript | âś… | 260.8 | 0.6650 | 921.46 |
YOLOv8x | ONNX | âś… | 260.4 | 0.6650 | 526.66 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.6619 | 158.73 |
Reproduis nos résultats
Pour reproduire les repères Ultralytics ci-dessus sur tous les formats d' exportation, exécute ce code :
Exemple
Note que les résultats des analyses comparatives peuvent varier en fonction de la configuration matérielle et logicielle exacte d'un système, ainsi que de la charge de travail actuelle du système au moment de l'exécution des analyses comparatives. Pour obtenir les résultats les plus fiables, utilise un ensemble de données contenant un grand nombre d'images, c'est-à -dire data='coco128.yaml' (128 val images), or
data='coco.yaml'` (5000 val images).
Conclusion
Les résultats de l'analyse comparative démontrent clairement les avantages de l'exportation du modèle YOLOv8 vers le format OpenVINO . Parmi les différents modèles et plates-formes matérielles, le format OpenVINO est toujours plus performant que les autres formats en termes de vitesse d'inférence, tout en conservant une précision comparable.
Pour la série Intel® Data Center GPU Flex, le format OpenVINO a permis d'obtenir des vitesses d'inférence presque 10 fois plus rapides que le format original PyTorch . Sur le processeur Xeon, le format OpenVINO était deux fois plus rapide que le format PyTorch . La précision des modèles est restée quasiment identique entre les différents formats.
Les benchmarks soulignent l'efficacité de OpenVINO en tant qu'outil de déploiement de modèles d'apprentissage profond. En convertissant les modèles au format OpenVINO , les développeurs peuvent obtenir des améliorations significatives des performances, ce qui facilite le déploiement de ces modèles dans des applications réelles.
Pour obtenir des informations et des instructions plus détaillées sur l'utilisation de OpenVINO, reporte-toi à la documentation officielle de OpenVINO .
Créé le 2023-11-12, Mis à jour le 2024-04-18
Auteurs : glenn-jocher (9), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)