Apprendre ONNX pour le trading - page 5

 

Onnx-mlir : un compilateur basé sur MLIR pour les modèles ONNX - Le dernier statut



Onnx-mlir : un compilateur basé sur MLIR pour les modèles ONNX - Le dernier statut

Onnx-mlir est un compilateur pour les modèles ONNX qui utilise MLIR et LLVM pour l'optimisation et la génération de code, prenant en charge les processeurs et les accélérateurs personnalisés. Dong Lin d'IBM Research souligne l'importance de tests approfondis et souligne l'utilisation du cadre dans les services de notation en ligne et les cadres de service de modèles. Onnx-mlir a plusieurs dialectes pour le processeur et l'accélérateur, avec des optimisations à différents niveaux, et il a été démontré qu'il accélère de 11 fois un modèle de détection de fraude par carte de crédit à l'aide d'un accélérateur IBM. Le projet accueille les contributions de la communauté pour optimiser les opérateurs importants et prendre en charge les opérateurs de niche ML et d'autres accélérateurs tels que les GPU.

  • 00:00:00 Dans cette section, Dong Lin d'IBM Research discute d'ONNX-MLIR, un compilateur pour les modèles ONNX qui utilise MLIR et LLVM pour l'optimisation de haut niveau et la génération de code de bas niveau. Le compilateur vise à fournir une référence pour le dialecte ONNX dans MLIR et à rendre l'optimisation pratique non seulement pour les processeurs, mais également pour les accélérateurs personnalisés. Il est facile à intégrer à d'autres compilateurs basés sur MLIR et prend en charge différents langages de programmation tels que Python, C++ et Java. Dong Lin souligne également l'importance de tester soigneusement le compilateur, et il mentionne qu'il a été utilisé pour les services de notation en ligne et les frameworks de service de modèles, avec une prise en charge nouvellement introduite pour les accélérateurs personnalisés.

  • 00:05:00 Dans cette section, l'orateur discute du compilateur ONNX-MLIR, qui peut optimiser et prendre en charge de nouveaux accélérateurs. Le compilateur a plusieurs dialectes pour le processeur et l'accélérateur, avec des optimisations à différents niveaux. L'orateur a démontré la capacité du cadre à accélérer un modèle de détection de fraude par carte de crédit de 11 fois à l'aide d'un accélérateur IBM, mais n'a pas pu divulguer plus de détails. Ils ont souligné leur intérêt pour les contributions de la communauté pour développer le projet open source, car ils visent à optimiser les opérateurs importants, à prendre en charge les opérateurs d'apprentissage automatique de niche et d'autres accélérateurs tels que les GPU.
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
  • 2022.07.13
  • www.youtube.com
Onnx-mlir is an open source compiler implemented using the Multi-Level Intermediate Representation (MLIR) infrastructure recently integrated in the LLVM proj...
 

PFVM - Un compilateur de réseau neuronal qui utilise ONNX comme représentation intermédiaire



PFVM - Un compilateur de réseau neuronal qui utilise ONNX comme représentation intermédiaire

Dans cette vidéo, Zijian Xu de Preferred Networks présente PFVM, un compilateur de réseau neuronal qui utilise ONNX comme représentation intermédiaire pour l'optimisation des modules. Il explique comment PFVM prend ONNX exporté en entrée, l'optimise et exécute le modèle avec des backends spécifiés à l'aide d'API tierces. Genji décrit l'importance de l'optimisation, y compris l'extension d'ONNX avec les opérateurs clients, l'inférence de forme et la simplification des graphiques. Il aborde également les limites des compilateurs ONNX actuels, y compris le besoin d'une plus grande prise en charge dans le cas dynamique, et suggère d'implémenter davantage de fonctions d'inférence. Zijian Xu souligne l'importance de réduire la surcharge de la plage du noyau et l'utilisation de la mémoire pour un calcul plus rapide et suggère d'utiliser les informations statiques disponibles sur les machines pour planifier et façonner l'inférence.

  • 00:00:00 Dans cette section, Zijian Xu de Preferred Networks discute de PFVM, un compilateur de réseau neuronal qui utilise ONNX comme représentation intermédiaire. Il présente l'entreprise et explique comment elle utilise l'apprentissage en profondeur pour résoudre des problèmes du monde réel. Il se concentre ensuite sur ONNX pour l'optimisation des modules plutôt que sur le déploiement des modules. Il explique que PFVM fonctionne comme un compilateur et un runtime, prenant ONNX exporté comme entrée, l'optimisant et exécutant le modèle avec des backends spécifiés à l'aide d'API tierces. Genji décrit le processus d'optimisation, expliquant comment ils étendent ONNX avec les opérateurs clients pour l'optimisation des appareils et de la mémoire. Il discute également de l'importance de l'inférence de forme dans l'optimisation des modules et présente trois optimisations de cas. Le premier cas est la fusion élément par élément.

  • 00:05:00 Dans cette section de la vidéo, l'orateur discute de l'importance de réduire la surcharge de la plage du noyau pour un calcul plus rapide lors de l'exécution de graphes de calcul sur CUDA. Ils proposent de fusionner les opérateurs élément par élément en un seul opérateur de groupe de fusion pour réduire la plage du noyau, mais avertissent que tous les opérateurs ne peuvent pas être fusionnés avec succès. Il faut vérifier si les opérateurs peuvent être diffusables ou non devant un groupe de fusion de gradient. Le conférencier souligne également l'importance de l'inférence de forme et de la simplification des graphes pour optimiser les modèles de réseaux de neurones. Enfin, ils abordent la question de savoir si les modèles contiennent des opérateurs inutiles et répondent que certaines optimisations sont nécessaires pour un calcul plus rapide.

  • 00:10:00 Dans cette section, l'orateur explique comment les modèles générés par des programmes tels que la première génération ou la recherche de réseaux neuronaux et d'architecture neuronale peuvent contenir des opérateurs inutiles. Ils démontrent l'importance des optimisations en utilisant un exemple où un graphe de calcul gauche utilise beaucoup de mémoire pour calculer le nœud cinq. En modifiant le graphe de calcul, la même sortie peut être obtenue avec une utilisation réduite de la mémoire. PFVM peut effectuer des points de contrôle automatiques pour réduire l'utilisation de la mémoire, mais il nécessite une connaissance des tailles de tenseurs pour estimer avec précision l'utilisation de la mémoire. Le conférencier souligne l'importance de la référence de forme et la façon dont les dimensions inconnues limitent les possibilités d'optimisation dans la plupart des cadres de mise en forme.

  • 00:15:00 Dans cette section, l'orateur discute des limites du compilateur ONNX à la pointe de la technologie, y compris l'incapacité d'effectuer certaines tâches telles que la transfusion d'éléments et le point de contrôle automatique, ainsi que le besoin de plus de soutien dans le cas dynamique. L'orateur suggère d'implémenter plus de fonctions d'inférence pour le cas dynamique et sollicite les commentaires des utilisateurs pour déterminer s'il faut ou non prendre en charge des cas tels que concat de deux tenseurs. L'orateur discute également des avantages de l'utilisation des informations statiques disponibles sur des machines telles que elements core et mn4 pour la planification et la mise en forme de l'inférence.
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
  • 2022.07.13
  • www.youtube.com
PFVM is a neural network compiler developed by Preferred Networks, which relies on ONNX as the Intermediate Representation format. PFVM is used in production...
 

Pile de compilateur TVM YVR18-332 et prise en charge ONNX



Pile de compilateur TVM YVR18-332 et prise en charge ONNX

La vidéo YVR18-332 traite de la pile de compilateurs TVM, qui est une pile d'apprentissage en profondeur dirigée par la communauté qui prend en charge une gamme de matériel et de frontaux, y compris ONNX. L'orateur explique comment TVM peut optimiser les modèles au niveau stéréo, permettant aux développeurs d'explorer l'espace de recherche et de trouver la meilleure configuration. Ils discutent également des optimisations automatiques offertes par TVM, y compris les transformations de boucle et l'accélération GPU. L'orateur parle de la feuille de route TVM qui comprend l'activation de la prise en charge 8 bits et le réglage automatisé au niveau du graphique. De plus, ils discutent de l'interface TV ONNX et de la nécessité d'unifier l'interface standard pour tous les écosystèmes. Enfin, la vidéo s'arrête pour le déjeuner.

  • 00:00:00 Dans cette section, l'orateur présente la pile de compilateurs TVM et comment elle prend en charge ONNX via GBM. TVM est une pile d'apprentissage en profondeur du niveau de la classe jusqu'au niveau du cancer et est un projet communautaire dirigé par des chercheurs de l'Université de Washington avec des contributions de plusieurs entreprises et organisations. La pile de compilateurs TVM prend en charge une variété de matériels, notamment CPU, GPU, FPGA, et prévoit d'activer la prise en charge ASIC, avec un simulateur pour la vérification de la conception matérielle. La pile prend également en charge divers frontaux, notamment MXNet, ONNX et TensorFlow, et dispose d'une implémentation IR de classe de calcul appelée NVM avec une gamme d'options d'optimisation.

  • 00:05:00 Dans cette section, l'orateur discute de la pile de compilateurs TVM et du support ONNX. Ils expliquent que la pile du compilateur TVM peut effectuer de nombreuses optimisations au niveau stéréo, telles que les transformations de boucle et l'accélération GPU, et qu'ONNX est une nouvelle fonctionnalité ajoutée à l'étape de la TVM automatique. Le conférencier explique également le diplôme Canadian Miss applaudi par le mécanisme de déploiement à distance de TVM, qui permet aux utilisateurs de compiler un modèle sur leur appareil hôte et de le déployer à distance sur l'appareil cible. De plus, ils discutent des optimisations automatiques introduites par TVM, qui peuvent réduire le travail fastidieux des développeurs et sont
    conçu pour explorer l'espace de recherche et trouver la meilleure configuration.

  • 00:10:00 Dans cette section, l'orateur discute de la pile de compilateurs TVM et de la prise en charge d'ONNX. Ils mentionnent que la pile de compilateurs TVM intègre les algorithmes de réglage les plus avancés, y compris des algorithmes d'amplification de gradient extrême isolés, pour fournir de meilleures performances. Ils mettent également en évidence le projet open-source qui permet une optimisation automatisée et peut tirer parti des travaux antérieurs pour optimiser l'espace de recherche. L'orateur explique ensuite comment TVM peut être utilisé pour l'accélérateur ouvert Vita et ses trois parties principales. Ils expliquent comment TVM peut être utilisé pour l'optimisation des horaires et déployé à distance à l'aide de VPS RPC. Enfin, ils fournissent une feuille de route pour TVM, qui inclut l'activation de la prise en charge 8 bits et le réglage automatisé au niveau du graphique tout en prévoyant également d'activer l'utilisation sur les bâtons Ultra 9 de Xilinx et l'instance F1 d'Amazon.

  • 00:15:00 Dans cette section, l'orateur discute de la pile de compilateurs TVM et de la manière dont il envisage de passer à NVM v2, baptisé Relay. L'implémentation de Relay nécessite de choisir un flux de contrôle de pod pour améliorer le système de type et contrôler comment améliorer le système de serveur de compilation. L'orateur explique comment Relay s'intègre dans la pile du compilateur TVM lors de la prise en charge d'ONNX. ONNX définit trois parties principales, à savoir, le modèle de graphe de calcul et les opérateurs de construction, et une base de données standard. Pour prendre en charge les extensions ONNX ml, le front-end TVM a implémenté un front-end dans DVM. Cependant, la conversion d'ONNX en graphe symbolique NM VM peut entraîner des problèmes de non-concordance. De plus, la communauté discute de l'opportunité d'utiliser ONNX ou Relay comme graphique IR dans la communauté TVM, et la seule façon de progresser est de travailler ensemble pour fusionner Relay à utiliser pour la future conversion de modèle.

  • 00:20:00 Dans cette section, l'orateur discute de l'interface TV ONNX pour l'intégration du cadre, qui est une interface standard pour l'inférence de réseau neuronal sur différents accélérateurs. L'interface comprend la découverte de l'environnement d'exécution des pods, la sélection des backends d'exécution et la découverte à long terme des opérateurs ONNX. L'orateur suggère que la communauté devrait discuter de la façon d'unifier l'interface standard pour tous les écosystèmes. De plus, l'orateur parle de la pile de compilateurs TVM et de la manière dont elle pourrait incorporer une implémentation codée à la main dans son espace de recherche. Cependant, il n'y a toujours pas de bonne idée sur ce mécanisme, donc l'orateur accueille les idées et les discussions.

  • 00:25:00 Dans cette section, le sujet de la discussion est la pile du compilateur TVM et sa prise en charge d'ONNX. Il est précisé qu'ONNX a à la fois un format de description et une API d'exécution, et que le système égal ONNX s'étend au-delà du simple format d'échange ouvert. L'objectif est d'unifier l'API afin que les applications de niveau supérieur puissent appeler une seule API standard pour l'inférence d'exécution, ce qui facilite la tâche des développeurs dans ce domaine. Il n'y a plus de questions et la vidéo s'arrête pour le déjeuner.
