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 comme ONNX Runtime. Cette interopérabilité rationalise le chemin de la recherche à la production, en favorisant la collaboration et la flexibilité au sein de l'écosystème de l'IA. ONNX a été initialement développé par Facebook AI Research et Microsoft Research et est désormais un projet communautaire florissant.

Pertinence de la ONNX

La valeur fondamentale d'ONNX est de promouvoir portabilité et interopérabilité dans le cycle de vie du développement 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 entre différents outils et plateformes matérielles. En définissant un ensemble commun d'opérateurs (les blocs de construction de réseaux neuronaux) et un format de fichier standard (.onnx), ONNX s'assure 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 bénéfique pour les utilisateurs de Ultralytics YOLO Ultralytics fournit des méthodes directes pour les modèles de exporter des modèles au format ONNX. Cette capacité d'exportation permet aux utilisateurs de prendre des modèles tels que YOLOv8 ou la dernière YOLO11 et les déployer sur une grande variété de plates-formes matérielles et logicielles, souvent à l'aide de logiciels optimisés. moteurs d'inférence pour une meilleure performance et accélération matérielle.

Comment fonctionne ONNX

ONNX assure l'interopérabilité grâce à plusieurs caractéristiques techniques essentielles :

  • Représentation commune des modèles : ONNX définit un ensemble standard d'opérateurs de graphes de calcul, tels que les fonctions de convolution ou d'activation, ainsi qu'un système de type de données commun. Lorsqu'un modèle d'apprentissage profond est converti en ONNX, son architecture et ses paramètres sont traduits dans cette représentation partagée.
  • Structure basée sur les graphes : Les modèles dans ONNX sont représentés sous forme de graphes informatiques. Les nœuds du graphique représentent des opérations (comme la multiplication de matrices ou l'application d'une fonction ReLU), tandis que les arêtes représentent le flux de données (tenseurs) entre ces opérations. Cette structure de graphe est commune à de nombreux cadres de ML, ce qui facilite la conversion.
  • Système de versions : ONNX maintient des versions pour ses ensembles d'opérateurs (opsets). Cela garantit la compatibilité ascendante, permettant aux modèles créés avec des opsets plus anciens de continuer à fonctionner sur des runtimes plus récents qui prennent en charge ces versions.
  • Extensibilité : Bien qu'ONNX définisse un ensemble d'opérateurs de base, il autorise également les opérateurs personnalisés, ce qui permet aux cadres et aux vendeurs de matériel de prendre en charge des fonctionnalités spécialisées.
  • Ecosystème et outils : Un riche écosystème entoure ONNX, y compris des bibliothèques pour convertir les modèles de divers cadres (comme PyTorch ou TensorFlow), des outils pour visualiser et déboguer les graphes ONNX , et des moteurs d'exécution comme ONNX Runtime optimisé pour une inférence de haute performance sur différents matériels (CPU, GPU, accélérateurs spécialisés).

Applications de ONNX

ONNX sert de pont crucial entre les environnements de formation modèles et les diverses cibles de déploiement. Voici deux exemples concrets :

  1. Déploiement de modèles de vision par ordinateur sur des appareils périphériques : Un développeur entraîne un modèle de détection d'objets, tel que le modèleYOLO d'Ultralytics , à l'aide de PyTorch sur un serveur puissant équipé de GPU. Pour le déploiement sur des appareils périphériques aux ressources limitées (comme une caméra intelligente ou un drone), il exporte le modèle au format ONNX . Ce fichier ONNX peut ensuite être optimisé à l'aide d'outils tels que NVIDIA TensorRT ou OpenVINO d'Intel et déployé pour une inférence efficace et en temps réel directement sur l'appareil. Cette flexibilité est mise en évidence dans les différentes options de déploiement de modèles. Tu peux explorer les solutionsUltralytics pour voir des exemples dans différents secteurs d'activité.
  2. Collaboration et déploiement inter-cadres : Une équipe de recherche développe une nouvelle architecture de modèle en utilisant TensorFlow. Une autre équipe souhaite intégrer ce modèle dans une application existante construite avec PyTorch. En exportant le modèle TensorFlow vers ONNX, la deuxième équipe peut facilement le charger et l'utiliser dans son environnement PyTorch ou le déployer à l'aide du RuntimeONNX standardisé sur différentes configurations de serveurs(cloud ou sur site) sans avoir besoin du framework TensorFlow d'origine. Cela favorise un service et une intégration des modèles plus faciles.

ONNX par rapport aux concepts connexes

Il est important de distinguer ONNX des termes apparentés :

  • Formats spécifiques au cadre de travail : Des formats comme celui de PyTorch .pt/.pth ou SavedModel de TensorFlow sont propres à leurs cadres respectifs. ONNX joue le rôle d'intermédiaire, permettant la conversion entre ces formats ou le déploiement via un runtime commun. TorchScript est un autre format pour la sérialisation des modèles PyTorch , parfois utilisé comme alternative ou précurseur de l'exportation ONNX .
  • Moteurs d'inférence/Runtimes : Outils comme ONNX Runtime, TensorRTet OpenVINO sont des bibliothèques logicielles conçues pour exécuter efficacement des modèles de ML. Beaucoup de ces moteurs peuvent consommer des modèles ONNX , en appliquant souvent des optimisations supplémentaires (comme la quantification ou la fusion de graphes) pour des cibles matérielles spécifiques. ONNX fournit l'entrée de modèle standardisée pour ces moteurs.

En résumé, ONNX est une norme essentielle pour assurer la flexibilité et l'interopérabilité dans le pipeline des opérations d'apprentissage automatique (MLOps ), permettant aux développeurs de choisir les meilleurs outils pour la formation et le déploiement sans être contraints par les limites du cadre. Des plateformes comme Ultralytics HUB s'appuient sur de tels formats pour simplifier le parcours entre le développement de modèles et l'application dans le monde réel.

Tout lire