Apache MXNet est un framework d'apprentissage profond rationalisé, flexible et ultra évolutif qui prend en charge les modèles d'apprentissage profond les plus modernes, notamment les réseaux de neurones convolutifs (CNN, Convolutional Neural Network) et les réseaux de neurones récurrents à large mémoire court-terme (LSTM, Long Short-Term Memory). Le framework trouve son origine dans les milieux universitaires. Il est le fruit de la collaboration et des contributions de chercheurs de grandes universités. Il a été conçu pour exceller en matière de vision par ordinateur, reconnaissance vocale, traitement et compréhension des langages, modèles génératifs, ainsi que réseaux de neurones récurrents et simultanés.
Avec MXNet, définissez, formez et déployez des réseaux dans des cas d'utilisation divers et variés allant des infrastructures cloud de grande envergure aux appareils mobiles et connectés. Vous bénéficiez d'un environnement extrêmement flexible prenant en charge la plupart des langages courants et permettant d'utiliser aussi bien des structures de programmation impératives que symboliques. Par ailleurs, MXNet est très léger. Vous pouvez ainsi réaliser efficacement une mise à l'échelle sur plusieurs GPU et plusieurs machines, ce qui est particulièrement utile dans le cas de formations reposant sur d'importants ensembles de données dans le cloud.
Vous pouvez facilement commencer à utiliser Apache MXNet sur AWS en lançant l'AMI AWS d'apprentissage profond, disponible à fois en version Amazon Linux et Ubuntu.
Contribuez au projet Apache MXNet
Impliquez-vous sur GitHubRécupérez des exemples de code, des manuels et des didacticiels sur la page du projet GitHub.
Programmabilité
Simplifie les définitions de réseau et utilise des langages familiers
Portabilité
Utilise efficacement la mémoire afin d'exécuter les modèles sur un vaste ensemble d'appareils et de plateformes
Evolutivité
Réalise une mise à l'échelle sur plusieurs GPU et hôtes afin de former rapidement des modèles étendus et sophistiqués
Avec Apache MXNet, vous pouvez combiner des langages impératifs et symboliques. D'ailleurs, le mot « MXNet » vient de « mixed networks » (réseaux mixtes). Vous pouvez donc utiliser l'optimisation des exécuteurs symboliques ainsi que les fonctionnalités flexibles des langages impératifs (p. ex., boucles d'itération et mises à jour des paramètres) pour gérer les couches réseau. En raison de son caractère mixte, MXNet offre un ensemble unique de fonctionnalités qui facilitent le travail sur les modèles d'apprentissage profond en tenant compte de leur nature complexe et multicouche.
import mxnet as mx
a = mx.nd.zeros((100, 50))
b = mx.nd.ones((100, 50))
c = a + b
c += 1
print(c)
import mxnet as mx
net = mx.symbol.Variable('data')
net = mx.symbol.FullyConnected(data=net, num_hidden=128)
net = mx.symbol.SoftmaxOutput(data=net)
texec = mx.module.Module(net)
texec.forward(data=c)
texec.backward()
De plus, MXNet prend en charge un large éventail de langages de programmation sur la partie front-end du framework, notamment C++, JavaScript, Python, r, Matlab, Julia, Scala et Go. Vous pouvez donc utiliser les langages que vous connaissez déjà et commencer à exécuter votre framework d'apprentissage profond sans plus attendre. Sur la partie back-end, votre code est toujours compilé en C++ afin de garantir des performances homogènes quel que soit le langage choisi en front-end.
Tandis que les applications d'intelligence artificielle (IA) s'immiscent de plus en plus dans notre quotidien, il devient essentiel de pouvoir les déployer sur des appareils divers et variés. C'est notamment le cas lorsque l'IA est déployée sur des appareils mobiles et connectés en périphérie, où l'espace de stockage peut être précieux.
Les modèles Apache MXNet peuvent s'adapter à de très faibles quantités de mémoire. Par exemple, un réseau incluant un millier de couches nécessite moins de 4 Go de stockage. En outre, grâce à sa portabilité, le framework peut être utilisé sur différentes plateformes. La bibliothèque principale (incluant toutes les dépendances) peut être stockée dans un seul fichier source C++ et compilée à la fois pour iOS et Android. D'ailleurs, en utilisant JavaScript, il est même possible de l'exécuter dans un navigateur. Une telle flexibilité vous permet de déployer vos modèles dans de multiples cas d'utilisation et, ainsi, d'élargir au maximum le nombre de vos utilisateurs.
Apache MXNet repose sur un planificateur de dépendances dynamique qui analyse les dépendances de données dans du code série et exécute automatiquement et instantanément les opérations symboliques et impératives en parallèle. De plus, une couche d'optimisation orientée graphe offre une exécution déclarative rapide et efficace en termes de mémoire.
En raison de sa parallélisation automatique, MXNet assure une mise à l'échelle extrêmement efficace. Dans l'exemple suivant, nous avons expérimenté un algorithme d'analyse d'image connu, Inception v3, en utilisant un nombre croissant d'instances P2 EC2 s'appuyant sur des GPU en vue d'établir des données de référence en termes d'efficacité de MXNet.
La ligne rouge représente le gain d'efficacité idéal, où vous doublez la vitesse en doublant le nombre de GPU. Le débit de MXNet croît quasiment dans les mêmes proportions à mesure que le nombre de GPU utilisées augmente. Sur une seule instance de 16 GPU, Apache MXNet parvient à atteindre un taux d'efficacité de 91 %.
Toutefois, si vos réseaux sont plus vastes, vous voudrez peut-être effectuer une mise à l'échelle sur plusieurs clusters d'instances P2. Dans ce cas, avec les mêmes données de référence, nous observons seulement une très faible baisse d'efficacité tandis que le nombre de GPU croît de manière exponentielle.
Mais vous n'avez pas à nous croire sur parole. L'un des avantages du cloud, c'est que vous pouvez tester facilement par vous-même, avec votre propre code. Nous mettons notre modèle de référence à la disposition de tous sur GitHub. Nous vous invitons à y regarder de plus près afin de voir comment il fonctionne et à l'exécuter pour générer vos propres résultats. Vous pouvez également utiliser notre modèle AWS CloudFormation pour rapidement mettre en service les capacités nécessaires.
Vous pouvez facilement commencer à utiliser Apache MXNet : rendez-vous sur AWS Marketplace et lancez l'AMI AWS d'apprentissage profond.
Cette AMI fournit la dernière version stable de MXNet et plusieurs autres frameworks et outils d'apprentissage profond connus, le tout sans frais supplémentaires. Vous payez uniquement la durée d'utilisation d'EC2.

