Glossaire

ONNX (Open Neural Network Exchange)

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

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 d'entraîner un modèle dans un cadre, comme PyTorch, puis de le déployer en utilisant un autre cadre ou moteur d'inférence, comme TensorFlow ou des runtimes spécialisés comme ONNX Runtime. Cette interopérabilité simplifie le passage 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 maintenant un projet communautaire florissant.

Pertinence de l'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 des modèles entre différents outils et plateformes matérielles. En définissant un ensemble commun d'opérateurs (les éléments constitutifs de la technologie 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 Ultralytiques YOLO Ultralytics fournit des méthodes directes pour les modèles de exportation de modèles au format ONNX. Cette capacité d'exportation permet aux utilisateurs de prendre des modèles tels que YOLOv8 ou le dernier 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 des performances accrues 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 des graphes : Les modèles dans ONNX sont représentés comme des graphes de calcul. Les nœuds du graphe 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 frameworks ML, ce qui facilite la conversion.
  • Système de versions : ONNX maintient des versions pour ses jeux 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 supportent 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 des modèles à partir de différents frameworks (comme PyTorch ou TensorFlow), des outils pour visualiser et déboguer les graphes ONNX, et des runtimes comme ONNX Runtime optimisé pour une inférence de haute performance à travers différents matériels(CPU, GPU, accélérateurs spécialisés).

Applications de l'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èle YOLO d'Ultralytics, à l'aide de PyTorch sur un serveur puissant doté 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 Intel's OpenVINO et déployé pour une inférence efficace 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. Vous pouvez explorer les solutions Ultralytics pour des exemples dans différentes industries.
  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 seconde équipe peut facilement le charger et l'utiliser dans son environnement PyTorch ou le déployer en utilisant le Runtime ONNX standardisé à travers différentes configurations de serveurs(cloud ou sur site) sans avoir besoin du framework TensorFlow original. Cela facilite le service et l'intégration des modèles.

ONNX vs. concepts apparentés

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

  • Formats spécifiques au cadre : Des formats comme celui de PyTorch .pt/.pth ou Modèle sauvegardé de TensorFlow sont natifs de leurs frameworks respectifs. ONNX agit comme un 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 : Des outils comme ONNX Runtime, TensorRT et OpenVINO sont des bibliothèques logicielles conçues pour exécuter efficacement des modèles ML. Beaucoup de ces moteurs peuvent consommer des modèles ONNX, souvent en appliquant des optimisations supplémentaires (comme la quantification ou la fusion de graphes) pour des cibles matérielles spécifiques. ONNX fournit le modèle d'entrée standardisé 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 ces formats pour simplifier le parcours entre le développement de modèles et l'application dans le monde réel.

Rejoindre la communauté Ultralytics

Rejoignez l'avenir de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

S'inscrire
Lien copié dans le presse-papiers