Apprendre ONNX pour le trading - page 14

 

Webinaire NVAITC : Déployer des modèles avec TensorRT



Webinaire NVAITC : Déployer des modèles avec TensorRT

Dans cette section du webinaire NVAITC, l'architecte de solutions Nikki Loppie présente TensorRT, le kit de développement logiciel de NVIDIA pour l'inférence d'apprentissage en profondeur hautes performances. TensorRT fournit un optimiseur d'inférence et un temps d'exécution pour une inférence à faible latence et à haut débit sur une gamme de plates-formes, des appareils intégrés aux centres de données. Loppie explique les cinq technologies utilisées par TensorRT pour optimiser les performances d'inférence, y compris la fusion du noyau et l'étalonnage de précision. Les développeurs peuvent utiliser les API Python et C++ de TensorRT pour incorporer ces optimisations dans leurs propres applications, et des bibliothèques de conversion comme trtorch peuvent être utilisées pour optimiser les modèles PyTorch pour l'inférence. Loppie montre comment enregistrer des modèles optimisés TensorRT à l'aide de la bibliothèque trtorch et compare les modèles optimisés à des modèles non optimisés pour la classification des images, montrant des accélérations significatives avec une demi-précision.

  • 00:00:00 Dans cette section du webinaire, l'architecte de solutions Nikki Loppie discute de l'importance de l'efficacité dans l'inférence et de la nécessité de la portabilité de la plate-forme. Elle présente TensorRT, un kit de développement logiciel de NVIDIA pour l'inférence d'apprentissage en profondeur haute performance qui répond à ces deux défis. TensorRT comprend un optimiseur d'inférence et un environnement d'exécution pour une inférence à faible latence et à haut débit sur une large gamme de plates-formes, des appareils intégrés aux centres de données. Il est également compatible avec tous les principaux frameworks d'apprentissage en profondeur. Loppie explique ensuite les cinq technologies mises en œuvre par TensorRT pour optimiser les performances d'inférence, notamment la fusion du noyau, l'étalonnage de précision et le réglage automatique du noyau.

  • 00:05:00 Dans cette section, le webinaire présente les capacités de TensorRT pour optimiser le temps d'exécution du noyau, réduire l'empreinte mémoire et prendre en charge l'inférence parallèle à l'aide d'une exécution multi-flux. Les développeurs peuvent utiliser les API Python et C++ de TensorRT pour intégrer ces optimisations dans leurs propres applications. Le webinaire explique également comment utiliser des bibliothèques de convertisseurs comme tr torch pour optimiser un modèle PyTorch pour l'inférence. Les étapes consistent à enregistrer le modèle, à le charger, à initialiser un modèle ResNet, à le compiler à l'aide de TorchScript et enfin à le convertir au format TensorRT. Le modèle optimisé peut ensuite être déployé sur la plateforme cible.

  • 00:10:00 Dans cette section du webinaire, l'orateur montre comment enregistrer des modèles optimisés TensorRT pour une utilisation ultérieure ou pour un déploiement sur d'autres plates-formes à l'aide de la bibliothèque trtorch. L'orateur utilise un exemple de classification d'images avec des modèles ResNet-18 et ResNet-50 exécutés sur un ensemble de données ImageNet. Les modèles optimisés de torche montrent des accélérations significatives avec une demi-précision par rapport aux modèles non optimisés, avec un facteur d'accélération de 5,5x pour ResNet-18 et 6,4x pour ResNet-50. L'orateur souligne également l'importance d'une analyse comparative impartiale et fournit des instructions sur la façon de démarrer avec trtorch.
 

Tutoriel ESP - Comment : concevoir un accélérateur dans Keras/Pytorch/ONNX



Tutoriel ESP - Comment : concevoir un accélérateur dans Keras/Pytorch/ONNX

Le didacticiel présente un outil appelé Chalice for ML, qui peut générer automatiquement un accélérateur à partir d'un modèle Keras/Pytorch/ONNX. Le didacticiel se poursuit ensuite pour démontrer comment intégrer l'accélérateur dans ESP (Early Stage Prototyper). L'orateur montre également comment concevoir un accélérateur dans Keras/Pytorch/ONNX et passe par les étapes d'importation d'un accélérateur, d'ajout d'un banc de test, de génération de RTL et de création de deux versions de l'accélérateur. La vidéo couvre également la compilation de Linux et la création d'une application d'espace utilisateur Linux pour l'accélérateur. Enfin, le didacticiel se termine par des ressources pour un apprentissage plus approfondi.

  • 00:00:00 Dans cette section du didacticiel, le présentateur présente un outil appelé Chalice for ML qui peut générer automatiquement un accélérateur à partir d'un modèle Keras/Pytorch/ONNX. Le flux est démontré en utilisant HLS 4 ML pour générer un accélérateur à partir d'un modèle Keras pré-construit qui est fourni dans l'ESP pour le référentiel GitHub de NXP. L'accélérateur généré est ensuite intégré et testé dans ESP à l'aide d'un script interactif. Le présentateur insiste sur le fait que les utilisateurs doivent parcourir les guides prérequis et configurer leur environnement avant de tenter de suivre le didacticiel. Le didacticiel propose également des matériaux prédéfinis que les utilisateurs peuvent utiliser pour expérimenter sans avoir à suivre toutes les étapes.

  • 00:05:00 Dans cette section du didacticiel, l'instructeur explique comment intégrer l'accélérateur conçu dans les étapes précédentes dans ESP (Early Stage Prototyper). L'ID hexadécimal à trois chiffres de l'accélérateur est attribué, en gardant à l'esprit que le nombre ne doit pas être supérieur à 1024 en décimal. La largeur en bits de données de l'accélérateur est ensuite définie, qui est de 32 bits dans le cas d'utilisation actuel, et les tailles des fichiers d'entrée et de sortie sont déterminées. Enfin, l'instructeur démontre l'exécution d'une synthèse de haut niveau pour l'accélérateur à trois couches MLP et montre comment exécuter HLS avec ESP. Toutes les étapes sont les mêmes que pour les autres guides pour les accélérateurs System C ou C++, et le dossier du projet HLS pour MLP est ajouté à ESP avec tous les fichiers nécessaires pour envelopper et interfacer l'accélérateur avec le reste du système ESP.

  • 00:10:00 Dans cette section de la vidéo, le conférencier montre les étapes de conception d'un accélérateur dans Keras/Pytorch/ONNX. Ils montrent d'abord comment importer un accélérateur et ajouter un banc de test qui teste automatiquement la simulation. Ils passent ensuite par l'étape HLS, qui génère un projet fonctionnant sur une recherche de sélecteur et la technologie du FPGA. Le RTL généré est alors placé dans la technologie du FPGA et deux versions de l'accélérateur sont créées, l'une en 32 bits et l'autre en 64 bits. Le haut-parleur configure un SOC avec la commande ESP X config et montre comment compiler une application bare metal qui a été générée automatiquement. Pour simuler le test bare metal d'un accélérateur, le programme de test doit être spécifié. Une fois la validation passée, un bitstream FPGA peut être généré.

  • 00:15:00 Dans cette section, le didacticiel vidéo décrit la compilation de Linux, qui non seulement compile les cyniques, mais compile également les applications de test de l'espace utilisateur pour les accélérateurs. Une fois Linux terminé, un exécutable pour l'accélérateur est créé, qui est l'application d'espace utilisateur Linux qui s'exécutera sur FPGA. Le didacticiel procède ensuite à la programmation du FPGA et à l'exécution du test bare-metal à l'aide de la commande make FPGA run. Pour exécuter le test unitaire à nu du décélérateur, un programme de test généré précédemment est spécifié. Ensuite, Linux a été exécuté et l'application de test unitaire a été exécutée, qui a trouvé avec succès le vendeur Reiter et le test a réussi avec validation. Le didacticiel se termine par quelques ressources pour un apprentissage plus approfondi.
 

