Le paysage des frameworks permettant de chatouiller le Deep Learning est constamment changeant. Theano était le premier framework à se spécialiser dans le Deep learning il y a quelques années. Theano, qui n’est plus maintenu depuis fin 2017 avait été créé et maintenu par MILA, géré par Yoshua Bengio, un des pionniers du Deep Learning. La nouvelle de l’arrêt du support de Theano n’était pas une réelle surprise, eh oui! Plusieurs frameworks open source (développé en Python), soutenus par les grosses entreprises tech, ont commencé à prendre de très grandes parts de marché.
En ce moment, Tensorflow, de Google semble être le framework plus utilisé pour créer des réseaux de neurones et s’adonner au machine learning. Si on en croit, en tous cas, le nombre d’étoiles de Github et l’activité sur Stack Overflow.
Cependant, Tensorflow n’est pas la seule librairie à attirer une audience et à grandir. Le second framework à avoir la cote est sans aucun doute PyTorch. PyTorch a été créé par Facebook en janvier 2017. La raison de la popularité de PyTorch est l’usage des graphes dynamiques et de l’accélération GPU.
PyTorch dynamic computational graph — source: http://pytorch.org/about/
Les autres géants du web ne sont pas restés les bras croisés pour autant. Microsoft, par exemple, a développé un framework “interne” de deep learning appelé CNTK et a lancé la version 2 en 2017 après l’avoir renommé Microsoft Cognitive Toolkit. En 2017, Facebook a également lancé Caffe2 afin qu’il devienne le successeur du bien connu framework Caffe. Ce framework dans sa version original, développé par le “Berkeley Vision and Learning Center”, était et est toujours extrêmement populaire de part sa communauté, ses nombreuses applications de computer vision. Cependant, Caffe2 n’a pas eu le succès escompté et n’a pas suivi les traces de son prédécesseur.
Un autre framework deep learning populaire est MXNet, supporté par Microsoft et Amazon.
Ce sont juste une petite sélection de frameworks existants. D’autres librairies open source incluent Deeplearning4j (Java) et Dlib (C++). Et aussi, en 2017, Google Deepmind a sorti Sonnet.
Au delà de tous ces frameworks, il existe aussi des interfaces qui sont basées sur un ou plusieurs frameworks. La plus connue et répandue est sans aucun doute Keras. Keras est une API haut niveau (“high level”), écrite en Python et créée par François Chollet, un chercheur Deep Learning de Google. Google a annoncé en 2017 que Keras a été choisi comme étant l’API haut niveau de Tensorflow. Ce qui signifie que Keras sera inclue dans la prochaine version de Tensorflow. Au delà de Tensorflow, Keras reste cependant compatible avec Theano et CNTK en backend.
Keras est puissant et célébre grâce à sa facilité de créer un modèle en ajoutant plusieurs couches. En utilisant Keras, l’utilisateur n’a pas besoin de se préoccuper des mathématiques derrière les couches des réseaux de neurones. Cela est extrêmement pratique pour réaliser des prototypes rapidement et Keras est aussi un outil très populaire pour les compétitions Kaggle.
Pour concurrencer Google avec Keras et Tensorflow, Amazon et Microsoft ont ensemble annoncé l’API Gluon en 2017.
Gluon est également une interface écrite en Python qui s’appuie cette fois-ci sur MXNet et bientôt sera également inclue dans Microsoft CNTK par défaut.
Avec toutes ces librairies dédiées au Deep Learning sur le marché, cela peut être difficile pour des débutants de choisir un framework. Même pour des développeurs confirmés, il faut s’accrocher pour rester à jour sur les nouveautés qui fleurissent régulièrement.
Pour contrecarrer cette diversité, une initiative appelée ONNX pour “Open Neural Network Exchange” a été créée. Annoncée en septembre 2017 avec une V1 sortie en décembre, ONNX fournit un format ouvert pour représenter des modèles deep learning. Cela permet aux utilisateurs de pouvoir plus facilement porter des modèles entres différents frameworks. Par exemple, il vous permettra de construire un modèle en PyTorch et de le faire tourner sur MXNet par exemple.
Open Neural Network Exchange (ONNX) Github page — source: https://github.com/onnx/onnx
ONNX a été lancé par Microsoft, AWS et Facebook (parmi d’autres). (Par contre, Google n’en fait pas parti…)
Conclusion
Beaucoup de projets ambitieux et des développements excitants sont en cours chez tous ces frameworks et les géants du web. C’est difficile de prédire précisément ce que le futur nous réserve. Le deep learning, l’IA (Intelligence Artificielle) sont en pleine explosion et les usages sont de plus en plus impressionnants. Avez-vous vu les capacités de Google Duplex sorti la semaine dernière? Les ordinateurs peuvent désormais téléphoner sans que leurs interlocuteurs devinent qu’ils ne parlent pas à un être humain…. Impressionnant, non.?