关注百度智能云最新动态,了解产业智能化最新成果
在数据中心里,不管是数据集还是模型大小,近几年都呈现出爆炸式的增长。从数据的角度来看,数据已经非常接近100+Zettabytes量级,更可怕的是这里面数据,90%是在过去两年的时间内产生的,这也得益于智能手机、智能终端以及消费互联网的普及,使得每个终端每时每刻都在产生大量的数据。
另外,可以看到一个趋势是AI+HPC的融合,在科学领域可以看到它的数据集在不同计算领域里也呈现非常大的增长,比如正在经历的新冠病毒,如何分析它对人类细胞的攻击变化,可能需要几百T的数据量;比如做地球气候的模拟,每天会产生200+T的数据量,这些数据都是非常大的量级。对大数据更好的洞察和解析其本身内在的一些模式,由此引出需要更大的模型来处理和分析这么多的数据。
在过去三年,以Transformer为代表的语言模型,参数量已经提升了3个数量级。2020年,GPT-3有175B的参数量,达到了千亿级别。那这样的数据爆炸及模型爆炸趋势,对计算、通信和基础架构带来什么样挑战?
首先,以GPT-3为例,从计算量来看,做了一个相关的评测。根据英伟达的《Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM》论文中的Lower bounder of each iteration公式对GPT-3模型进行解析,可以发现GPT-3最小需要的计算量和batch size、sequence length、Transformer网络层数、hidden size以及词汇表的大小有关。在实际应用中,batch size可以选为1536,通过对Lower bounder of each iteration公式计算,一个迭代步骤的计算量大概是4.5ExaFLOPs。另外,在我们的实践中,大概需要有9万多次迭代,所以总的计算量430 ZettaFLOPS。
这个计算量有多大呢?以A100 312TFlops的FP 16计算能力来看,需要16000张A100算一天的规模,而且还没有考虑计算过程中效率的损耗。在实际训练中,这个大模型大概需要在1000多张卡,计算训练34天。
模型变化对底层的通信也有非常大的挑战。过去, AI模型并不大,可以在单卡GPU中放下一个模型,更多是做纯数据并行的加速、迭代。在这个过程中,只需要在模型后向时去做一次AllReduce通信,把梯度全部规约一遍。而且在很多实际优化中,通信的AllReduce有很大机率会和计算重叠,有很好的一个优化效果,所以这种模式是比较简单的。
当模型大时,需要加上Tensor模型并行,即一个GPU已经放不下大模型了,必须把模型切分开。它是把一个网络层切开,每个层的第一部分可以放在第一个GPU上,第二部分放在第二个GPU上。这样做给计算和通信都带来一个挑战,即每次前向及后向计算时,每走一遍网络都要做一次通信,通信量非常大。通信通常也是AllReduce类型,所以针对这种计算通信特点,最好把模型并行的划分限制在节点内,利用NVLink以及NVSwitch的高速带宽来缓解这一变化带来的通信压力。
如果模型大到一定程度时,单机8卡的规模也放不下一个模型,则需要做另外一种划分,即网络层之间的划分,是Pipeline并行。它的特点是在相邻划分点的前向及后向计算时都会有通信,通信的类型往往是P2P通信。每次P2P通信的计算量可能不是很大,但通信的点非常多,最好的情况是每一个GPU和相邻节点通讯时,有一个最近的网卡和它配合,这样可以运用到GPU DirectRDMA的功能。这种划分的挑战是需要多网卡来加速通信。
总之,建一个数据中心大概有三方面的挑战:第一,怎么设计一个可扩展的训练平台,它可以更好的支撑不同计算特征的业务,而且还要保证它的可扩展性,以及AI模型变化带来计算特征变化的预期;第二,一个分布式的集群系统非常复杂,它需要很长的部署过程,是否有一种方案可以快速部署搭建起来;第三,部署完之后,怎样让业务部门、云客户更快的使用起来,以及自身如何做到可持续的维护。
为解决上面三个挑战,英伟达推出了SuperPOD架构。大家知道英伟达做了很多AI研究,像自动驾驶、语言模型等,它也有自己的数据中心。结合过去四五年的时间,英伟达在数据中心的迭代、运维维护以及建设经验,总结出来一套方案叫DGX SuperPOD, DGX SuperPOD分为3块,一块有一套标准化的部署流程,可以帮你快速部署;第二块是架构有最优的设计,只要参考这个架构,就可以在AI训练里面达到更好的效果;第三块有一套完整的运营流程。DGX SuperPOD可以帮用户快速的搭建、使用和可持续运维。
对一般用户可以有两个选择,一种可以直接采用NVIDIA DGX SuperPOD架构搭建自己的平台,另一种正如今天的主题,百度参考了这样的架构建设X-MAN SuperPOD。用户可以通过百度智能云灵活、按需的使用SuperPOD架构,加速自己的AI业务。
英伟达基于自己的SuperPOD架构,建了集群NVIDIA Selene。NVIDIA Selene由560台8卡计算机组成,有4000多块A100 GPU,850台 InfiniBand交换机搭建的集群,存储搭配了14PB的分布式高性能存储,计算能力可以达到2.8 EFlops的AI计算能力。
这个集群的性能如何呢?在MLPerf 1.1版本中,以收敛到一定程度最快的时间来看,采用分布式训练的方式加速评测中的8个任务,包括目标检测、语音、推荐系统等,可以看到在所有的任务中,NVIDIA SuperPOD架构的时间是最快的,这也足以证明了NVIDIA SuperPOD架构的可扩展性和有效性。
SuperPOD架构的设计理念是什么呢?首先,它是一个模块化的理念,它由140台的A100服务器,即1120张A100 GPU组成,它的网络采用计算网络和存储网络相隔离的方式,计算由8张200G的InfiniBand搭建起来,存储由1个或2个200G的InfiniBand搭建起来,这样可以保证计算和存储互不干扰。另外,不管是计算网络还是存储网络,都是采用了一个胖树互联的方式,而且是无阻塞的,这样可以达到更好的扩展和低延时。而且里面可以用到InfiniBand的自适应路由,以及SHARP(Scalable Hierarchical Aggregation and Reduction Protocol)卸载的功能。
SuperPOD的可扩展单元简称为SU,每个SU有20台的规模。对于计算网来说,因为每台机器有8个200G的计算网,每个网卡都会连到Leaf层的相应位置,每台机器的第1个卡连到第1个Leaf,第2个卡连到第2个Leaf,以这样的互联方式。从Leaf层到Spine层,需要有4台Spine层交换机,然后均分的连接起来。好处是可以保证到相同位置GPU在通信时都在一个交换机上,可以减少延迟跳数;另外,可以很好的去用到网络卸载,相同位置的GPU以及相应位置的网卡通信时,用SHARP卸载功能加速这个过程。
基于1个SU的拓扑,可以去扩展到2个SU,甚至标准的7个SU。7个SU的拓扑相比于1个SU多加了一层交换机。从计算节点到Leaf层连接,和1个SU的理念一样。从Leaf层到Spine层,每个SU里相应位置的Leaf层交换机连到相应的一个SG组,一共是有8个SG组,80台的交换机。从Spine层到Core层分成两个组,CG1和CG2,Spine层奇数位置的交换机连到 CG1,偶数位置的交换机连到CG2,通过这样的互联方式达到扩展。
总之,SuperPOD是一个可以是任意扩容的设计理念,可以基于1个SU甚至半个SU扩展,可以扩展到2个、4个、7个,甚至像百度一样可以扩展到上千台的规模。
另外,SuperPOD里可以用到优化好的一个软件镜像NGC,即NVIDIA GPU Cloud。这个Cloud是一个软件概念,它里面包含了很多针对不同框架优化好的镜像,这些镜像可以很快启动起来,保证性能更优。另外,NGC里也放了很多预训练模型。除此之外,针对不同的行业,还有一些开发好的方案,比如针对医疗有Clara,针对智慧城市有 Metropolis方案,针对自主机器人有Isaac,这些都已经放在NGC里使用,这些镜像可以支持不同的云、裸金属、混合云或终端,在x86、ARM以及POWER上都有很好的支持。
分布式训练很大的一个挑战是通信,英伟达有NCCL(NVIDIA Collective Communication Library)通信库,它是GPU之间通信优化的库,也已经成为了一个工业标准。NCCL可以支持不同节点内的拓扑,也支持不同节点间的拓扑,它可以自适应的选择最优的Ring 或Tree 以及相应的协议,让通信最快。
同样,交换机卸载的功能叫Sharp,即可扩展的分层聚合和规约协议,简单来说就是把在CPU或GPU上的通信放到交换机上,一方面释放CPU和GPU资源,另一方面延迟和带宽是最好的。Sharp和NCCL可以无缝结合起来,只需要通过一个插件库就可以把这个功能用起来。
不管在学术界还是工业界,有很多采用SuperPOD构建自己的AI数据中心,在加速自己领域的一些AI研究。
第一是Meta,这也是在国外最大的一个AI数据中心, Meta用DGX SuperPOD搭建的一个平台,支撑Meta研究院里300多人的研究。Meta的研究涵盖各种前沿AI领域,比如会话系统、推荐系统、大语言模型。Meta会在今年会建设成由2000台DGX A100组成的SuperPOD,达到了16000张 A100 GPU的规模。
最早采用SuperPOD做模型加速的是微软,微软和OpenAI做了一个有上万卡的规模,这个集群当时也加速催生了GPT-3模型的诞生。
韩国最大的搜索引擎公司NAVER,用DGX SuperPOD建立了一个AI数据中心,训练一些会话模型用于呼叫中心。由140台DGX SuperPOD组成的集群,相比于原来传统的集群在会话系统基础模型的训练上,可以达到2.7倍的加速效果。
另外,我们也谈了很多AI科学领域,这也是AI和HPC结合比较好的一个方向。佛罗里达大学在这领域深耕了很多年,一直在探索去用AI如何融合到一些跨学科、跨学界的加速。基于DGX SuperPOD,搭建了一个针对医疗领域的模型分析,即利用一些语言模型分析病人的临床数据,在39亿模型参数下,之前的训练大概需要几周时间,现在只需要不到一周的时间就可以完成。相比于之前的训练效率可以达到10倍以上的提升。
另外一个领域是自动驾驶,特斯拉是自动驾驶行业开启比较早的一个家企业,也是用 CV解决自动驾驶问题非常坚实的拥簇者。特斯拉针对感知这块,有四五十个DNN模型,每天都要做训练,基于SuperPOD架构搭建了一个5000多卡的集群,支撑它每天上百位AI科学家,进行几十个模型的训练迭代。
汽车行业比较领先的大陆集团,基于DGX SuperPOD搭建了一个集群,用于AI训练、模拟和虚拟数据的生成。搭建的集群性能名列在Top500里面。
最后,用MLPerf 数据做下总结,在过去一年半的时间里,MLPerf迭代了三个版本:MLPerf 0.7、MLPerf1.0和MLPerf 1.1。在MLPerf 1.1与MLPerf 0.7的性能对比中可以看到,基于一些软件和分布式技术的优化,同样是A100安培架构的GPU,可以看到在同样的任务里面,最快有5.3倍的性能提升;单机性能的对比,可以看到基于软件优化,在同样的A100 GPU里最高也有2倍的性能提升。这表明只要购买了A100 GPU,只需要通过软件升级就可以得到持续加速的效果,这也是英伟达软件栈持续优化带来的好处。
总之,SuperPOD是一个非常高效的架构,它用在大规模的分布式训练里,不管是直接采用NVIDIA DGX SuperPOD,还是采用百度智能云上的SuperPOD,都可以享用SuperPOD架构带来的好处。
SuperPOD架构可以帮助在AI领域做快速迭代,开发更智能的AI模型,它是把产品更快上线非常关键的一个环节。不管是在CV、NLP、语音、推荐系统、AI+科学等领域,还是做搜索、CTR、AV感知等各种各样的场景,都可以用SuperPOD架构做加速。如果你想要用SuperPOD架构,上百度智能云,即刻享用SuperPOD带来的好处。
产品传送门,点击进入。