2017-08-16 4 views
1

L'ordinateur que j'utilise est 1080 qui a une mémoire GPU de 8 Go, la mémoire de mon ordinateur est de 32 Go, mais les données de la matrice peuvent être trop grandes pour me restaurer, L'ordinateur me dit épuisé. s'il y a de toute façon pour résoudre ce problème ou évaluer la mémoire GPU j'ai besoin d'un tel grand tableau numpy donc je peux acheter un meilleur ordinateur pour calculer.par la façon dont le batch_size que j'utilise est 1 donc j'ai réduit la mémoire au minimum, ou je devrais envisager de réduire la colonne brute et la hauteur de mon tableau numpy, et je pense que cela aurait un effet sur la résolution de mes résultats.OOM lors de l'allocation du tenseur avec la forme [1 144 144 444 128]

Si quelqu'un peut répondre à ma question. merci

Répondre

1

Le tenseur que vous utilisez est grand, mais pas très gros pour un GPU 8Gb. 144 * 144 * 144 * 128 est ~ 380 millions, donc même avec les éléments 32 bits, il nécessite 1.5GiB. J'ai une GeForce GTX 1070 avec 8Gb (même taille que vous) et voici mon expérience tensorflow:

import numpy as np 
import tensorflow as tf 

X = tf.placeholder(dtype=tf.int32, shape=(1, 144, 144, 144, 128)) 
init = tf.global_variables_initializer() 

with tf.Session() as session: 
    session.run(init) 
    value = session.run([X], feed_dict={X: np.zeros(shape=(1, 144, 144, 144, 128))}) 
    print np.array(value).shape 

La sortie:

name: GeForce GTX 1070 
major: 6 minor: 1 memoryClockRate (GHz) 1.7465 
pciBusID 0000:01:00.0 
Total memory: 7.92GiB 
Free memory: 4.14GiB 
2017-08-17 20:05:54.312424: I tensorflow/core/common_runtime/gpu/gpu_device.cc:908] DMA: 0 
2017-08-17 20:05:54.312430: I tensorflow/core/common_runtime/gpu/gpu_device.cc:918] 0: Y 
2017-08-17 20:05:54.312444: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0) 
(1, 1, 144, 144, 144, 128) 

Notez que la mémoire libre est beaucoup plus faible que 8Gb, parce que je l'utilise 2 moniteurs UHD. Cela peut donc être la première cause dans votre cas: d'autres processus peuvent consommer beaucoup de ressources GPU. Ensuite, vous n'avez pas fourni votre architecture Neural Network, mais si vous utilisez, par exemple, Deep Convolutional Neural Networks, notez que les premières couches consomment beaucoup de mémoire pour les paramètres et les dégradés. Vous voudrez peut-être lire this helpful page for details. Si tel est le cas, vous devrez peut-être brancher un autre GPU et diviser le graphique sur tous les GPU disponibles (here's how you can do it). Il y a des GPU de mémoire 12Gb disponibles chez NVidia. Enfin, vous pouvez toujours envisager de réduire la précision flottante tf.float64 -> tf.float32 -> tf.float16 pour toutes vos variables. Cela peut économiser 8 fois la mémoire, ce qui est parfois juste suffisant pour fonctionner sur un GPU.

+0

merci pour la réponse, j'ai résolu ce problème en laissant mon patron acheter une meilleure machine. et le problème peut être atténué en utilisant spécial net peu profond et en utilisant int32 ou int16 – user158615