2017-06-14 106 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