Machine learning 基于多GPU方法的tensorflow分布式混合训练

Machine learning 基于多GPU方法的tensorflow分布式混合训练,machine-learning,tensorflow,deep-learning,distributed,multi-gpu,Machine Learning,Tensorflow,Deep Learning,Distributed,Multi Gpu,在使用当前的分布式培训实现一段时间后,我认为它将每个GPU视为一个单独的工作程序。但是,现在在一个盒子中有2~4个GPU是很常见的。采用单盒多GPU方法,首先在单盒中计算平均梯度,然后跨多个节点同步,不是更好吗?这样可以大大减少I/O通信量,这一直是数据并行性的瓶颈 有人告诉我,在当前的实现中,可以将所有GPU作为一个辅助对象放在一个单独的框中,但我无法找出如何将平均梯度与SyncReplicateSOptimizer联系起来,因为SyncReplicateSOptimizer直接将优化器作为输

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

有人告诉我,在当前的实现中,可以将所有GPU作为一个辅助对象放在一个单独的框中,但我无法找出如何将平均梯度与SyncReplicateSOptimizer联系起来,因为SyncReplicateSOptimizer直接将优化器作为输入


任何人有什么想法吗?

分布式TensorFlow在同一个辅助任务中支持多个GPU。对图像模型执行分布式培训的一种常见方法是在同一个辅助进程中跨多个GPU执行同步培训,以及跨辅助进程执行异步培训(尽管也可以使用其他配置)。通过这种方式,您只需将模型参数拉入工作进程一次,它们分布在本地GPU中,从而降低了网络带宽利用率


为了进行此类培训,许多用户在单个工作人员中跨GPU执行“图内复制”。这可以在本地GPU设备上使用显式循环,如中;或更高级别的库支持,如TF Slim中的实用程序。

分布式TensorFlow在同一工作任务中支持多个GPU。对图像模型执行分布式培训的一种常见方法是在同一个辅助进程中跨多个GPU执行同步培训,以及跨辅助进程执行异步培训(尽管也可以使用其他配置)。通过这种方式,您只需将模型参数拉入工作进程一次,它们分布在本地GPU中,从而降低了网络带宽利用率

为了进行此类培训,许多用户在单个工作人员中跨GPU执行“图内复制”。这可以在本地GPU设备上使用显式循环,如中;或更高级别的库支持,如TF Slim中的实用程序