让我先描述群集设置:
- 我有两个节点(每个节点有2个GPU)。我称它们为节点A和节点B
- 每个节点都有自己的SSD存储。
- oar是所使用的群集管理器。
我已经浏览了分布式的TensorFlow文档,但是有一些功能基础知识我无法正确理解,因此这个问题。
考虑以下情况:
- 我在节点A上复制了大约600 GB的数据。
- 我可以使用桨专门要求在两个节点上分配4个GPU。
如果我想使用分布式TensorFlow训练模型:
- 如何为tf.train.clusterspec指定网络地址?这些网络地址是什么?在文档中是诸如localhost:2222诸如cluster manager? 保留的名称:2222
- 我的数据被复制到节点A。在培训期间,TensorFlow本身将负责将此数据作为输入发送给Node B上的GPU?
- 我需要使用tf.device()?
- 如果我还想使用一些其他CPU节点,我将必须事先拥有它们的名字并将其放入代码中?
- 是
- 您的客户端创建图形并在工作人员上执行此图。如果使用参数服务器中的howto中使用图间复制,则客户端和工作者是相同的过程。此过程只需要使用
with tf.device
为当前节点创建图形的一部分。如果您使用单个客户端使用图表内复制,则您的客户端需要使用多个with tf.graph
部分为所有节点创建图形。
使用单独的客户端/工作流程的仪表内复制的最简单示例在这里
- 您通常需要通过群集规范提前配置所有节点,并且它们的名称被顺序分配为
/job:worker/task:0
,/job:worker/task:1
等