Apache MXNet - Introduction

Ce chapitre met en évidence les fonctionnalités d'Apache MXNet et présente la dernière version de ce framework logiciel d'apprentissage en profondeur.

Qu'est-ce que MXNet?

Apache MXNet est un puissant instrument de cadre logiciel open source d'apprentissage en profondeur qui aide les développeurs à créer, former et déployer des modèles d'apprentissage profond. Ces dernières années, des soins de santé au transport en passant par la fabrication et, en fait, dans tous les aspects de notre vie quotidienne, l'impact de l'apprentissage en profondeur a été généralisé. De nos jours, les entreprises recherchent l'apprentissage en profondeur pour résoudre certains problèmes difficiles tels que la reconnaissance faciale, la détection d'objets, la reconnaissance optique de caractères (OCR), la reconnaissance vocale et la traduction automatique.

C'est la raison pour laquelle Apache MXNet est pris en charge par:

  • Certaines grandes entreprises comme Intel, Baidu, Microsoft, Wolfram Research, etc.

  • Fournisseurs de cloud public, notamment Amazon Web Services (AWS) et Microsoft Azure

  • Quelques grands instituts de recherche comme Carnegie Mellon, MIT, l'Université de Washington et l'Université des sciences et technologies de Hong Kong.

Pourquoi Apache MXNet?

Il existe différentes plates-formes d'apprentissage en profondeur telles que Torch7, Caffe, Theano, TensorFlow, Keras, Microsoft Cognitive Toolkit, etc. alors vous vous demandez peut-être pourquoi Apache MXNet? Voyons quelques-unes des raisons derrière cela:

  • Apache MXNet résout l'un des plus gros problèmes des plates-formes d'apprentissage en profondeur existantes. Le problème est que pour utiliser les plates-formes d'apprentissage en profondeur, il faut apprendre un autre système pour une saveur de programmation différente.

  • Avec l'aide d'Apache, les développeurs MXNet peuvent exploiter toutes les capacités des GPU ainsi que le cloud computing.

  • Apache MXNet peut accélérer tout calcul numérique et met un accent particulier sur l'accélération du développement et du déploiement de DNN (Deep Neural Networks) à grande échelle.

  • Il fournit aux utilisateurs les capacités de programmation impérative et symbolique.

Diverses caractéristiques

Si vous recherchez une bibliothèque flexible d'apprentissage en profondeur pour développer rapidement une recherche de pointe en apprentissage en profondeur ou une plate-forme robuste pour pousser la charge de travail de production, votre recherche se termine sur Apache MXNet. C'est à cause des caractéristiques suivantes:

Formation distribuée

Qu'il s'agisse de formations multi-GPU ou multi-hôtes avec une efficacité de mise à l'échelle quasi linéaire, Apache MXNet permet aux développeurs de tirer le meilleur parti de leur matériel. MXNet prend également en charge l'intégration avec Horovod, qui est un cadre d'apprentissage en profondeur distribué open source créé chez Uber.

Pour cette intégration, voici quelques-unes des API distribuées courantes définies dans Horovod:

  • horovod.broadcast()

  • horovod.allgather()

  • horovod.allgather()

À cet égard, MXNet nous offre les capacités suivantes:

  • Device Placement - Avec l'aide de MXNet, nous pouvons facilement spécifier chaque structure de données (DS).

  • Automatic Differentiation - Apache MXNet automatise la différenciation c'est-à-dire les calculs dérivés.

  • Multi-GPU training - MXNet nous permet d'atteindre une efficacité de mise à l'échelle avec le nombre de GPU disponibles.

  • Optimized Predefined Layers - Nous pouvons coder nos propres couches dans MXNet ainsi que l'optimisation des couches prédéfinies pour la vitesse également.

Hybridation

Apache MXNet fournit à ses utilisateurs un frontal hybride. Avec l'aide de l'API Gluon Python, il peut combler le fossé entre ses capacités impératives et symboliques. Cela peut être fait en appelant sa fonctionnalité d'hybridation.

Calcul plus rapide

Les opérations linéaires telles que des dizaines ou des centaines de multiplications matricielles sont le goulot d'étranglement de calcul pour les réseaux neuronaux profonds. Pour résoudre ce goulot d'étranglement, MXNet fournit -

  • Calcul numérique optimisé pour les GPU

  • Calcul numérique optimisé pour les écosystèmes distribués

  • Automatisation des flux de travail communs à l'aide desquels le NN standard peut être brièvement exprimé.

