De l'article publié sur Nikkei IT Pro 27/01/2017 Le cadre d'apprentissage en profondeur de PFN "Chainer" prend en charge le traitement distribué pour une vitesse nettement plus rapide
J'utilise Chainer pour un usage personnel (apprentissage et un peu de recherche) depuis un an et demi, et depuis environ un an pour des projets commerciaux.
Je me suis souvent demandé quelle était la différence entre les deux, mais le fait que Chainer était inférieur était qu'il ne prenait pas en charge le traitement distribué sur plusieurs nœuds. Cela dit, il est peu probable que vous soyez exposé à un vaste ensemble de données nécessitant un traitement distribué pour les projets impliquant des pigistes de bas niveau.
(Réimprimé à partir du lien ci-dessus)
L'apprentissage qui prenait 20 jours ou plus avec 1 nœud / 1 GPU a été réduit à 4,4 heures avec 32 nœuds / 128 GPU. Même si «20 jours ou plus» équivaut à 20 jours, il est en fait 109 fois plus rapide.
De plus, le fait que 128 GPU aient atteint 109 fois les performances d'un GPU signifie que ** l'efficacité effective a atteint 85,22% **, atteignant ** une efficacité élevée que l'on peut qualifier d'anormal **.
Je suis un pigiste de fond autoproclamé, mais je suis bon dans le traitement distribué à grande échelle, donc si je parle un peu, même si les données sont ** rares **, il est difficile d'obtenir une efficacité de 85%. De plus, il n'est pas exagéré de dire que l'obtention de cette efficacité avec l'apprentissage automatique, qui est relativement étroitement liée, est un exploit.
En passant, dans les systèmes de traitement distribués, nous utilisons souvent le terme «4 pour 3», ce qui signifie que nous visons à atteindre la performance de 3 pour 4 unités. En d'autres termes, l'efficacité effective est de 75%. Cependant, ce 75% n'est qu'une valeur cible et, en réalité, ce n'est pas si facile à atteindre.
Avec MXNet et CNTK, l'effet effectif est d'environ 40 à 50%, ce qui est à mon avis normal, mais je suis sûr que la version compatible avec le traitement distribué de Chainer utilise une excellente technologie.
Forward sera plus efficace avec DataParallel, mais Backward sera moins efficace car il nécessitera un traitement synchrone avant le calcul de la perte. Après le calcul de la perte, une rétropropagation par Optimizer est effectuée, mais est-ce également exécuté de manière distribuée, ou s'agit-il d'une méthode de traitement et de mise à jour de Weight etc. dans un nœud et de le livrer à chaque nœud ...
De plus, les performances sont plus de 5 fois supérieures à celles de TensorFlow, il devrait donc être adopté dans les projets à grande échelle.
À propos, MPI et InfiniBand sont utilisés comme technologie de connexion entre les nœuds distribués. Comme mentionné dans l'article ITPro, il s'agit entièrement de la technologie Spacon. Quelle belle affaire avec les tampons de protocole et 10GbE ... (rires)
De plus, de l'avis des «gens ordinaires» comme nous, je m'attends fortement à ce que la vitesse soit augmentée même dans un environnement tel qu'un nœud / 4 GPU.
Il est écrit sur la deuxième page qui ne peut être lu que par les membres ITPro
PFN publiera "Chainer 2.0" dans un proche avenir, mais ce n'est pas une version distribuée de Chainer. Et cela.
Malheureusement, l'article IT Pro ne donne aucun détail sur Chainer 2.0. Je me demande quand «à venir» est concret.
Dans Article que j'ai écrit l'autre jour, je vous ai dit que TensorFlow 1.0 sortira bientôt, mais nous avons travaillé dur ensemble et c'est devenu un meilleur framework. Je te veux. (Autre application d'alimentation)
J'attends avec impatience le rapport de suivi.