Inférence optimale sur du matériel flexible avec ONNX Runtime



Inférence optimale sur du matériel flexible avec ONNX Runtime

Ce didacticiel couvre le déploiement de modèles sur CPU, GPU et OpenVINO à l'aide d'ONNX Runtime. L'orateur démontre l'utilisation de différents fournisseurs d'exécution, dont OpenVINO, pour l'inférence sur du matériel flexible. Le code d'inférence est essentiellement le même dans tous les environnements, la principale différence étant le fournisseur d'exécution. ONNX Runtime effectue l'inférence plus rapidement que PyTorch sur le CPU et le GPU, et une bibliothèque ONNX Runtime distincte existe pour OpenVINO. Dans l'ensemble, le didacticiel fournit un aperçu de la façon de déployer des modèles sur diverses options matérielles à l'aide d'ONNX Runtime.

  • 00:00:00 Dans cette section, l'orateur passe par le processus de configuration des environnements virtuels et d'utilisation d'ONNX Runtime pour effectuer une inférence sur un modèle ResNet50 sur CPU, GPU et OpenVINO. L'orateur note que ONNX Runtime utilisera le GPU s'il détecte un accélérateur compatible, sinon il utilisera par défaut le CPU. Le code d'inférence est essentiellement le même dans les trois environnements, la principale différence étant le changement de fournisseur d'exécution. L'orateur démontre qu'ONNX Runtime peut effectuer des inférences plus rapidement que PyTorch sur CPU et GPU, et note qu'il existe une bibliothèque ONNX Runtime distincte pour OpenVINO.

  • 00:05:00 Dans cette section, l'orateur démontre l'utilisation de différents fournisseurs d'exécution comme OpenVINO et OpenVino sur CPU pour l'inférence sur du matériel flexible avec ONNX Runtime. En définissant le fournisseur d'exécution sur OpenVINO, le même code fournit 30 ms et une utilisation du processeur d'environ 0,78. Le didacticiel donne un aperçu de la façon de déployer des modèles sur CPU, GPU et OpenVINO à l'aide d'ONNX Runtime.
 

Inférence d'apprentissage automatique dans Flink avec ONNX



Inférence d'apprentissage automatique dans Flink avec ONNX

