Wenn Sie versuchen, Keras mit dem Back-End als TensorFlow zu verwenden, wird standardmäßig der gesamte GPU-Speicher verwendet, und Sie können nicht mehrere Experimente ausführen. Daher werde ich eine Einstellungsmethode einführen, um die GPU-Speicherauslastung zu reduzieren. [^ 1] [^ 2]
tensorflow==1.3.0
tensorflow-gpu==1.3.0
Keras==2.0.6
Sie können den folgenden Code einfügen oder importieren.
Es kann mit gpu_options.allow_growth
eingestellt werden.
Es ist eine Methode, bei der zum Zeitpunkt der Ausführung nur die erforderliche Menge zugewiesen wird, und der Speicherbereich wird erweitert, wenn er weiter benötigt wird.
Da der Speicher jedoch nicht automatisch freigegeben wird, kann der Speicher fragmentiert werden und die Leistung kann sich verschlechtern. Seien Sie daher vorsichtig. [^ 1]
import tensorflow as tf
from keras import backend as K
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
K.set_session(sess)
Es kann mit gpu_options.per_process_gpu_memory_fraction
eingestellt werden.
Im folgenden Beispiel werden 40% Speicher verwendet.
import tensorflow as tf
from keras import backend as K
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config)
K.set_session(sess)
$ nvidia-smi -l
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 30654 C python 3527MiB |
| 1 30779 C python 3357MiB |
+-----------------------------------------------------------------------------+
References
Recommended Posts