1

在这个Tensorflow 分布式训练代码示例中,sess.run([train_op, global_step])将被多次调用(在一个 while 循环中)。由于在执行 DAG 操作之前,Tensorflow 需要首先将图节点放置到某些设备(节点放置过程)。

在这种情况下,我想知道需要完成多少节点放置过程。假设循环计数为 N,Tensorflow 系统是否只执行一次节点放置?或执行节点放置N 次

4

1 回答 1

1

节点的设备放置只发生一次。tf.device您可以使用或等指令控制设备放置tf.train.replica_device_setter

由于 tensorflow 将按设备划分图,将 recv 和 send 节点添加到这些子图中的每一个并执行额外的设置,因此将这些节点替换到不同的设备是昂贵的。但是您仍然可以在调用之间更改图表session.run

编辑: 设备是由该函数设置的节点的属性,并在构建图形时设置。使用 时,设备函数会被压入堆栈,后续节点会调用堆栈中的设备函数来获取设备分配。它的实现可以在这里找到:https ://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py#L2880tf.device

(TensorFlow 使用延迟执行。)在对图进行评估时,将根据设备分配对其进行分区,并将子图发送到不同的设备执行。

于 2016-11-21T03:47:39.630 回答