Il y a peu, Google a mis à disposition des développeurs TensorFlow, sa solution d’apprentissage profond, une technique d’apprentissage automatique qui exploite principalement des réseaux neuronaux de très grande taille : l’idée est de laisser l’ordinateur trouver lui-même, dans sa phase d’apprentissage, des abstractions de haut niveau par rapport aux données disponibles. Par exemple, pour reconnaître des chiffres dans des images, ces techniques détermineront une manière d’analyser l’image, d’en récupérer les éléments intéressants, en plus de la manière de traiter ces caractéristiques et d’en inférer le chiffre qui correspond à l’image.
Microsoft vient tout juste d’annoncer sa solution concurrente, nommée CNTK (computational network toolkit), elle aussi disponible gratuitement sous une licence libre de type MIT sur GitHub. Cette annonce poursuit la série d’ouvertures de code annoncées par Microsoft dernièrement, comme ChakraCore, son moteur JavaScript.
Ces développements ont eu lieu dans le cadre de la recherche sur la reconnaissance vocale : les équipes de Microsoft estimaient que les solutions actuelles avaient tendance à les ralentir dans leurs avancées. Quelques chercheurs se sont lancés dans l’aventure d’écrire eux-mêmes un code de réseaux neuronaux très efficace, accéléré par GPU… et leurs efforts ont porté leurs fruits, puisque, selon leurs tests, CNTK est plus efficace que Theano, TensorFlow, Torch7 ou Caffe, les solutions les plus avancées dans le domaine du logiciel libre.
Microsoft n’est pas la seule société à beaucoup parier sur les GPU : NVIDIA également croit fort aux GPU pour accélérer l’apprentissage profond. Pour la sortie de la dernière version de CUDA, la solution de NVIDIA pour le calcul sur GPU, leur bibliothèque cuDNN proposait un gain d’un facteur deux pour l’apprentissage d’un réseau.
L’avantage des GPU dans le domaine est multiple. Tout d’abord, leur architecture s’adapte bien au type de calculs à effectuer. Ensuite, ils proposent une grande puissance de calcul pour un prix raisonnable : pour obtenir la même rapidité avec des processeurs traditionnels (CPU), il faudrait débourser des milliers d’euros, par rapport à une carte graphique à plusieurs centaines d’euros à ajouter dans une machine existante. Ainsi, les moyens à investir pour commencer à utiliser les techniques d’apprentissage profonds sont relativement limités. Cependant, la mise à l’échelle est plus difficile : l’apprentissage sur plusieurs GPU en parallèle est relativement difficile, toutes les bibliothèques ne le permettent pas. Pour réaliser de véritables progrès algorithmiques, il faut sortir le carnet de chèques, avec des grappes de machines, nettement moins abordables.
Source : Microsoft releases CNTK, its open source deep learning toolkit, on GitHub.