Si vous essayez d'utiliser Keras avec le back-end comme TensorFlow, le paramètre par défaut est d'utiliser toute la mémoire du GPU et vous ne pouvez pas exécuter plusieurs expériences.Je vais donc introduire une méthode de configuration pour réduire l'utilisation de la mémoire du GPU. [^ 1] [^ 2]
tensorflow==1.3.0
tensorflow-gpu==1.3.0
Keras==2.0.6
Vous pouvez coller le code ci-dessous ou l'importer.
Il peut être défini avec gpu_options.allow_growth
.
Il s'agit d'une méthode d'allocation uniquement de la quantité requise au moment de l'exécution, et la zone de mémoire est étendue lorsque cela est nécessaire.
Cependant, étant donné que la mémoire n'est pas libérée automatiquement, la mémoire peut devenir fragmentée et les performances peuvent se détériorer, soyez donc prudent. [^ 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)
Il peut être défini avec gpu_options.per_process_gpu_memory_fraction
.
Dans l'exemple ci-dessous, 40% de mémoire est utilisé.
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