MXNet



Apache MXNet est un framework de Deep Learning développé par la Apache Software Foundation. Il permet de développer et d'entraîner des modèles de réseaux de neurones, dont les réseaux neuronaux convolutifs (CNN) ou les réseaux de neurones récurrents (RNN). Ce framework multi-plateforme est particulièrement optimisé pour des déploiements sur des systèmes distribués et est nativement supporté par les environnements clouds comme AWS.

Abstract
Apache MXNet is a deep learning framework maintained by Apache Software Foundation. It allows programmers to model and train various kinds of neural networks, such as Convulutional Neural Networks (CNN) or Recurrent Neural Networks (RNN). This multi-platform framework is especially optimized to be deployed on distributed systems and as such is currently one of the few frameworks natively supported by cloud environments such as AWS.

Scalable
MXNet est conçu pour être distribué sur une infrastructure cloud dynamique, utilisant un serveur de paramètres distribué et peut atteindre une échelle presque linéaire avec plusieurs GPU ou processeurs.

Flexible
MXNet prend en charge la programmation impérative et symbolique, Cela facilite également le suivi, le débogage, la sauvegarde des points de contrôle, la modification des hyperparamètres, tels que le taux d’apprentissage ou les arrêts précoces.

Multiples langages
Prise en charge du C ++ pour un backend optimisé afin de tirer le meilleur parti du processeur graphique ou du processeur disponible, ainsi que Python, R, Scala, Clojure, Julia, Perl, MATLAB et JavaScript pour une interface simple pour les développeurs.

Portable
Prend en charge le déploiement efficace d'un modèle formé sur des périphériques bas de gamme, tels que les périphériques mobiles les périphériques Internet des objets l'informatique sans serveur ou les conteneurs. Ces environnements bas de gamme ne peuvent avoir qu'un processeur plus faible ou une mémoire limitée et devraient pouvoir utiliser les modèles formés dans un environnement de niveau supérieur.

Écosystème
MXNet propose plusieurs librairies et outils supplémentaires qui viennent enrichir ses capacités.

GluonCV
Un toolkit spécialisé dans la Computer Vision, qui contient une interface supplémentaires pour aider dans les problèmes de type CV, des modèles pré-entrainés et des scripts d'entrainements. https://gluon-cv.mxnet.io/

GluonNLP
Des modèles d'entraînements spécifiques au NLP (traitement de langage naturel) https://gluon-nlp.mxnet.io/

GluonTS
Un toolkit pour le Probabilistic Time Series Modeling, offre une API adaptée à des séries temporelles et des modèles répondants aux problèmes à base de séries temporelles probabilistes. https://gluon-ts.mxnet.io/

MXBoard
Une API pour faire le lien entre les modèles de MXNet et un board Tensorboard pour la visualisation des entraînements. https://github.com/awslabs/mxboard

Gluon
Gluon est l'interface de programmation impérative de MXNet pour modéliser les réseaux de neurones. Assez similaire à l'approche utilisée par Pytorch, elle permet de définir des modèles flexibles et faciles à mettre en place. Gluon possède aussi une classe hybride (HybridBlock) qui permet d'allier la facilité du modèle impératif avec les performances de l'approche symbolique.

Vous pouvez trouver un exemple d'utilisation dans cette archive :

Architecture


Runtime Dependency Engine : Planifie et exécute les opérations en fonction de leur dépendance en lecture/écriture. Storage Allocator : Alloue et recycle efficacement les blocs de mémoire sur l'hôte (CPU) et les périphériques (GPU).

Resource Manager : Gère les ressources globales, telles que le générateur de nombres aléatoires et l'espace temporel.

NDArray : Tableaux dynamiques asynchrones à n dimensions, qui fournissent des programmes impératifs flexibles pour le MXNet.

Symbolic Execution : Exécuteur statique de graphes symboliques, qui fournit une exécution et une optimisation efficaces des graphes symboliques.

Operator : Opérateurs qui définissent le calcul statique de l'avance et du gradient (backprop).

SimpleOp : Opérateurs qui étendent les opérateurs NDArray et les opérateurs symboliques de manière unifiée.

Symbol Construction : Construction symbolique, qui fournit un moyen de construire un graphe de calcul (configuration nette).

KVStore : Interface de stockage de valeurs clés pour une synchronisation efficace des paramètres.

Data Loading(IO) : Chargement et augmentation efficaces des données distribuées.