神经网络和机器学习关系(基于神经网络的机器学习方法)

责任编辑:电脑技术交流网 发布时间:2023-02-20 13:41

本文授权转自:亚太网络研究APNet 王帅

近年来,人工智能技术在许多应用领域都取得了突破性进展。而在这成功的背后依靠的则是庞大的计算力和海量的训练数据。面对日益复杂的计算任务,分布式机器学习被认为是必然的发展趋势,成为业界的研究热点。

作为网络领域的研究人员,如何对分布式机器学习系统进行有效的网络优化,加快分布式机器学习训练速度,值得我们深入思考。今天,我们就来聊一聊分布式机器学习系统中的网络相关问题。

目录

1. 网络通信在分布式机器学习系统中的重要性

2. 参数同步架构/算法

3. 网络传输协议

4. 物理网络拓扑

1、网络通信在分布式机器学系统中的重要性

大规模分布式机器学习普遍使用的分布式策略是将训练数据分发到不同的工作机器上,然后这些工作机器并行地使用本地的训练数据计算模型更新。通过工作机器之间周期性地同步各自的计算结果,使模型达到收敛。这种策略称为数据并行(Data Parallelism),被TensorFlow、PyTorch和MXNet等主流机器学习框架广泛采用。

数据并行(来源于网络

按照同步时间的差异,参数同步可以分为整体同步并行(Bulk Synchronous Parallel, BSP),异步并行 (Asynchronous Parallel, ASP) 和延时同步并行 (Stale Synchronous Parallel, SSP)。由于BSP具有最优的收敛效果,所以在生产实践中被广泛采用。

BSP同步要求各计算节点在完成本地计算后与其他节点进行参数同步,在同步完成之后才可以开始下一轮迭代。随着机器学习模型的不断增大和GPU等计算引擎的飞速发展,参数同步不但数据量越来越大,而且越来越频繁。因此,网络通信成为限制分布式机器学习系统扩展的最大瓶颈。

网络通信开销(来源于[1])

2、参数同步架构/算法

参数同步架构对参数同步时间以及系统扩展性有非常重要的影响。目前,大规模分布式机器学习系统广泛采用的参数同步包括:参数服务器(Parameter Server, PS)架构和环式(Ring)架构。PS架构是一种中心化的架构设计。

PS架构(来源于[2])

PS架构下,各节点有参数服务器和工作机器之分:工作机器只负责计算模型梯度,彼此不会互相通信;参数服务器则负责汇总来自不同工作机器的模型梯度,并对原有参数进行更新,然后下发到工作机器上以便开始下一次迭代。

需要说明的是,参数服务器和工作机器可以同时存在于同一个节点上,也就是说,该节点既负责计算模型梯度,又负责梯度汇总。

PS架构具有很多优势,如部署简单,具有良好的扩展性和鲁棒性,等等。但也存在一些问题。一般情况下,参数服务器数目远少于工作机器,导致参数服务器端极易成为网络瓶颈。此外,参数服务器的引入也增加了系统的硬件成本。

Ring架构则是一种去中心化的架构设计,在高性能计算领域广泛应用,后被引入到分布式机器学习中。

Ring架构(来源于[2])

Ring架构下,所有节点以环状排列,各节点仅与其前后两个相邻节点通信,通过相应的同步算法(如Ring AllReduce),可以实现快速地参数同步,避免产生中心化的通信瓶颈。

Ring架构下的同步算法将参数在通信环中依次传递,往往需要多步才能完成一次参数同步。在大规模训练时会引入很大的通信开销,并且对小尺寸张量(tensor)不够友好。

对于小尺寸张量,可以采用批量操作(batch)的方法来减小通信开销[3]。

大规模场景下,通过分层参数同步(Hierarchical Parameter Synchronization, HiPS)[4]将节点分成多组,逐层、并行地进行参数同步,从而降低通信延时带来的影响。分层参数同步在频频刷新的最短时间训练ImageNet的场景中被广泛采用,已经成为大规模训练不可或缺的优化技术[5,6,7]。

最近,针对PS架构,学术界也提出了许多优化方案。DAIET [8]提出借助可编程交换机实现网络内汇总(In-Network Aggregation, INA),将参数汇总的逻辑从专用的参数服务器转移到具有高吞吐的交换机。Parameter Hub [9]提出PBox,在中心化的PS上配备多块网卡,以将IO性能与内存带宽相匹配。

PBox架构(来源于[9])

3、网络传输协议

除参数同步架构外,网络传输协议对参数同步性能也具有重要的影响。尽管TCP在广域网中取得了巨大成功,但由于其在拥塞控制以及系统实现方面表现不足,不太适用于专用的分布式机器学习系统。

为改善其网络性能,远程直接内存访问技术(Remote Direct Memory Access, RDMA)被应用到分布式机器学习系统中来。

以TensorFlow为例,RDMA通道负责参数/梯度等数据传输,传统的gRPC通道只负责图分发等控制命令的传输,而且,随着GDR(GPUDirect RDMA)这一技术的不断成熟,充分利用零拷贝(zero-copy)特性,减少数据拷贝次数,大幅降低GPU间的传输延迟。相比于传统的gRPC传输,采用GDR后,端到端的性能提升可多达2.43倍[10]。

GDR(来源于网络)

此外,MPI RDMA在工业界中也得到了广泛应用。MPI在高性能计算领域应用普遍,它提供了AllReduce原语,并且对其底层实现做了多种优化。对于分布式机器学习任务来说,参数同步使用AllReduce原语可以充分利用MPI优化带来的优势。

由于PCIe带宽逐渐成为多GPU通信的瓶颈,NVIDIA推出了一种新的总线及其通信协议NVLink,用于GPU/GPU、GPU/CPU间的连接通信。NVLink可以极大提高带宽并减少延迟。

DGX-1V服务器(来源于NVIDIA官网)

NVLink性能(来源于NVIDIA官网

NCCL(Nvidia Collective multi-GPU Communication Library)是NVIDIA推出的多GPU集合通信库。NVIDIA对其做了很多优化,NCCL采用Ring式通信架构,并且可采用PCIe、NVLink、Socket、RDMA作为底层通信协议。NCCL 2已经支持多机多卡通信。

NCCL(来源于NVIDIA官网)

此外,Horovod、Gloo也为主流的机器学习框架提供了底层通信支持。Horovod以插件的形式为TensorFlow和MXNet提供了Ring AllReduce的具体实现。Gloo为PyTorch提供了多种高效的AllReduce实现。工业界中的Ring架构多采用Horovod作为底层的通信框架。

 

4、物理网络拓扑

参数同步架构指逻辑架构,而非底层物理网络拓扑。如何将逻辑架构映射到底层物理网络拓扑,实现高效的通信性能,是一个非常值得探索的问题。

Fat-Tree是数据中心之中广泛采用的网络拓扑。然而Fat-Tree并非专门为分布式机器学习设计的,在实际应用时会产生很多问题。

Fat-Tree 拓扑(来源于[11])

Fat-Tree是以交换机为中心(Switch-Centric)的拓扑结构,通过相邻层交换机间的富连接构造无阻塞网络。服务器仅通过一张网卡接入到网络中,导致节点网络带宽受限。相比之下,BCube通过多层交换机构建网络,每个服务器通过多张网卡与各层交换机均直接连接。这种结构称为以服务器为中心(Server-Centric)的网络拓扑。

BCube拓扑(来源于[11])

下表列出了基于mesh的同步算法(即参数服务器和工作机器co-host的PS架构)、基于ring的同步算法和分层同步算法HiPS在两种拓扑下的理论参数同步时间。BCube下,由于服务器往往配备多张网卡,可以并行地进行参数更新,参数同步时间可以大幅缩短[1]。

理论参数同步时间及符号注解(来源于[11])

而且在实际环境中,由于ECMP哈希碰撞问题,Fat-Tree的同步时间会进一步增加,在RDMA场景下还会触发更多的PFC暂停帧,影响网络的整体性能。

BML是分层同步算法在BCube拓扑上的应用,根据在具有9台服务器的测试床上的实验结果,相比于Fat-Tree, BML可以将VGG-19模型的端到端训练时间减少多达52.1% [2]。

VGG-19训练时间(来源于[2])

在实际生产中,通常多个训练任务通过时分/空分复用的方式共享训练集群。当多个训练任务共享集群资源时,单个任务使用的服务器往往通过不规整的网络拓扑连接。在这种情况下,现有算法由于与底层网络解耦,性能会受到影响。因此,如何识别底层拓扑结构,并自动适配该拓扑下最高效的参数同步算法,仍是一个需要探索的问题。

参考文献

[1] Hao Zhang, Zeyu Zheng, Shizhen Xu, Wei Dai, Qirong Ho, Xiaodan Liang, Zhiting Hu, Jinliang Wei, Pengtao Xie, Eric P. Xing. Poseidon: An Efficient Communication Architecture for Distributed Deep Learning on GPU Clusters. ATC 2017.

[2] Songtao Wang, Dan Li, Yang Cheng, Jinkun Geng, Yanshu Wang, Shuai Wang, Shutao Xia, Jianping Wu. BML: A High-performance, Low-cost Gradient Synchronization Algorithm for DML Training. NeurIPS 2019.

[3] Shaohuai Shi, Xiaowen Chu, Bo Li. MG-WFBP: Efficient Data Communication for Distributed Synchronous SGD Algorithms. INFOCOM 2019.

[4] Jinkun Geng, Dan Li, Yang Cheng, Shuai Wang, Junfeng Li. HiPS: Hierarchical Parameter Synchronization in Large-Scale Distributed Machine Learning. NetAI 2018.

[5] Xianyan Jia, Shutao Song, Wei He, et al. Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes. arXiv 2018.

[6] Hiroaki Mikami, Hisahiro Suganuma, Pongsakorn U-chupala, Yoshiki Tanaka and Yuichi Kageyama. Massively Distributed SGD: ImageNet/ResNet-50 Training in a Flash. arXiv 2018.

[7] Chris Ying, Sameer Kumar, Dehao Chen, Tao Wang, Youlong Cheng. Image Classification at Supercomputer Scale. arXiv 2018.

[8] Amedeo Sapio,Ibrahim Abdelaziz,Abdulla Aldilaijan,Marco Canini,Panos Kalnis. In-Network Computation is a Dumb Idea Whose Time Has Come. HotNets 2017.

[9] Liang Luo, Jacob Nelson, Luis Ceze,Amar Phanishayee, Arvind Krishnamurthy. Parameter Hub: a Rack-Scale Parameter Server for Distributed Deep Neural Network Training. SoCC 2018.

[10] Bairen Yi, Jiacheng Xia, Li Chen, Kai Chen. Towards Zero Copy Dataflows using RDMA. SIGCOMM Posters and Demos 2017.

[11] Shuai Wang, Dan Li, Jinkun Geng, Yue Gu, Yang Cheng. Impact of Network Topology on the Performance of DML: Theoretical Analysis and Practical Factors. INFOCOM 2019.

关注公众号:Clustar2018 ,了解更多精彩内容。

,