Tensorflow 倍数 运行 和节点放置

Tensorflow multiple Run and Node Placement

在此 Tensorflow Distributed Training 代码示例中,sess.run([train_op, global_step]) 将被调用多次(在 while 循环中)。由于在执行DAG操作之前,Tensorflow需要先将图节点放置到一些设备上(节点放置过程)。

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

节点的设备放置只发生一次。您可以使用 tf.devicetf.train.replica_device_setter.

等指令控制设备放置

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

之间的图表

编辑: 设备是an attribute of a node which is set by this function and is set when the graph is constructed. When you use tf.device, a device function would be pushed to a stack and the following nodes would call the device function in the stack to get a device assignment. Its implementation can be found here: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py#L2880

(TensorFlow使用延迟执行。)当图被评估时,它会partitioned根据设备分配,子图将被发送到不同的设备执行。