YVR18-332 TVM compiler stack and ONNX support
YVR18-332 TVM compiler stack and ONNX support
  • 2018.09.28
  • www.youtube.com
As an open source deep learning compiler driven by the community, TVM is evolving quickly and well received by the industry. In this session, the architectur...
 

.NET MAUI Community Standup - ONNX Runtime avec Mike Parker



.NET MAUI Community Standup - ONNX Runtime avec Mike Parker

Dans cette vidéo, le conférencier invité Mike Parker présente le runtime ONNX, un outil open source et multiplateforme qui permet l'optimisation et l'accélération de l'apprentissage automatique sur plusieurs plates-formes matérielles. Parker explique l'importance d'utiliser le runtime ONNX et montre comment il peut être utilisé dans les projets .NET MAUI pour classer les images à l'aide du modèle de classification d'objets MobileNet. Les hôtes et Parker discutent des avantages de l'exécution de modèles d'apprentissage automatique sur un appareil et de la possibilité d'éviter les coûts d'infrastructure backend. De plus, l'équipe partage des ressources utiles, notamment le blog de Parker sur ce sujet et leur partenariat avec Al Blount pour le support .NET MAUI et Xamarin.

  • 00: 00: 00 Dans cette section du stand-up de la communauté pour .NET MAUI, l'équipe présente Mike Parker, membre de l'équipe de conseil client de l'application client moderne, qui partage ses connaissances sur ONNX Runtime, un outil d'apprentissage automatique pour optimiser et l'accélération des modèles sur plusieurs plates-formes matérielles. Il explique comment ONNX Runtime est open source et multiplateforme, permettant aux développeurs d'utiliser divers frameworks et matériels pour les applications d'apprentissage automatique. Il montre également comment la communauté .NET peut tirer parti d'ONNX Runtime dans ses projets.

  • 00:05:00 Dans cette section, les hôtes se présentent ainsi que leur invité, Mike, qui se joint à eux pour discuter de l'Onnx Runtime avec eux. Les hôtes mentionnent qu'ils examineront d'abord certains blogs de Microsoft et de la communauté avant de passer à la discussion de certains PR du .NET MAUI et des référentiels adjacents, dont ils sont ravis. Enfin, ils confieront la discussion à Mike Park pour parler des bibliothèques Onnx Runtime, de la façon dont il les a utilisées dans Xamarin, ainsi que de ses écrits et podcasts sur le sujet. Les hôtes mentionnent également que c'est le 20e anniversaire de .NET et que .NET MAUI Preview 12 a été livré. Ils avertissent également les utilisateurs d'un changement radical et mentionnent que Dave a travaillé avec les responsables de la bibliothèque communautaire à ce sujet.

  • 00:10:00 Dans cette section, les intervenants discutent de l'effort d'unification de .NET et de la nécessité de recompiler et de mettre à jour les bibliothèques et les dépendances iOS lors de la transition de Xamarin vers MAUI. L'équipe travaille actuellement sur un moyen d'adopter ces modifications pour tous les projets de liaison aux bibliothèques natives et aux packages NuGet, et assure aux utilisateurs que des conseils seront fournis. De plus, l'équipe discute du manque de prise en charge de MAUI dans l'aperçu 5 de VS Mac 2022 et explique qu'elle y travaille, mais qu'elle a dû donner la priorité à la reconstruction de tous les travaux Xamarin sur l'environnement d'exécution .NET 6 avec une nouvelle UI SAC en premier. Enfin, l'équipe annonce la mise à jour de la liaison SDK Facebook et mentionne l'effort de mise à jour et de maintenance d'autres bibliothèques tierces telles que les bibliothèques Google.

  • 00:15:00 Dans cette section, l'équipe Xamarin parle des composants qu'elle gère, qui étaient autrefois un objectif majeur mais qui sont maintenant réduits à ce qui est le plus critique pour le support. L'équipe encourage les utilisateurs à contacter s'ils ont des dépendances sur ces composants lors de la transition vers .NET 6. Ils discutent également d'un didacticiel Maui Hello World et d'une série de blogs de dissection du code source .NET Maui. De plus, le blog d'Andreas sur l'index Z et la personnalisation de l'interface utilisateur est mis en évidence, montrant l'empilement d'éléments les uns sur les autres à l'aide de Z Index.

  • 00:20:00 Dans cette section, le présentateur présente quelques articles de blog et conceptions que les gens ont recréés à l'aide de .NET MAUI. Les blogs incluent la recréation d'une conception de carte d'embarquement dans Xamarin Forms, la discussion du développement de la machine d'état avec Xamarin Forms, l'organisation de votre fichier de démarrage .NET MAUI, une plongée approfondie dans l'architecture des gestionnaires et un blog sur la communication bidirectionnelle Xamarin Forms vers JavaScript à l'aide une WebView pour cela. Les présentations montrent à quel point l'accent est mis sur la conception ces jours-ci, rendant Xamarin Forms/MAUI plus extensible et utile, et comment utiliser plus efficacement JavaScript et les liaisons.

  • 00:25:00 Dans cette section de la transcription, les hôtes discutent des dernières contributions de la communauté à .NET MAUI, y compris une version du service de forum Xamarin 5.0 et une nouvelle documentation. Ils encouragent les contributeurs à fournir des commentaires sur la participation au dépôt et mentionnent la disponibilité d'un contrôle de puce dans la boîte à outils de la communauté, bien qu'il ne soit pas directement dans la boîte. Les hôtes mentionnent également l'ajout récent d'ombres, qui est une nouvelle fonctionnalité de MAUI, et suggèrent d'égayer leur bot en le modifiant.

  • 00:30:00 Dans cette section, Mike Parker fournit une mise à jour sur l'état des versions d'aperçu .NET MAUI, soulignant les progrès réalisés avec l'aperçu 13. Il y a beaucoup de vert et de nombreuses nouvelles fonctionnalités, notamment du texte formaté par étiquette, des étendues, et les gestes d'envergure, qui comblent tous les lacunes de la plate-forme. La communauté a également partagé une nouvelle propriété jointe appelée "Galadriel", qui permet l'ajout simple de badges aux onglets et aux éléments de menu dans Xamarin Forms Shell. De plus, l'équipe .NET MAUI a travaillé pour améliorer les performances de démarrage de la plate-forme, et les résultats sont prometteurs avec le démarrage de l'application en 576 millisecondes sur un Pixel 5 avec AOT profilé.

  • 00:35:00 Dans cette section, le .NET MAUI Community Standup discute de la disponibilité des extensions de balisage C# pour la création d'interface utilisateur sur les formulaires Xamarin et .NET MAUI, qui fournissent une syntaxe plus fluide pour le développement de l'interface utilisateur. Ils parlent également du runtime onnx, un modèle portable qui peut exécuter des inférences sur différentes plates-formes à l'aide d'un seul ensemble d'API, avec des exemples tels que la reconnaissance faciale et le marquage de photos. Le runtime onnx est disponible sur GitHub et peut être utilisé dans Xamarin et les applications mobiles. Le processus d'utilisation du runtime onnx implique le chargement du modèle, la préparation de l'entrée, l'exécution de l'inférence et le traitement de la sortie dans un format utilisable.

  • 00:40:00 Dans cette section de la vidéo, Mike Parker explique comment ils ont utilisé le runtime ONNX dans une application Xamarin Forms pour classer les images à l'aide du modèle de classification d'objet MobileNet. Il souligne l'importance de suivre la documentation du modèle et de normaliser les valeurs RVB. Parker mentionne également une application utile appelée Netron qui permet de visualiser les tailles d'entrée et de sortie, les formes et les noms des entrées et des sorties. L'application n'est qu'un simple bouton qui charge et exécute le modèle, et affiche l'étiquette supérieure dans une alerte. Parker note que c'est cool que tout cela se passe sur l'appareil sans impliquer le cloud.

  • 00:45:00 Dans cette section, les conférenciers discutent des avantages de l'exécution de modèles d'apprentissage automatique sur l'appareil, y compris la possibilité de fonctionner sans connectivité et d'éviter les coûts d'infrastructure backend. Ils évoquent également leurs expériences d'utilisation des API Microsoft Azure Vision basées sur le cloud et comment ils ont pu obtenir des temps de traitement plus rapides en utilisant l'environnement d'exécution ONNX. En outre, ils expliquent comment ils ont simplifié l'expérience d'une application d'intégration d'équipe en remplaçant le code spécifique à la plate-forme et au modèle par un seul modèle ONNX. Enfin, ils discutent du processus de préparation d'un modèle, à l'aide du service Azure Custom Vision et de la création d'un package Nougat qui permet à ONNX de fonctionner avec Xamarin.

  • 00:50:00 Dans cette section de la vidéo, Mike Parker discute de son travail avec le runtime ONNX et de l'adaptation de son code d'interopérabilité natif pour prendre en charge les plates-formes avec AOT, telles qu'iOS. Il poursuit également en décrivant les scénarios réels dans lesquels cette technologie peut être utilisée, notamment la rationalisation des flux de travail et l'amélioration de l'accessibilité dans les applications. Cependant, il note que travailler avec des modèles prédéfinis peut être écrasant pour ceux qui n'ont pas de formation traditionnelle en science des données et suggère d'être sélectif quant aux modèles à incorporer. Enfin, certaines ressources utiles, y compris le blog de Mike sur ce sujet, sont partagées.

  • 00:55:00 Dans cette section, les hôtes parlent de la disponibilité de Mike Parker à la location et présentent Al Blount, qui peut fournir une assistance aux entreprises ayant besoin d'aide avec Xamarin Forms et .NET Maui. Ils discutent également brièvement du travail actuel de l'équipe de Mike sur la mise à niveau vers Maui, mais ne peuvent pas encore partager de détails. Les hôtes terminent la vidéo en remerciant les téléspectateurs d'avoir rejoint et en annonçant la prochaine fête d'anniversaire du 20e anniversaire de .NET.
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
  • 2022.02.03
  • www.youtube.com
