繁体   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