【发布时间】:2016-11-06 05:51:28
【问题描述】:
我一直在密切关注 Imagenet 分布式 TF 训练示例。
当这个示例在 2 个不同的工作人员上运行时,我无法理解数据是如何分布的?理论上,不同的工人应该看到数据的不同部分。另外,代码的哪一部分告诉参数在参数服务器上传递?就像在多 GPU 示例中一样,'cpu:0' 有明确的部分。
【问题讨论】:
标签: tensorflow distributed imagenet
我一直在密切关注 Imagenet 分布式 TF 训练示例。
当这个示例在 2 个不同的工作人员上运行时,我无法理解数据是如何分布的?理论上,不同的工人应该看到数据的不同部分。另外,代码的哪一部分告诉参数在参数服务器上传递?就像在多 GPU 示例中一样,'cpu:0' 有明确的部分。
【问题讨论】:
标签: tensorflow distributed imagenet
通过从单个预处理图像队列中取出小批量图像,不同的工作人员可以看到数据的不同部分。具体来说,在用于训练 Imagenet 模型的分布式设置中,输入图像由多个线程进行预处理,并且预处理后的图像存储在单个 RandomShuffleQueue 中。您可以在 this 文件中查找 tf.RandomShuffleQueue 以了解这是如何完成的。多个工作人员被组织为“初始塔”,每个塔从同一队列中取出一小批图像,从而获得输入的不同部分。图片here 回答了您问题的第二部分。在this 文件中查找slim.variables.VariableDeviceChooser。那里的逻辑确保Variable 对象被均匀地分配给充当参数服务器的工作人员。进行实际训练的所有其他工作人员在步骤开始时获取变量并在步骤结束时更新它们。
【讨论】: