【问题标题】:Tensorflow multiple Run and Node PlacementTensorFlow 多次运行和节点放置
【发布时间】:2016-11-21 03:39:09
【问题描述】:

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

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

【问题讨论】:

  • 节点放置仅在为图创建会话时发生一次。

标签: tensorflow tensorflow-serving


【解决方案1】:

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

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

编辑: 设备为an attribute of a node,由this function设置,在构建图时设置。当您使用tf.device 时,设备函数将被压入堆栈,随后的节点将调用堆栈中的设备函数以获取设备分配。它的实现可以在这里找到:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py#L2880

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

【讨论】:

  • 谢谢! @伪造的 。请让我知道 Tensorflow 代码中的哪个方法/函数触发了节点放置过程。
  • 编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 2022-09-23
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2019-01-14
相关资源
最近更新 更多