Skip to content

Intel OpenVINO Export

OpenVINO Ecosystème

Dans ce guide, nous abordons l'exportation des modèles YOLOv8 au format OpenVINO ce qui permet de multiplier par 3 la vitesse du processeur et d'accélérer les autres matériels Intel(iGPU, dGPU, VPU, etc.).

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')
# Export a YOLOv8n PyTorch model to OpenVINO format
yolo export model=yolov8n.pt format=openvino  # creates 'yolov8n_openvino_model/'

# Run inference with the exported model
yolo predict model=yolov8n_openvino_model source='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

  1. 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.
  2. 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.).
  3. 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.
  4. 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 :

  1. Fichier XML: Décrit la topologie du réseau.
  2. Fichier BIN: Contient les données binaires de weights and biases .
  3. 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 :

  1. Initialise OpenVINO en créant core = Core().
  2. Charge le modèle à l'aide de la fonction core.read_model() méthode.
  3. Compile le modèle à l'aide de la fonction core.compile_model() fonction.
  4. Prépare l'entrée (image, texte, audio, etc.).
  5. 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, et sur les CPU Intel Xeon à la 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 ainsi 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.

Benchmark du GPU Flex
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 voir le jour. 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.

Benchmark des GPU Arc
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.

Tests de l'unité centrale Xeon
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.

Points de repère pour l'unité centrale
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

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')

# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
results= model.benchmarks(data='coco128.yaml')
# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco128.yaml

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 comportant un grand nombre d'images, c'est-à-dire... data='coco128.yaml' (128 val images), ordata='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-02-13
Auteurs : chr043416@gmail.com (1), glenn-jocher (7), Burhan-Q (1)

Commentaires