依赖随机梯度下降的并行ML模型?



我一直在阅读不同的NLP模型,如word2vec和GloVe,以及如何将它们并行化,因为它们大多只是点积。然而,我对此有点困惑,因为计算梯度&更新模型取决于参数/向量的当前值。如何以并行/异步方式完成此操作?如何使用每个线程随机计算的梯度来知道何时更新全局参数?

一般来说,在节点之间进行一些延迟/漂移的近似操作不会造成太大的伤害。早期的两篇关键论文是:

"HOGWILD !并行化的无锁方法随机梯度下降">

作者:Benjamin Recht, Christopher Re, Stephen Wright, Feng Niu

https://papers.nips.cc/paper/2011/hash/218a0aefd1d1a4be65601cc6ddc1520e-Abstract.html

摘要:随机梯度下降算法(SGD)是一种流行的算法可以在各种机器上实现最先进的性能学习任务。几位研究人员最近提出了一些方案并行SGD,但都需要破坏性能的内存锁定和同步。这项工作旨在展示使用新颖的理论可以实现SGD的分析、算法和实现没有任何锁定。我们提出了一个名为HOGWILD的更新方案!哪一个允许处理器访问共享内存重写彼此的工作。我们显示当关联优化问题是稀疏的,这意味着大多数梯度更新修改小部分的决策变量,那么HOGWILD!达到一个接近最优的收敛速度。我们通过实验证明HOGWILD !优于使用顺序锁定的替代方案级。

"大规模分布式深度网络">

https://papers.nips.cc/paper/2012/hash/6aca97005c68f1206823815f66102863-Abstract.html

最近在无监督特征学习和深度学习方面的工作有表明能够训练大型模型可以显着提高表演在本文中,我们考虑了深度训练问题拥有数十亿个参数的网络,使用数以万计的CPU内核。我们开发了一个叫做DistBelief的软件框架能否利用拥有数千台机器的计算集群进行训练大的模型。在这个框架内,我们开发了两种算法对于大规模分布式训练:(i) Downpour SGD, an异步随机梯度下降程序支持一个大模型复制品的数量,以及(ii)喷砂器,一个框架支持多种分布式批量优化程序;包括L-BFGS的分布式实现。倾盆大雨SGD和喷砂器L-BFGS增加了深度网络的规模和速度培训。我们已经成功地用我们的系统训练了一个深度网络比以往文献报道的大100倍,达到在视觉对象识别ImageNet上的最先进性能任务有1600万图像和21000个类别。我们展示了这些同样的技巧显著地加速了更多的训练中等规模的深度网络用于商业语音识别服务。尽管我们关注并报告了这些方法的性能当应用于训练大型神经网络时,底层算法适用于任何基于梯度的机器学习算法。

最新更新