这个问题与如何让Keras使用Theano来利用多个GPU相关,但我的需求不是使用多个GPU,而是想指定特定的模型在哪个GPU上训练或运行。
我的nvidia-smi
输出如下所示:
+------------------------------------------------------+ | NVIDIA-SMI 361.42 Driver Version: 361.42 | |-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 Tesla K80 Off | 0000:03:00.0 Off | 0 || N/A 38C P0 60W / 149W | 11354MiB / 11519MiB | 0% Default |+-------------------------------+----------------------+----------------------+| 1 Tesla K80 Off | 0000:04:00.0 Off | 0 || N/A 37C P0 71W / 149W | 224MiB / 11519MiB | 0% Default |+-------------------------------+----------------------+----------------------+| 2 GeForce GTX 750 Ti Off | 0000:06:00.0 On | N/A || 40% 29C P8 1W / 38W | 120MiB / 2047MiB | 0% Default |+-------------------------------+----------------------+----------------------+
当然,这是在没有运行任何程序时的输出。我的问题是,我不确定如何在Keras中指定使用哪个GPU。当然,在TensorFlow中我们可以使用with tf.device('/cpu:1'):
这种方式,但我不知道这如何与Keras集成。
谢谢!
回答:
除了在你的keras.json文件中指定tensorflow
作为后端之外,你还可以通过环境变量CUDA_VISIBLE_DEVICES来限制使用的GPU数量和/或使用特定的GPU(http://acceleware.com/blog/cudavisibledevices-masking-gpus)。在这里你可以指定使用哪个GPU。