Join Maddy Montaquila, David Ortinau, and special guest Mike Parker to learn about using the ONNX Runtime in your Xamarin app for Machine Learning!Community ...
 

[Rencontre virtuelle] IA interopérable : ONNX et ONNXRuntime en C++ (M. Arena, M. Verasani)



[Rencontre virtuelle] IA interopérable : ONNX et ONNXRuntime en C++ (M. Arena, M. Verasani)

La vidéo aborde les défis liés à l'utilisation de différents frameworks pour former des algorithmes d'apprentissage automatique, ce qui entraîne un manque d'interopérabilité, et présente ONNX et ONNXRuntime qui visent à créer un format universel pour les modèles d'apprentissage en profondeur. ONNX convertit les réseaux de neurones en graphiques de calcul statiques, permettant des performances optimisées lors de l'inférence. ONNXRuntime permet la conversion de n'importe quel framework au format ONNX et fournit des bibliothèques d'accélération qui peuvent être utilisées pour cibler n'importe quelle plate-forme matérielle. La vidéo présente des exemples d'utilisation d'ONNX et d'ONNXRuntime, discute de leur utilisation en C++ et fournit des conseils pour mieux comprendre le projet et sa documentation.

Marco Arena et Matteo Verasani discutent également des avantages de l'utilisation d'ONNX et d'ONNXRuntime en C++ pour les modèles d'apprentissage automatique, soulignant la flexibilité du framework et sa capacité à convertir facilement des modèles à partir de différents frameworks sans sacrifier les performances. Ils fournissent des exemples de conversion de modèles au format ONNX et démontrent l'utilisation d'ONNXRuntime pour le mode d'inférence, présentant des améliorations de performances avec un modèle Python classique. De plus, ils discutent de leur travail avec les systèmes embarqués et des avantages potentiels de l'analyse comparative d'ONNXRuntime sur les GPU. Les conférenciers mentionnent également les futures rencontres virtuelles et expriment l'espoir d'intégrer davantage d'opportunités de réseautage pour les participants.

  • 00:00:00 Dans cette section de la vidéo, les conférenciers discutent des problèmes qui surviennent lors de l'utilisation de différents frameworks pour former des algorithmes d'apprentissage automatique pour divers cas d'utilisation, ce qui entraîne un manque d'interopérabilité. Cela peut être un défi lorsque vous travaillez dans une équipe où les membres peuvent avoir différents niveaux d'expertise avec différents cadres. Pour résoudre ce problème, les conférenciers présentent ONNX et ONNXRuntime, qui permettent l'interopérabilité entre les frameworks en convertissant les réseaux dans un format commun. ONNXRuntime permet ensuite aux modèles convertis d'être déployés sur n'importe quel matériel cible, y compris les CPU, les GPU et les FPU.

  • 00:05:00 Dans cette section, les intervenants discutent du projet ONNX (Open Neural Network Exchange), qui vise à être un format universel pour les modèles d'apprentissage en profondeur, permettant l'interopérabilité entre différents frameworks. Le projet est piloté par la communauté et soutenu par de nombreuses entreprises, avec un accent sur la conversion de différents types de modèles et cadres en un format unique pour la production. ONNX convertit les réseaux de neurones en graphes de calcul statiques, qui diffèrent des graphes dynamiques en ce qu'ils sont pré-initialisés avant la formation. Alors que les graphiques statiques sont plus efficaces en termes de calcul, les graphiques dynamiques offrent une plus grande flexibilité pour différentes tailles d'entrée.

  • 00:10:00 Dans cette section, les conférenciers expliquent comment ONNX fournit un graphe de calcul statique, très utile dans le processus d'inférence. Alors que d'autres frameworks comme Python ont des graphes de calcul dynamiques, ONNX fournit un graphe statique qui a déjà été contrôlé pendant les phases de formation et de développement, permettant des performances plus optimisées. De plus, l'outil d'exécution ONNX de Microsoft permet la conversion de n'importe quel framework au format ONNX et fournit des bibliothèques d'accélération qui peuvent être utilisées pour cibler n'importe quelle plate-forme matérielle, ce qui en fait un outil utile et polyvalent pour l'inférence et la production.

  • 00:15:00 Dans cette section de la vidéo, les conférenciers parlent de leur expérience d'utilisation d'ONNX et d'ONNX Runtime pour l'interopérabilité de l'IA. Ils expliquent comment ils créent un modèle PyTorch en Python, le convertissent au format ONNX et utilisent ONNX Runtime pour le déploiement, ce qui leur permet d'écrire leurs pipelines et de cibler différentes plates-formes, telles que les GPU ou les appareils Android. Ils démontrent également les améliorations de performances de l'utilisation d'ONNX Runtime par rapport à d'autres moteurs d'inférence, obtenant des résultats jusqu'à 4 fois plus rapides. Ils soulignent la flexibilité d'ONNX, leur permettant de convertir des modèles créés dans d'autres frameworks tels que Matlab pour les utiliser avec ONNX Runtime sans avoir à réécrire le pipeline de déploiement.

  • 00:20:00 Dans cette section, les conférenciers discutent du processus d'utilisation d'ONNX et d'ONNXRuntime en C++. Ils expliquent que les modèles doivent d'abord être convertis au format ONNX avant de pouvoir être exécutés sur ONNXRuntime. Bien que la sérialisation TensorFlow ne soit pas native pour ONNXRuntime, il existe des bibliothèques open source disponibles pour la conversion. Ils répondent également aux questions concernant la possibilité de scripter le processus de conversion et le niveau d'amélioration constaté avec ONNX par rapport à C++. Ils notent qu'une analyse comparative et une analyse plus approfondies sont nécessaires. Le référentiel ONNXRuntime est open source et pris en charge par Microsoft, offrant une gamme d'informations, de guides et d'exemples pour les utilisateurs.

  • 00:25:00 Dans cette section, la vidéo présente les fonctionnalités d'ONNXRuntime sur une échelle de complexité allant du plus simple au plus sophistiqué. La colonne verte contient des fonctionnalités de base suffisantes pour des tâches d'apprentissage automatique plus simples, tandis que la colonne magenta comprend des fonctionnalités légèrement plus sophistiquées telles que les fournisseurs d'exécution et la prise en charge du profilage. La colonne rouge représente des fonctionnalités avancées pour des tâches plus complexes telles que la possibilité d'ajouter des opérateurs personnalisés ONNX ou d'effectuer des réglages sur le trading. Le présentateur fournit également des liens vers deux référentiels de démonstration pour ONNXRuntime en C++ et Python.

  • 00:30:00 Dans cette section, l'intervenant présente ONNX et ONNXRuntime en C++. Ils expliquent qu'un environnement doit être créé au sein du programme pour gérer le pool commercial, et la session, qui établit le modèle à l'étude. Les caractéristiques de la session peuvent également être personnalisées et les paramètres par défaut peuvent être exécutés à l'aide de la session. De plus, ONNXRuntime optimisera le modèle en mettant en œuvre le prétraitement requis pour gérer les données avant d'exécuter la session. L'outil peut également effectuer des tâches d'inspection telles que demander le nombre d'entrées et de sorties, les types de données et les noms. En fin de compte, les utilisateurs peuvent créer leurs entrées et tenseurs dans le format requis.

  • 00:35:00 Dans cette section de la vidéo, l'orateur explique comment créer un objet qui alloue des tenseurs sur le CPU et les transfère au fournisseur d'exécution. Le locuteur crée des tenseurs d'entrée et de sortie, en passant dans le tampon avec les valeurs d'entrée et la forme du tenseur comme arguments. Le tenseur de la sortie est ensuite créé en transmettant les valeurs de sortie à la bibliothèque OnnxRuntime. L'orateur explique l'importance d'utiliser des noms pour lancer l'inférence, car cela permet une flexibilité dans la modification de l'ordre des entrées. La démo présente un exemple simple de la façon dont les valeurs de sortie sont imprimées à l'écran.

  • 00:40:00 Dans cette rubrique, l'intervenant prodigue des conseils à ceux qui souhaitent mieux comprendre le projet ONNX et sa documentation. Ils recommandent de regarder sous les "Parties C" pour accéder aux sections les mieux documentées d'ONNX et de détailler leur expérience d'inspection des données dans ONNX. L'orateur explique également que bien que les bibliothèques d'exécution ONNX soient disponibles via d'autres gestionnaires de packages, ils recommandent de recompiler les bibliothèques car les architectures et les fournisseurs varient, et montre comment ils ont compilé le même code pour créer deux packages d'exécution ONNX qui ciblent soit un CPU, soit un GPU.

  • 00:45:00 Dans cette section, l'orateur discute du runtime ONNX avec des exemples d'utilisation de la DLL en C++. Les options de session ajoutées au code varient en fonction des préférences du client, et il essaie d'utiliser les fournisseurs ajoutés dans l'ordre spécifié. Le conférencier fournit un exemple d'application de la façon dont le système occupe la RAM et l'utilisation du GPU. Un re-net d'IA de jeu principal, qui a été pré-formé sur un ensemble de données d'images de 1 000, a été utilisé comme exemple. Le système a ses exigences de post-traitement et de pré-traitement.

  • 00:50:00 Dans cette section de la vidéo, l'orateur discute du prétraitement des images à l'aide de Python et de l'utilisation de sources d'extension pour simplifier le processus. Les images sont redimensionnées à une taille optimale et converties en flottant avant d'être normalisées. Le processus de normalisation consiste à diviser les valeurs par la moyenne et à effectuer un écart type. Le post-traitement du réseau de neurones implique une simple normalisation softmax. Le conférencier montre également comment ouvrir, traiter et produire des images à l'aide d'ONNX Runtime avec un minimum de code. La classe utilisée pour lire les classes à partir d'un fichier texte est simpliste et quelques utilitaires sont utilisés pour éviter le code passe-partout inutile.

  • 00:55:00 Dans cette section, l'intervenant discute du processus de mesure du temps d'inférence pour un réseau de neurones à l'aide d'ONNXRuntime en C++. Il explique qu'il a ajouté la partie d'inférence au réseau décrit précédemment et a mesuré le temps d'inférence à l'aide de l'horloge système. Il poursuit ensuite en démontrant comment utiliser un enregistreur personnalisé dans ONNXRuntime à des fins de profilage. L'orateur discute également brièvement d'un réseau mobile distinct qui a été développé en collaboration avec l'Université de Modène et de la complexité impliquée dans son pré-traitement et son post-traitement.

  • 01:00:00 Dans cette section, l'orateur discute de la sortie d'un détecteur et montre comment il dessine des cadres de délimitation sur des objets tels que des ours et des signaux. Ils mentionnent également l'utilisation d'ONNXRuntime et comment il permet les options de session et le réglage, y compris l'activation du profilage pour l'optimisation des performances. Le fichier de traçage résultant peut être inspecté en détail pour voir combien de temps il faut pour initialiser le modèle et l'exécuter sur des images, y compris quels opérateurs ont été utilisés et quel fournisseur a été choisi. Ils mentionnent également la capacité d'ONNX à optimiser un graphique avant de l'exécuter, ce qui peut améliorer les performances et raccourcir le temps de chargement du modèle.

  • 01:05:00 Dans cette section, le présentateur parle de l'optimisation d'un modèle en activant ou en désactivant les optimisations, ce qui peut avoir un impact sur la portabilité du modèle sur différentes cibles. Ils explorent différents niveaux d'optimisation et comment chacun affecte les performances du modèle. Le présentateur montre que l'activation du mode d'exécution parallèle peut permettre au modèle d'utiliser plusieurs threads, mais cela peut ne pas avoir d'impact significatif sur les performances dans certains cas. Ils mentionnent également la possibilité de paralléliser le traitement de plusieurs images à l'aide d'un utilitaire. Enfin, le présentateur note que les optimisations peuvent avoir un impact notable sur les performances du modèle, comme en témoigne le temps de chargement réduit des modèles optimisés.

  • 01:10:00 Dans cette section, Marco Arena et Marco Verasani discutent des avantages d'utiliser ONNX et ONNX Runtime en C++. Un avantage majeur est la possibilité d'avoir une seule couche d'inférence qui accepte ONNX comme format, permettant la portabilité et la flexibilité dans l'utilisation de différents cadres pour créer des modèles. Cette fonctionnalité est particulièrement utile dans les situations où différentes équipes peuvent utiliser différents frameworks et où un pipeline d'inférence standard est nécessaire pour la production. De plus, l'utilisation d'ONNX Runtime en C++ peut conduire à des performances d'exécution plus rapides et plus optimisées pour les modèles d'apprentissage en profondeur. Dans l'ensemble, l'écosystème ONNX offre de nombreuses options et opportunités pour affiner et optimiser les performances des modèles d'apprentissage en profondeur.

  • 01:15:00 Dans cette section, les conférenciers discutent des avantages de l'utilisation d'ONNX et d'ONNXRuntime en C++ pour les modèles d'apprentissage automatique, car cela permet une flexibilité dans les frameworks et une conversion facile entre eux sans sacrifier les performances. Ils mentionnent également que ONNXRuntime est pris en charge sur Linux et montrent comment utiliser les blocs-notes Python et Jupyter pour le prototypage et l'exportation de modèles au format ONNX. Ils utilisent un petit tutoriel comme exemple pour montrer comment convertir des modèles d'autres frameworks vers ONNX et mettre en évidence l'utilité de l'outil Netron pour visualiser le graphe de calcul des modèles. Les conférenciers encouragent les téléspectateurs à poser des questions et à partager leurs connaissances sur l'outil.

  • 01:20:00 Dans cette section, les intervenants discutent du processus de conversion d'un modèle au format ONNX et de son exécution en mode inférence à l'aide de ONNXRuntime en C++. Ils montrent comment créer un graphe de calcul et définir les dimensionnalités d'entrée et de sortie, ainsi que comment l'utiliser pour comparer les performances du modèle sur CPU et GPU. Ils présentent également l'utilisation du populaire modèle de traitement du langage naturel BERT, qui utilise l'opérateur de transformateur et est implémenté dans la bibliothèque Hugging Face. Les conférenciers soulignent l'importance d'installer le bon package pour utiliser ONNXRuntime avec CPU ou GPU.

  • 01:25:00 Dans cette section de la vidéo, le présentateur montre comment convertir un modèle BERT au format ONNX en Python. Le processus consiste à définir les entrées du modèle et à convertir le modèle à l'aide de la fonction "torch.onnx.export". Le présentateur explique qu'ONNX ajoute des opérateurs à chaque version, ce qui souligne la nécessité de travailler sur la bonne version d'ONNX avec les opérateurs nécessaires pour le modèle spécifique. L'axe dynamique est également mis en évidence comme une fonctionnalité importante pour permettre des formes d'entrée/sortie dynamiques, telles que des longueurs de séquence variables dans le traitement du langage naturel. Enfin, le présentateur montre une comparaison entre Python et ONNX en termes de performances lors de l'exécution de l'inférence sur le modèle.

  • 01:30:00 Dans cette section de la rencontre virtuelle, les conférenciers partagent une démonstration de leur travail avec ONNX et ONNXRuntime en C++. Ils présentent une amélioration des performances observée dans l'inférence d'un modèle Python classique exécuté via ONNXRuntime. Ils présentent également un outil appelé "Network Viewer", qui permet aux utilisateurs de visualiser le graphique de calcul statique d'un modèle et de voir les opérations en cours d'exécution, y compris les types d'entrée et de sortie attendus. L'outil affiche également la version d'ONNX utilisée pour la conversion et le décalage utilisé pendant le processus de conversion. Les conférenciers demandent des commentaires aux téléspectateurs et fournissent un lien permettant aux participants de fournir des commentaires.

  • 01:35:00 Dans cette section, Marco Arena et Matteo Verasani parlent de leur travail d'étude des plates-formes pour les systèmes embarqués, notamment les GPU, les FGA et les CPU. Ils ont exécuté quatre réseaux de neurones pour la détection d'objets sur ces systèmes embarqués et ont analysé les résultats en termes de consommation d'énergie et de vitesse d'inférence. Ils discutent également de l'importance d'utiliser des détecteurs à un étage pour les systèmes embarqués et fournissent des liens vers des référentiels pour ONNX et ONNXRuntime. Ils mentionnent les avantages potentiels de l'analyse comparative d'ONNXRuntime sur les GPU et expriment leur intérêt à inviter l'équipe ONNXRuntime de Microsoft à participer à de futurs événements. Enfin, ils invitent les téléspectateurs à assister à leur prochain événement en ligne et à leurs futures rencontres.

  • 01:40:00 Cette section de la vidéo explique comment trouver des raisons de ne pas revenir aux rencontres en personne et comment ils ont eu la chance d'avoir une concession des participants pour leur réunion en ligne. Ils discutent également des plans à venir pour leur série de rencontres virtuelles, qui comprend la suppression de la section Python et la concentration sur les premières parties de leur démonstration, sur la base des matériaux présentés par Malattia, Verasani et les référentiels ONNX et ONNX Runtime. Il existe également des liens et des sources officielles fournies pour ceux qui recherchent plus d'informations sur le sujet. En fin de compte, ils expriment l'espoir d'incorporer plus de temps de réseautage et de garder le chat ouvert pour ceux qui souhaitent rester après le dîner, mais ils admettent les limites des rencontres en ligne.
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
  • 2020.10.22
  • www.youtube.com