La vidéo traite des avantages et de la mise en œuvre de l'utilisation d'ONNX dans l'inférence d'apprentissage automatique et de son déploiement dans le cadre informatique distribué, Flink. La séparation des préoccupations entre la formation de modèles et l'inférence de production, la capacité à définir des spécifications pour les entrées et les sorties et l'indépendance linguistique font d'ONNX un outil précieux pour les scientifiques des données. La vidéo montre comment charger un modèle ONNX dans Flink, en fournissant les composants clés de la fonction de carte riche et en expliquant comment regrouper les modèles avec le code à l'aide d'un fichier jar. Le conférencier aborde également des considérations telles que la gestion de la mémoire, l'optimisation des lots et l'accélération matérielle avec ONNX, et souligne ses avantages pour l'inférence d'apprentissage automatique en temps réel dans Flink.

  • 00:00:00 Dans cette section de la vidéo, Colin Germain explique l'importance de l'inférence d'apprentissage automatique en temps réel en utilisant un exemple de jouet du domaine de la détection des cyberattaques. Il illustre comment attendre pour détecter un incident peut conduire à une exfiltration de données importantes manquantes. De plus, il explique pourquoi l'apprentissage automatique est essentiel pour capturer la variation des différents types de techniques et d'exploits utilisés par des adversaires externes. Enfin, il souligne l'importance de faire évoluer la solution en utilisant l'informatique distribuée dans Flink. Colin présente le modèle ONNX, qui joue un rôle essentiel dans la solution, et explique comment ils peuvent utiliser un modèle d'apprentissage automatique dans PyTorch et le sérialiser avec ONNX pour le déployer dans Flink.

  • 00:05:00 Dans cette section, le conférencier explique les avantages de l'utilisation d'ONNX, qui signifie Open Neural Network Exchange, dans un pipeline d'apprentissage automatique. ONNX permet de séparer les préoccupations entre la phase de formation du modèle et la phase d'inférence de production, ce qui permet aux scientifiques des données de développer facilement des modèles en Python, puis d'utiliser le modèle ONNX avec différents outils d'inférence. ONNX fournit un contrat qui définit le calcul d'un graphe acyclique orienté à utiliser pour l'apprentissage automatique. Chaque opérateur du graphique a une version, permettant une rétrocompatibilité et un service continu à l'avenir. L'orateur note également les avantages de l'empaquetage des modèles ONNX avec le framework de streaming Apache Flink pour un déploiement plus facile.

  • 00:10:00 Dans cette section de la vidéo, l'orateur discute des avantages de l'utilisation d'ONNX pour l'inférence d'apprentissage automatique, y compris la possibilité de définir des spécifications pour les entrées et les sorties, et la prise en charge de toutes les versions de modèles dans la bibliothèque d'exécution ONNX. L'indépendance linguistique d'ONNX et la disponibilité de convertisseurs pour la plupart des frameworks ML facilitent l'importation de modèles dans ONNX, et l'orateur suggère d'utiliser netron à des fins de diagnostic. Enfin, l'orateur présente un exemple simple d'utilisation d'un modèle de torche pi avec ONNX pour un traitement de bout en bout sans formation.

  • 00:15:00 Dans cette section, l'orateur discute de la méthode directe utilisée pour définir le calcul et comment elle est utilisée par un couple élevé pour gérer la rétropropagation des gradients pour l'entraînement. Un exemple basique d'utilisation de la classe add offset est démontré, qui décale les tenseurs d'une valeur définie. L'orateur aborde ensuite l'exportation vers ONNX et l'importance de fournir les entrées correctes pour les modèles dynamiques. Le modèle ONNX est chargé en mémoire à l'aide de l'environnement d'exécution et de la session ONNX de Scala, ce qui permet d'effectuer des inférences sur le modèle. Une classe est créée pour contenir le modèle chargé à utiliser dans l'inférence.

  • 00:20:00 Dans cette section, l'orateur explique comment le modèle ONNX peut être chargé dans Flink à l'aide d'un tableau d'octets et d'une méthode de chargement. Ils montrent également comment la fonction de carte riche peut être utilisée pour conserver le modèle chargé et effectuer des inférences de manière propre et organisée. L'orateur passe en revue les composants clés de la fonction de carte riche, y compris la configuration du tenseur ONNX, la définition des entrées et des sorties et l'exécution de la session de modèle pour obtenir les résultats. Ils notent que le code peut être modifié pour prendre en charge plusieurs sorties, ce qui en fait une solution flexible pour différents types de modèles. Enfin, le conférencier aborde l'aspect packaging des modèles ONNX, expliquant comment ils peuvent être regroupés avec le fichier jar contenant le code, éliminant ainsi le besoin de se connecter à des points de terminaison externes ou de télécharger des fichiers à partir de différentes sources.

  • 00:25:00 Dans cette section, l'orateur discute d'un exemple d'inférence d'apprentissage automatique dans Flink utilisant le problème classique de classification des chiffres manuscrits, connu sous le nom de MNIST. Ils montrent le modèle PyTorch utilisé pour classer les tableaux de 28x28 pixels et comment il peut être converti en un graphique ONNX pour une utilisation dans Flink, en utilisant la même approche de dimensionnement par lots qu'auparavant. L'orateur discute ensuite d'un autre exemple d'apprentissage automatique utilisant des transformateurs en PNL, en particulier une version plus petite de BERT, qui a été pré-formée sur un vocabulaire de mots. Le modèle de transformateur est utilisé pour prédire le sentiment, la traduction et d'autres tâches de mots, et peut être davantage formé pour de nouvelles tâches de prédiction dans Flink.

  • 00:30:00 Dans cette section, le présentateur présente la bibliothèque Hugging Face Transformers, qui permet d'importer facilement des modèles pré-formés et d'apprendre par transfert en Python. Bien que ces modèles puissent avoir tendance à être volumineux, la bibliothèque comprend des fonctionnalités d'optimisation et de quantification pour améliorer les performances. Cependant, il est important de noter que les étapes de prétraitement, telles que la tokenisation, ne font pas encore partie du graphe et peuvent ne pas être accessibles en scala. Le présentateur souligne également les avantages de tirer parti de toutes les capacités du langage Scala dans Flink, tout en séparant les dépendances de formation de l'inférence de production et en dissociant efficacement les deux éléments. Dans l'ensemble, bien qu'il existe certains inconvénients, tels que la taille du modèle et les défis de prétraitement, la méthode offre des avantages en termes d'exploitation des capacités de Flink et de déploiement dans un fichier JAR.

  • 00:35:00 Dans cette section, l'orateur note que lors de l'utilisation de l'inférence d'apprentissage automatique dans Flink avec ONNX, il y a quelques considérations importantes à garder à l'esprit. L'un est une gestion minutieuse de la mémoire lorsqu'il s'agit de modèles volumineux, tels que des modèles de transformateurs pouvant occuper des centaines de mégaoctets. De plus, l'optimisation par lots et l'accélération matérielle, telles que l'utilisation de GPU, peuvent avoir un impact sur les performances. Le prétraitement peut être effectué avec des graphiques ONNX personnalisés, mais cela nécessite un travail supplémentaire et n'est pas aussi simple que ce qui a été montré précédemment. L'orateur souligne qu'ONNX permet l'apprentissage automatique en temps réel dans Flink et sépare bien le code de formation Python du code de production Scala, ce qui peut être une victoire pour les scientifiques des données. L'orateur aborde également des questions sur l'utilisation d'ONNX avec des modèles basés sur TensorFlow et pourquoi ONNX a été choisi plutôt que l'API Java, PyTorch ou TensorFlow.

  • 00:40:00 Dans cette section, l'orateur parle d'ONNX en tant que schéma indépendant du cadre pour le graphe qui est également indépendant du langage. L'orateur a mentionné que l'une des propriétés intéressantes de l'utilisation d'ONNX est que si l'on utilise PyTorch et que l'on veut passer à TensorFlow, on peut utiliser ONNX comme "véhicule" pour aller entre les deux frameworks, ce qui montre la flexibilité du framework. Le public a demandé si l'orateur avait expérimenté les modèles TensorFlow avec le projet Scala de TensorFlow, auquel il a répondu négativement. Enfin, l'orateur invite le public à visiter le référentiel ONNX, à créer un problème sur GitHub ou à le contacter sur LinkedIn pour des questions, notamment sur l'embauche.
 

Améliorer l'expérience d'achat en ligne avec ONNX



Améliorer l'expérience d'achat en ligne avec ONNX

Cette vidéo explique comment les entreprises de commerce électronique utilisent l'IA pour créer des informations percutantes qui différencient les gagnants et les perdants dans l'espace de vente au détail en ligne. L'orateur donne un exemple de Bazaar Voice, le plus grand réseau de marques et de détaillants qui fournit plus de 8 milliards d'avis au total, et comment ils utilisent la correspondance des produits pour partager des avis. L'orateur décrit ensuite comment ils ont développé un modèle d'apprentissage automatique en Python, l'ont exporté au format ONNX et l'ont déployé dans une fonction sans serveur à l'aide d'un environnement de nœud pour exécuter l'inférence sur un environnement d'exécution ONNX. Cette solution permet une mise en correspondance à grande vitesse de centaines de millions de produits sur des milliers de catalogues clients tout en maintenant des coûts bas, ce qui se traduit par des économies importantes et des millions d'avis supplémentaires pour les marques et les détaillants. L'orateur conclut en invitant les téléspectateurs à explorer d'autres façons d'utiliser les capacités d'ONNX et à partager leurs cas d'utilisation pour les futures avancées technologiques.

  • 00:00:00 Dans cette section, nous apprenons que la numérisation du commerce a conduit les entreprises de commerce électronique à posséder l'échelle des données qu'elles collectent et utilisent l'IA pour créer des informations percutantes comme différenciateur entre gagner et perdre dans l'espace de vente au détail en ligne. Un exemple est celui d'un milliard d'acheteurs par mois pour Bazaar Voice, le plus grand réseau mondial de marques et de détaillants qui fournit plus de 8 milliards d'avis au total, et comment le partage des avis est alimenté par la correspondance des produits. L'appariement des produits, la fonction principale du modèle d'apprentissage automatique construit, est effectué en comparant des identifiants uniques, mais plus d'un million d'appariements de produits sont effectués manuellement chaque mois. La solution est un modèle scikit-learn construit avec Python et exporté au format ONNX, ayant mis en œuvre la solution la plus légère et la plus rentable tout en maintenant les performances.

  • 00:05:00 Dans cette section, l'orateur discute de diverses options pour mettre en œuvre des modèles d'apprentissage automatique pour une expérience d'achat en ligne et conclut que les fonctions sans serveur sont la meilleure option en raison de leur faible coût et de leur mise en œuvre facile. Ils expliquent ensuite comment ils ont développé un modèle en Python, l'ont exporté au format ONNX et l'ont déployé dans une fonction sans serveur à l'aide d'un environnement de nœud pour exécuter l'inférence sur un environnement d'exécution ONNX. La modularité de cette solution lui permet d'être facilement connectée à n'importe quel service, et en utilisant des métriques telles que la mémoire utilisée et le temps d'exécution, ils ont pu trouver la taille de mémoire optimale pour assurer les meilleures performances tout en maintenant des coûts bas. Alors que les limites de taille de déploiement et le travail dans les délais d'expiration sont des considérations, la puissance d'exécution ONNX et ONNX en combinaison avec des fonctions sans serveur a permis une correspondance à grande vitesse de centaines de millions de produits sur des milliers de catalogues clients, ce qui a entraîné des économies importantes et 15 millions avis supplémentaires pour les marques et les détaillants.

  • 00:10:00 Dans cette section, l'orateur conclut la vidéo en invitant les téléspectateurs à explorer d'autres façons d'utiliser les capacités d'ONNX et à partager leurs cas d'utilisation. En tant que personne travaillant activement dans cet espace, l'orateur est intrigué et contraint par où ces technologies peuvent nous mener à l'avenir.
 

