2017-08-16 4 views
1

Der Computer, den ich benutze, ist 1080, die einen GPU-Speicher von 8 GB hat, der Speicher meines Computers ist 32 GB, aber die Array-Daten zu groß für mich wiederherstellen Computer sagt mir erschöpft Ressource. Wenn es sowieso gibt, um dieses Problem zu lösen oder den GPU-Speicher auszuwerten, brauche ich für ein so großes numpy-Array, so kann ich einen besseren Computer für calculate.by die Batch-Größe, die ich benutze, ist 1, so habe ich den Speicher auf das Minimum reduzieren, oder ich sollte in Betracht ziehen, die rohe Spalte und die Höhe meines numply array zu reduzieren, und ich denke, dass das die Auflösung meiner Resultate beeinflussen würde, die okay sein würden.OOM beim Zuordnen von Tensor mit Form [1,144,144,144,128]

Wenn jemand meine Frage beantworten kann. danke

Antwort

1

Der Tensor, den Sie verwenden, ist groß, aber nicht so groß für eine 8GB GPU. 144 * 144 * 144 * 128 ist ~ 380 Millionen, also sogar mit 32-Bit-Elemente benötigt 1,5GiB. Ich habe eine GeForce GTX 1070 mit 8 GB (gleiche Größe wie Sie) und hier ist mein Tensorflow Experiment:

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 

Der Ausgang:

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) 

Hinweis, dass der freie Speicher ist viel niedriger als 8Gb, weil ich 2 UHD-Monitore. Dies könnte die erste Ursache in Ihrem Fall sein: Andere Prozesse können viele GPU-Ressourcen verbrauchen.

Als nächstes haben Sie Ihre neuronale Netzwerkarchitektur nicht bereitgestellt, aber wenn Sie zum Beispiel Deep Convolutional Neural Networks verwenden, beachten Sie, dass die ersten Schichten viel Speicher für Parameter und Gradienten verbrauchen. Vielleicht möchten Sie this helpful page for details lesen. Wenn dies der Fall ist, müssen Sie möglicherweise eine andere GPU anschließen und das Diagramm auf alle verfügbaren Grafikprozessoren aufteilen (here's how you can do it). Es gibt 12-GB-Speicher-GPUs von NVidia.

Schließlich können Sie immer in Betracht ziehen, die Gleitkommazahl tf.float64 -> tf.float32 -> tf.float16 für alle Ihre Variablen zu reduzieren. Dies kann 8x Speicher sparen, was manchmal gerade ausreicht, um auf einer GPU zu laufen.

+0

danke für die Antwort, ich habe dieses Problem gelöst, indem ich meinen Chef eine bessere Maschine kaufen lassen. und das Problem kann gemildert werden, indem ein spezielleres seichteres Netz verwendet wird und int32 oder int16 verwendet wird – user158615

Verwandte Themen