Relatori: Marco Arena, Mattia Verasani📍 Slides: https://www.italiancpp.org/interoperable-ai-arena-verasani/💻 Demo: https://github.com/ilpropheta/onnxruntim...
 

[CppDay20] IA interopérable : ONNX & ONNXRuntime en C++ (M. Arena, M. Verasani)



[CppDay20] IA interopérable : ONNX & ONNXRuntime en C++ (M. Arena, M. Verasani)

L'utilisation d'algorithmes d'apprentissage automatique et d'apprentissage en profondeur augmente, et il existe un besoin d'outils capables de déployer ces algorithmes sur différentes plates-formes. L'outil ONNX offre une interopérabilité entre différents frameworks et plateformes, permettant aux développeurs de convertir leurs algorithmes d'un framework à un autre et de les déployer sur différents appareils, même s'ils ne sont pas familiers avec le framework ou la plateforme spécifique. ONNX Runtime est un moteur d'inférence qui peut exploiter des accélérateurs personnalisés pour accélérer les modèles pendant la phase d'inférence et peut cibler une variété de plates-formes matérielles. Les conférenciers démontrent l'utilisation d'ONNX et d'ONNX Runtime dans la programmation C++, avec des exemples de modèles de régression linéaire et de réseaux de neurones. Ils discutent également des avantages de l'utilisation d'ONNX et d'ONNX Runtime pour affiner l'exécution d'un réseau, optimiser le temps de chargement et exécuter des images séquentielles.

  • 00:00:00 Dans cette section de la vidéo, les conférenciers discutent de l'utilisation croissante des algorithmes d'apprentissage automatique et d'apprentissage en profondeur pour diverses applications et du besoin d'outils capables de déployer ces algorithmes sur différentes plates-formes. Ils introduisent un outil appelé ONNX qui assure l'interopérabilité entre différents frameworks et plates-formes. Ils expliquent comment les développeurs peuvent utiliser ONNX pour convertir leurs algorithmes d'un framework à un autre et les déployer sur différents appareils, même s'ils ne sont pas familiers avec le framework ou la plateforme spécifique. Les intervenants utilisent l'exemple de la conversion d'un algorithme Python au format ONNX puis au framework Core ML pour le déployer sur un appareil Apple. Ils soulignent l'utilité d'ONNX pour rendre les algorithmes d'apprentissage en profondeur et d'apprentissage automatique plus accessibles et déployables sur un large éventail de plates-formes.

  • 00:05:00 Dans cette section, le conférencier discute d'ONNX et d'ONNX Runtime, qui sont des outils permettant une IA interopérable. ONNX permet le transfert de modèles entre différents frameworks d'apprentissage en profondeur, tels que PyTorch et Tensorflow, sans nécessiter de connaissance de chaque framework. ONNX Runtime, qui est fourni par Microsoft, est un moteur d'inférence qui peut tirer parti d'accélérateurs personnalisés pour accélérer les modèles pendant la phase d'inférence. Il est capable de cibler une variété de plates-formes matérielles et ne nécessite pas que l'utilisateur crée son propre moteur d'inférence en C++.

  • 00:10:00 Dans cette section, les conférenciers discutent des avantages de l'utilisation du format ONNX pour les modèles d'apprentissage automatique et de l'interopérabilité qu'il offre pour différents cadres de formation. Ils expliquent le pipeline pour développer des algorithmes d'apprentissage en profondeur, les convertir au format ONNX et utiliser le moteur d'inférence d'exécution ONNX pour exécuter le modèle sur différentes plateformes et langages de programmation. Les conférenciers présentent également des graphiques de performances qui montrent une amélioration significative des performances des algorithmes lors de l'utilisation de l'environnement d'exécution ONNX, par rapport à d'autres frameworks tels que PyTorch et scikit-learn. Enfin, Marco prend le relais et parle de l'utilisation du moteur d'exécution ONNX dans la programmation C++.

  • 00:15:00 Dans cette section, l'orateur parle de son expérience de l'interopérabilité entre les cadres d'apprentissage automatique et présente le projet ONNX comme un effort important pour atteindre cet objectif. Ils mentionnent qu'ils n'ont pas rencontré beaucoup de problèmes de conversion lors de la conversion de modèles entre les frameworks, mais le principal problème se pose lorsqu'un opérateur n'est pas pris en charge au format ONNX ou au format ONNX Runtime. L'orateur répond également à une question sur les problèmes de conversion et explique que les opérateurs non pris en charge par ONNX peuvent causer des problèmes de conversion.

  • 00:20:00 Dans cette section, les conférenciers discutent de leur expérience de conversion de TensorFlow vers ONNX et mentionnent qu'ils n'ont pas rencontré beaucoup de problèmes de conversion. Ils discutent également du débogage et du dépannage lorsqu'il s'agit de manipuler des tenseurs en C++, et mentionnent l'utilisation d'autres bibliothèques telles que l'extenseur ou Python pour le faire. Ils présentent le point d'entrée pour ONNX, onx.ai, qui permet aux utilisateurs de sélectionner l'architecture et le langage de programmation souhaités, et démontrent l'utilisation d'ONNXRuntime en C++. Ils mentionnent que le code est le même pour le GPU, la seule différence étant la bibliothèque liée.

  • 00:25:00 Dans cette section, le présentateur présente une démonstration de l'utilisation d'ONNXRuntime pour charger, inspecter et exécuter l'inférence sur un modèle. Il commence par créer un environnement pour l'API sous-jacente, avec des fonctionnalités facultatives telles que la personnalisation du journal ou du threading. Il crée ensuite une session qui représente l'inférence à exécuter sur un modèle particulier, qui peut être chargé à partir d'un chemin ou d'un flux d'octets. Il montre comment utiliser un répartiteur pour inspecter les informations du modèle, telles que le nombre et les noms des entrées et des sorties. Il note que cette démo présente la bibliothèque brute et que dans des situations réelles, un wrapper serait utilisé pour éviter de gérer les chaînes et autres complexités.

  • 00:30:00 Dans cette section, le conférencier discute d'un modèle de régression linéaire simple et de la façon de transmettre une entrée au réseau sans copier les données à l'aide d'une API externe appelée CreateTensor. L'orateur souligne l'importance d'aller à l'api c sous l'api c++ lorsque la documentation n'est pas claire. De plus, ils discutent des différentes options disponibles lors de l'exécution de la session d'inférence, y compris la récupération de sortie partielle et la personnalisation des noms de sortie. Enfin, ils notent que les valeurs de sortie sont stockées dans un vecteur et sont les mêmes tenseurs alloués précédemment.

  • 00:35:00 Dans cette section, l'intervenant discute de l'accès aux données en C++ à l'aide de la fonction get tensor mutable data et de la nécessité de spécifier le type utilisé en raison de l'effacement du type. L'exemple fourni montre comment imprimer des valeurs sur la sortie standard à l'aide de cette méthode. L'orateur mentionne également la nécessité d'être prudent avec l'allocation des tenseurs et des tampons de sortie et comment utiliser des tampons de sortie pré-alloués. La discussion passe ensuite à l'exécution d'un modèle linéaire avec un fournisseur d'exécution GPU utilisant le package GPU Microsoft ML ONNXRuntime comme choix par défaut pour exécuter ONNXRuntime sur le CPU. Enfin, le conférencier présente brièvement deux projets de démonstration pour les réseaux de vision : un classificateur appelé ResNet et un détecteur appelé MobileNet. Le code de démonstration est similaire à l'exemple précédent, et l'orateur met en évidence le pré-traitement et le post-traitement impliqués dans ces réseaux.

  • 00:40:00 Dans cette section, le présentateur montre comment utiliser ONNXRuntime pour profiler l'exécution d'un réseau de neurones à l'aide d'une minuterie externe. En ajoutant une option de profilage lors de la création de la session, ONNXRuntime peut produire un fichier JSON qui contient le temps d'exécution passé sur chaque phase et l'éclatement de tous les opérateurs du graphe qui ont été exécutés. Cet outil peut fournir des détails supplémentaires comme si le modèle s'exécute sur CPU ou GPU, ou s'il est exécuté séquentiellement ou en parallèle. Le profilage peut aider à affiner l'exécution d'un réseau et à vérifier s'il s'exécute sur un autre accélérateur.

  • 00:45:00 Dans cette section, le conférencier démontre l'impact de l'optimisation sur le temps de chargement et le temps d'exécution d'un modèle utilisant ONNX et ONNXRuntime en C++. La désactivation de l'optimisation entraîne un temps d'exécution nettement plus long, tandis que son activation entraîne un temps de chargement plus long. Cependant, il est possible de sauvegarder une version optimisée du modèle qui équilibre l'optimisation et le temps de chargement. L'orateur montre au public comment optimiser le modèle à l'aide des différentes options disponibles et le sauvegarder. De plus, le conférencier aborde brièvement l'exécution parallèle et montre comment cela peut réduire considérablement le temps de traitement d'un lot d'images.

  • 00:50:00 Dans cette section, l'orateur discute de l'exécution d'images séquentielles et de la contention dans le pool de threads global, entraînant un temps d'exécution plus long pour chaque image. Ils mentionnent également l'utilisation d'un outil de profilage pour affiner les mesures de temps pour les entrées uniques et l'explosion de tous les opérateurs s'exécutant par image. L'orateur explique l'utilisation de la bibliothèque Extensor pour la manipulation des tenseurs, similaire à numpy pour Python, utilisée pour le prétraitement des images dans un classificateur ResNet plus simple. La distinction ONNX Runtime pour les niveaux de base, intermédiaire et avancé est également mentionnée, avec des fonctionnalités avancées telles que des opérateurs personnalisés, des arènes de mémoire et des répartiteurs. Le support commercial et les exemples Python sont également abordés, avec des liens vers la démo et les diapositives fournis.

  • 00:55:00 Dans cette section, les présentateurs discutent d'un benchmark qu'ils ont mené sur les algorithmes de détection d'objets, en se concentrant sur les détecteurs à un étage utiles pour les appareils embarqués. Ils ont comparé les FPGA, les GPU et les CPU et ont constaté que les appareils NVIDIA, les CPU Intel Core E7 et les FPGA étaient les meilleures plates-formes pour certains types d'opérations. Ils ont également mentionné qu'il existe une prise en charge des modèles de formation dans ONNX, mais uniquement en Python. Lorsqu'on leur a demandé s'ils envisageraient d'utiliser ONNXRuntime en production, ils ont déclaré qu'ils l'utilisaient déjà pour les tests et la transition vers la production. Ils ont noté que Microsoft l'utilisait également dans de nombreux projets, y compris Windows ML, et qu'il était en développement depuis trois ans.
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
  • 2020.12.02
  • www.youtube.com
