作为一种自适应步长随机梯度优化器,自2014年提出以来,Adam 算法便以其卓越的性能风靡深度学习领域。为了提高应用于训练大规模任务时的效率,该算法通常与同步随机梯度(Synchronous Stochastic Gradient,SSG)技术相结合,采用数据并行(data parallel)的方式在多台机器上执行。在本文中,我们称这一方法为 Sync-Adam。
本质上来讲,Sync-Adam 通过将一个 minibatch 内样本的梯度计算分布到多台机器上达到加速目的,因此通信十分频繁,并且随着并行机器数目增多,minibatch 内样本的数量也成比例增加,这种情况下,通常会损害最终得到的模型的性能。为解决基于 SSG 的 Adam 算法可扩展性差的难题,我们把目光投向了逐区块模型更新滤波(Blockwise Model-Update Filtering, BMUF)框架。
BMUF 是一种通信高效的通用分布式优化算法框架,于2016年由微软亚洲研究院语音组的研究人员提出并发表。该算法在多个并行工作机之间周期性同步模型更新信息,并与历史更新信息相结合提升全局模型性能。与基于 SSG 的算法相比,BMUF 具有通信频率较低、训练几乎线性加速、模型性能基本无损的特点。这一算法已经在工业界广泛用于大规模深度学习模型的训练。
本文中,我们采用 BMUF 框架并行化 Adam 算法,并在微软大规模 OCR 和语音产品数据集上进行了测试。实验结果表明,在大规模 OCR 任务中,BMUF-Adam 在多达64机的并行训练中几乎实现了线性加速的同时,基本没有模型性能损失,在32机大词汇量连续语音识别任务中也获得了类似效果。
接下来我们探讨如何采用 BMUF 框架赋能 Adam 算法,在大规模深度学习任务上成就不凡。
在基于 BMUF 的训练框架下,假设我们总共有 N 个并行工作机,一个工作机可以是一块或多块 GPU 卡,也可以是一个计算节点。给定一个包含 Nτ 个 minibatch 的训练数据子集,首先我们将这些数据均匀分布到 N 个并行工作机,每台工作机获得 τ 个 minibatch。从一个共同的初始模型 θ_(t-τ)^((init)) 开始,N 个工作机独立更新各自的局部模型 τ 步,得到 {θ_(t,1),θ_(t,2),…,θ_(t,N)},对局部模型取平均得到 θ ̅_t。这一过程称之为数据块内并行优化(Intra-Block Parallel Optimization, IBPO)。与直接将 θ ̅_t 作为全局模型不同,BMUF 技术将历史更新信息与当前更新信息结合,得到全局模型:
机器人公司 机器人应用 智能医疗 物联网 机器人排名 机器人企业 教育机器人 机器人开发 独角兽 消毒机器人品牌 消毒机器人 |