DSS en ligne #4 : Déploiement du Deep Learning de bout en bout avec ONNX


DSS en ligne #4 : Déploiement du Deep Learning de bout en bout avec ONNX

Cette vidéo aborde les défis du déploiement de l'apprentissage en profondeur de bout en bout, y compris la gestion de différents langages, frameworks, dépendances et variabilité des performances, ainsi que les frictions entre les équipes et les verrouillages de formats propriétaires. L'Open Neural Network Exchange (ONNX) est introduit en tant que format basé sur un tampon de protocole pour la sérialisation d'apprentissage en profondeur. Il prend en charge les principaux frameworks d'apprentissage en profondeur et fournit un artefact autonome pour l'exécution du modèle. ONNX ML est également abordé dans le cadre de la spécification ONNX qui prend en charge le prétraitement traditionnel de l'apprentissage automatique. Les limites d'ONNX sont reconnues, mais il est considéré comme un projet à croissance rapide avec un soutien solide de la part de grandes organisations qui offre une véritable portabilité à travers différentes dimensions de langages, de cadres, d'environnements d'exécution et de versions.

  • 00:00:00 Dans cette section, Nick Pentreath, ingénieur principal chez IBM, présente le déploiement d'apprentissage en profondeur de bout en bout avec l'Open Neural Network Exchange. Le flux de travail d'apprentissage automatique comprend de nombreuses étapes, notamment l'analyse des données, leur prétraitement pour les modèles, la formation du modèle, son déploiement dans des applications réelles, ainsi que sa maintenance et sa surveillance. Pentreath explique comment le flux de travail couvre différentes équipes et outils, ce qui rend essentiel d'avoir une infrastructure au service du modèle.

  • 00:05:00 Dans cette section, l'orateur aborde les trois questions cruciales pour le déploiement de l'apprentissage automatique : que déployons-nous, où déployons-nous et comment déployons-nous. Le déploiement d'un modèle d'apprentissage automatique implique l'incorporation de l'ensemble des étapes qui précèdent le modèle formé, y compris les transformations, l'extraction de caractéristiques et le prétraitement. Il est impératif d'appliquer les mêmes étapes de prétraitement dans l'environnement réel que celles utilisées pendant la formation, car toute différence peut entraîner une distorsion des données pouvant entraîner des résultats catastrophiques. L'orateur note que même l'apprentissage en profondeur nécessite toujours un prétraitement et une ingénierie des fonctionnalités minutieux, et souligne les défis qui accompagnent la normalisation du prétraitement. Ces défis incluent différentes dispositions de données et modes de couleur parmi différents cadres qui peuvent avoir des impacts subtils mais significatifs sur les prédictions.

  • 00:10:00 Dans cette section, la vidéo aborde les défis liés au déploiement d'un pipeline d'apprentissage en profondeur de bout en bout, y compris la gestion et le rapprochement de différents langages, cadres, dépendances et variabilité des performances, ainsi que les frictions entre les équipes , le manque de normalisation parmi les frameworks open source et les verrouillages de format propriétaire. Bien que le déploiement basé sur des conteneurs apporte des avantages significatifs, il nécessite toujours une sorte de cadre de service en plus et ne résout pas le problème de la normalisation. C'est pourquoi la vidéo suggère d'utiliser des normes ouvertes pour exporter des modèles de différents frameworks vers un format standardisé, ce qui permet de séparer les préoccupations entre le producteur de modèles et le consommateur de modèles, leur permettant de se concentrer sur leurs tâches respectives sans se soucier des problèmes de déploiement ou de l'endroit où le modèle est venu.

  • 00:15:00 Dans cette section, l'orateur discute de l'importance de l'open source et des normes ouvertes dans le déploiement de l'apprentissage en profondeur. Ils expliquent les avantages d'avoir une pile unique et un ensemble standardisé d'outils d'analyse et de visualisation, et soulignent le rôle essentiel de la gouvernance ouverte pour fournir de la visibilité et éviter la concentration du contrôle. L'orateur présente ensuite l'échange de réseau neuronal ouvert (ONNX), un format basé sur un tampon de protocole pour définir la sérialisation des modèles d'apprentissage automatique en mettant l'accent sur l'apprentissage en profondeur. ONNX prend en charge les principaux frameworks d'apprentissage en profondeur tels que PyTorch, Caffe, TensorFlow, Keras, Apple Core ML et MXNet, et fournit un artefact autonome pour exécuter le modèle.

  • 00:20:00 Dans cette section, l'orateur explique comment ONNX ML (Machine Learning) fait partie de la spécification ONNX qui prend en charge le prétraitement traditionnel de l'apprentissage automatique, ainsi que des types supplémentaires tels que des séquences et des cartes. ONNX englobe une vaste communauté et un écosystème d'exportateurs qui sont écrits pour divers cadres d'apprentissage automatique traditionnels ainsi que des modèles tels que des modèles linéaires, des ensembles d'arbres et l'amplification de gradient. Pour représenter tout cela, ONNX agit comme une norme qui se situe entre les producteurs de modèles et les consommateurs. Le zoo de modèles ONNX contient un ensemble de modèles largement utilisés et standard dans différents domaines, notamment l'analyse d'images, la classification, la segmentation et le traitement du langage naturel, tous représentés dans les formats ONNX. Le runtime ONNX, un projet open source de Microsoft, est un runtime entièrement conforme qui prend en charge à la fois l'apprentissage en profondeur de base et les opérateurs ONNX ML.

  • 00:25:00 Dans cette section, l'orateur discute des limites d'ONNX, notamment en termes de certaines fonctionnalités manquantes telles que le traitement d'image, le traitement avancé des chaînes et les modèles de clustering de hachage. De plus, il existe des défis lorsqu'il s'agit d'exporter des pipelines hybrides à partir de frameworks tels que Spark ML, et cela nécessite un peu de code personnalisé. Cependant, ONNX est un projet actif qui se développe rapidement et qui bénéficie d'un solide soutien de la part de grandes organisations. Il offre une véritable portabilité à travers différentes dimensions de langages, de frameworks, d'environnements d'exécution et de versions, ce qui résout un problème important pour le déploiement de pipelines d'apprentissage en profondeur de manière ouverte et portable. ONNX est une source ouverte et une gouvernance ouverte, donc tout le monde peut s'impliquer.
 