Liaisons de langues

MXNet a une intégration profonde dans des langages de haut niveau comme Python et R. Il fournit également un support pour d'autres langages de programmation tels que-

  • Scala

  • Julia

  • Clojure

  • Java

  • C/C++

  • Perl

Nous n'avons pas besoin d'apprendre de nouveau langage de programmation au lieu de cela MXNet, combiné à la fonction d'hybridation, permet une transition exceptionnellement fluide de Python au déploiement dans le langage de programmation de notre choix.

Dernière version MXNet 1.6.0

Apache Software Foundation (ASF) a publié la version stable 1.6.0 d'Apache MXNet le 21 février 2020 sous la licence Apache 2.0. Il s'agit de la dernière version de MXNet à prendre en charge Python 2, la communauté MXNet ayant voté pour ne plus prendre en charge Python 2 dans les versions ultérieures. Voyons quelques-unes des nouvelles fonctionnalités que cette version apporte à ses utilisateurs.

Interface compatible NumPy

En raison de sa flexibilité et de sa généralité, NumPy a été largement utilisé par les praticiens, les scientifiques et les étudiants en apprentissage automatique. Mais comme nous le savons, les accélérateurs matériels de nos jours tels que les unités de traitement graphique (GPU) sont de plus en plus assimilés dans diverses boîtes à outils d'apprentissage automatique (ML), les utilisateurs de NumPy, pour tirer parti de la vitesse des GPU, doivent passer à de nouveaux cadres. avec une syntaxe différente.

Avec MXNet 1.6.0, Apache MXNet évolue vers une expérience de programmation compatible NumPy. La nouvelle interface offre une utilisabilité et une expressivité équivalentes aux praticiens familiers avec la syntaxe NumPy. Parallèlement à cela, MXNet 1.6.0 permet également au système Numpy existant d'utiliser des accélérateurs matériels tels que les GPU pour accélérer les calculs à grande échelle.

Intégration avec Apache TVM

Apache TVM, une pile de compilateurs d'apprentissage en profondeur open source de bout en bout pour les backends matériels tels que les processeurs, les GPU et les accélérateurs spécialisés, vise à combler le fossé entre les frameworks d'apprentissage en profondeur axés sur la productivité et les backends matériels orientés performances. . Avec la dernière version MXNet 1.6.0, les utilisateurs peuvent tirer parti d'Apache (incubation) TVM pour implémenter des noyaux d'opérateurs hautes performances dans le langage de programmation Python. Deux avantages principaux de cette nouvelle fonctionnalité sont les suivants:

  • Simplifie l'ancien processus de développement basé sur C ++.

  • Permet de partager la même implémentation sur plusieurs backend matériels tels que CPU, GPU, etc.

Améliorations des fonctionnalités existantes

Outre les fonctionnalités énumérées ci-dessus de MXNet 1.6.0, il fournit également des améliorations par rapport aux fonctionnalités existantes. Les améliorations sont les suivantes -

Regroupement des opérations par élément pour le GPU

Comme nous le savons, les performances des opérations élémentaires dépendent de la bande passante mémoire et c'est la raison pour laquelle le chaînage de telles opérations peut réduire les performances globales. Apache MXNet 1.6.0 effectue une fusion d'opérations élément par élément, qui génère en fait des opérations fusionnées juste à temps autant que possible. Une telle fusion de fonctionnement par élément réduit également les besoins de stockage et améliore les performances globales.

Simplifier les expressions courantes

MXNet 1.6.0 élimine les expressions redondantes et simplifie les expressions courantes. Une telle amélioration améliore également l'utilisation de la mémoire et la durée totale d'exécution.

Optimisations

MXNet 1.6.0 fournit également diverses optimisations des fonctionnalités et opérateurs existants, qui sont les suivantes:

  • Précision mixte automatique

  • API Gluon Fit

  • MKL-DNN

  • Support de grand tenseur

  • TensorRT l'intégration

  • Prise en charge du gradient d'ordre supérieur

  • Operators

  • Profileur de performance de l'opérateur

  • Importation / exportation ONNX

  • Améliorations des API Gluon

  • Améliorations des API de symboles

  • Plus de 100 corrections de bogues