Quelle taille de réseaux de neurones peut être formée sur les GPU actuels de qualité grand public? (1060,1070,1080)

9

est-il possible de donner une estimation empirique de la taille des réseaux de neurones qui peuvent être entraînés sur des GPU courants de qualité grand public ? Par exemple:

Le papier Emergence of Locomotion (Reinforcement) forme un réseau utilisant l'activation tanh des neurones. Ils ont un NN à 3 couches avec 300 200 100 unités pour le Planar Walker . Mais ils ne signalent pas le matériel et l'heure ...

Mais une règle d'or pourrait-elle être élaborée? Également basé sur les résultats empiriques actuels, par exemple:

Les unités X utilisant l'activation sigmoïde peuvent exécuter Y itérations d'apprentissage par heure sur un 1060.

Ou l'utilisation de la fonction d'activation a au lieu de b entraîne une diminution des performances.

Si un étudiant / chercheur / curieux va acheter un GPU pour jouer avec ces réseaux, comment décidez-vous de ce que vous obtenez? Un 1060 est apparemment l'option de budget d'entrée de gamme, mais comment pouvez-vous évaluer s'il n'est pas plus intelligent d'obtenir simplement un netbook merdique au lieu de construire un bureau haute puissance et de dépenser les dollars économisés sur l'infrastructure cloud à la demande.

Motivation pour la question: je viens d'acheter un 1060 et (intelligent, pour poser la question ensuite hein) je me demande si j'aurais juste dû garder les $ et créé un compte Google Cloud. Et si je peux exécuter ma simulation de mémoire sur le GPU.

pascalwhoop
la source

Réponses:

5

Habituellement, le problème est d'adapter le modèle à la RAM vidéo. Si ce n'est pas le cas, vous ne pouvez pas du tout entraîner votre modèle sans grands efforts (comme entraîner des parties du modèle séparément). Si c'est le cas, le temps est votre seul problème. Mais la différence de temps de formation entre les GPU grand public comme le Nvidia 1080 et les accélérateurs GPU beaucoup plus chers comme le Nvidia K80 n'est pas très grande. En fait, les meilleures cartes grand public sont plus rapides que les accélérateurs GPU, mais manquent d'autres propriétés comme la VRAM. Comparaisons et repères aléatoires: http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/ , https://medium.com/@alexbaldo/a-comparison-between-nvidias-geforce -gtx-1080-et-tesla-p100-pour-apprentissage-profond-81a918d5b2c7

Pour calculer si vos modèles s'intègrent dans la VRAM, il vous suffit d'approximer la quantité de données et les hyperparamètres dont vous disposez (entrées, sorties, poids, couches, taille de lot, quel type de données, etc.).

C. Yduqoli
la source
1
Bonne réponse, mais quel type de modèle ne rentre pas dans une mémoire 6/8 Go? Disons que chaque lot de données d'entraînement + le modèle. Je ne sais pas comment calculer la taille du modèle, mais je ne peux pas imaginer quelques milliers de neurones et leurs poids peuvent remplir des gigaoctets de mémoire. Le modèle de reconnaissance d'image pré-formé de Google est de quelques centaines de Megs tensorflow.org/tutorials/image_recognition et qui peut reconnaître plus que la plupart des autres. Apple le gère sur puce dans l'iPhone, donc le modèle lui-même doit être beaucoup plus petit que les données T. Et cela n'a pas besoin d'être tout en RAM non?
pascalwhoop
Je travaille souvent avec des modèles NLP, principalement des RNN multicouches, et si la taille du vocabulaire est grande, même 8 Go pourraient ne pas suffire. N'oubliez pas que la formation nécessite généralement plus d'espace que la prévision (les gradients prennent également de la place).
C.Yduqoli
3

À titre de mise en garde, je suggère qu'à moins que vous ne poussiez contre des limites technologiques fondamentales, la vitesse de calcul et les ressources devraient être secondaires par rapport à la logique de conception lors du développement d'une architecture de réseau neuronal.

Cela dit, plus tôt cette année, j'ai terminé ma thèse sur la SEP qui impliquait des pipelines d'analyse bioinformatique avec des données de séquençage du génome entier - ce projet a pris plus de 100000 heures de temps de calcul à développer selon notre gestionnaire de tâches de grappes. Lorsque vous êtes dans un délai, les ressources peuvent être une véritable contrainte et la vitesse peut être critique.

Donc, pour répondre à vos questions telles que je les comprends:

Aurais-je préféré utiliser l'argent pour gagner du temps dans le cloud?

Probablement. Les quelques centaines de dollars que vous avez dépensés pour le 1060 vous amèneraient loin à entraîner vos modèles dans le cloud. De plus, pour autant que je sache, vous n'avez pas besoin que le GPU démarre 100% du temps (vous le feriez si vous étiez, disons, en train d'extraire des crypto-monnaies). Enfin, avec des instances cloud, vous pouvez évoluer, en entraînant plusieurs modèles à la fois, ce qui peut accélérer l'exploration et la validation de toute architecture sur laquelle vous vous installez.

Existe-t-il un moyen de mesurer le temps de calcul d'un réseau neuronal sur un GPU donné

Eh bien, Big O est un estimateur, mais il semble que vous souhaitiez une méthode plus précise. Je suis sûr qu'ils existent, mais je dirais que vous pouvez faire votre estimation avec un simple calcul des enveloppes qui tiennent compte des threads, de la mémoire, des itérations de code, etc. Voulez-vous vraiment creuser dans le pipeline de traitement GPU sur le 1060? Vous pourrez peut-être arriver à une très bonne estimation en comprenant tout ce qui se passe entre votre code et le métal, mais en fin de compte, cela ne vaut probablement pas le temps et l'effort; cela confirmera probablement que la notation Big O (le modèle simple, si vous voulez) capture la majeure partie de la variation du temps de calcul. Une chose que vous pouvez faire si vous constatez des goulots d'étranglement est le profilage des performances.

Greenstick
la source
2

Cela dépend de ce dont vous avez besoin. Vous pouvez former n'importe quelle taille de réseau sur n'importe quelle ressource. Le problème est le temps de formation. Si vous souhaitez former Inception sur un processeur moyen, il faudra des mois pour converger. Tout dépend donc du temps que vous pouvez attendre pour voir vos résultats en fonction de votre réseau. Comme dans les réseaux neuronaux, nous n'avons pas qu'une seule opération mais plusieurs (comme la concaténation, la mise en commun maximale, le remplissage, etc.), il est impossible de faire une estimation comme vous le recherchez. Commencez simplement à former des réseaux infâmes et mesurez le temps. Ensuite, vous pouvez interpoler le temps qu'il faudra pour former les réseaux que vous recherchez.

Deniz Beker
la source
Connaissez-vous une ressource qui recueille des informations pour différents travaux NN? Donc une liste de: type NN, nombre d'unités, hyperparamètres, taille du jeu de données, matériel utilisé, temps nécessaire? Cela aiderait à développer une intuition de base
pascalwhoop