本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。随着训练数据量的增加和深度神经网络(DNN)复杂性的增加,GPU集群等分布式计算环境被广泛采用以加速DNN的训练。分布式计算网络在机器学习中的瓶颈在于节点间数据传输的效率,那么如何在这种网络下高效地进行AI训练呢?2018年,中国香港浸会大学异构计算实验室与MassGrid合作,通过研究提出了一种可用于低带宽网络全局Top-k稀疏性的分布式同步SGD算法,并通过实验证明可以用于低带宽网络。它还可以有效地进行人工智能训练。目前实验结果及相关论文已被ICDCSworkshop收录。数据并行分布式同步随机梯度下降(S-SGD)方法是训练大规模神经网络的常用优化器之一。与单节点SGD相比,S-SGD将工作负载分配给多个计算节点以加快训练速度,但也引入了在每次迭代中交换模型参数或梯度的通信开销。例如,假设有P个节点使用S-SGD来训练DNN模型。在每次迭代中,所有计算节点都会使用不同的mini-batch数据并行计算模型的梯度。然后,平均每个节点的梯度来更新模型,这引入了较大的通信开销。由于计算节点的加速器(如GPU、TPU)的计算能力增长远快于网络速度,网络通信性能通常成为训练的性能瓶颈,尤其是在通信计算比较高的情况下。许多大型IT公司使用40/100GbpsIB或以太网等昂贵的高速网络来减轻通信压力,但仍有许多研究人员和小型公司只能使用通过1Gig-等低带宽网络连接的消费级GPU。以太网。为了克服通信的性能瓶颈,可以通过使用更大的mini-batch来增加工作量来降低通信与计算的比率,或者减少每个通信过程中所需的通信量:在一个另一方面,已经提出了许多large-batchSGD技术,提出了一些优化策略来提高mini-batch而不会损失模型精度。另一方面,研究人员还提出了梯度稀疏化、量化和压缩等方法,可以在不影响收敛速度的情况下,显着减少交换梯度的次数以减少通信量。在模型/梯度压缩技术中,Top-k稀疏化是关键方法之一,它可以将每个节点的梯度稀疏到原来的千分之一左右(即99.9%的梯度置零而不传输这些零值)。Top-k稀疏化是一种比较有效的梯度压缩方法,相关研究已经通过实验和理论论证进行。Top-ksparseS-SGD只需在每次迭代中传输少量梯度进行平均,而不影响模型收敛或精度。然而,稀疏化后的非零值梯度所在的索引位置在不同的计算节点上是不一致的,这使得高效的稀疏梯度聚合成为一个挑战。在密集梯度上使用基于环的AllReduce方法(DenseAllReduce)的通信复杂度为O(P+m),其中P是计算节点的数量,m是参数/梯度的数量。在Top-k稀疏化中,假设每个节点的梯度密度为ρ,即k=ρ×m,因为每个节点的非零值对应的索引在不同的节点是不一致的。因此,每次通信需要传输2k个值(梯度值和索引)。使用AllGather聚合这2k个值(简称TopKAllReduce)需要O(kP)的通信复杂度。在扩展到大规模集群(即P很大)时,即使很小的k仍然会产生显着的通信开销。Top-k稀疏化的主要思想是基于绝对值越大的梯度对模型收敛的贡献越大。因为在Top-k算法中,即使P个计算节点聚合后可以产生k×P个非零值梯度,但是k个梯度值的绝对值对于模型更新来说更为重要。基于这一观察,香港浸会大学异构计算实验室和MassGrid的研究人员提出了一种有效的Top-k稀疏化方法来解决TopKAllReduce的低效率问题。具体来说,根据不同节点梯度的绝对值选取全局Top-k(简称gTop-k)梯度。在本文中,研究人员主要讨论分布式S-SGD使用AllReduce应用gTop-k稀疏化,但它也适用于基于参数服务器的分布式S-SGD。gTop-k可以很好的利用树结构从所有节点中选出全局的top-k值,称之为gTopKAllReduce,同时通信复杂度从原来的O(kP)降低到O(klogP)。表1总结了不同梯度聚合方法的通信复杂度。实验研究和发表论文的主要贡献如下:研究人员观察到Top-k稀疏化的聚合结果在更新模型之前可以进一步稀疏化。在分布式SGD上提出了一种称为gTop-kS-SGD的高效全局Top-k稀疏化算法,用于加速深度神经网络的分布式训练。gTop-kS-SGD已经在主流深度学习框架PyTorch和MPI上实现,代码和参数配置将在GitHub上开源。在多种神经网络和数据集上进行了实验验证。实验结果表明,gTop-kS-SGD显着提高了系统在低带宽网络GPU集群(MassGrid矿机集群)上的扩展效率。MassGrid分布式计算网络采用虚拟化技术,将全球可用的计算资源虚拟化为通用计算设备,可快速部署连接组网进行大规模分布式计算,具有成本低、使用灵活等优点。在本次实验中,MassGrid提供了一个矿机集群,其配置如下:训练方法gTop-k的关键思想是在Top-kS-SGD中,每个节点本地选择k个梯度值,然后所有节点被聚合以获得它。研究人员发现并非所有(非零元素的数量为和)都有助于模型收敛。具体来说,它可以进一步稀疏化,使得每次模型更新只需要较少数量的非零梯度。也就是说,可以在保证模型收敛速度的同时,进一步选择top-k绝对值梯度(表示为)来更新模型。一个4节点的例子如图1所示。△图1在Top-k算法中进一步从uptok×P个非零值中选择k个梯度例子来验证比较对收敛速度没有影响。通过训练ResNet进行比较。实验结果如图2所示。△图2从Top-k算法中选取k个梯度进行模型更新的收敛结果对于来自不规则索引的AllReduce操作,效率非常低。特别是P对通信性能的影响。而新提出的高效算法的主要目的是减轻变量P对通信开销的影响。因为最后只需要选择k个值来更新模型,所以在通信过程中每次只需要传输k个非零值。使用树结构进行二对二通信,每次只传输k个非零值,接收端会有2k个值,下次传输也只传输k个值,接收端会从2k个值中选出k个值传递给下一个接收者。由于二对二的通信可以同时进行,对于P个节点来说,只需要进行logP轮的通信。8个节点的例子如图3所示。从图3可以看出,第一个节点在每一轮通信中都会收到来自另一个节点的k个非零元素,最后一轮通信结束后,第一个节点将选择k个非零元素然后广播给其他节点,所以整体的通信开销为:2αlogP+4kβlogP。当机器规模P变大时,gTop-k可以保持高可扩展性。该算法的伪代码如图4所示。△图3对于8个节点,总共需要进行3轮通信,每轮通信只传输k个非零值△图4gTopKAllReduce的实验结果算法伪代码实验在两台矿机环境下进行,每台矿机使用NvidiaP102-100显卡。我们首先验证gTop-kS-SGD的收敛性。然后,比较了三种S-SGD算法的训练效率,即基于密集梯度的S-SGD、Top-kS-SGD和gTop-kS-SGD。实验的具体硬件配置如表二所示。实验中使用的神经网络配置如表III所示。gTop-k的收敛性能总体而言,三种不同类型的DNN在不同数据集上的收敛结果表明,研究人员提出的gTop-kS-SGD在训练过程中不会损害模型性能。△图5gTop-kS-SGD收敛性能gTop-kScalability与S-SGD和Top-kS-SGD相比,在32个计算节点的集群环境下,gTop-kS-SGD优于S-SGDSGD比Top-kS-SGD快6.7倍,平均快1.4倍。不同模型和不同节点数的加速比如图6和表IV所示。△图6不同节点数的扩展效率比较△表7不同模型的扩展效率与局部稀疏化时间(tcompr.)和通信时间(tcommu.)的比较。结果如图11所示。一方面,通信开销远大于VGG-16和AlexNet模型的时间细分计算。因为VGG-16和AlexNet有3个全连接层,参数量大,计算速度也比较快。这些也反映了图6中S-SGD的低效缩放,即使使用gTop-k稀疏化也是如此。另一方面,通信和稀疏化的时间远小于使用ResNet20和ResNet-50的计算时间,这表明通信与计算的比率较低,因此即使在低数据集上缩放效率也高达80%带宽网络。此外,应该注意的是,梯度稀疏化所花费的时间与VGG-16和AlexNet模型的计算时间相当。主要原因是GPU上的Top-k选择效率低下,并且在SIMD架构上高度可并行化可能并非微不足道。研究人员将此视为未来的优化方向。实验总结分布式同步随机梯度下降(S-SGD)已广泛用于训练大规模深度神经网络(DNN),但它通常需要计算工作者(例如GPU)之间非常高的通信带宽来迭代交换梯度。最近,已经提出了Top-k稀疏化技术来减少worker之间要交换的数据量。Top-k稀疏化可以在不影响模型收敛的情况下将大部分梯度归零。通过对不同DNN的大量实验,本研究证实gTop-kS-SGD具有与S-SGD几乎相同的收敛性能,泛化性能仅略有下降。在扩展效率方面,研究人员在与1Gbps以太网互连的32台GPU机器集群(MassGrid矿工集群)上评估了gTop-k。实验结果表明,该方法的缩放效率是S-SGD的2.7-12倍,是现有Top-kS-SGD的1.1-1.7倍。门户论文原文链接:https://arxiv.org/abs/1901.04359更多MassGrid的应用场景请查看:www.massgrid.com