Event page: https://italiancpp.org/cppday20/Slides: https://github.com/italiancpp/cppday20---ONNX is an open source format built to represent machine learnin...
 

Accélérer l'apprentissage automatique avec ONNX Runtime et Hugging Face



Accélérer l'apprentissage automatique avec ONNX Runtime et Hugging Face

La vidéo "Accelerating Machine Learning with ONNX Runtime and Hugging Face" traite de la création de la bibliothèque Optimum de Hugging Face, qui se concentre sur l'accélération des modèles de transformateurs de la formation à l'inférence en appliquant facilement le runtime ONNX. La bibliothèque simplifie le pont entre la bibliothèque de transformateurs et l'accélération matérielle, créant une boîte à outils facile à utiliser pour les performances de production. En appliquant les optimisations fournies par ONNX Runtime, les utilisateurs peuvent bénéficier de toutes les accélérations matérielles, ce qui se traduit par des pipelines d'inférence plus rapides. Une collaboration au sein de la communauté Hugging Face permet l'optimisation du modèle séquence à séquence à l'aide de ces classes de pipeline d'inférence accélérée, et un exemple de bout en bout a montré que l'utilisation de la bibliothèque Optimum peut entraîner une augmentation du débit ou une diminution de la latence de 44 % tout en conservant 99,6% de la précision du modèle d'origine.

  • 00:00:00 Dans cette section, Jeff de Hugging Face explique l'objectif de l'entreprise de rendre la puissance des modèles de transformateurs accessible à toutes les entreprises du monde grâce à des modèles et des outils préformés facilement accessibles. Il explique que l'apprentissage par transfert et l'attention sont tout ce dont vous avez besoin. Le papier a changé le domaine de l'apprentissage automatique, atteignant des performances révolutionnaires dans les tâches de traitement du langage naturel et produisant des résultats de pointe dans chaque modalité d'apprentissage automatique. Jeff présente la bibliothèque Optimum, conçue pour accélérer les modèles de transformateurs en appliquant facilement le runtime ONNX, ce qui permet aux ingénieurs et aux développeurs de logiciels d'utiliser plus facilement ces modèles en production.

  • 00:05:00 Dans cette section, l'orateur discute de la création de la bibliothèque Hugging Face Optimum qui se concentre sur l'accélération des modèles de transformateurs de la formation à l'inférence. La bibliothèque propose une boîte à outils de référence pour l'accélération matérielle avec des API de haut niveau dédiées aux performances de production. Le package Onnx Runtime d'Optimum fournit une intégration native de DeepSpeed, un moyen d'accélérer la formation. Optimum propose également l'Ort Optimizer pour simplifier les modèles de graphes, le Rt Quantizer pour optimiser les pondérations et cible des fournisseurs d'exécution spécifiques pour tirer parti des optimisations spécifiques au matériel. Dans l'ensemble, Optimum simplifie le pont entre la bibliothèque de transformateurs et l'accélération matérielle, créant une boîte à outils facile à utiliser pour les performances de production.

  • 00:10:00 Dans cette section, le conférencier parle de l'optimisation des modèles d'apprentissage automatique à l'aide d'ONNX Runtime et de la bibliothèque d'optimisation de Hugging Face. En passant du modèle automatique pour la tâche au modèle RT pour la tâche, les utilisateurs peuvent facilement appliquer les optimisations fournies par ONNX Runtime et bénéficier de toute l'accélération matérielle, ce qui se traduit par des pipelines d'inférence plus rapides. La communauté Hugging Face collabore également pour permettre l'optimisation du modèle séquence à séquence à l'aide de ces classes de pipeline d'inférence accélérée. L'exemple de bout en bout décrit dans le billet de blog montre que l'utilisation de la bibliothèque Optimum peut entraîner une augmentation du débit ou une diminution de la latence de 44 % tout en conservant 99,6 % de la précision du modèle d'origine.
Accelerating Machine Learning with ONNX Runtime and Hugging Face
Accelerating Machine Learning with ONNX Runtime and Hugging Face
  • 2022.07.13
  • www.youtube.com
Hugging Face has democratized state of the art machine learning with Transformers and the Hugging Face Hub, but deploying these large and complex models into...
 

Accélérer l'inférence ML à grande échelle avec ONNX, Triton et Seldon | PyData mondial 2021



Accélérer l'inférence ML à grande échelle avec ONNX, Triton et Seldon | PyData mondial 2021

