分布式入门,怎样用PyTorch实现多GPU分布式训练(4)
我们看一下更新方程的首次更新: 上面的第 2 点和第 4 点保证每个初始权重和梯度都是同步的。显然,它们的线性组合也是同步的(λ 是常数)。以后的所有更新都是类似的逻辑,因此也是同步的。 性能对比 所有分布式算法的最大瓶颈就是同步。只有当同步时间显著小于计算时间的时候,分布式算法才是有益的。让我们在标准 SGD 和同步 SGD 之间做一个简单的对比,来看一下什么时候后者是比较好的。 定义:我们假设整个数据集的规模为 N。网络处理大小为 B 的 mini-batch 需要花费时间 Tcomp。在分布式情况下,all-reduce 同步花费的时间为 Tsync。 对于非分布式(标准)SGD,每个 epoch 花费的时间为: 对于同步 SGD,每个 epoch 花费的时间为: 因此,对于分布式环境,为了与非分布式环境相比有显著的优势,我们需要满足: 我们可以调整影响上述不等式的三个因子,从分布式算法中得到更多的好处。
本文清晰地介绍了深度学习环境中的分布式计算的核心思想。尽管同步 SGD 很流行,但是也有其他被频繁使用的分布式算法(如异步 SGD 及其变体)。然而,更重要的是能够以并行的方式来思考深度学习方法。请注意,不是所有的算法都可以开箱即用地并行化,有的需要做一些近似处理,这破坏了原算法给出的理论保证。能否高效处理这些近似,取决于算法的设计者和实现者。 原文地址: https://medium.com/intel-student-ambassadors/distributed-training-of-deep-learning-models-with-pytorch-1123fa538848 【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】 戳这里,看该作者更多好文 【编辑推荐】
点赞 0 (编辑:ASP站长网) |