Tensorflow 将主机中的参数平均值发送到参数服务器之前

Tensorflow 将主机中的参数平均值发送到参数服务器之前,tensorflow,Tensorflow,我正在编写代码,以便在32台主机(每个主机有16个GPU)的集群中运行分布式同步培训 我阅读了本教程:以及以下示例代码: 两者似乎都建议每个GPU运行一个worker,并使用SyncReplicaOptimizer运行同步培训 如果我这样做,在每一步之后,每个PS都会收到来自32*16工作者的参数子集的梯度,对吗 在将平均梯度发送到参数服务器之前,是否可以对每个主机中16个GPU的梯度进行平均?这样,每个PS只需要接收32组渐变,而不是32*16 如果有可能做到这一点,是否有关于如何做到这一点的

我正在编写代码,以便在32台主机(每个主机有16个GPU)的集群中运行分布式同步培训

我阅读了本教程:以及以下示例代码:

两者似乎都建议每个GPU运行一个worker,并使用SyncReplicaOptimizer运行同步培训

如果我这样做,在每一步之后,每个PS都会收到来自32*16工作者的参数子集的梯度,对吗

在将平均梯度发送到参数服务器之前,是否可以对每个主机中16个GPU的梯度进行平均?这样,每个PS只需要接收32组渐变,而不是32*16


如果有可能做到这一点,是否有关于如何做到这一点的示例代码?

有可能做到,官方的
cifar10_multi_gpu_train.py
示例显示了如何平均在多个gpu上计算的梯度,并将其保存在单个主机上的RAM中。然后,您可以将其与sync_副本相结合,以接收RAM变量,并在主机之间将它们聚合在一起