ONNX et ONNX Runtime avec Vinitra Swamy et Pranav Sharma de Microsoft



ONNX et ONNX Runtime avec Vinitra Swamy et Pranav Sharma de Microsoft

La vidéo traite du format Open Neural Network Exchange (ONNX), créé pour rendre les modèles interopérables et efficaces dans la sérialisation et la gestion des versions. ONNX se compose d'une couche de représentation intermédiaire, de spécifications d'opérateur et prend en charge différents types de données. Le runtime ONNX, implémenté en C++ et en assembleur, offre une rétrocompatibilité et est extensible via des fournisseurs d'exécution, des opérateurs personnalisés et des optimiseurs de graphes. L'API prend en charge les plates-formes, les langages de programmation et les fournisseurs d'exécution. Les utilisateurs peuvent créer des sessions, optimiser des modèles et les sérialiser pour une utilisation future. Les haut-parleurs fournissent une démonstration de la polyvalence et de l'efficacité d'ONNX Runtime, avec la possibilité de fonctionner sur des appareils Android.

  • 00:00:00 Dans cette section, Venetra de l'équipe d'ingénierie ONNX présente ONNX, l'Open Neural Network Exchange, qui est une norme interopérable pour les modèles d'IA. Elle explique que Microsoft a intégré l'apprentissage automatique dans presque tous les aspects de sa suite de produits, de HoloLens à Xbox en passant par Skype, ce qui a entraîné divers défis de déploiement à grande échelle. ONNX a été créé pour optimiser l'inférence efficace en normalisant le processus de déploiement du modèle pour différents cadres et cibles de déploiement. L'objectif est de prendre en charge les modèles de nombreux frameworks en implémentant une norme et de fournir une expérience cohérente à tous les utilisateurs, qu'ils soient scientifiques des données, prêteurs de matériel, auteurs de services ou ingénieurs ML.

  • 00:05:00 Dans cette section, Vinitra Swamy et Pranav Sharma discutent d'ONNX, un consortium de partenaires fondateurs qui comprend Microsoft, Facebook, Amazon, NVIDIA et Intel, entre autres. ONNX se compose d'une couche de représentation intermédiaire et d'une spécification d'opérateur complète qui définissent les opérateurs de manière standard malgré les différents ensembles d'opérateurs de chaque framework. Le code pour convertir les modèles en ONNX n'est pas long et la conversion pourrait faire économiser beaucoup aux utilisateurs en termes d'inférence et d'interopérabilité. De plus, ONNX a des principes de conception qui permettent l'interopérabilité des modèles d'apprentissage en profondeur et d'apprentissage automatique. Les utilisateurs peuvent démarrer avec ONNX en accédant au zoo de modèles ONNX, aux services de création de modèles ou aux convertisseurs.

  • 00:10:00 La section traite des composants et de la conception d'ONNX, un format de modèle créé pour le rendre interopérable et rétrocompatible tout en prenant en charge une sérialisation et une gestion des versions efficaces. Le format se compose d'un modèle, d'un graphe de calcul avec des nœuds et d'une spécification d'opérateur. Les types de données pris en charge incluent les types de tenseur standard et deux types de non-tenseur, les séquences et les cartes. Les spécifications de l'opérateur comportent des entrées, des sorties, des contraintes et des exemples. Un exemple de spécification d'opérateur est donné pour l'opérateur relu.

  • 00:15:00 Dans cette section de la vidéo, Vinitra Swamy et Pranav Sharma discutent des différentes versions et opérateurs pris en charge dans le format Open Neural Network Exchange (ONNX). Ils expliquent qu'ONNX compte plus de 156 opérations de spécification d'apprentissage en profondeur et 18 opérations d'apprentissage automatique traditionnelles qui sont interopérables entre les différents opérateurs. De plus, les utilisateurs peuvent créer des opérations personnalisées pour leurs modèles à l'aide du framework ONNX. Ils soulignent également l'importance de la gestion des versions, qui s'effectue à trois niveaux différents : couche de représentation intermédiaire, décalages et opérateurs individuels. Enfin, ils discutent d'ONNX Runtime, qui est un moteur d'inférence open source et hautes performances pour ONNX. Il est multiplateforme et conçu pour être rétrocompatible, ce qui le rend adapté au déploiement dans des environnements de production.

  • 00:20:00 Dans cette section, l'accent est mis sur l'architecture d'ONNX Runtime et sur la manière dont un modèle y est exécuté. La rétrocompatibilité et les performances étaient des préoccupations majeures pour ONNX Runtime, qui est implémenté en C++ et certaines parties en assembleur. ONNX Runtime prend en charge les accélérateurs matériels en utilisant quelque chose appelé "fournisseurs d'exécution". L'algorithme de partitionnement permet au modèle de s'exécuter dans une phase d'exécution hybride, et les fournisseurs d'exécution individuels peuvent encore optimiser les sous-graphes pour de meilleures performances. Enfin, ONNX Runtime agit comme un interpréteur parcourant tous les nœuds du graphe pour exécuter le modèle.

  • 00:25:00 Dans cette section, les conférenciers discutent des modes d'exécution dans ONNX et ONNX Runtime, qui sont séquentiels et parallèles. Les utilisateurs peuvent contrôler le nombre de threads qu'ils souhaitent configurer pour chaque mode d'exécution, et les résultats sont envoyés via l'API. Les intervenants notent que différents appareils peuvent ne pas partager la même mémoire, de sorte que des nœuds de copie de mémoire sont insérés en fonction des optimisations effectuées. Ils parlent également du processus de partitionnement du graphe, où les utilisateurs doivent spécifier une liste prioritaire de fournisseurs d'exécution où le graphe doit être exécuté. Cependant, dans la prochaine version, il y aura une nouvelle phase appelée partitionnement intelligent, où ONNX trouvera la meilleure façon de placer le graphique et comment l'exécuter efficacement. Les conférenciers abordent également les fournisseurs d'exécution, qui sont des abstractions logicielles au-dessus des accélérateurs matériels. Deux types de fournisseurs d'exécution sont basés sur le noyau et basés sur l'exécution, et ce dernier est une boîte noire où le fournisseur d'exécution exécute des parties du graphique pour nous.

  • 00:30:00 Dans cette section, les conférenciers discutent des principes de conception d'ONNX Runtime, en mettant l'accent sur son extensibilité grâce à des options telles que les fournisseurs d'exécution, les opérateurs personnalisés et les optimiseurs de graphes. Ils fournissent également une matrice de plates-formes, de langages de programmation et de fournisseurs d'exécution pris en charge, notamment Tensor RT, Direct ML et OpenVINO. Les conférenciers expliquent les constructions de haut niveau d'une session et la manière thread-safe de créer l'objet de session avant d'appeler la fonction run. Ils discutent également de la façon dont le temps nécessaire pour optimiser un modèle dépend de la taille du modèle et de ses possibilités d'optimisation.

  • 00:35:00 Dans cette section, les intervenants discutent de la création de sessions et de l'utilisation des options d'exécution et des options de session, avec la possibilité de sérialiser le modèle optimisé pour une utilisation future. Ils expliquent également le processus d'enregistrement des opérateurs personnalisés, avec la possibilité d'utiliser Python pour ceux qui préfèrent ne pas utiliser C#. La version ONNX Runtime 1.0 a été publiée, garantissant l'absence de rupture des API à l'avenir, avec
    compatibilité remontant à CentOS 7.6. L'outil ONNX Go Live, un outil open source pour convertir et régler les modèles pour des performances optimales, est également abordé. La section se termine par des exemples de services Microsoft utilisant ONNX, y compris un gain de performances 14x dans le modèle de déterminant manquant d'Office et un gain de performances 3x dans le modèle de reconnaissance optique de caractères utilisé dans les services cognitifs.

  • 00:40:00 Dans cette section, les conférenciers discutent de l'API d'exécution ONNX, qui est en mode aperçu et permet d'exécuter l'exécution ONNX sur les appareils Android. Ils mentionnent également le support de formation, qui est actuellement exploratoire et vise à voir si le runtime ONNX peut être utilisé pour régler des modèles déjà créés. Les conférenciers font ensuite une démonstration de l'utilisation du runtime ONNX sur un modèle de détection d'objets YOLOv3, montrant que le runtime ONNX est polyvalent, efficace et utile pour les cas qui nécessitent de bonnes performances ou doivent prendre en charge un modèle sur différents frameworks.

  • 00:45:00 Dans cette section de la vidéo, les présentateurs démontrent le runtime ONNX en identifiant les images et leurs classes respectives avec un modèle grand et compliqué. Ils présentent également une démo rapide sur Onnx Ecosystem Converter, permettant aux utilisateurs de télécharger et de convertir des modèles à partir de différents frameworks dans Jupyter Notebook. Ils convertissent un modèle de classification de documents de CoreML, le framework d'apprentissage automatique d'Apple, en ONNX, et valident son exactitude. Ils notent qu'il s'agit d'un coût unique pour convertir un modèle en ONNX, et c'est un processus efficace.

  • 00:50:00 Dans cette section, les conférenciers résument ce qu'ils ont couvert dans la vidéo, y compris les avantages de l'utilisation d'ONNX et d'ONNX Runtime, les différentes façons de convertir différents frameworks en ONNX et l'adoption croissante d'ONNX dans leurs 26 entreprises. Ils remercient leur public pour leur écoute et expriment leur enthousiasme à l'idée de poursuivre la session de questions-réponses.
 

