Difference between revisions of "MXNet"

From air
Jump to navigation Jump to search
Line 49: Line 49:
 
== Architecture ==
 
== Architecture ==
   
[[File:MXNETArchitecture.png]]
+
[[File:MXNETArchitecture.png|https://mxnet.apache.org/api/architecture/overview]]
   
 
''Runtime Dependency Engine'' : Planifie et exécute les opérations en fonction de leur dépendance en lecture/écriture.
 
''Runtime Dependency Engine'' : Planifie et exécute les opérations en fonction de leur dépendance en lecture/écriture.
Line 69: Line 69:
   
 
''Data Loading(IO)'' : Chargement et augmentation efficaces des données distribuées.
 
''Data Loading(IO)'' : Chargement et augmentation efficaces des données distribuées.
  +
  +
== Sources ==
  +
  +
[https://mxnet.apache.org/]
  +
[https://mxnet.apache.org/api/python/docs/tutorials/packages/gluon/index.html]

Revision as of 16:37, 13 January 2020

Logo de 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.

Caractéristiques

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 sur ce lien :

Architecture

https://mxnet.apache.org/api/architecture/overview

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.

Sources

[1] [2]