Formation de réseau de neurones en parallèle, mieux utiliser Hadoop ou un gpu?

J'ai besoin de former un réseau de neurones avec 2-4 couches cachées, pas encore sûr de la structure du réseau réel. Je pensais l'entraîner en utilisant Hadoop map reduce (cluster de 12 pcs) ou un gpu afin d'obtenir des résultats plus rapides. Que pensez-vous qu'il serait mieux ? Existe-t-il également des bibliothèques disponibles qui les ont déjà implémentées? Merci

21
demandé sur Will 2011-11-24 04:16:34

1 réponses

J'ai eu la chance de travailler dans un laboratoire qui a tâté dans ces deux méthodes pour les réseaux de formation, et bien que les deux soient utiles dans des paramètres très coûteux en calcul, l'emplacement du goulot d'étranglement de calcul détermine généralement quelle méthode utiliser.

Formation d'un réseau à l'aide d'un système distribué (par exemple HADOOP)

Ceci est utile lorsque votre réseau est suffisamment grand pour que les multiplications matricielles impliquées dans la formation deviennent lourdes sur un PC traditionnels. Ce problème est particulièrement répandu lorsque vous avez des contraintes de temps sévères (par exemple Formation en ligne ), sinon les tracas d'une implémentation HADOOP ne valent pas la peine (il suffit de lancer le réseau pendant la nuit). Si vous pensez à HADOOP parce que vous voulez jouer avec les paramètres du réseau et ne pas avoir à attendre un jour avant de jouer un peu plus (souvent le cas dans mon laboratoire), exécutez simplement plusieurs instances du réseau avec différents paramètres sur différentes machines. Que façon dont vous pouvez utiliser votre cluster sans traiter le calcul distribué réel.

Exemple:

Vous formez un réseau pour trouver le nombre de personnes dans les images. Au lieu d'un ensemble prédéfini d'exemples de formation (image-Nombre de paires de personnes), vous décidez d'avoir le programme tirer des images aléatoires de Google. Pendant que le réseau traite l'image, vous devez l'afficher et fournir des commentaires sur le nombre de personnes présentes dans l'image. Puisque c'est le traitement de l'image, votre taille du réseau est probablement à l'échelle de millions d'unités. Et puisque vous fournissez le feedback en temps réel la vitesse des calculs du réseau compte. Ainsi, vous devriez probablement investir dans une implémentation distribuée.

La Formation d'un réseau sur un GPU

C'est le bon choix si le goulot d'étranglement de calcul n'est pas la taille du réseau, mais la taille de l'ensemble de formation (bien que les réseaux soient encore généralement assez grands). Depuis Les GPU sont idéaux pour les situations impliquant l'application de la même opération de vecteur/matrice sur un grand nombre d'ensembles de données, ils sont principalement utilisés lorsque vous pouvez utiliser batch training avec un très Grande Taille de lot.

Exemple:

Vous formez un réseau pour répondre aux questions posées en langage naturel. Vous avez une énorme base de données de paires question-réponse et ne vous dérangez pas que le réseau ne mette à jour ses poids que toutes les 10000 questions. Avec une si grande taille de lot et vraisemblablement un réseau plutôt grand, une implémentation basée sur le GPU serait une bonne idée.

32
répondu zergylord 2016-01-16 04:53:56