Comment calculer optimal de la taille des lots
Parfois, je rencontre un problème:
OOM lors de l'attribution du tenseur de la forme de la
e.q.
OOM lors de l'attribution du tenseur de la forme (1024, 100, 160)
Où 1024 est ma taille de lot et je ne sais pas ce qui est le reste. Si je diminue la taille de lot ou le nombre de neurones dans le modèle, il fonctionne très bien.
Est-il un générique façon de calculer optimal de la taille des lots en fonction du modèle et de la mémoire graphique, de sorte que le programme ne plante pas?
MODIFIER
Depuis ma question peut sembler incertaine, permettez-moi de mettre à sa manière: je veux la plus grande taille de lot possible en termes de mon modèle, qui va rentrer dans mon GPU, de la mémoire et de ne pas planter le programme.
EDIT 2
À celui qui a voté pour la fermeture de la question d'être trop large: Comment sur terre est la question trop large? Il y a un algorithme qui sélectionne une portion de données pour mettre en mémoire GPU. Il est clairement imparfait puisque les données excède parfois les la mémoire graphique. Demander comment fonctionne l'algorithme, afin d'éviter des plantages aléatoires, semble tout à fait raisonnable pour moi.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez estimer le plus grand de la taille des lots à l'aide de:
Max taille des lots= disponible de la mémoire graphique octets /4 /(taille des tenseurs + facile à former des paramètres)
model.summary()
De la récente Apprentissage en Profondeur du livre par Goodfellow et coll., chapitre 8:
Qui, en pratique, signifie habituellement "dans les puissances de 2 et le plus grand, le mieux, à condition que le lot s'insère dans votre processeur graphique (GPU) de la mémoire".
Vous pourriez également consulter plusieurs postes de bons ici dans la Pile d'Échange:
Il suffit de garder à l'esprit que le papier par Keskar et coll. 'Sur de Grands Lots de Formation pour l'Apprentissage en Profondeur: la Généralisation de l'Écart et des Minima Pointus', cité par plusieurs des postes ci-dessus, a reçu quelques objections par d'autres respectable chercheurs de la profonde communauté d'apprentissage.
Espère que cela aide...
Mise à JOUR (Dec 2017): Il y a un nouveau document de Yoshua Bengio & équipe, Trois Facteurs Influençant Minima en SGD (Novembre 2017); il est intéressant de lire dans le sens où il rapporte de nouveaux théorique & résultats expérimentaux sur l'interaction entre l'apprentissage des taux et de la taille des lots.
J'ai couru dans le même GPU mem erreur qui a été résolu par la configuration de la tensorflow session avec les éléments suivants:
voir: google colaboratory `ResourceExhaustedError` avec GPU
colaboratory
lance avec 12 go mais avec l'option activée, il peut pousser à 52GBpour définir la fonction pour trouver la taille de lot pour le modèle de la formation