「专栏 | 大规模AI计算系统」概述

「专栏 | 大规模AI计算系统」概述

  • 发布时间:2020-10-21 11:40
  • 访问量:

【概要描述】大规模分布式系统在AI系统应用,越来越受到业界的重视,如何充分利用计算机集群以及专用的计算单位去构建高效的分布式计算系统,以及搭建配套的软件框架,是学术界和产业界一直努力的方向。

「专栏 | 大规模AI计算系统」概述

【概要描述】大规模分布式系统在AI系统应用,越来越受到业界的重视,如何充分利用计算机集群以及专用的计算单位去构建高效的分布式计算系统,以及搭建配套的软件框架,是学术界和产业界一直努力的方向。

  • 分类:研究院
  • 作者:
  • 来源:
  • 发布时间:2020-10-21 11:40
  • 访问量:
详情

近些年来,为了获取更好的精度以及通用性,AI的深度学习网络及数据集的规模也越来越大,这导致了AI计算的任务(主要是训练)也越来越重。图1是英伟达统计的近年来主要大规模网络训练的算力需求。自2015年ResNet提出以来,AI训练的算力需求增长了3000倍[1]。


图1 大型网络训练算力需求

 

OpenAI公司最新推出来的GPT-3没有统计在图1中,其包含了175billion的参数量,是当今最大的语言模型网络(计算量超越图1所有网络)。Lambda实验室估算了GPT-3所需的算力,大概要做3.114E23 FLOPS次计算,如果运行在单块V100 GPU服务器(28TFLOPS)上大概需要355年时间。如此庞大的计算规模,在实际操作过程中,不可能在单GPU上运行,而是需要许多GPU组成分布式集群去完成运算。实际上,GPT-3也是依赖于Microsoft构建的包括了上万块GPU板卡的计算机集群,完成的训练。

另外一方面,现在已有一些开源的或者商业化的软件框架可以方便快速部署支持单机多卡,多机多卡等结构的大规模分布式AI计算系统,比如:Tensorflow,Horovod,Oneflow等。这些软件框架主要区别在于采用的计算算法,分布式管理等方式的不同,带来的加速比以及实用性也各有差异。

总体而言,大规模分布式系统在AI系统的应用,越来越受到业界的重视,如何充分利用计算机集群以及专用的计算单元去构建高效的分布式计算系统,以及搭建配套的软件框架,是学术界和产业界一直努力的方向。

 

大规模AI系统的发展及挑战

 

当前大规模AI系统的发展主要有两个方向:scale-up, scale-out。Scale-up是指单节点的计算能力越来越强。Scale-out是指分布式的计算节点数量越来越大。

从scale-up角度来讲,无论是在工业界还是学术界,每年都有许多越来越强大的专用加速器被提出来。这些专用加速器的资源主要包括:高速存储,互联带宽,以及算力。而这些资源的规划,更多是从经验上去设计的,缺乏从应用角度以及实际部署环境(单节点,分布式多节点)角度去定性定量分析。目前在这一方面并没有看到太多相关的工作,这也是壁仞研究院重点研究的方向之一。

从scale-out角度来讲,随着计算节点的增加,网络结构也越来越大,其带来的并行度下降,信息交互时间变长,网络拥塞加重等问题也越来越明显。如何解决这些问题,提高整个系统的加速比,一直是业界不断努力的目标,对此,学术界和工业界做了许多方面的研究工作,以下是一些实例:

 

算法层面

 

从梯度下降算法的方面看,如果采用完全同步的SGD算法,能够保证训练的收敛性,但由于需要同步所有节点的参数梯度,系统的运算效率会受限于最差节点路径。而采用完全异步的SGD算法,不需要同步所有节点的参数梯度,系统的计算并行性及效率高,但训练网络的收敛性会变差。对此,为了平衡网络训练的收敛性与计算系统的效率,业界提出了许多基于SGD的变种,如:HogWild,Downpour SGD,Elastic Averaging SGD等[2][3][4]。

从batch size方面看,如果增加batch size的尺寸,可以增加单节点的计算时间,从而提高了平台的计算效率,但batch size变大会对训练的精度有一定的影响。如何平衡batch size的选择与网络的训练精度,又是业界的一个难点。在这一方面,尤洋博士提出了LARS和LARMB算法[5],其主要思想是根据每一层的梯度权重比,逐层适用不同学习率,在大尺寸的batch size下,几乎不损失网络的精度,获得了良好的效果。

从All-Reduce算法方面看,业界也提出了许多相应的算法,来减少节点间同步的步数以及信息传递量,提高分布式计算平台的计算效率。最经典的两种结构:Ring-base,及Halving-Doubling结构。

 

存储层面

 

从数据库方面看,由于AI计算过程中,有大量的向量(Vector)及矩阵(Matrix)操作,而数据的存储则有分层聚块的特点,商用的数据库(如:MySQL)并不能十分高效利用这些数据特点,因此,一些研究基于新的哈希表,key-value映射方式,数据操作的类数据库存储管理方式被提出[6]。

