秦智勇
摘要:
建立在大型數据集上的现代神经网络体系结构在各个应用领域取得不错的效果,虽然硬件设备性能不断提升,但是在一台机器上进行网络模型训练可能会花费很长时间。本文介绍了如何使用并行计算从而实现神经网络的高效分布式训练,以望为之后的研究者提供一定的参考。
关键词:
分布式;计算并行;数据并行;模型并行
中图分类号:
TP183
文献标识码:
A
文章编号:
1672-9129(2020)15-0032-01
分布式机器学习的目标是使机器学习算法通过使用计算机集群来从大数据中训练具有良好性能的大模型,为此,需要将计算任务,训练数据和模型放入分布式内存中,在匹配硬件资源和数据模型规模后,进行分布式训练,分布式训练可分为并行计算,数据并行模式和模型并行模式。
1计算并行分布式训练
计算并行分布式训练中每个节点都有权读取和写入内存中的数据,因此在这样的系统中实现分布式学习算法,我们不必特殊处理数据和模型,我们只需要关注如何使用适当的优化算法即可,这种工作节点共享内存的并行模式称为计算并行。
2模型并行分布式训练
如果训练的模型太大而不能存储在本地存储中,则需要对其进行切割划分,此时可以根据数据的纬度将数据划分在不同的工作节点上,对于高度非线性的神经网络,每个工作节点都无法独立地进行参数形成和更新,需要与其它节点相结合。
2.1线性模型。根据维度将模型和数据均匀划分到不同的工作节点,采用坐标下降法对每个工作节点进行优化,对于线性模型,每个变量的目标函数是可分离的,即特定维度的更新或梯度参数更新仅取决于与目标函数值相关的一些全局变量,而不取决于其他维度的参数值。要更新本地参数,我们只需要对这些全局变量进行通信而无需与其他节点的模型参数通信。
2.2神经网络。由于神经网络的强非线性,参数之间的依赖性远远大于线性模型。它不能轻易共享,我们也不能使用诸如线性模型之类的功能来通过中间全局变量并行实现高效模型。但是,神经网络的层级也给并行模型带来了一些便利,例如,可以通过神经网络的网络层进行横向或纵向的划分,通信内容和通信量因不同的分区模式而有所不同。
2.3横向按层划分。当神经网络的层数很多时,有一种简单且有效的并行方式是将整个神经网络横向地划分为k个部分,每个工作节点承担一层或多层计算任务,如果某个计算节点没有计算所需的信息,它可以向其他工作节点请求相应的信息,在横向划分模型时,我们通常会结合每一层中的节点数,以尽可能地平衡每个工作节点的计算量。
2.4纵向跨层划分。除了宽度之外,神经网络还具有深度。因此,除了横向划分网络层之外,还可以纵向划分网络层,即每个层的包含的节点可以分配给不同的工作节点,工作节点存储并更新这些纵向的网络层参数,在正向和反向传输中,当需要激活函数和子误差传播值时,可以向对应的工作节点来请求更新这些参数,横向划分网络和纵向划分网络在传输量和传输时间上存在着一定的差异,在真实的应用场景中,可以根据具体的网络结构选择合适的网络划分方法,一般情况下,当每一层的神经元数量少,层数很大,可以考虑横向分割网络。相反,如果每层中的神经元数量大而层数少,则应考虑纵向划分网络。如果神经网络层的数量和每层中神经元的数量大,则可以需要将横向划分网络与纵向划分网络相结合,以发挥网络划分的最佳性能。
2.5模型随机并行。由于横向和纵向划分网络的成本太大,为此提出了针对大型复杂神经网络的随机分割方法,它的主要原理是发现神经网络具有一定程度的冗余度,可以找到更小的子网络在效果差不多的情况下代替原有网络,这样就可以根据一定的条件在原始网络中选择骨架网络,并将其存储在每个工作节点中作为公共子网。除了骨架网络,每个工作节点还随机选择一些其他节点来存储信息来代表骨架网络之外的信息,定期地随机选择骨架网络,并且每次选择的网络节点也是随机的。
3数据并行
3.1参数平均。数据并行是参数平均最简单有效的方法,它的主要步骤分为以下五步:第一步是根据模型的网络结构随机初始化网络模型的参数。第二步是将当前参数集分配给每个工作节点。第三步,在每个工作节点训练部分的数据集。第四步,将每个工作节点的参数平均值视为全局参数值。第五步,如果训练不涉及训练数据,则从步骤二继续。在该方法中,出去计算成本,额外的成本非常大,网络通信和同步的成本可以抵消采用该方法带来的效率优势,因此,参数平均方法的平均周期通常大于1。如果平均周期太长,则每个节点之间得到的参数相差十分大,均值后的模型效果非常差。。
3.2异步随机梯度下降。如果参数同步更新,则参数均值方法相当于基于更新的数据并行化。非同步的参数均值方法即是异步随机梯度节点可以花更多的时间计算数据,而不必等待中间参数计算的完成,这可以增加分布式系统的数据吞吐量。异步随机梯度下降的节点可以更快地从其他节点接收信息,异步随机梯度下降也有一些缺点。当节点计算梯度值并将其与全局参数向量合并时,参数已刷新几次,此时的参数可能是无效的,异步机器梯度下降的简单实现可能会导致非常严重的梯度值过时。
3.3分步式异步随机梯度下降。分步式异步随机梯度下降没有用中心参数服务器,而是使用点对点参数传递来学习数据之间的关系并进行更新,压缩更新量如此之大,从而使网络的通信规模减少了三个数量级,具有经济的优势。这种方法的缺点是在训练开始时收敛可能会出现问题,并且缩减和量化过程这将花费一些时间和引入了其他需要检查的参数。。
4总结
根据不同的应用场景采取相应的分布式并行模式以减少训练时间、降低训练成本和提高训练效果是基于分布式的神经网络训练研究的重难点。本文介绍了基于分布式的神经网络训练的相关原理和方法,如何更好地发挥分布式训练的优点还需要研究者们进行进一步的探究。
参考文献:
[1]深度学习框架Tensorflow的数据并行优化调度研究[D].黄文强.电子科技大学;2019
[2]深度学习框架TensorFlow的高效分布式并行算法研究[D].何马均.电子科技大学;2019
[3]基于HPC环境的深度学习并行优化[J].陈孟强,颜子杰,叶彦,吴维刚.计算机工程与科学.2018(S1)