神经网络是计算密集型的,通常需要几个小时或几天的时间来训练。数据并行是一种随着工作者(如GPU)数量的增加而提高训练速度的方法。在每个步骤中,训练数据被分割成小批,分布在工作者之间,每个工作者计算自己的梯度更新集,并应用于所有副本。All-reduce是TensorFlow、PyTorch和Horovod中默认的跨设备通信操作,在每个迭代中收集梯度,并在多个工作器上求和。每次训练迭代中的通信都会利用大量的网络带宽。
为了提高GPU集群上的数据并行训练的速度,顶点AI推出了Reduction Server,这是一个在谷歌开发的更快的梯度聚集算法,将所有还原操作的算法带宽提高一倍。Reduction Server使分布式ML训练作业在运行时能有效利用带宽(吞吐量增加2倍),并更快地完成训练作业。这种减少训练时间的好处可以导致总运营成本的降低。此外,用户可以在顶点人工智能上实现还原服务器,而无需改变任何底层训练代码。
这篇博文介绍了Reduction Server的概念,并演示了谷歌云客户如何在顶点AI上利用这一功能来改善他们的训练时间。在下一节中,我们将深入研究技术细节,并检查all-reduce,这是分布式数据并行训练的一个关键操作。
全重现
All-reduce是一个集体操作,将所有worker中的目标数组(如sum、multiply、max或min等操作)减少到一个单一的数组,并将结果返回给所有worker。它已被成功地用于分布式神经网络训练场景,其中来自多个工作器的梯度需要被求和并传递给所有工作器。图1说明了all-reduce的语义。
有许多方法可以有效地实现全还原。在传统的全还原算法中,工作者通过通信链路的拓扑结构(如环形或树形)相互通信和交换梯度。环形全还原是一种带宽最优的全还原算法,其中工作者形成一个逻辑环,只与他们的近邻通信。然而,即使是带宽最优的全还原算法仍然需要在网络上传输两次输入数据1。
还原服务器
Reduction Server是谷歌公司开发的一种更快的GPU全还原算法。有两种类型的节点:工作者和还原者。工人运行模型副本,计算梯度,并应用优化步骤。还原器是轻量级的CPU虚拟机实例(比GPU虚拟机便宜得多),专门用于聚合工人的梯度。图2展示了有4个工作者和一个分片的还原器集合的整体架构。
每个工作者只需要在网络上传输一份输入数据的副本。因此,Reduction Server有效地将需要传输的数据量减半。还原服务器的另一个优点是,它的延迟不取决于工作者的数量。还原服务器也是无状态的,它只还原梯度并与工作者分享。
下表总结了Reduction Server与基于环形和树形的全还原算法相比,每个工作者的数据传输量和延迟,有n个工作者。
Reduction Server为许多使用NCCL进行分布式GPU训练的框架(如TensorFlow和PyTorch)提供了透明的支持,并且在Vertex AI上可用。这使得ML从业者可以使用Reduction Server,而不需要改变训练代码。
性能优势
图3显示了使用Reduction Server对MNLI数据集上的TensorFlow模型园的BERT模型进行微调时的性能提升,每个GPU工作节点配备了8个NVIDIA A100 GPU。在这个实验中,使用20个还原器节点,训练吞吐量增加了75%。其他大型模型也受益于还原服务器,吞吐量增加,训练时间减少。
总结
在这篇博客中,我们介绍了顶点AI上的Reduction Server是如何在分布式数据并行的GPU训练中提供重大改进的,并为ML从业者实现从传统的全还原到Reduction Server的透明过渡。
要了解更多,请访问我们的文档,以获得深入的信息,帮助你获得一些关于顶点AI上的Reduction Server的实践经验。
1.如果目标数组大小有n个元素,每个工作者在全还原操作期间需要通过网络发送和接收2(n-1)个元素。
[
相关文章
使用顶点AI上的还原服务器优化训练性能
了解如何配置利用Reduction Server的Vertex训练作业,以优化分布式训练的带宽和延迟,从而为S...
阅读文章



