Command Palette
Search for a command to run...
FireCaffe : accélération quasi-linéaire de l'entraînement des réseaux de neurones profonds sur des grappes de calcul
FireCaffe : accélération quasi-linéaire de l'entraînement des réseaux de neurones profonds sur des grappes de calcul
Forrest N. Iandola Khalid Ashraf Matthew W. Moskewicz Kurt Keutzer
Résumé
Les longues durées d'entraînement des réseaux neuronaux profonds (DNNs) à haute précision entravent les recherches sur de nouvelles architectures de DNNs et ralentissent le développement de DNNs à haute précision. Dans cet article, nous présentons FireCaffe, qui permet avec succès l'échelonnage de l'entraînement des réseaux neuronaux profonds sur un cluster de GPU. Nous proposons également plusieurs bonnes pratiques pour faciliter la comparaison des progrès dans les méthodes d'échelonnage et d'accélération de l'entraînement des réseaux neuronaux profonds. La vitesse et l'évolutivité des algorithmes distribués sont presque toujours limitées par le surcoût de la communication entre les serveurs ; l'entraînement des DNNs n'est pas une exception à cette règle. Par conséquent, la considération clé ici est de réduire le surcoût de communication autant que possible, sans dégrader la précision des modèles de DNNs que nous entraînons. Notre approche repose sur trois piliers essentiels. Premièrement, nous choisissons du matériel réseau qui offre une grande bande passante entre les serveurs GPU — les interconnexions Infiniband ou Cray sont idéales pour cela. Deuxièmement, nous examinons plusieurs algorithmes de communication et constatons que les arbres de réduction sont plus efficaces et évolutifs que l'approche traditionnelle du serveur de paramètres. Troisièmement, nous augmentons optionnellement la taille du lot (batch size) pour réduire la quantité totale de communication lors de l'entraînement des DNNs, et nous identifions les hyperparamètres qui nous permettent de reproduire la précision des petits lots tout en entraînant avec des grands lots. Lors de l'entraînement de GoogLeNet et Network-in-Network sur ImageNet, nous obtenons respectivement un accélération de 47 fois et 39 fois lorsque nous utilisons un cluster de 128 GPU.