Jan-Benedikt Jagusch Christian Bourjau : Rendre les applications d'apprentissage automatique rapides et simples avec ONNX



Jan-Benedikt Jagusch Christian Bourjau : Rendre les applications d'apprentissage automatique rapides et simples avec ONNX

Dans cette vidéo sur l'apprentissage automatique et le déploiement, les conférenciers discutent des défis de la mise en production de modèles, en particulier de la difficulté de décaper et de déployer des modèles. Ils présentent ONNX, un format de fichier universel pour l'exportation de modèles d'apprentissage automatique, et expliquent comment il peut aider à découpler la formation et l'inférence, ce qui rend le déploiement plus rapide et plus efficace. Ils fournissent une démonstration en direct à l'aide de scikit-learn, expliquant comment convertir un pipeline d'apprentissage automatique au format ONNX. Ils discutent également des limites des conteneurs Docker pour le déploiement de modèles d'apprentissage automatique et soulignent les avantages d'utiliser ONNX à la place. Ils abordent le sujet des modèles de chiffrement pour une sécurité supplémentaire et abordent le problème de convivialité d'ONNX, qui est encore un jeune écosystème avec des messages d'erreur cryptiques.

  • 00:00:00 Dans cette section de la vidéo, les présentateurs discutent de l'importance de dissocier la formation de modèles de l'inférence à l'aide d'ONNX. Les présentateurs notent que 55 % des entreprises qui ont commencé avec l'apprentissage automatique n'ont pas réussi à mettre leurs modèles en production et soutiennent que l'automatisation des processus métier en mettant les modèles en production est là où réside la majorité de la valeur. Cependant, ils notent également que le déploiement de modèles est plus compliqué qu'il n'y paraît au départ, c'est pourquoi ils discuteront de la manière dont ONNX peut aider à surmonter ce défi. Ils expliquent également comment un projet d'apprentissage automatique démarre, se développe, puis se heurte aux exigences de déploiement.

  • 00:05:00 Dans cette section, les conférenciers discutent des défis de la mise en production de modèles d'apprentissage automatique, en se concentrant spécifiquement sur les difficultés de décapage et de déploiement du modèle. Ils explorent les problèmes qui surviennent lors de l'utilisation d'un package inachevé, tel qu'un pickle, pour transférer le modèle, et comment les environnements et les dépendances appropriés doivent être installés pour charger avec succès le modèle en production. Ils traitent également le problème des modèles trop lents pour être utilisés en production, ce qui entraîne des modifications et des optimisations du modèle. Enfin, ils discutent de la nécessité d'un format de fichier universel pour exporter le modèle, ce qui facilite l'utilisation de n'importe quel environnement d'exécution pour le déploiement.

  • 00:10:00 Dans cette section, les intervenants discutent du concept de découplage de la formation du temps de prédiction en utilisant des outils de formation pour exporter un modèle d'apprentissage automatique vers un format de fichier universel, tel que ONNX , afin de libérer les outils utilisés pour le déploiement . Ils expliquent qu'ONNX est "la manière standardisée de décrire l'ensemble de votre modèle, y compris votre ingénierie de fonctionnalités et de le stocker dans un format binaire". Ils notent également qu'ONNX est une bonne option pour ceux qui ont différents types de modèles d'apprentissage automatique, pas seulement des réseaux de neurones. Cependant, ils soulignent que pour utiliser ONNX, un modèle d'apprentissage automatique doit être décrit comme un graphe de calcul avec des nœuds qui sont des opérateurs et des arêtes qui sont des données circulant à travers le graphe, et qu'ONNX est fortement typé avec des informations de type et une forme.

  • 00:15:00 Dans cette section, les intervenants abordent les spécificités d'ONNX , qui définit un ensemble d'opérateurs qu'il faut utiliser pour assurer la compatibilité avec le format. Au moment de cet exposé, il y avait 175 opérateurs, y compris des opérateurs plus compliqués comme les régresseurs linéaires et les véritables régresseurs d'ensemble. ONNX spécifie également les données nécessaires pour stocker chaque opérateur, ce qui rend l'ensemble du fichier autonome sans aucune autre dépendance nécessaire. Les conférenciers soulignent que tout ce qui est représentable dans un graphe acyclique orienté peut être converti en ONNX , pas seulement des modèles d'apprentissage automatique. De plus, le pipeline entier peut être converti en ONNX , tant que chaque étape peut être représentée comme son propre graphe acyclique dirigé.

  • 00:20:00 Dans cette section, les conférenciers montrent comment créer un imputer et un régresseur simples à l'aide d'opérations numpy, qui peuvent facilement être définies comme un graphique d'opérateurs onyx. En remplaçant chaque nœud du graphe scikit-learn par un graphe lui-même, scikit-learn peut être converti au format onix. Alors que les frameworks d'apprentissage automatique établis tels que PyTorch, TensorFlow, Light GBM et XGBoost disposent déjà de convertisseurs, des convertisseurs personnalisés doivent être écrits pour des estimateurs et des transformateurs personnalisés. Cependant, la courbe d'apprentissage est raide mais faisable, et il est crucial que le code personnalisé s'intègre dans un deck. Les conférenciers proposent également une démonstration en direct utilisant des données de formation et un pipeline de scikit-learn, qui est ensuite converti au format onix.

  • 00:25:00 Dans cette section, Jan-Benedikt Jagusch et Christian Bourjau expliquent qu'ONNX est fortement typé et nécessite des informations initiales à partir des données fournies. Pour simplifier ce processus, ils convertissent facilement les types à partir d'une trame de données pandas en mappant les types de données pandas aux types de données ONNX. Le modèle ONNX est alors entièrement autonome, extrait de la logique de prédiction du pipeline. L'équipe d'ingénierie des données n'a qu'à le vider dans un fichier et à utiliser le runtime ONNX pour analyser les données, qui est la seule dépendance quel que soit le modèle de données sérialisé à partir de TensorFlow, Python ou ailleurs. Le runtime ONNX fournit des liaisons Python qui améliorent la vitesse de prédiction jusqu'à un facteur de dix. La vitesse de prédiction sur une seule ligne est également une priorité car elle est essentielle dans les environnements en ligne, ne prenant que 170 millisecondes, ce qui est similaire à Scikit-learn.

  • 00:30:00 Dans cette section, les conférenciers discutent des avantages de l'utilisation d'onyx pour dissocier l'environnement de formation de l'environnement de déploiement. Ils expliquent qu'en exportant des modèles au format de fichier universel d'ONNX , les utilisateurs peuvent interpréter leurs modèles à l'aide d'un environnement d'exécution qui fournit les caractéristiques de performances nécessaires pour un déploiement dans le monde réel. Les intervenants abordent également une question sur l'utilisation des conteneurs Docker, soulignant les limites en termes d'évolutivité et de flexibilité. Ils recommandent de se tourner vers onyx pour sa capacité à fournir à la fois performances et flexibilité, avec la possibilité d'archiver des modèles en plus d'améliorer le déploiement.

  • 00:35:00 Dans cette section, les conférenciers discutent des limites de l'utilisation de Docker pour déployer des modèles d'apprentissage automatique et soulignent les avantages de la sérialisation des modèles vers ONNX à la place. Alors que Docker peut fonctionner pour fournir une API REST et dans certains cas, l'artefact produit comprend de nombreuses couches, ce qui rend difficile le chargement de la formulation mathématique du modèle. D'autre part, la sérialisation du modèle vers ONNX fournit une essence pure du modèle qui est lisible par l'homme et facile à charger. Les conférenciers avertissent que si ONNX présente de nombreux avantages, ce n'est pas une solution parfaite pour tous les cas d'utilisation et nécessite des frais généraux pour convertir les estimateurs et les transformateurs personnalisés. De plus, l'écosystème est encore relativement nouveau et les utilisateurs peuvent avoir besoin de passer du temps à résoudre des problèmes ou à lire les problèmes de GitHub. Enfin, les intervenants évoquent brièvement la possibilité de déployer des modèles ONNX sur GPU, ce qui est techniquement possible avec le runtime ONNX par défaut.

  • 00:40:00 Dans cette section, les conférenciers discutent de la possibilité de crypter les modèles ONNX pour se protéger contre une utilisation involontaire ou une ingénierie inverse. Ils mentionnent que s'il est possible de lire les coefficients du modèle, s'il est complexe, cela devient difficile car ONNX ne conserve pas les informations de l'opérateur et du pipeline. ONNX fournit une sécurité par obfuscation dans une certaine mesure, mais elle n'est pas cryptée. Cependant, ils mentionnent qu'il est possible de compiler le fichier en code machine pour l'obscurcissement et plus de sécurité. Les conférenciers abordent également le problème de placer les étapes de prétraitement qui ont des E/S contre la base de données, ce qui nécessiterait que toutes les données soient dans la base de données pour l'instanciateur à l'intérieur du graphe ONNX. Enfin, ils discutent du problème de convivialité d'Onyx, car les messages d'erreur peuvent être cryptiques, mais ils sont optimistes quant à l'amélioration de l'écosystème, compte tenu de son jeune âge et du soutien de l'entreprise.
 