另一方面,对于大型网络的训练,由于数据规模大,运算节点的本地高速存储可能无法全部缓存权重参数,如何充分利用不同层次的存储缓存训练数据,也是一个非常有意义的研究方向。例如:百度研究院发表的文章[7]所描述的系统,建立了GPU,CPU,SSD三层存储结构,如图2所示。


图2 层次化参数服务器的存储结构

 

网络层面

 

一方面,传统的Fat-tree、clos结构的网络,在运行AI训练的All-Reduce等计算算法时,可能会对网络造成比较严重的拥塞问题,特别是对于多节点的大型网络。而对此做出专门优化的工作并不多,而今年(2020)在HPC顶会上阿里巴巴发表的EFLOPS系统[8],则是这方面研究的先行者。其针对Halving-Doubling All-Reduce算法,设计了BiGraph网络,以及Rank-Mapping算法,可以实现节点在每个主干switch上通路零竞争,极大缓解了网络拥塞问题。

另一方面,由于节点内部的高速接口技术的发展(比如:NVLink),及节点间新型网络传输技术的引入(比如:RDMA),如何充分规划利用好这些传输资源,构建高效的网络,本人认为也会是一个非常有意义的研究方向。但这方面的工作目前只看到了技术的应用,并没有看到太多系统性的分析工作。

除此之外,benchmark以及对系统的特征化定量分析,也是一个对产业发展非常有意义的研究方向。例如,阿里巴巴2019年在IISWC发表的论文[9],其建立了一套轻量级的framework,量化了GPU的算力、存储访问带宽,以及网络传输/PCIe/NVlink的带宽,并以量化的结果,去定量分析并计算各种深度学习网络在其大规模计算平台(PAI)训练过程中的各项时间消耗。其评估结果如图3所示。

 

图3 对不同网络的量化分析并计算。

注释:左边为实际运行结果,右边为量化计算结果。百分数代表总运行时间与真实时间的差距

 

小结

 

大规模AI计算系统是一个复杂而又宽泛的研究,其覆盖的内容远不止上述这些例子。我们希望通过本专栏的文章,更为系统和全面的探讨大规模AI计算系统的相关问题,未来将主要从以下几方面展开讨论:

·系统架构

·算法优化

·存储优化

·网络优化

·Benchmark及量化分析

·软件框架

·软硬件协同设计

 

本文希望能够起到抛砖引玉的作用,由于水平有限,文中存在不足的地方,请各位读者批评指正,也欢迎大家参与我们的讨论。

 

参考文献

 

[1]https://edisciplinas.usp.br/mod/resource/view.php?id=2939927

[2] Recht, B., et al. “Hogwild: A lock-free approach to parallelizing stochastic gradient descent., Advances in neural information processing systems(2011).

[3] Dean, J., et al. Large scale distributed deep networks. Advances in neural information processing systems(2012).

[4] Zhang, S., et al. Deep learning with elastic averaging SGD. Advances in neural information processing systems(2015).

[5] You, Y., et al. Large batch training of convolutional networks. arXiv preprint arXiv:1708.03888(2017).

[6] Li, M., et al. Scaling Distributed Machine Learning with the Parameter Server.” 1-1. 10.1145/2640087.2644155(2014).

[7] Zhao, W., et al. “Distributed Hierarchical GPU Parameter Server for Massive Scale Deep Learning Ads Systems.” arXiv preprint arXiv:2003.05622(2020).

[8] Dong, J., et al. “EFLOPS: Algorithm and System Co-Design for a High Performance Distributed Training Platform.” 2020 IEEE International Symposium on High Performance Computer Architecture(HPCA). IEEE, 2020.

[9] Wang, M., et al. “Characterizing deep learning training workloads on Alibaba-pai.” 2019 IEEE International Symposium on Workload Characterization(IISWC). IEEE,

 

 

近期文章

流体力学与物理导引神经网络

流体力学与物理导引神经网络

现代科学中众多复杂的关键应用依赖着对流体运动的精确预测。然而,由于流体力学方程数值求解的复杂性,基于传统数值方法的高分辨率长周期数值模拟运算量大且难以保证数值稳定性。本文将深入介绍PINN方法在流体计算中的应用并分析其与传统数值方法的差别。
2021-10-25
物理导引神经网络方法分析

物理导引神经网络方法分析

随着GPU能力的提升,支撑深度学习的软硬件生态得到了快速发展。通过深度学习来解决科学计算问题成了一种趋势,其中用深度学习来求解偏微分方程的方法也逐渐兴起。尤其引人注意的是一种称为物理导引神经网络的方法,其为科学计算领域注入了新的活力。
2021-10-18

联系我们

这是描述信息

招贤纳士

公众号二维码
这是描述信息

 版权所有   ©   上海壁仞科技有限公司   |    沪ICP备19047354号