了解Distributed TensorFlow的概念基础知识

时间:2016-11-26 14:24:01

标签: python tensorflow

让我先描述群集设置:

  • 我有两个节点(每个节点有2个GPU)。我将它们称为节点A和节点B
  • 每个节点都有自己的SSD存储空间。
  • OAR是使用的集群管理器。

我已经阅读了分布式TensorFlow文档但是有一些我无法正确理解的功能基础,因此这个问题。

考虑以下情况:

  • 我在节点A上复制了大约600 GB的数据。
  • 我可以使用OAR专门请求在两个节点上分配4个GPU。

如果我想使用Distributed TensorFlow来训练模型:

  1. 如何为tf.train.ClusterSpec指定网络地址?那些网络地址是什么?在文档中,诸如localhost:2222之类的名称是为具有集群管理器的特定节点保留的相同名称吗?
  2. 我的数据被复制到节点A.在训练期间,TensorFlow本身是否负责将此数据作为输入发送到节点B上的GPU?
  3. 我是否需要使用tf.device()为每个节点上的每个GPU手动创建TensorFlow图?
  4. 如果我还想使用一些额外的CPU节点,我必须事先得到他们的名字并将它们放在代码中吗?

1 个答案:

答案 0 :(得分:1)

  1. 您的客户端创建图表并在工作人员上执行此图表。如果在howto中使用参数服务器之间的图之间复制,则客户端和工作者是同一个进程。此过程仅需要使用with tf.device为当前节点创建部分图表。如果您使用单个客户端进行图内复制,则客户端需要使用多个with tf.graph部分为所有节点创建图表。
  2. 使用单独的客户端/工作进程的最简单的图内复制示例是here

    1. 您通常需要提前通过群集规范配置所有节点,并将其名称按顺序分配为/job:worker/task:0/job:worker/task:1