ONNX Runtime Azure EP pour l'inférence hybride sur Edge et Cloud



ONNX Runtime Azure EP pour l'inférence hybride sur Edge et Cloud

L'équipe ONNX Runtime a publié sa première étape dans le monde hybride permettant aux développeurs d'utiliser une seule API pour l'informatique en périphérie et dans le cloud avec Azure EP, ce qui élimine les problèmes de connectivité des appareils et permet aux développeurs de passer au modèle cloud qu'ils ont optimisé. , en réduisant les coûts et en réduisant la latence. Cette nouvelle fonctionnalité permet aux développeurs de mettre à jour la logique de l'application et de choisir le chemin à emprunter via Azure EP, offrant ainsi plus de capacités et de puissance. L'équipe démontre le déploiement de serveurs enfants et de modèles de détection d'objets, ainsi que la façon de tester le point de terminaison et de configurer simplement Onnx Runtime Azure. Les présentateurs discutent également de la possibilité de basculer entre le traitement local et à distance et les cas d'utilisation potentiels, y compris les modèles les moins performants par rapport aux modèles les plus performants. ONNX Runtime Azure EP peut être préchargé et configuré facilement avec les packages nécessaires au déploiement, contribuant ainsi à la facilité d'utilisation du logiciel.

  • 00:00:00 Dans cette section, Azure EP est présenté comme la première étape de l'équipe d'exécution ONNX dans le monde hybride permettant aux développeurs d'utiliser une seule API pour l'informatique en périphérie et dans le cloud. Ce faisant, les développeurs n'auront pas à se soucier de la connectivité des appareils et pourront passer au modèle cloud qu'ils ont optimisé et qu'ils utilisent, ce qui réduira les coûts et la latence. Cette nouvelle fonctionnalité permet aux développeurs de mettre à jour la logique de l'application et de choisir le chemin à emprunter via Azure EP, ce qui leur donne plus de capacité et de puissance. Dans l'ensemble, l'équipe d'exécution ONNX est ravie de voir ce qui vient de la communauté des développeurs et comment cette nouvelle fonctionnalité est implémentée.

  • 00:05:00 Dans cette section, Randy Schrey, contributeur à la nouvelle version 1.14 d'ONNX Runtime (ORT), présente certaines des fonctionnalités intéressantes fournies avec la version. Tout d'abord, il montre un point de terminaison appelé Azure Machine Learning, qui sert de côté serveur pour les modèles. Il discute également du serveur Triton utilisé pour fournir des points de terminaison, divisé par Nvidia, ainsi que de ses performances et de sa stabilité impressionnantes. Schrey montre comment déployer un serveur pour enfants et donne un aperçu de son apparence, notamment en spécifiant le nom, la version et l'emplacement du modèle. Il met également en évidence la structure des dossiers qui doit être suivie lors du déploiement d'un serveur Triton et montre le fichier de configuration qui décrit comment le modèle obtient l'entrée et la sortie.

  • 00:10:00 Dans cette section, l'intervenant discute de la structure de son dossier pour déployer des modèles de détection d'objets et explique comment le serveur Triton peut trouver le modèle à déployer. Ils répondent également à une question sur la consommation de modèles servis sur Azure et mentionnent les limitations actuelles de Trtis sur Azure, indiquant qu'il ne prend en charge que le serveur Triton côté serveur. L'orateur discute ensuite du test du point de terminaison, du processus d'installation simple d'Onnx Runtime Azure et de la façon dont ils peuvent utiliser Onnx Runtime Azure pour l'inférence hybride sur Edge et Cloud pour travailler avec le point de terminaison en ligne du côté client. Le conférencier fournit un script et explique certaines des configurations requises pour charger et consommer un modèle à l'aide d'Onnx Runtime Azure.

  • 00:15:00 Dans cette section, les présentateurs montrent comment utiliser ONNX Runtime Azure EP pour l'inférence hybride sur la périphérie et le cloud. Ils montrent comment configurer la clé d'authentification et exécuter l'inférence, avec la possibilité de basculer entre le traitement local et distant en modifiant un seul paramètre dans le code. Ils discutent des cas d'utilisation potentiels, tels que le choix entre des modèles moins performants et plus performants, et notent que si la version de prévisualisation actuelle nécessite le serveur d'inférence Triton, le plan est de prendre en charge tous les types de serveurs de déploiement à l'avenir.

  • 00:20:00 Dans cette section, il est expliqué que ONNX Runtime Azure EP peut être préchargé et facilement configuré avec les packages nécessaires au déploiement. Cette fonctionnalité contribue à la facilité de déploiement et d'utilisation du logiciel.
 

