Glossaire

ONNX (Open Neural Network Exchange)

Découvre comment ONNX améliore la portabilité et l'interopérabilité des modèles d'IA, permettant un déploiement transparent des modèles Ultralytics YOLO sur diverses plateformes.

Entraîne les modèles YOLO simplement
avec Ultralytics HUB

En savoir plus

Dans le domaine de l'intelligence artificielle (IA) et de l'apprentissage automatique (ML), qui évolue rapidement, il est crucial de déplacer efficacement les modèles entre différents outils et plateformes. ONNX (Open Neural Network Exchange) relève ce défi en fournissant un format open-source conçu spécifiquement pour les modèles d'IA. Il agit comme un traducteur universel, permettant aux développeurs de former un modèle dans un cadre, comme PyTorchet de le déployer à l'aide d'un autre cadre ou moteur d'inférence, tel que TensorFlow ou des moteurs d'exécution spécialisés. Cette interopérabilité rationalise le chemin de la recherche à la production.

Pertinence de la ONNX

La valeur fondamentale d'ONNX réside dans la promotion de la portabilité et de l'interopérabilité au sein de l'écosystème de l'IA. Au lieu d'être enfermés dans l'écosystème d'un cadre spécifique, les développeurs peuvent s'appuyer sur ONNX pour déplacer librement les modèles. En définissant un ensemble commun d'opérateurs et un format de fichier standard, ONNX garantit que la structure d'un modèle et les paramètres appris(poids) sont représentés de manière cohérente. Ceci est particulièrement avantageux pour les utilisateurs de Ultralytics YOLO car Ultralytics propose des méthodes simples pour exporter les modèles au format ONNX . Cette capacité d'exportation permet aux utilisateurs de prendre des modèles tels que YOLOv8 ou YOLO11 et de les déployer sur une grande variété de plates-formes matérielles et logicielles, en utilisant souvent des moteurs d'inférence optimisés pour améliorer les performances.

Comment fonctionne ONNX

ONNX assure l'interopérabilité grâce à plusieurs caractéristiques clés :

  • Représentation commune du modèle : Il définit un ensemble standard d'opérateurs (comme les couches de convolution ou les fonctions d'activation) et de types de données. Lorsqu'un modèle est converti en ONNX, son architecture est traduite dans ce langage commun.
  • Structure basée sur les graphes : Les modèles sont représentés sous forme de graphes informatiques, où les nœuds sont des opérations et les arêtes représentent le flux de données (tenseurs). Il s'agit d'une structure commune utilisée par la plupart des cadres d'apprentissage profond.
  • Extensibilité : Bien qu'ONNX définisse un ensemble d'opérateurs de base, il permet d'utiliser des opérateurs personnalisés, ce qui permet de prendre en charge de nouvelles architectures de modèles.
  • Versioning : ONNX maintient les versions des opérateurs pour assurer la compatibilité ascendante, ce qui signifie que les modèles créés avec des versions plus anciennes peuvent encore être utilisés au fur et à mesure que la norme évolue.

Applications de ONNX

ONNX est largement utilisé pour combler le fossé entre les environnements de formation des modèles et les cibles de déploiement. En voici deux exemples :

  1. Déploiement optimisé sur les appareils périphériques : Un développeur entraîne un modèle de détection d'objets à l'aide d'Ultralytics YOLO sur un serveur puissant doté de GPU. Pour déployer ce modèle sur des appareils périphériques aux ressources limitées, il exporte le modèle vers ONNX. Le modèle ONNX peut ensuite être optimisé à l'aide d'outils tels que NVIDIA TensorRT pour le matériel NVIDIA ou OpenVINO d'Intel pour les CPU/VPU Intel , afin d'obtenir une inférence en temps réel plus rapide et plus efficace. Voir notre guide sur les options de déploiement de modèles pour plus de détails.
  2. Collaboration inter-cadres : Une équipe de recherche développe un nouveau composant de modèle dans PyTorch. Une autre équipe, chargée d'intégrer ce composant dans une application plus vaste construite avec TensorFlow, peut recevoir le composant sous la forme d'un fichier ONNX . Cela évite d'avoir à traduire un code complexe ou à maintenir des versions de modèles distinctes pour différents frameworks, ce qui favorise une collaboration plus facile au sein d'organisations telles que celles qui sont répertoriées sur notre page clients.

Concepts apparentés

Pour comprendre ONNX , il faut souvent faire appel à des technologies connexes :

  • ONNX Runtime: Il s'agit d'un moteur d'inférence haute performance spécialement conçu pour exécuter efficacement les modèles ONNX sur différents matérielsCPU, GPUetc.) Alors qu'ONNX définit le format, ONNX Runtime fournit l'environnement d'exécution.
  • TensorRT: un SDK de NVIDIA pour l'inférence d'apprentissage profond haute performance, qui peut importer des modèles ONNX pour les optimiser sur les GPU NVIDIA . Ultralytics propose l'intégration deTensorRT .
  • OpenVINO: une boîte à outils Intel pour l'optimisation et le déploiement de l'inférence IA, prenant en charge les modèles ONNX pour l'exécution sur le matériel Intel .
  • Modèle Export: Le processus de conversion d'un modèle formé à partir de son format de cadre original (par exemple, PyTorch .pt) dans un format normalisé comme ONNX.
  • Déploiement du modèle: Le processus global qui consiste à prendre un modèle formé et à le rendre disponible pour une utilisation dans un environnement de production, où ONNX joue un rôle clé en simplifiant la compatibilité multiplateforme. Tu peux gérer le déploiement de tes modèles ONNX en utilisant des plateformes comme Ultralytics HUB.

En facilitant l'échange et le déploiement de modèles, ONNX joue un rôle essentiel en rendant le cycle de vie du développement de l'IA plus flexible et plus efficace.

Tout lire