簡體   English   中英

TensorFlow可以與多個CPU(無GPU)一起運行嗎?

[英]Can TensorFlow run with multiple CPUs (no GPUs)?

我正在嘗試學習分布式TensorFlow。 嘗試了一段代碼解釋在這里

with tf.device("/cpu:0"):
    W = tf.Variable(tf.zeros([784, 10]))
    b = tf.Variable(tf.zeros([10]))

with tf.device("/cpu:1"):
    y = tf.nn.softmax(tf.matmul(x, W) + b)
    loss = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

出現以下錯誤:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation 'MatMul': Operation was explicitly assigned to /device:CPU:1 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]. Make sure the device specification refers to a valid device.
     [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device="/device:CPU:1"](Placeholder, Variable/read)]]

這意味着TensorFlow無法識別CPU:1

我在具有40個CPU的RedHat服務器上運行( cat /proc/cpuinfo | grep processor | wc -l )。

有任何想法嗎?

點擊評論中的鏈接

原來該會話應配置為設備計數> 1:

config = tf.ConfigProto(device_count={"CPU": 8})
with tf.Session(config=config) as sess:
   ...

令人震驚的是,我錯過了如此基本的內容,沒有人能指出似乎太明顯的錯誤。

不確定是我還是TensorFlow代碼示例和文檔有問題。 由於它是Google,因此我不得不說是我。

首先,只需在“一個CPU”上運行它,然后查看Tensorflow是否將線程適當地分配給所有CPU。 它可能會正確地實現多線程,並且您無需執行任何操作。

在沒有這種情況的情況下,您應該嘗試啟動多個具有不同CPU親和力的Tensorflow實例,並執行一個“分布式”系統。 Tensorflow已經為多台機器提供了分布式服務; 只要您正確設置文件,以使它們不會寫入相同的位置,它就可以在一台計算機上與單獨的進程一起工作。 您可以從https://www.tensorflow.org/deploy/distributed開始。 您可能需要設置CPU親和力,以便每個物理CPU一個進程,即https://askubuntu.com/questions/102258/how-to-set-cpu-affinity-to-a-process

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM