Tensorflow arka ucu ve CUDA ile yüklü Keras'ım var. Bazen isteğe bağlı olarak Keras'ı CPU kullanmaya zorlamak istiyorum. Bu, sanal bir ortamda ayrı bir CPU-sadece Tensorflow yüklemeden yapılabilir mi? Eğer öyleyse nasıl? Arka uç Theano olsaydı, bayraklar ayarlanabilirdi, ancak Keras aracılığıyla erişilebilen Tensorflow bayraklarını duymadım.
Keras'ı CPU kullanmaya zorlamak istiyorsanız
import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = ""
Keras / Tensorflow içe aktarılmadan önce.
Komut dosyanızı şu şekilde çalıştırın
$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py
Ayrıca bakınız
Keras tutorial uyarınca, normal tensorflow'da olduğu gibi aynı tf.device
kapsamını kullanabilirsiniz:
with tf.device('/gpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on GPU:0
with tf.device('/cpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on CPU:0
Bunu çözmek için biraz zaman harcadım.
Thoma'nın cevabı tam değil.
Diyelim ki programınız test.py
, bu programı çalıştırmak için gpu0'ı kullanmak ve diğer gpus'ları boş tutmak istiyorsunuz.
Yazmanız gereken CUDA_VISIBLE_DEVICES=0 python test.py
Dikkat edin DEVICE
değil DEVICES