【发布时间】:2021-02-19 17:08:25
【问题描述】:
我一直在阅读不同的 NLP 模型,例如 word2vec 和 GloVe,以及如何将它们并行化,因为它们大多只是点积。但是,我对此有点困惑,因为计算梯度和更新模型取决于参数/向量的当前值。这是如何并行/异步完成的?您如何知道何时使用每个线程随机计算的梯度来更新全局参数?
【问题讨论】:
标签: parallel-processing nlp word2vec
我一直在阅读不同的 NLP 模型,例如 word2vec 和 GloVe,以及如何将它们并行化,因为它们大多只是点积。但是,我对此有点困惑,因为计算梯度和更新模型取决于参数/向量的当前值。这是如何并行/异步完成的?您如何知道何时使用每个线程随机计算的梯度来更新全局参数?
【问题讨论】:
标签: parallel-processing nlp word2vec
一般来说,做所有事情都是近似的,并且在节点之间有一些滞后/漂移并不会造成太大的伤害。两篇重要的早期论文是:
“HOGWILD!:一种无锁的并行化方法 随机梯度下降"
作者:Benjamin Recht、Christopher Re、Stephen Wright、凤牛
https://papers.nips.cc/paper/2011/hash/218a0aefd1d1a4be65601cc6ddc1520e-Abstract.html
摘要:随机梯度下降 (SGD) 是一种流行的算法 可以在各种机器上实现最先进的性能 学习任务。一些研究人员最近提出了一些方案 并行化 SGD,但都需要性能破坏内存锁定 和同步。这项工作旨在展示使用新颖的理论 SGD可以实现的分析、算法和实现 没有任何锁定。我们提出了一个名为 HOGWILD 的更新方案!哪一个 允许处理器访问共享内存的可能性 覆盖彼此的工作。我们表明,当关联 优化问题是稀疏的,这意味着大多数梯度只更新 修改决策变量的小部分,然后HOGWILD!达到一个 接近最优的收敛速度。我们通过实验证明 野猪!优于按订单使用锁定的替代方案 数量级。
“大规模分布式深度网络”
作者:Jeffrey Dean、Greg Corrado、Rajat Monga、Kai Chen、Matthieu Devin、Mark Mao、Marc'aurelio Ranzato、Andrew Senior、Paul Tucker、Ke Yang、Quoc Le、Andrew Ng
https://papers.nips.cc/paper/2012/hash/6aca97005c68f1206823815f66102863-Abstract.html
最近在无监督特征学习和深度学习方面的工作 表明能够训练大型模型可以显着提高 表现。在本文中,我们考虑了深度训练的问题 拥有数十亿参数的网络,使用数万个 CPU 核心。我们开发了一个名为 DistBelief 的软件框架, 可以利用拥有数千台机器的计算集群进行训练 大型模型。在这个框架内,我们开发了两种算法 对于大规模分布式训练:(i) Downpour SGD,一个 支持大的异步随机梯度下降过程 模型副本的数量,以及 (ii) Sandblaster,一个框架 支持多种分布式批量优化程序, 包括 L-BFGS 的分布式实现。倾盆大雨新元和 Sandblaster L-BFGS 都增加了深度网络的规模和速度 训练。我们已经成功地使用我们的系统来训练一个深度网络 比文献中先前报道的大 100 倍,并达到 ImageNet 上最先进的性能,一种视觉对象识别 具有 1600 万张图像和 21k 个类别的任务。我们表明这些 相同的技术显着加速了更多人的训练 用于商业语音识别的中等大小的深度网络 服务。尽管我们关注并报告了这些方法的性能 当应用于训练大型神经网络时,底层 算法适用于任何基于梯度的机器学习 算法。
【讨论】: