防止TensorFlow访问GPU?

48

有没有一种方法可以纯粹使用CPU运行TensorFlow。我机器上的所有内存都被运行TensorFlow的另一个进程占用了。我尝试把per_process_memory_fraction设置为0,但是没有成功。

2个回答

111

请查看这个问题或这个答案

总之,您可以添加此代码片段:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
import tensorflow as tf

调整 CUDA_VISIBLE_DEVICES 环境变量是在安装了 GPU 版本的 Tensorflow 但你不想使用任何 GPU 的情况下可以采用的方法之一(如果不是唯一的解决办法)

你需要使用 export CUDA_VISIBLE_DEVICES= 或者在虚拟环境中使用非 GPU 版本的 TensorFlow。


6
在使用后,我如何重新启用我的GPU? - GILO
你是否找到了在Python脚本中开启/关闭TensorFlow GPU的解决方案? - Murali
1
@GILO 你可以在下一次运行脚本时更改你的GPU编号,例如=“0”或“0,1”。 - Omar Shabab
从命令行也可以在启动应用程序之前执行以下操作:export CUDA_VISIBLE_DEVICES=-1。 - daruma

14

您可以通过打开一个GPU限制为0的会话,仅使用CPU:

sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))

有关详细信息,请参见https://www.tensorflow.org/api_docs/python/tf/ConfigProto

以下是它适用于@Nicolas的证明:

在Python中编写:

import tensorflow as tf
sess_cpu = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))

然后在终端中:

nvidia-smi

您将看到类似于:

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     24869    C   /.../python                 99MiB                     |
+-----------------------------------------------------------------------------+

然后重复这个过程: 在Python中,编写:

import tensorflow as tf
sess_gpu = tf.Session()

然后在终端中执行:

nvidia-smi

你会看到类似这样的内容:

你会看到类似这样的内容:

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     25900    C   /.../python                                   5775MiB |
+-----------------------------------------------------------------------------+

根据 https://github.com/tensorflow/tensorflow/issues/9201,目前还不清楚它是否有效。 - pfm
据我理解,目标是避免内存分配。如果是这样的话 - 它会起作用。请参见上文。 - MZHm
1
据我所知,即使它不使用其中的任何内存,它也会使用GPU。我可能是错的,但我相信问题是如何纯粹地在CPU上运行TensorFlow。 - pfm
@jasekp?你能澄清一下目标吗?如果目标类似于在GPU上进行训练的同时使用CPU进行测试,那么这应该可以工作。 - MZHm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接