D'après les informations recueillies, la nouvelle bibliothèque Gluon fonctionne actuellement avec Apache MXNet 0.11 et fournit une API qui offre une interface flexible simplifiant le processus de prototypage, de construction de formation et de déploiement des modèles d'apprentissage en profondeur, cela sans incidence sur les performances. « Grâce à l'interface Gluon, les développeurs ont maintenant la possibilité de créer des modèles d'apprentissage automatique à l'aide d'une simple API Python et d'une large gamme de composants de réseaux de neurones optimisés. Cela devient donc maintenant plus aisé pour les développeurs de créer des réseaux de neurones en utilisant un code simple et concis. », peut-on lire dans l'annonce. Il est également rappelé que les développeurs utilisent trois composants pour créer des réseaux de neurones : il s'agit des données de tests, d'un modèle et d'un algorithme. « L'algorithme permet au modèle de comprendre les données de tests contenues dans le modèle. Comme le volume de données est important et que les modèles et les algorithmes sont complexes, la formation d'un modèle prend souvent des jours, voire des semaines. », lit-on également dans l'annonce.
AWS et Microsoft soutiennent également que dans une prochaine version, l'interface de Gluon, en plus de fonctionner avec Apache MXNet, supportera également Microsoft Cognitive Toolkit qui est initialement connu sous le nom de Computational Network Toolkit (CNTK). Rappelons que Microsoft Cognitive Toolkit est une solution open source qui permet de créer des solutions de machine learning soit en C++, soit en BrainScript, soit en Python.
Selon AWS et Microsoft, les avantages qui sont fournis par la nouvelle bibliothèque, en l'occurrence Gluon, se présentent comme suit :
- code simple et facile à comprendre : Gluon offre un ensemble complet de blocs de construction de réseaux neuronaux plug-and-play, y compris des couches prédéfinies, des optimiseurs et des initialiseurs.
Code python : Sélectionner tout 1
2
3
4
5
6
7
8net = gluon.nn.Sequential () # Lorsqu'elle est instanciée, Sequential stocke une chaîne de couches réseau neuronales. # Après avoir présenté les données, Sequential exécute chaque couche à son tour, en utilisant # la sortie d'une couche comme entrée pour la suivante avec net.name_scope () : net.add ( gluon.nn.Dense ( 256 , activation = "relu" )) # 1re couche (256 noeuds) net.add ( gluon.nn.Dense ( 256 , activation = "Relu" )) # 2 couche cachée net.add (gluon.nn.Dense ( num_outputs ))
- structure souple et flexible : Gluon ne nécessite pas de définition rigide du modèle de réseau neuronal, mais rapproche l'algorithme et le modèle d'apprentissage pour offrir une flexibilité dans le processus de développement. Les développeurs vont pouvoir prototyper, construire et tester les réseaux neuronaux en utilisant le paquet autograd MXNet et la méthode Gluon formateur :
Code python : Sélectionner tout 1
2
3
4
5
6
7
8
9epochs = 10 for e in range(epochs): for i, (data, label) in enumerate(train_data): with autograd.record(): output = net(data) # the forward iteration loss = softmax_cross_entropy(output, label) loss.backward() trainer.step(data.shape[0])
- graphiques dynamiques : Gluon permet aux développeurs de définir des modèles de réseaux neuronaux dynamiques, ce qui signifie qu'ils peuvent être construits à la volée, avec n'importe quelle structure et en utilisant n'importe quel flux de contrôle natif de Python. En d'autres termes, cela signifie que les développeurs peuvent utiliser l'interface Gluon pour créer des réseaux de neurones à la volée tout en ayant la possibilité de modifier leur taille et leur forme de manière dynamique.
Code python : Sélectionner tout 1
2
3
4
5
6def forward(self, F, inputs, tree): children_outputs = [self.forward(F, inputs, child) for child in tree.children] #Recursively builds the neural network based on each input sentences #syntactic structure during the model definition and training process
- haute performance : Gluon offre tous les avantages ci-dessus et cela sans affecter les performances du moteur sous-jacent. AWS et Microsoft soutiennent qu'il faut mettre en cache le réseau de neurones afin d'atteindre de hautes performances ; et pour ce faire, il convient de définir le réseau neuronal avec HybridSequential et d'appeler la méthode hybridize:
Code : Sélectionner tout 1
2
3
4
5net = nn.HybridSequential() with net.name_scope(): net.add(nn.Dense(256, activation="relu")) net.add(nn.Dense(128, activation="relu")) net.add(nn.Dense(2))
Code : Sélectionner tout net.hybridize ()
Source : GitHub Gluon - MXNET - Businesswire
Et vous ?
Que pensez-vous de la nouvelle bibliothèque Gluon ?
Allez-vous la tester ?