Dans la vidéo "Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021", Alejandro Saucedo de Seldon Technologies discute des défis de la mise à l'échelle de l'inférence d'apprentissage automatique et de la manière d'utiliser ONNX et Triton pour optimiser et produire des modèles. En utilisant le modèle GPT-2 TensorFlow comme cas d'utilisation, la session couvre le prétraitement, la sélection des jetons optimaux et le déploiement du modèle à l'aide de Tempo et du serveur d'inférence Triton. Saucedo met l'accent sur la nécessité d'abstraire les complexités de l'infrastructure et de faciliter le déploiement tout en garantissant la reproductibilité et la conformité. L'exposé se termine par des collaborations avec des projets open source pour des composants de formation et de déploiement de bout en bout.

  • 00:00:00 Dans cette section, Alejandro Saucedo se présente et présente sa société, Seldon Technologies, qui se concentre sur le déploiement et la surveillance de l'apprentissage automatique. Il explique que la session couvrira le défi d'accélérer l'inférence d'apprentissage automatique à grande échelle en adoptant une approche pratique, en utilisant le modèle GPT-2 TensorFlow comme cas d'utilisation. L'objectif est d'optimiser le modèle à l'aide d'ONNX et de le tester localement à l'aide d'un outil appelé Tempo avant de le produire sur Kubernetes. L'objectif principal est d'abstraire les complexités sous-jacentes de l'infrastructure afin que les praticiens de la science des données puissent se concentrer sur le côté science des données. Saucedo explique également ce qu'est GPT-2 et ses applications, notant qu'il s'agit d'un modèle relativement complexe qui nécessite une quantité importante de calculs pour la formation et l'inférence.

  • 00:05:00 Dans cette section de la vidéo, l'orateur discute de l'utilisation de modèles pré-formés, en particulier GPT-2, et de la manière dont ils peuvent être exploités pour diverses applications, telles que les jeux et la génération de code. L'orateur explique comment utiliser la bibliothèque Hugging Face pour récupérer le modèle GPT-2 pré-formé et discute des composants du modèle, y compris le tokenizer et le modèle de tête, qui sont utilisés pour le prétraitement et l'inférence. L'orateur parcourt ensuite un exemple de prétraitement d'une phrase lisible par l'homme à l'aide du tokenizer et de l'utilisation de la fonction de génération pour prédire 20 jetons. Enfin, l'orateur explique le flux de travail sous-jacent de la fonction de génération, qui exécute l'inférence plusieurs fois pour le modèle, et comment reconvertir la sortie lisible par machine en format lisible par l'homme à l'aide du décodeur du tokenizer.

  • 00:10:00 Dans cette section, l'orateur explique le processus de sélection du jeton optimal pour un modèle et les défis auxquels les praticiens sont confrontés lors de la mise à l'échelle du modèle. Les défis incluent la nécessité d'un matériel spécialisé, les dépendances complexes entre les composants et le besoin de reproductibilité et de conformité. Le conférencier présente ensuite le format ONNX, qui est largement adopté dans l'industrie et permet la transformation des modèles Python ou PyTorch en un format standardisé pour que les serveurs optimisés puissent lire et modifier pour des performances optimales. Cependant, la conversion en ONNX n'est pas nécessaire, et les praticiens peuvent toujours déployer leurs modèles directement. Le conférencier présente également le framework Tempo, qui simplifie le processus de déploiement et de mise à l'échelle des modèles.

  • 00:15:00 Dans cette section, l'orateur explique comment produire le modèle à l'aide de Tempo et du serveur d'inférence Triton. La première étape consiste à définir un wrapper Tempo pour le modèle GPT-2, puis à exécuter le modèle optimisé dans le serveur optimisé de Nvidia. Ensuite, une logique de transformateur personnalisée doit être définie pour convertir les jetons lisibles par machine en chaînes lisibles par l'homme, permettant aux utilisateurs d'interagir avec le modèle de manière simple et facile. Après avoir testé le modèle dans Docker localement, il peut être déployé dans la pile Kubernetes avec une simple commande. Le code de définition de l'encapsuleur est présenté et l'orateur explique que cette méthode permet d'utiliser différents types de cadres de modèle, ce qui en fait un outil polyvalent pour produire l'inférence ML.

  • 00:20:00 Dans cette section, le conférencier explique comment créer une logique de transformateur personnalisée à l'aide de modèles PyTorch avec ONNX et Triton. Tout d'abord, la transcription explique comment envoyer des jetons via cette logique personnalisée, en utilisant la conversion de chaîne et la fonction de prédiction. L'orateur explique ensuite comment charger des artefacts à partir du modèle GPT2 et définir la fonction de prédiction en tant que point de terminaison REST, avant de parcourir les jetons et de générer la réponse. La principale conclusion est qu'en passant des jetons à travers le modèle et en itérant sur plusieurs exécutions, nous pouvons renvoyer une chaîne à partir de cette infrastructure complexe. De plus, l'orateur mentionne que cette approche peut être déployée facilement dans Kubernetes grâce à la fonction de déploiement à distance.

  • 00:25:00 Dans cette section, le conférencier discute de l'accélération de l'apprentissage automatique à grande échelle, en se concentrant spécifiquement sur l'optimisation d'un modèle TensorFlow GPT-2 avec ONNX et son exécution avec Triton à l'aide de Docker, puis son déploiement dans Kubernetes tout en suivant les meilleures pratiques. L'objectif est de minimiser les fuites de l'infrastructure sous-jacente et d'assurer un déploiement fiable avec un minimum d'effort. Le conférencier mentionne également leurs collaborations avec les équipes Tempo et Metaflow pour fournir des composants de formation et de déploiement de bout en bout dans des projets open source. La conférence se termine par une séance de questions-réponses.
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
  • 2022.01.19
  • www.youtube.com
Accelerating ML Inference at Scale with ONNX, Triton and SeldonSpeaker: Alejandro SaucedoSummaryIdentifying the right tools for high performant production ma...
 

AI Show Live - Épisode 62 - Inférence multiplateforme avec le runtime ONNX



AI Show Live - Épisode 62 - Inférence multiplateforme avec le runtime ONNX

Dans l'épisode "Inférence multiplateforme avec ONNX Runtime" de l'AI Show Live, les hôtes montrent comment déployer un modèle de super résolution et un modèle de détection d'objets sur plusieurs plateformes à l'aide du framework ONNX Runtime. Ils discutent des étapes de prétraitement et de post-traitement pour les plates-formes mobiles et Web, démontrent les avantages de l'utilisation d'une solution unique, expliquent le processus de conversion d'un modèle PyTorch en modèle ONNX et montrent comment prétraiter les données pour l'inférence avec l'ONNX. Durée. En outre, ils démontrent la mise en œuvre du modèle de traitement du langage naturel BERT à l'aide d'Onnx Runtime en C#. Le code et les modèles open source sont disponibles pour la personnalisation des solutions des utilisateurs.

