2017-06-14 82 views
0

有没有办法纯粹在CPU上运行TensorFlow。我的机器上的所有内存都由运行TensorFlow的单独进程占用。我试图将per_process_memory_fraction设置为0,但未成功。防止TensorFlow访问GPU?

回答

4

看看这个question或这个answer

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

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

编辑: 引用此comment,与CUDA_VISIBLE_DEVICES环境变量打是一个(如果不是)去,只要你有GPU-方式tensorflow已经安装,你不想在所有的GPU卡上使用。

您希望导出CUDA_VISIBLE_DEVICES =或者是带有非GPU TensorFlow的virtualenv。参见:#2175(评论)

0

您可以通过为0的GPU极限开扩会话中使用的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 | 
+-----------------------------------------------------------------------------+ 
+0

根据https://github.com/tensorflow/tensorflow/issues/9201目前还不清楚它是否可行。 – npf

+0

我理解它的目的是避免内存分配。如果是这样 - 它会起作用。见上文 – MZHm

+0

从我所了解的情况来看,它确实使用了GPU,即使它没有使用任何内存。我可能是错的,但我相信问题是如何纯粹在CPU上运行TensorFlow。 – npf