我一直在使用cifar10_multi_gpu_train示例中提出的训练方法进行(本地)multi-gpu训练,即创建几个塔然后平均梯度。但是,我想知道以下内容:如果我只是从不同的GPU中获取损失,将它们相加,然后将梯度下降应用于新的损失,会发生什么。
那会有用吗?可能这是一个愚蠢的问题,在某个地方肯定存在限制。如果你能评论一下,我会很高兴。
谢谢和最诚挚的问候, -G。
答案 0 :(得分:0)
它不适用于总和。你会得到更大的损失,因此更大,可能是错误的渐变。在对梯度求平均值的同时,您可以获得权重必须采用的方向的平均值,以便最小化损失,但每个方向都是针对精确损失值计算的方向。
您可以尝试的一件事是独立运行塔,然后不时平均权重,收敛速度较慢,但每个节点的处理速度更快。