Inférence INT8 de modèles entraînés compatibles avec la quantification à l'aide d'ONNX-TensorRT




Inférence INT8 de modèles entraînés compatibles avec la quantification à l'aide d'ONNX-TensorRT

Dheeraj Peri, ingénieur logiciel d'apprentissage en profondeur chez NVIDIA, explique les bases de la quantification et comment TensorRT prend en charge les réseaux quantifiés via diverses fusions. Ils se concentrent sur les modèles formés à l'aide du framework TensorFlow 2.0 et sur la manière d'effectuer la quantification post-formation (PTQ) et la formation sensible à la quantification (QAT). Le processus de déploiement d'un modèle formé à l'aide de la boîte à outils de quantification Nvidia TF2 avec ONNX-TensorRT est expliqué, et les résultats de précision et de latence sont présentés pour divers modèles ResNet. Dans l'ensemble, le flux de travail QAT de bout en bout, du déploiement de TensorFlow au déploiement de TensorRT via ONNX-TensorRT, est démontré.

  • 00:00:00 Dans cette section, Dheeraj, ingénieur logiciel d'apprentissage en profondeur chez NVIDIA, discute des bases de la quantification et de la manière dont TensorRT prend en charge les réseaux quantifiés via diverses fusions. Il explique que la quantification est le processus de conversion de valeurs continues en un ensemble discret de valeurs à l'aide de techniques de mise à l'échelle linéaire ou non linéaire. Ils se concentrent sur les modèles formés à l'aide du cadre TensorFlow 2.0 et sur la manière d'effectuer une quantification post-formation (PTQ) et une formation sensible à la quantification (QAT). Dhiraj met également en évidence les différences entre la boîte à outils de quantification de NVIDIA et la boîte à outils de mod TF, où les nœuds sont placés différemment dans les couches de convolution.

  • 00:05:00 Dans cette section, le processus de déploiement d'un modèle formé à l'aide de la boîte à outils de quantification Nvidia TF2 avec ONNX-TensorRT est expliqué. Le processus consiste à quantifier le modèle TensorFlow 2.0 pré-formé avec la boîte à outils Nvidia, à l'affiner pour un petit nombre d'époques afin de simuler le processus de quantification, puis à convertir le modèle au format ONNX. Le graphe ONNX est ensuite utilisé pour générer le moteur TensorRT à l'aide de l'API TensorRT. Les résultats de précision et de latence pour divers modèles ResNet sont présentés et il est observé que les modèles formés à la quantification (QAT) montrent une meilleure précision que les modèles de quantification post-formation (PTQ) lors de l'inférence. Les modèles QAT montrent une latence similaire par rapport aux modèles PTQ mais cela dépend du placement des nœuds QDQ et de leurs fusions. Dans l'ensemble, le flux de travail QAT de bout en bout, du déploiement de TensorFlow au déploiement de TensorRT via ONNX-TensorRT, est démontré.