Dans la deuxième partie de l'AI Show Live, les présentateurs couvrent une variété de sujets liés à l'exécution de l'inférence avec le runtime ONNX. Ils démontrent le processus de classification de texte à l'aide d'un exemple tiré des exemples d'inférence ONNX et explorent l'installation des packages et des outils nécessaires pour créer des modèles de classification BERT en C#. Ils discutent également de l'utilisation d'IntelliCode avec VS 2022 et parcourent les étapes de préparation de l'inférence de modèle, y compris la création de tenseurs, la configuration de la session d'inférence ONNX Runtime et le post-traitement de la sortie. De plus, ils évoquent l'importance de consulter la documentation du modèle et de sélectionner le bon tokenizer pour des résultats précis.

  • 00:00:00 Dans cette section de l'AI Show Live, l'animatrice Cassie Breviu présente les invités spéciaux Victor, Kalia et David, stagiaires de l'équipe ONNX Runtime, qui présenteront un projet sur la façon de déployer un modèle de super résolution et un modèle de détection d'objets sur mobile et web à l'aide du framework ONNX Runtime. Le projet vise à améliorer la détection d'objets sur les images grâce à une sortie en super résolution, démontrant la capacité de l'ONNX Runtime pour un déploiement multiplateforme.

  • 00:05:00 Dans cette section, les hôtes présentent un projet qui utilise React Native et Expo pour créer une application pouvant être déployée sur différentes plates-formes pour mobile et Web. Ils expliquent que l'utilisation de la fonctionnalité de modules natifs de React Native permet l'implémentation de fonctions et de modèles dans d'autres langages comme C++ et Java, qui peuvent être utilisés dans le code JavaScript. Cette fonctionnalité leur permet d'écrire des fonctions de prétraitement dans un langage différent, comme leur fonction d'obtention de pixels écrite en Java, pour mieux gérer les données, ce qui facilite l'obtention des données de pixel d'une image pour leurs modèles d'apprentissage automatique.

  • 00:10:00 Dans cette section de la vidéo YouTube, le conférencier discute des étapes de pré-traitement et de post-traitement d'une application mobile qui utilise un modèle de super résolution. Contrairement à d'autres modèles qui fonctionnent avec des valeurs RVB, ce modèle ne fonctionne qu'avec la composante de luminance (Y) d'une image. Par conséquent, le conférencier montre comment convertir une image RVB en une image YCbCr pour extraire la composante Y. Le conférencier montre également comment charger le modèle dans l'environnement mobile à l'aide du format ONNX Runtime, qui fournit une version optimisée et de taille réduite pour les applications mobiles et Web. Enfin, l'étape de post-traitement est effectuée pour traiter la sortie du modèle.

  • 00:15:00 Dans cette section de la vidéo, l'hôte et l'invité démontrent la fonction de post-traitement qui prend un tableau de leur modèle et change le YCbCr en RVB. Ils utilisent ensuite la fonction d'un modèle natif pour obtenir la source de l'image à afficher. Le pré-traitement et le post-traitement dans les langages non-Python ont tendance à être la partie la plus difficile lors de l'opérationnalisation et de la déduction de modèles dans d'autres langages. Ils montrent une démo où le modèle est déployé localement sur un appareil mobile, puis réutilisent ultérieurement le code pour déployer le même modèle dans un navigateur Web. Un spectateur demande si la même chose peut être faite en C #, ce que l'invité pense que c'est possible.

  • 00:20:00 cette section, Kalia démontre les différences de pré et post-traitement pour l'exécution du modèle sur les plateformes Web par rapport aux plateformes mobiles. Sur le Web, le canevas hors écran et l'API Canvas sont utilisés pour obtenir les données d'image, tandis que sur mobile, il n'est pas nécessaire d'aller et venir entre les API. Une fois que le canevas hors écran dessine l'image, la fonction de prétraitement ajuste les données d'image au canal y, que le modèle de super-résolution utilise. La fonction de post-traitement convertit ensuite les données du format y cbcr au format rgb afin qu'elles puissent être affichées sur un écran. Le code de Kalia pour les fonctions de pré et post-traitement peut être utilisé en Java, C# ou React.

  • 00:25:00 Dans cette section de la vidéo, les présentateurs discutent des avantages de l'utilisation d'une solution unique pour plusieurs appareils, comme avec ONNX Runtime. Ils montrent comment exécuter un modèle mobile sur une plate-forme Web et les avantages de l'inférence sur l'appareil, y compris la rentabilité et la confidentialité. Les présentateurs expliquent également le processus de conversion d'un modèle PyTorch en modèle ONNX, puis en format ONNX Runtime. Enfin, ils présentent l'aspect détection d'objets du projet et expliquent comment ils ont utilisé ONNX Runtime pour détecter des objets dans les images.

  • 00:30:00 Dans cette section de la vidéo, le présentateur discute des détails du modèle utilisé dans son projet, qui est un modèle d'IA de détection d'objets qui utilise une super résolution pour augmenter la précision de la détection globale. Ils expliquent les différences de prétraitement et de post-traitement entre leur modèle et le modèle discuté précédemment et détaillent les quatre sorties de leur modèle, y compris l'emplacement, les classes, le score et le nombre de détections. De plus, ils montrent comment ils ont utilisé l'outil Netron pour analyser et décomposer leur modèle, et comment ils ont ajusté le prétraitement pour maintenir les valeurs RVB cohérentes pour que le modèle détecte les objets avec précision.

  • 00:35:00 Dans cette section, le présentateur démontre l'exécution d'un modèle sur une photo pré-super résolution et montre les résultats de la détection d'objet, qui identifie avec précision le chien sur la photo. L'utilisation du modèle de super résolution améliore l'image et conduit à une boîte de détection plus précise et plus petite. Cela démontre la portabilité et l'utilisation pratique du runtime ONNX et montre les capacités d'exécution du modèle sur un modèle optimisé sur l'appareil. Le code et les modèles open source sont également disponibles pour que les utilisateurs puissent y accéder et les personnaliser pour leurs propres solutions.

  • 00:40:00 voir dans cette section est une démonstration du modèle de traitement du langage naturel BERT utilisant Onnx Runtime en C#. L'hôte explique que bien qu'il existe de nombreux exemples d'utilisation de BERT en Python, ils ont préféré utiliser C#. Ils ont commencé avec le modèle sans boîtier de base BERT avant de passer à un exemple de la documentation Onnx Runtime pour la réponse aux questions. Avec l'API des transformateurs Hugging Face, ils ont pu facilement saisir le modèle pré-formé et l'exporter au format Onnx. Ils montrent ensuite comment donner des entrées au modèle et l'exécuter à l'aide d'Onnx Runtime en C#.

  • 00:45:00 Dans cette section, l'orateur discute de l'étape de prétraitement du modèle, où le texte est symbolisé. Ils montrent comment les axes dynamiques sont utilisés pour permettre différentes longueurs d'entrée et comment ils utilisent le tokenizer pour pré-traiter l'entrée en do dièse. Ils présentent également le Boat Tokenizer, un projet open-source qui leur permet de tokeniser le modèle BERT en C sharp, ce qui n'est pas possible avec le package de transformateurs basé sur Python. L'entrée codée est ensuite renvoyée sous forme d'ID d'entrée, qui sont les différents jetons attachés à différents mots dans le modèle.

  • 00:50:00 Dans cette section, le présentateur discute de l'implémentation des modèles BERT en C# en créant une application console. Ils expliquent que l'utilisation d'une application console est utile lors de l'expérimentation de différentes implémentations C# de modèles, et qu'elle peut être intégrée dans une application de production si nécessaire. Le présentateur montre comment utiliser la tokenisation pour obtenir les jetons réels d'une phrase et comment coder l'entrée avec les identifiants associés aux jetons. Ils montrent également les grands vocabulaires utilisés et comment ils sont transformés en objets à utiliser dans la tokenisation.

  • 00:55:00 Dans cette section, le présentateur explique comment prétraiter les données et les préparer pour l'inférence avec ONNX Runtime. Ils montrent comment convertir des données en tenseurs, nécessaires au processus d'inférence, et comment créer une liste d'objets de valeur ONNX nommés à transmettre à la session d'inférence. Ils mentionnent également l'importance de définir des étiquettes correctes pour les données d'entrée. Dans l'ensemble, ils fournissent des conseils utiles pour travailler avec le runtime ONNX et préparer les données pour l'inférence d'apprentissage automatique.

  • 01:00:00 Dans cette section, le locuteur exécute les valeurs d'inférence et obtient les logits de début et de fin. Les résultats sont retournés dans l'ordre de l'index des étiquettes. Pour obtenir la réponse prédite, la valeur maximale et l'indice de la valeur maximale des logits de début et de fin doivent d'abord être obtenus. Les noms de sortie sont affichés et les valeurs de jeton encodées peuvent être vues, qui sont utilisées pour comparer si les jetons sont corrects. Le conférencier démontre également le processus de conversion du code d'inférence Python en C # pour opérationnaliser les modèles. Enfin, ils suggèrent d'expérimenter davantage de modèles, de convertir le code d'inférence Python en C# et d'affiner les modèles.

  • 01:05:00 Dans cette section de la vidéo, l'hôte explore la classification de texte à l'aide de l'environnement d'exécution ONNX et d'un exemple tiré des exemples d'inférence ONNX, qui constitue une bonne ressource pour trouver des exemples d'utilisation d'ONNX. L'exemple utilise un tokenizer de Hugging Face et une version plus petite et distillée du tokenizer de base. L'hôte définit le chemin en fonction du nom du modèle, puis définit les entrées du modèle, qui a des axes dynamiques en raison de la longueur variable des phrases. Les entrées du modèle de classification de texte sont les ID d'entrée et le masque d'attention. L'hébergeur mentionne que des extensions sont en cours de développement pour ONNX et que la nouvelle version du runtime prend en charge .NET six et Maui. Bien que l'exemple de prétraitement du modèle ne soit pas facilement disponible, l'hôte prévoit d'utiliser Netron pour le comprendre.

  • 01:10:00 résument cette section. Dans cette section de la vidéo, l'orateur renomme le modèle précédent de manière moins informative et y ajoute une classification textuelle. Ils continuent à créer un nouveau projet en utilisant C # et .NET 6 et expliquent la nouvelle fonctionnalité d'avoir un modèle de console scripté simple. L'orateur copie et colle du code du projet précédent dans le nouveau et ajoute l'entrée BERT, qui n'a plus que deux sorties. L'orateur reconnaît qu'il doit créer un fichier séparé pour cette entrée, mais choisit de le scripter à la place.

  • 01:15:00 Dans cette section, l'intervenant discute de l'installation de divers packages et outils pour créer des modèles de classification Burp en C#. Ils installent le package tokenizer requis et les packages d'exécution ONNX, ainsi que le package géré. Les packages d'attributs inutiles sont commentés et le locuteur ajoute une phrase d'entrée et un tokenizer pour obtenir les jetons à coder. L'orateur mentionne également le VS 2022 IntelliCode, qui utilise le modèle GPT-2 pour s'entraîner sur la base de code et s'exécute localement.

  • 01:20:00 Dans cette section de la vidéo, le présentateur parle de l'utilisation d'Intellicode (anciennement connu sous le nom d'Intellisense) avec VS 2022, qui est un outil alimenté par l'IA qui peut apprendre à partir d'une base de code existante. Ils passent ensuite au travail avec le tokenizer et la valeur codée d'une phrase. Ils discutent également du chemin du modèle et de la façon de coller le modèle dans une application de console à des fins expérimentales, bien qu'il existe de meilleures façons de gérer cela pour une application de production. Enfin, le présentateur crée une session d'inférence pour le modèle BERT.

  • 01:25:00 Dans cette section de la vidéo, les présentateurs passent en revue les étapes nécessaires pour préparer l'exécution d'une inférence à l'aide du runtime ONNX. Ils commencent par créer des tenseurs et les convertissent en tenseur. Ils créent ensuite une entrée à l'aide d'ID d'entrée et d'un masque d'attention, ainsi que d'une liste de listes de listes. Après avoir créé une valeur ONNX nommée, ils exécutent le modèle et discutent des options de configuration de la session d'inférence ONNX Runtime, y compris différentes optimisations de graphes et fournisseurs d'exécution. Enfin, ils récupèrent la sortie, qui dans ce cas n'a qu'une seule valeur.

  • 01:30:00 Dans cette section de la transcription, l'intervenant passe en revue le code d'utilisation d'un modèle avec ONNX Runtime. Ils expliquent comment ils ont nommé les étiquettes pour qu'elles soient identiques pour l'utilisation du modèle ONNX et comment ils peuvent effectuer un test de santé mentale pour voir si tout fonctionne. Ils définissent un point d'arrêt pour parcourir le code et vérifier si l'entrée, le masque d'attention et les identifiants sont corrects. Une fois que l'entrée est correcte, ils chargent le modèle, créent leur tenseur, session et inférence. Ensuite, ils expliquent qu'ils doivent post-traiter pour comprendre comment transformer cela en un résultat et ils sont allés chercher du code de pré-traitement.

  • 01:35:00 Dans cette section de la vidéo, l'orateur discute du processus de traitement de deux valeurs obtenues à partir d'un modèle de classification pour déterminer le sentiment positif et négatif d'une phrase donnée. Ils démontrent l'utilisation d'un tokenizer pour tokeniser la phrase et obtenir ses jetons, qu'ils utilisent pour confirmer leur compréhension de la façon d'effectuer le processus en C#. Ils mentionnent également l'importance de consulter la documentation du modèle et de sélectionner le bon tokenizer pour assurer une tokenisation précise.

  • 01:40:00 Dans cette section, les hôtes de l'AI Show Live discutent du projet Optimum de Hugging Face qui met en œuvre des optimisations pour l'apprentissage automatique, y compris des accélérateurs pour la formation et différentes intégrations matérielles utilisant le runtime ONNX sur le back-end. Les hôtes examinent également les étapes de prétraitement pour le tokenizer et la création de la session pour le modèle de classification de texte. Ils explorent la version codée d'une phrase et réutilisent du code précédemment écrit pour créer la session de leur modèle.

  • 01:45:00 Dans cette section, le présentateur se prépare à l'inférence du modèle en exportant le modèle et en traitant les données d'entrée. Ils confirment que le bon générateur de jetons a été utilisé pour segmenter les données d'entrée en effectuant une vérification d'intégrité des jetons encodés. Cependant, ils constatent que le masque de saisie est manquant et reviennent pour examiner le modèle et le code afin d'identifier le problème. Malgré l'incertitude autour du tokenizer utilisé, ils confirment que les jetons encodés sont corrects et procèdent à la génération du masque de saisie.

  • 01:55:00 Dans cette section de la vidéo, le présentateur essaie de configurer les entrées et les sorties pour exécuter le modèle. Ils rencontrent des problèmes avec le masque de saisie et le masque d'attention, et finissent par se rendre compte qu'ils peuvent simplement saisir les jetons et les envoyer sans avoir à effectuer de traitement supplémentaire. Ils se concentrent ensuite sur l'entrée du modèle, ce qui est un peu plus compliqué car il nécessite deux entrées et doit spécifier la forme du lot. Le présentateur utilise le runtime ONNX pour configurer les entrées et les sorties et le teste pour voir s'il produit les mêmes résultats que le modèle C#.
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
  • 2022.07.29
  • www.youtube.com
Join Cassie Breviu as she takes us on a tour of what the ONNX Runtime can do when it comes to inference AND on multiple platforms to boot.
 

Apprentissage automatique appliqué avec ONNX Runtime



Apprentissage automatique appliqué avec ONNX Runtime

Jennifer Looper, Principal Education Cloud Advocate chez Microsoft, discute de la convergence de la création d'applications, de l'apprentissage automatique et de la science des données dans cette vidéo. Elle recommande de créer des applications intelligentes pour le Web et explore diverses API JavaScript, notamment ml5.js, Magenta.js, PoseNet et Brain.js, pour intégrer la technologie d'apprentissage automatique dans les applications. Looper souligne l'utilité de scikit-learn pour l'apprentissage automatique classique et le recommande comme un outil puissant sans la solution lourde des réseaux de neurones. Elle aborde également le Runtime Onnx, qui optimise la formation et l'inférence en définissant un ensemble commun d'opérateurs pour la création de modèles d'apprentissage automatique et d'apprentissage en profondeur, et extrait des données de Kaggle pour expliquer le processus d'exécution d'une tâche de classification de base à l'aide d'apprentissage automatique supervisé. L'orateur montre ensuite comment créer un moteur de recommandation à l'aide de modèles d'apprentissage automatique et suggère de consulter les ressources en ligne de Microsoft pour en savoir plus sur l'apprentissage automatique. Elle conclut qu'Onnx Runtime convient aux débutants dans le cadre de leur programme ou à toute personne souhaitant en savoir plus sur l'apprentissage automatique.

  • 00:00:00 Dans cette section, Jen Looper, Principal Education Cloud Advocate chez Microsoft, discute de la convergence entre la création d'applications, l'apprentissage automatique et la science des données. Elle explique les défis de la création d'applications mobiles aujourd'hui, en particulier face aux nouvelles applications qui sont imprégnées d'intelligence et exécutent des algorithmes d'apprentissage automatique en arrière-plan. Looper soutient que cette nouvelle demande d'expériences intelligentes a d'abord contribué aux défis auxquels sont confrontés les développeurs d'applications indépendantes.

  • 00:05:00 Dans cette section, l'orateur explique comment créer des applications intelligentes et quelles décisions architecturales et pile technique guideraient ce processus. Les options incluent la création d'une application native, la création pour le Web ou la création pour le bureau. L'orateur recommande de s'en tenir au Web pour créer des applications intelligentes et explique que, malgré les différences de compétences entre les développeurs Web et les ingénieurs en apprentissage automatique, il existe des moyens de faire converger ces domaines. L'orateur illustre la collaboration entre les développeurs et les ingénieurs en apprentissage automatique, citant l'utilisation de devops, l'approvisionnement et le nettoyage des données, la formation et l'itération, ainsi que l'équipe ML Ops qui assure une livraison précise et une amélioration continue des modèles d'apprentissage automatique.

  • 00:10:00 anecdotes personnelles, l'orateur explique comment combler les fossés dans l'ingénierie de l'apprentissage automatique et la création d'applications Web peut être moins intimidant que de surmonter la peur des ponts. Le conférencier présente divers outils permettant d'intégrer la technologie d'apprentissage automatique dans les applications Web, notamment TensorFlow.js, Brain.js et ONNX. Elle met en évidence les avantages de chaque outil et encourage les téléspectateurs à explorer le site Web TensorFlow pour découvrir les démos intéressantes qu'ils proposent. Elle se concentre également sur ONNX Runtime et sa capacité à intégrer des modèles basés sur ONNX dans des applications Web. Dans l'ensemble, le conférencier vise à fournir aux développeurs d'applications des connaissances sur les outils disponibles pour améliorer leurs applications avec la technologie d'apprentissage automatique.

  • 00:15:00 Dans cette section de la vidéo, l'orateur discute de diverses API Javascript qui peuvent être utilisées avec des modèles pré-formés pour explorer et créer de l'intelligence artificielle dans le navigateur. L'un d'eux est le ml5.js qui est construit sur Tensorflow et fournit des exemples sur la reconnaissance d'images et l'analyse du son. Une autre API mentionnée est Magenta.js qui utilise des modèles pré-formés pour créer de la musique et de l'art dans le navigateur. L'orateur parle également de PoseNet qui peut être utilisé pour estimer des poses simples ou multiples pour tout le corps, le visage ou juste la main. Enfin, le conférencier présente Brain.js qui permet aux réseaux de neurones de fonctionner en Javascript sur les navigateurs et Node.js.

  • 00:20:00 Dans cette section, l'orateur discute des limites de l'utilisation de JavaScript et du navigateur pour la formation de modèles d'apprentissage automatique, suggérant qu'il ne s'agit pas d'un environnement idéal à cette fin et qu'il convient mieux à l'exécution de modèles prêts à l'emploi ou recycler ceux qui existent déjà. Ils recommandent que pour des modèles d'apprentissage automatique plus robustes et appropriés, Python soit la voie à suivre, et les programmeurs peuvent apprendre suffisamment de Python pour être dangereux et travailler avec Jupyter Notebooks pour former leurs modèles. Ils discutent également de l'utilisation de services tels que loeb.ai pour la formation sur les images et d'autres médias.

  • 00:25:00 Dans cette section, l'orateur discute d'une alternative à l'utilisation de TensorFlow pour l'apprentissage automatique, scikit-learn. L'orateur explique que tous les problèmes d'apprentissage automatique ne nécessitent pas de réseaux de neurones, et ils ont créé un programme sur GitHub qui n'utilise pas de réseaux de neurones. Ils montrent également comment ils ont utilisé scikit-learn pour créer une application de recommandation de cuisine, alimentée par un environnement d'exécution ONNX, permettant aux utilisateurs de saisir des ingrédients et de recevoir des suggestions pour un type de cuisine qu'ils peuvent préparer avec ces ingrédients. Le conférencier souligne l'utilité de scikit-learn pour l'apprentissage automatique classique et le recommande comme un outil puissant sans la solution lourde des réseaux de neurones.

  • 00:30:00 Dans cette section de la vidéo, l'orateur présente scikit-learn, un cadre d'apprentissage automatique open source qui fournit des exemples et de la documentation pour les tâches d'apprentissage automatique de base telles que la classification, la régression et le clustering. Ils expliquent que scikit-learn est un framework populaire parmi les scientifiques des données et est accessible à tous car il est fourni avec numpy, scipy et matplotlib. L'orateur discute ensuite d'Onnx Runtime, un produit de l'Open Neural Network Exchange (Onnx) qui optimise la formation et l'inférence en définissant un ensemble commun d'opérateurs pour la construction de modèles d'apprentissage automatique et d'apprentissage en profondeur. Onnx Runtime prend en charge une variété de frameworks, d'outils et d'environnements d'exécution, et permet aux développeurs d'IA d'utiliser leur framework préféré avec le moteur d'inférence de leur choix. L'orateur décrit un flux de travail d'apprentissage automatique typique qui implique le nettoyage des données à l'aide de Python, la formation de modèles à l'aide de scikit-learn et la conversion de modèles à utiliser avec Onnx Runtime à l'aide de la bibliothèque skl vers Onnx.

  • 00:35:00 Dans cette section de la vidéo, l'orateur extrait des données de Kaggle sur différents types de cuisines et explique comment nettoyer et équilibrer les données. L'ensemble de données contient 100 ingrédients potentiels classés comme indiens, thaïlandais, coréens, japonais ou chinois. Pour construire le modèle, le conférencier explique qu'il faut choisir un algorithme, un classifieur et un solveur pour optimiser les résultats. L'ensemble de données est petit, avec seulement environ 700 points de données. Les données sont étiquetées, ce qui signifie que l'apprentissage supervisé peut être utilisé, et l'orateur souligne l'importance de comprendre les données avant de les façonner et de les nettoyer pour les utiliser dans des applications d'apprentissage automatique.

  • 00:40:00 Dans cette section, le présentateur décrit le processus d'exécution d'une tâche de classification de base à l'aide de l'apprentissage automatique supervisé et le choix d'un algorithme de classification multi-classes. Le présentateur présente une feuille de triche pour la classification multi-classes et exclut les réseaux de neurones en raison de la nature de l'ensemble de données et de la formation locale. Les deux algorithmes de classification multi-classes qui restent sont la régression logistique et les forêts de décision. Le présentateur choisit la régression logistique et opte pour un contre repos pour gérer la classification multi-classes. Le présentateur explique ensuite l'importance de choisir le bon solveur et choisit le solveur liblinéaire. Le présentateur forme le modèle en utilisant lr fit et teste sa précision à l'aide d'une recette avec de la coriandre, des oignons, des pois, des pommes de terre, des tomates et des huiles végétales, rapportant une précision de 71 %. Le présentateur présente également la feuille de triche de l'algorithme Scikit-learn pour aider à la sélection d'un algorithme approprié en fonction de la quantité de données et d'étiquettes disponibles.

  • 00:45:00 Dans cette section, l'orateur discute de l'importance de choisir le bon algorithme de classification lors de la construction d'un modèle d'apprentissage automatique. Ils montrent comment ils ont expérimenté différents classificateurs et solveurs pour voir lequel offrait la meilleure précision. Après avoir choisi le Support Vector Classifier (SVC), ils ont reconstruit le modèle et testé sa précision. Une fois satisfaits de la précision du modèle, ils l'ont converti en un fichier Onyx et ont utilisé le runtime Onyx pour créer une application Web. L'orateur explique comment ils ont créé une application Web simple avec une série de cases à cocher pour fournir des données d'ingrédients à un modèle importé et ont utilisé une fonction asynchrone pour démarrer l'inférence. Ils ont ensuite démontré l'application Web et vérifié ce que le modèle suggérait.

  • 00:50:00 Cette section de la vidéo montre comment créer un moteur de recommandation à l'aide de modèles d'apprentissage automatique. En saisissant une liste d'ingrédients, le modèle suggère le type de cuisine que l'on pourrait créer. En outre, le conférencier invite les téléspectateurs à en savoir plus sur l'apprentissage automatique grâce aux ressources en ligne de Microsoft qui offrent du contenu gratuit sur divers sujets, notamment le regroupement, la régression, la classification, l'apprentissage par renforcement, le traitement du langage naturel et les applications de séries chronologiques. L'orateur encourage les téléspectateurs à poser des questions et à interagir avec le contenu du site Web mycommworld.com.

  • 00:55:00 Dans cette section, la question est posée si Onnx Runtime est un bon outil pour les débutants. La réponse est oui, car l'un des conférenciers est un développeur Web autodidacte qui croit que n'importe qui peut apprendre n'importe quoi s'il essaie assez fort. Par conséquent, Onnx Runtime convient aux débutants dans le cadre de leur programme ou à tous ceux qui souhaitent en savoir plus sur l'apprentissage automatique.
Applied Machine Learning with Onnx Runtime
Applied Machine Learning with Onnx Runtime
  • 2021.12.02
  • www.youtube.com
This conference talk was delivered via the One Million Arab Coders initiative. It gives an overview of what applied ML is, how we need to bridge the divide b...
Raison: