张量流分布式训练混合多GPU方法论

时间:2016-09-20 13:41:06

标签: machine-learning tensorflow deep-learning distributed multi-gpu

在使用当前分布式训练实施一段时间后,我认为它将每个GPU视为一个单独的工作者。但是,现在通常在一个盒子中有2~4个GPU。采用单盒多GPU方法首先在单个盒子中计算平均梯度然后跨多个节点同步是不是更好?这样可以大大减轻I / O流量,这一直是数据并行的瓶颈。

我被告知可以通过将所有GPU作为工作人员放在单个框中来实现,但我无法弄清楚如何将平均梯度与SyncReplicasOptimizer联系起来,因为SyncReplicasOptimizer直接采用优化器作为输入。

任何人的想法?

1 个答案:

答案 0 :(得分:2)

分布式TensorFlow支持同一个工作任务中的多个GPU。为图像模型执行分布式培训的一种常用方法是在同一工作人员中跨多个GPU执行同步培训,并跨工作人员进行异步培训(尽管其他配置也是可能的)。这样,您只需将模型参数拉到worker一次,然后将它们分布在本地GPU中,从而简化网络带宽利用率。

为了进行这种培训,许多用户执行"图形内复制"跨越单个工作者的GPU。这可以在本地GPU设备上使用显式循环,例如the CIFAR-10 example model;或者更高级别的库支持,例如来自TF-Slim的model_deploy()实用程序。