Tensorflow arka uçlu Keras, isteğe bağlı olarak CPU veya GPU kullanmaya zorlanabilir mi?

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.

Çözüm

Keras'ı CPU kullanmaya zorlamak istiyorsanız

Yol 1

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.

Yol 2

Komut dosyanızı şu şekilde çalıştırın

$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py

Ayrıca bakınız

  1. https://github.com/keras-team/keras/issues/152
  2. https://github.com/fchollet/keras/issues/4613
Yorumlar (7)

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
Yorumlar (5)

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

Yorumlar (0)