MC2 Energy Consumption Model for Massively Distributed Data Parallel Training of Deep Neural Network
-
摘要:
深度神经网络(deep neural network,DNN)在许多现代人工智能(artificial intelligence,AI)任务中取得了最高的精度. 近年来,使用高性能计算平台进行大规模分布式并行训练DNN越来越普遍. 能耗模型在设计和优化DNN大规模并行训练和抑制高性能计算平台过量能耗方面起着至关重要的作用. 目前,大部分的能耗模型都是从设备的角度出发对单个设备或多个设备构成的集群进行能耗建模,由于缺乏从能耗角度对分布式并行DNN应用进行分解剖析,导致罕有针对分布式DNN应用特征进行建模的能耗模型. 针对目前最常用的DNN分布式数据并行训练模式,从DNN模型训练本质特征角度出发,提出了“数据预处理(materials preprocessing)–前向与反向传播(computing)–梯度同步与更新(communicating)”三阶段MC2能耗模型,并通过在国产E级原型机天河三号上使用最多128个MT节点和32个FT节点训练经典的VGG16和ResNet50网络以及最新的Vision Transformer网络验证了模型的有效性和可靠性. 实验结果表明,MC2与真实能耗测量结果相差仅为2.84%,相较4种线性比例能耗模型以及AR,SES,ARIMA时间预测模型准确率分别提升了69.12个百分点,69.50个百分点,34.58个百分点,13.47个百分点,5.23个百分点,22.13个百分点,10.53个百分点. 通过使用的模型可以在超算平台得到DNN模型的各阶段能耗和总体能耗结果,为评估基于能耗感知的DNN大规模分布式数据并行训练及推理各阶段任务调度、作业放置、模型分割、模型裁剪等优化策略的效能提供了基础.
Abstract:Deep neural network (DNN) have achieved state-of-the-art accuracy in many modern artificial intelligence (AI) tasks. In recent years, it has become increasingly popular to use high performance computing platforms for massively distributed parallel training of DNN. Energy consumption models have been crucial in designing and optimizing DNN for massively parallel training and restraining excessive energy consumption on HPC (high performance computing) platforms. Currently, most energy consumption models model the energy consumption of a single device or a cluster of multiple devices from a hardware perspective. From an energy consumption perspective, the need for disaggregated analysis of distributed parallel DNN applications has resulted in a dearth of energy consumption models that model the characteristics of distributed DNN applications. In this paper, we propose the “materials preprocessing-computing-communicating” three-stage MC2 model from the perspective of the essential features of DNN model training for the most commonly used DNN distributed data parallel training model. The model is validated by training the classical VGG16, ResNet50 networks and the latest Vision Transformer network using up to 128 MT nodes and 32 FT nodes on the domestic E-class prototype Tianhe-3. The experimental results show that the difference between MC2 and the actual energy measurements is only 2.84%. Compared with the four linear proportional energy models and the AR, SES, and ARIMA time prediction models, the accuracy of the model proposed is improved by 69.12%, 69.50%, 34.58%, 13.47%, 5.23%, 22.13%, and 10.53%, respectively. By using the models proposed in this paper, the energy consumption of DNN models at each stage and the overall energy consumption can be obtained on a supercomputer platform, which provides a basis for evaluating the efficiency of DNN energy-aware massively distributed parallel training and inference, as well as optimizing the strategies of task scheduling, job scheduling, model partitioning, and model pruning.
-
近年来,作为人工智能(AI)领域典型代表的深度神经网络(deep neural network,DNN)技术得到了突飞猛进的发展,DNN已经广泛应用于图像识别、自然语言处理、语音识别、计算机视觉等领域. DNN效能的提升一方面来源于模型结构的不断复杂和深度的不断增加,另一方面来源于数据集规模的不断增加和数据种类的不断丰富,二者对计算和存储开销都提出了极大的挑战. 例如,何凯明团队提供的目前为止最强大的基于DNN的图像分类预训练模型ResNeXt WSL[1],就具有8亿个网络模型参数,使用了9.4亿张图片做训练. 为了高效、快速地得到可用的DNN模型,使用高性能计算平台进行大规模分布式数据并行训练成为当今大型DNN模型训练的主流模式.
大规模DNN模型训练任务巨大的计算强度和频繁、大量的数据访问在类似如图1所示的高性能计算平台上产生了大量的能耗. 国际数据公司(international data corporation,IDC)指出,随着大数据时代的到来,基于高性能计算(HPC)的大数据分析的HPDA应用成为HPC的下一个热点. 目前67%的HPC资源用于HPDA,而DNN是其中的典型应用. 高性能计算的未来趋势为AI+科学计算. 一方面,利用高性能计算中心开展大规模DNN模型训练会产生大量的经济成本. 一个典型的高性能计算中心的能耗相当于
25000 个家庭能耗的总和,每单位面积的电量消耗是标准办公空间的100~200倍[2]. 随着用电量的急剧增加和电费的不断增涨,电费已经成为当今高性能计算平台的一项重大支出[3]. 另一方面,利用高性能计算中心开展大规模DNN模型训练还会产生许多的环境问题[4]. 例如,2005年美国仅数据中心的碳排放量就相当于类似阿根廷这种中等规模国家碳排放量的总和. 基于此,如何利用节能技术在确保大规模DNN模型训练准确性和实效性的前提下,节省训练过程中的能耗已经成为业界和学界共同关注的关键问题. 针对这一问题,首先就需要设计有效和可靠的能耗模型来准确地评估大规模神经网络模型训练任务在高性能计算平台下的能耗情况.能耗模型是对真实任务或系统能耗的抽象,多种多样的能耗模型在2方面起着关键作用:首先,能耗模型可以引导组件和系统的初始设计. 一般来说,为每一个组件设计都制作一个真实的物理系统以评估能耗成本和效率是不可行的[5],而能耗模型可以快速高效地评估能耗,vor dem Berge等人[6]就使用能耗模型设计超算中心的组件;其次,能耗模型可以帮助预测未来一段时间内的能耗趋势. 在高性能计算中心中用户运营商往往都需要了解计算机系统和某个特定的应用场景的用电模式,以最大限度提高其效能. 对单个物理设备进行测量的方法一方面因为无法预测场景而无法给出未来的能耗情况[7],另一方面也不能提供应用各个阶段或物理资源使用和能耗之间的具体联系.
使用真实的实验数据进行测量通常非常昂贵且灵活性差,使用能耗模型可以更加灵活地适应运行参数的变化且更加便宜. 然而,现有大部分研究都是从单个硬件设备或多个硬件设备组成的系统角度出发研究系统利用率和能耗之间的线性或非线性关系,缺乏从应用角度出发研究特定硬件平台环境下的能耗情况.
本文认为,在数据并行和BSP同步模型下,分布式机器学习训练的本质特征就是将DNN模型分配给多个训练节点,每个节点迭代地使用总数据集的1/n(n为参与训练的节点个数)完成本地计算,并使用集合通信方法进行彼此之间的模型更新. 又因为在整个分布式训练过程中,不同阶段的各部分功耗表现有所差异,基于此,本文构建了DNN大规模分布式数据并行训练MC2三阶段能耗模型,将上述分布式DNN训练本质映射到实际模型训练过程中的预处理、计算和梯度通信3个阶段. 为日后面向大规模智能训练任务的高性能计算中心设计、能耗预测、设计节能优化策略等方面提供了准确、快捷的方案.
本文贡献主要包括3个方面:
1)从DNN模型大规模分布式数据并行训练的任务特点出发,根据分布式DNN训练任务典型的“数据预处理(materials preprocessing)—前向与反向传播(computing)—梯度同步与更新(communicating)”三阶段建立MC2模型. 该模型结合各阶段软硬件特征,提出了各阶段任务的能耗模型和总体任务的能耗模型.
2)针对在异构平台开展DNN模型大规模分布式数据并行训练的特性,提出了一种异构平台训练能耗补偿计算策略,能够更准确地评估异构平台下的训练能耗.
3)使用本文提出的MC2能耗模型计算验证了在天河三号原型机上开展分布式DNN数据并行训练的能耗情况. 实验分别采用32 FT和128 MT节点使用Cifar-10数据集训练VGG16模型以及采用128 MT节点使用ImageNet数据集训练ResNet50模型.
本文后续相关工作中使用的关键变量含义如表1所示.
表 1 相关工作中的关键变量Table 1. Key Variables in Related Work符号 含义 W 神经网络权值 λlr 神经网络学习率 n 批大小 E 能耗 P 功率 T 时间 t 时刻 Ptotal 总功率 Pdynamic 动态功率 Pstatic 静态功率 A 每个时钟周期内的开关数 V 电压 C 电容 Istatic 漏电电流 Td 温度 Ki 技术常数 αi 某个事件发生的次数 Ci 某个事件所花费的能耗 m 处理器核数 ρ 处理器核利用率 Ps 速度为s时的处理器功率 λ 任务到达率 R 每个任务平均执行指令数目 αai 活动因子 fmaxi 处理器组件最大频率 Pidlesm 空闲流处理组件功率 EDRAMtoSRAM 从DRAM读写数据到SRAM的能耗 ESRAM SRAM实现激活和权值缓冲区的能耗 Erest TPU其余组件能耗 PDRAM 动态随机存储器(DRAM)功率 μwrite 写吞吐量 μread 读吞吐量 Eicache 指令高速缓存能耗 Edcache 数据高速缓存能耗 Ebuses 高速缓存指令开销 Epads 主存与外设间总线能耗 Emem 内存能耗 α(A) 算法A激活阶段指令周期数 R(A) 算法A激活阶段指令读次数 W(A) 算法A激活阶段指令写次数 Pcke 内存静态功率 Pstby 激活存储组件和等待指令功率 Eact 激活时能耗 Prdwr 内存读写功率 Pser 整个服务器的功率 Pcpu 服务器中CPU功率 Ccpu 每台服务器CPU的数量 Cmem 每个服务器中内存DIMMs的数量 Cd 每个服务器磁盘数量 Pd 每个磁盘的功率 (Pi,Ti) MapReduce初始化阶段 (Pm,Tm) MapReduce映射阶段 (Pshu,Tshu) MapReduce洗牌阶段 (Pr,Tr) MapReduce规约阶段 Elayer 每一层的能耗 Ecomp 计算开销 Edata 数据输入、数据输出以及卷积核的访存开销 1. 相关工作
1.1 DNN并行化研究
1.1.1 模型并行与数据并行
模型并行和数据并行是当前最主流的DNN并行化的2种方式[8]. 前者通过将深度模型纵向切分成若干子网络层并分解到各个计算节点上,然后通过多个节点间的协作完成整个模型的训练;后者是通过将训练数据进行切分,每个节点分别使用分片的数据训练完整的模型,并采用参数服务器或All-Reduce等交换策略. 通常,DNN使用如式(1)所示的小批量随机梯度下降模型更新权值:
Wt+1=Wt−λlrnn∑i=1∇Wi, (1) 其中λlr和n分别代表学习率和批次大小,每批次训练结束后使用参数服务器或All-reduce交换权值梯度n∑i=1∇Wi更新权值. 由于在多数情况下,数据并行的通信开销和同步开销小于模型并行开销,因此其加速比优于模型并行,所以,通常使用如图2所示的数据并行来完成分布式并行DNN训练.
1.1.2 单节点并行研究现状
在单节点并行研究方面,往往利用多核和众核芯片,如GPU,MIC,FPGA对DNN模型进行并行加速.
1)在GPU研究方面,Raina等人[9]使用GPU对深度置信网络训练进行了加速;Li等人[10]使用单块Tesla K40c GPU优化深度置信网络预训练过程,最终相较于Intel Core i7-4790K实现了14~22倍加速比;Bottleson等人[11]使用OpenCL优化了GPU卷积操作,相较Intel CPU,CNN训练得到了2.5~4.6倍加速比. Kaler等人[12]使用领域采样器、共享内存并行优化、GPU计算批传输流水线等技术将图神经网络训练速度相较于Pytorch-Geometric基准提升了3倍. Tan等人[13]实现了基于GPU的隐私深度学习系统,相较于CPU平台的>最新算法提升了8~36倍的隐私深度学习训练加速.
2)在MIC研究方面,Viebke等人[14]使用原生模式依托数据并行技术在224线程上达到了单线程版本103.5倍加速比;Liu等人[15]以卸载模式同样采用数据并行技术在240线程下达到了单线程版本131倍加速比;Zlateski等人[16]提出了3维卷积算法,在Intel Xeon Phi 5110P众核处理器上取得了90倍加速比.
3)在FPGA研究方面,Suda等人[17]实现了VGG和AlexNet在FPGA平台的训练,在VGG中相较于IntelI5处理器达到5.5倍加速比. Zhang等人[18]实现了性能可达近1.8 TOPS的FPGA VGG网络,相较于至强E5-1530处理器其加速比可达4.4倍. Aydonat等人[19]在FPGA平台上将Winograd矩阵乘优化算法融入到AlexNet网络中,在Arria 10上达到了
1382 GFLOPS的峰值性能.1.1.3 大规模分布式并行研究现状
随着DNN模型的不断复杂和加深,单节点已无法满足训练要求. 使用高性能计算平台实现DNN模型大规模分布式并行训练成为国内外研究者重点关注的领域.
1)在以CPU为主的高性能计算平台研究方面,Google公司的Dean等人[8]在CPU集群上开发了Google 深度学习软件框架DistBelief;朱传家等人[20]针对“神威·太湖之光”超算平台对深度学习框架Caffe进行分布式扩展研究,其在特定模型上通信性能提高了98倍;魏嘉等人[21]在国产E级原型机天河三号上基于Pytorch平台实现了分布式并行DNN模型训练,在处理批次大小不变的情况下,在VGG16网络上实现了相较单节点24.59倍的加速比. Ji等人[22]在32个节点的Intel knights CPU集群上利用共享和分布式内存实现了Word2Vec算法的跨节点分布式计算并实现了近线性加速比. Das等人[23]优化了多节点同步SGD算法,分别在64个Intel Xeon节点VGG-A CNN模型和16个节点的语音识别深度学习模型上实现了53倍和6.5倍的加速比. Roy等人[24]提出的非一致性内存访问(non-uniform memory access, NUMA)感知的分层并行化技术分别在1~4个Intel和AMD NUMA节点上相较于原始Caffe平台提升了吞吐量和拓展性[25].
2)在以GPU为主的高性能计算平台研究方面,Awan等人[26]利用协同设计的技术在12个节点的集群中使用80张Tesla K80 GPU卡设计了分布式深度学习框架S-Caffe;美国橡树岭国家实验室的Yin等人[27]在SUMMIT超算上使用容器技术,基于Tensorflow和Pytorch在64个节点上使用384张Nvidia Tesla V100 GPU卡,将ResNet50模型训练时间缩短至12 min. Duan等人[28]提出了Mercury调度策略在MXNet平台上针对ResNet50和BERT等模型进行8个节点8GPU分布式训练,相较基础MXNet平台分布式深度学习算法的加速比提升了1.18~2.18倍. Huang等人[29]提出了Gpipe批间流水线并行训练算法,分别在8个GPU和128个TPU上基于Lingvo平台训练了用于图像分类的AmoebaNet模型和多语言机器翻译的128层Transformer模型. Narayanan等人[30]提出了Pipedream批内流水线并行算法,在Pytorch平台下进一步流水线并行训练速度提升了5.3倍. Rajbhandari等人[31]基于DeepSpeed平台提出了ZeRO-Infinity异构分布式训练系统,在512个Nvidia V100 GPUs集群上训练超过20万亿参数的Transformer模型.
1.2 能耗模型研究
1.2.1 能耗与功率
能耗(energy consumption)是一个系统在一段时间内所消耗的总能量(即系统做的总功),而功率(power)则代表系统完成某项任务所消耗能量的速率[32]. 二者的关系可以用式(2)来表示:
E=PT, (2) 其中E代表系统的能耗(单位为J),P代表系统的功耗(单位为W),T表示系统运行的时间(单位为s). 如果P是随时间T变化的,那么在时刻t1到时刻t2时间内的总能耗进一步地可以增强地表示为
E=∫t2t1Ptdt. (3) 1.2.2 静态功率与动态功率
互补金属氧化物半导体(CMOS)材料由于其对噪声的弹性和相比其他元件的低产热优势成为了当今计算机微处理器的主流选择. 数字CMOS电路功耗可以被划分为动态功率(晶体管正常工作时的功耗)和静态功率(晶体管关闭时漏电流产生的功率)2部分:
Ptotal=Pdynamic+Pstatic, (4) 其中动态功耗被认为是CMOS中功耗的主要来源. 可以用式(5)来表示[33-34]:
Pdynamic=A×C×V2×f, (5) 其中A代表开关活动(activity),即每个时钟周期内的开关数,C表示物理电容,V表示电压,f代表时钟频率.
因为漏电流的存在,即使在晶体管关闭时,也会产生与晶体管数目正相关的静态功率,如式(6)所示:
Pstatic∝IstaticV, (6) 其中Istatic代表漏电流.
1.2.3 处理器能耗模型
处理器巨大的能耗已经成为了高性能计算平台服务器主要的能耗来源[35]. 目前对处理器能耗建模的方法主要为2种:一种是对处理器进行数字电路级建模,这种方法更加准确但成本更高;另一种的方法是使用统计模型,这种技术计算更快,但依赖于处理器评价计数器能快速地测量处理器主要组件的能耗和数据分析工具对这些能耗数据的有效数据处理. 本节分别介绍了单核中央处理器、多核中央处理器和图像处理器的能耗建模方法.
Shin等人[36]使用式(4)加法模型表征单核处理器的功率,其中动态功率使用式(5)计算,而因为静态功率与温度高度相关,所以在静态功率中引入了温度Td, 表示为
Ps(Td)=Vdd(K1T2deK2Vdd+K3Td+K4e(K5Vdd+K6)), (7) 其中Ki(i=1,2,3,4,5,6)代表技术常数.
Merkel等人[37]通过计算特定时间段内发生事件的数量来确定处理器在该时段所消耗的总能量:
E=n∑i=1αiCi, (8) 其中αi表示某个事件在一段时间内出现的次数,Ci代表某个事件所花费的能耗,n表示所有可能的事件总数.
接下来,本文将从典型的功率组件分解建模和基于排队论的功率建模来介绍多核CPU功耗模型的发展.
Bertran等人[38]提出类似单核的模块分解功率模型,假设每个核的性能相同,功率模型为:
Ptotal=(ncore∑j=1(m∑i=1AijPi)+Pstatic), (9) 其中,Pi代表处理器核中每个组件的功率,Aij表示第j个核的第i个模块的活动频率.
Li等人[39]将多核CPU建模为一个具有多台服务器的M/M/m排队系统[40],处理器的总功率表示为
Ptotal=m(ρPs+P∗)=λRPs+mP∗, (10) 其中m表示处理器核数,ρ表示处理器核利用率,Ps表示在速度为s时处理器核的功率,P∗表示处理器核不工作时的功率,λ表示任务到达率,R表示每个任务平均执行指令数目.
图像处理单元(GPUs)正逐步成为高性能计算平台的常见组件,鉴于其支持大规模硬件并发操作,尤其适合DNN训练等人工智能技术,许多现代高性能计算平台都配备了通用图像处理单元[41]. 然而,对图像处理器的功耗测量、建模和预测仍处于起步阶段.
现有大部分研究都是基于性能评测计数器对GPU功率进行建模,典型的GPUWattch就是用式(11)进行功率建模.
P=N∑i=1(αaiPmaxi)+Pidlesm+Pstatic, (11) 其中GPU的动态功率被记为每个组件的活动因子αai与每个组件峰值功率的乘积,Pidlesm和Pstatic分别代表空闲流处理器组件功率和静态功率.
除此之外,Google TPU[42]等神经网络专用加速设备逐步成为高性能计算平台的重要组件. Zhang等人[43]针对类似TPU的处理设备提出了能耗模型:
E=EMAC+EDRAMtoSRAM+ESRAM+Erest, (12) 其中EMAC代表MAC阵列计算能耗,EDRAMtoSRAM代表DRAM能耗(即从DRAM读写数据到SRAM的能耗),ESRAM代表SRAM实现激活和权值缓冲区的能耗,Erest代表其余组件能耗,包括控制、激活、池化、归一化等组件的能耗.
1.2.4 内存能耗模型
虽然传统上处理器被认为是服务器平台能耗的主要来源,但随着数据密集型应用的不断增加和相应的数据密集型高性能平台的不断发展,内存在高性能计算中心中能耗比重大幅度增加. 本节中,我们介绍内存能耗模型.
作为服务器中第2大功耗来源的内存[44],在高性能计算平台中,主存功耗也占到了服务器功耗的30%[45],DRAM存取容量和带宽的快速增长导致了DRAM子系统消耗了高性能计算平台很大一部分能量. 目前,大部分对内存能耗研究集中于对DRAM能耗的研究,主要方法与处理器类似,也是使用数字电路组件级建模和基于内存性能评价计数器.
Lin等人[46]提出的基于静态功率和动态功率累加的计算模型公式为
PDRAM=PstaticDRAM+α1μread+α2μwrite, (13) 其中α1是取决于处理器的常数,DRAM的静态功率用PstaticDRAM来表示,读写的吞吐量分别使用μread和μwrite来表示.
Vijaykrishnan等人[47]提出的另一种类似的累加模型存储系统的全部能耗被建模为
E=Eicache+Edcache+Ebuses+Epads+Emem, (14) 其中,Eicache和Edcache分别代表指令高速缓存和数据高速缓存能耗,Ebuses代表数据高速缓存和指令高速缓存之间总线开销,Epads代表主存与外设之间的总线开销,Emem[48]是中描述的内存开销.
Roy等人[49]提出了一种针对某个算法A的完全不同的基于内存性能评估计数器的内存能耗建模方法:
Emem(A)=PckeT(A)+PstbyTact(A)α(A)+Eactα(A)+(R(A)+W(A))TrdwrPrdwr, (15) 其中α(A),R(A),W(A)分别代表算法A激活阶段指令周期数、读次数和写次数. 内存总功率包括:Pcke代表静态功率,即所有存储单元均未激活时的功率,Pstby指用于激活存储组件和等待指令的功率,Eact代表激活阶段捕获各种指令的能耗,Prdwr代表内存进行读写的功率. 各阶段功率与对应时间之积再累加就是内存系统的总能耗.
1.2.5 应用系统能耗模型
除了针对各种元器件的物理特征建立能耗模型之外,考虑各种不同的应用和工作负载的类型建立针对性的能耗模型也是同样重要的研究问题.
Poess等人[50]针对典型的数据仓库应用,基于TPC-H基准,开发了企业数据仓库功耗模型. 该模型旨在估计系统的峰值功率:
Pser=(CcpuPcpu+9Cmem+CdPd)×1.3+100, (16) 其中Pser代表整个服务器的功率,Ccpu代表每台服务器CPU的数量,Pcpu是他们研究的处理器设计功率,Cmem是每个服务器中内存DIMMs的数量,Cd是每个服务器中的磁盘数量,Pd代表每个磁盘的功率. Poess等人[50]增加了30%的上述组件功率和额外的100 W功率来解释机箱的电源开销.
Feng等人[51]针对分布式集群系统中常见的MapReduce应用提出了能耗加法模型:
E=PT=PiTi+PmTm+PsTs+PrTr, (17) 将MapReduce的能耗定义为各部分功率与运行时间乘积的和. (Pi,Ti)代表初始化阶段,(Pm,Tm)表示映射阶段,(Ps,Ts)代表中间数据洗牌阶段,(Pr,Tr)代表规约阶段. 同时提出了4个影响MapReduce应用能耗的因素,分别是工作负载的CPU密集程度、I/O密集度、副本数量和块大小.
Yang等人[52]针对单机DNN尤其是在嵌入式设备上进行推理时的能耗进行了建模. 他们并未考虑具体的硬件功耗,而是使用归一化的乘加操作能耗作为能耗的单位. 每一层的能耗为
Elayer=Ecomp+Edata, (18) 其中Ecomp和Edata分别代表每一层的计算开销和数据输入、数据输出以及卷积核的访存开销,并使用网络中所有卷积层和全连接层(全连接层可以视为特殊的卷积层)的能耗代表该DNN的总能耗.
1.2.6 能耗模型研究现状总结
综上所述,目前的能耗模型主要分为针对硬件的能耗模型和针对应用的能耗模型2种.
针对硬件的能耗模型只给出了器件在不同状态下的能耗情况而未考虑上层应用的情况[37],因而无法获得某个应用具体的内耗情况,而针对应用的能耗模型往往将程序运行时的服务器当成整体,采用测量方式来得到某个应用的能耗[51],这种测量的方法成本很高,每一次对应用的微调都要重新测量整个应用;或者将某种能耗用归一化乘加操作表征[51],无法与具体的硬件能耗开销相对应.
而本文所提出的MC2模型通过分析大规模DNN分布式训练时的运行特点,通过转化底层硬件的能耗表现,将上层DNN应用程序状态变化与底层硬件能耗变化结合起来,只需要执行少量的步骤,无需执行完整的训练任务,且无需额外的能耗测量就可以较为精准地计算得到具体DNN分布式训练任务的总能耗.
2. MC2能耗模型
针对现有应用程序能耗获取方法存在的与底层硬件关联不紧密、统计成本高等问题,本文提出了MC2能耗模型. 该模型分析了大规模DNN分布式训练时的运行特点,并将这些特点转化为底层硬件的能耗表现. MC2能耗模型把上层DNN应用程序状态变化映射为底层硬件能耗变化,只需要进行少量实验,无需运行整个程序,就可以计算得到具体的DNN分布式训练任务总能耗.
如图3所示,MC2能耗模型将DNN模型大规模分布式数据并行训练分为数据预处理、前向与反向传播以及梯度同步与更新3个阶段.
各阶段的功耗都映射为CPU、内存、硬盘和网络设备功耗的组合,MC2能耗模型并不对这些设备组件的功耗信息来源进行约束,组件的能耗来源既可以是真实环境下的测量值,也可以通过第2节中对应的设备功率模型获取,组件功耗的准确性将很大程度影响MC2能耗模型最终的准确性.
2.1 数据预处理阶段
良好的数据质量是人工智能算法成功的重中之重. 数据预处理阶段是深度学习最初始的阶段,也是最为关键的阶段之一. 由于数据集的来源多种多样,数据本身可能存在数据缺失、数据噪声、数据不一致、数据冗余、数据集不均衡、数据离群点、数据重复等问题,因此在数据被输入模型进行训练之前,必须进行一系列的数据预处理操作.
本文所述的数据预处理包括数据集成、数据规约和数据变换,这是DNN模型训练前最常用的数据预处理手段. 虽然数据清理也是一项关键且耗时的工作,但由于数据清理时间高度依赖于数据来源和数据质量,往往这一过程在整个深度学习开始之前就预先完成,因此本文进行预处理的数据已经完成了数据清理.
在DNN模型大规模分布式数据并行训练时,数据预处理在每个节点中单独完成了,每个节点获取所有数据集的1/N(N代表参与训练的节点数量),然后使用各节点的CPU完成数据预处理操作. 具体操作为:
首先,每个节点都需要对自己的数据集建立索引,以便CPU能够找到数据集存放位置的起始地址以及获取数据集的长度,在这一过程中仅仅为数据集建立了索引而没有把任何训练数据导入内存中,因为现代DNN训练数据集规模往往非常庞大,内存无法也无需同时容纳所有的数据集,只需要每次提取1个批次的数据即可,这一部分的功率为
Psetdataset=Pgs+Psm+PsCPU, (19) 其中Pgs为2级存储寻找数据集起始位置和读取数据集长度的开销,Psm是将起始位置索引和长度写入内存的开销,PsCPU表示CPU在这一阶段发出读写等指令的功率.
随后,由于模型使用小批量随机梯度下降进行训练,每次需要每个节点从存储介质(SSD/HDD)中取出1个批次(大小为B)的数据到内存中,这一过程的功率为
Ploaddata=Prs+Pwm+PlCPU, (20) 其中Prs代表从底层2级存储读取数据的功率(包括空闲、寻道、读取等功耗),Pwm表示将硬盘数据写入内存的功率,PlCPU表示CPU在这一阶段发出读写等指令的功率.
最后,节点CPU对自己内存中的需要预处理的数据分别执行数据集成、数据规约、数据变换操作,此部分功率为
Ppreprocess=Ppm+PpCPU, (21) 其中Ppm表示数据预处理阶段CPU读写内存时内存产生的功率,PpCPU表示CPU在执行各种数据预处理操作时的功率.
如果进行大规模训练的高性能计算平台使用了GPU,TPU,DPU等其他设备,还需要将内存中预处理完的数据转移到对应的设备上,这一部分可选的开销为
Ptransfer=Prm+Pwgtd+PtCPU, (22) 其中Prm代表内存读功率,Pwgtd代表GPU,TPU,DPU等加速设备内存的写功率,PtCPU表示CPU在这一阶段发出读写指令的功率.
因为高性能计算平台通常使用同构节点完成同一个给定的应用,在数据并行情况下,每个节点处理数据量相同,所以可以假设每个节点上进行上述数据读取的时间Tloaddata、CPU进行数据预处理的时间Tpreprocess、内存转移到其他加速设备时间Ttransfer几乎是相同的,所有节点全部执行完上述操作的总能耗为
Epre=nNBN∑i=1(BNn∫TendsetdatasetTbeginsetdatasetPisetdatasetdt+∫TendloaddataTbeginloaddataPiloaddatadt+∫TendpreprocessTbeginpreprocessPipreprocessdt+∫TendtranferTbegintransferPitransferdt). (23) 当各节点功率稳定,不随时间发生剧烈变化时,可以进一步近似表示为
Epre=nB×PloaddataTloaddata+PpreprocessTpreprocess+PtransferTtransfer+N×PsetdatasetTsetdataset, (24) 其中n代表数据集的样本个数,nB表示总共训练执行的批次数量. 类似地,如果各节点功耗稳定,下文2个阶段也可以使用类似的近似表示.
2.2 前向传播阶段和反向传播阶段
在DNN模型大规模分布式训练过程中,前向传播和反向传播是模型训练最核心的部分,也是整个训练中最耗时、最耗能的部分. 整个前向传播过程需要根据每一层的输入使用网络权值计算出每一层神经网络的输出,每层网络类型包括卷积层、池化层、全连接层、批量规约层、激活层等,每一层都对应着若干的参数;类似地,反向传播中需要根据前向传播计算得到的损失值和中间状态参数逐层计算出各层的权值梯度,然后执行后续的梯度同步与更新工作.
在这一阶段中,主要能耗可分为模型存取部分(包括模型权值、模型的超参数等需要存储至2级存储中的必备参数)、前向传播和反向传播每一层的输入读取和输出计算部分.
首先,模型存取部分,该部分类似于数据预处理的第1阶段,如果不使用加速设备,这部分功耗仅包括模型从硬盘读入内存的功耗和训练完成后将模型存入硬盘的功率:
Pinmodel=Prs+Pwm+PiCPU, (25) Poutmodel=Pws+Prm+PoCPU. (26) 如果考虑使用加速设备,则还需要增加将模型转移到加速设备内存的功耗以及将模型参数从加速设备写回内存的功率:
Pingtd=Prm+Pwgtd+PiCPU, (27) Poutgtd=Pwm+Prgtd+PoCPU. (28) 使用小批量梯度下降训练模型不仅是处理器能耗最多的部分,网络中每一层的输入和输出也是整个模型中消耗内存(CPU内存或加速设备内存)最严重的部分,例如在VGG16模型中能耗占到了90.41%.
在前向传播过程中,每一层的训练都包括:从内存(本节及下节的内存指广义的内存,包括显存等其他加速设备内存)中读取上一层的输出(第1层为读取训练数据)、读取本层神经网络权值、计算本层神经网络的输出、将本层神经网络输出存储至内存4部分,其中计算本层神经网络输出时CPU高速运转,而内存相对空闲,此部分功率为Pf1,该部分功率是前向传播功率的主要来源;而其余3部分内存高速运转而CPU相对空闲,可以合并为一个部分计算功率,用Pf2来表示:
Pf1=Pcgtdf1+Pmf1, (29) 其中Pcgtdf1代表在第1部分使用CPU或其他加速设备进行网络计算的功率,Pmf1表示第1部分的内存功率.
Pf2=Pcgtdf2+Pmf2, (30) 类似地,Pcgtdf2和Pmf2分别代表在第2阶段的加速设备和内存的功率.
与前向传播类似,反向传播是自最顶层至输出层链式求导计算各层梯度值以进行权值更新,反向传播每一层的训练也包括:从内存中读取上一层中间变量的输出、读取本层神经网络权值、计算本层梯度值、读取后一层梯度值和输出本层反向传播计算出的梯度值到内存5部分,由于不同部分处理器和内存表现的差异,反向传播也可以将计算梯度部分剥离功率记为Pb1,该部分功耗也是反向传播功耗的主要来源,其余部分功率记为Pb2.
Pb1=Pcgtdb1+Pmb1, (31) Pb2=Pcgtdb2+Pmb2, (32) 因此,前向传播与反向传播阶段的总能耗为
Efb=nNBN∑i=1(BNn∫TendinoutmodelTbegininoutmodelPiinoutmodeldt+BNn∫TendinoutgtdTbegininoutgtdPiinoutgtddt+∫Tendf1Tbeginf1Pif1dt+∫Tendf2Tbeginf2Pif2dt+∫Tendb1Tbeginb1Pib1dt+∫Tendb2Tbeginb2Pib2dt). (33) 2.3 梯度同步与更新阶段
梯度同步技术是实现DNN模型大规模分布式训练的核心技术,在这一阶段中,如式(34)所示,整个分布式集群整合各个节点反向传播得到的梯度值,然后进行全规约操作,各个节点获取到更新后的梯度后,再在本地执行类似于式(35)所示的本地权值更新,随后开始新一批次数据的训练,直至训练轮次结束或损失值满足跳出结束条件. 在本阶段中,主要能耗来源于梯度全规约过程和本地权值更新过程.
∇Waverage=1nn∑i=1∇Wi, (34) Wt+1=Wt−λ∇Waverage. (35) 全规约过程主要执行的是网络通信操作,现有高性能集群通常使用高吞吐量、低延迟的高性能InfiniBand等网络,这一部分功率主要来源于网络链路功率Pcn和网络设备功率Pcd,以及CPU收发指令的功率PcCPU与读写内存的功率Pcm,
Pcommunication=Pcn+Pcd+PcCPU+Pcm. (36) 本地权值更新是使用网络获取到的平均梯度更新各节点的权值,这一部分开销主要来源于CPU或加速设备的计算开销Pucgtd和对内存的读写开销Pum:
Pupdate=Pucgtd+Pum. (37) 因此梯度同步与更新阶段的总能耗为
Ecu=nNBN∑i=1(∫TendcommunicationTbegincommunicationPicommunicationdt+∫TendupdateTbeginupdatePiupdatedt). (38) 2.4 同步等待功耗补偿
当计算节点出现性能表现差异时,就需要进行同步等待功耗补偿. 各节点计算性能差异主要有2个原因:一个原因是节点之间本身就是异构的,异构节点执行相同任务的处理时间肯定不同,所以那些计算较快的节点就需要等待计算较慢的节点完成计算任务;另一个原因是即使是完全同构的节点,仍然可能因为制造工艺水平、主频稳定性、节点负载情况等不同导致处理相同任务的完成时间略有差异,我们的“同步补偿”针对的是这2种情况.
具体地,在如果在进行DNN大规模分布式数据并行训练且使用BSP一致性协议时,分布式系统中的快节点就要在梯度同步阶段等待慢节点完成本地的权值梯度计算,各节点的等待时间取决于该节点与最慢节点的计算效率之差,在这段时间内快节点内存和慢节点内存等计算设备均处于空闲等待状态,同步等待补偿功率为
Padd=N∑i=1(Pcgtdidle+Pmidle), (39) Pcgtdidle和Pmidle分别代表计算设备和内存设备空闲状态的功率. 本阶段的总能耗为
Eadd=nNBN∑i=1Ti(Pcgtdidle+Pmidle), (40) 其中Ti表示每一批次训练过程中节点i等待最慢节点完成计算的等待时间.
综上所述,DNN模型大规模分布式数据并行训练总能耗为
\begin{split} {E}_{\mathrm{t}\mathrm{o}\mathrm{t}\mathrm{a}\mathrm{l}}=\;&{E}_{\mathrm{p}\mathrm{r}\mathrm{e}}+{E}_{\mathrm{f}\mathrm{b}}+{{E}_{\mathrm{c}\mathrm{u}}} = \dfrac{n}{NB}\sum _{i=1}^{N} \left(\dfrac{BN}{n}{\int }_{{T}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{s}\mathrm{f}\mathrm{e}\mathrm{r}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{f}\mathrm{e}\mathrm{r}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{s}\mathrm{f}\mathrm{e}\mathrm{r}}^{i}{\rm{d}}t+\right.\\ &\left. \dfrac{BN}{n}{\int }_{{T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}}^{i}{\rm{d}}t+\dfrac{BN}{n}{\int }_{{T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{g}\mathrm{t}\mathrm{d}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{g}\mathrm{t}\mathrm{d}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{g}\mathrm{t}\mathrm{d}}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{f}1}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{f}1}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{f}1}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{f}2}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{f}2}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{f}2}^{i}{\rm{d}}t+\right.\\ & \left.{ {\int }_{{T}_{\mathrm{b}1}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{b}1}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{b}1}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{b}2}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{b}2}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{b}2}^{i}{\rm{d}}t+{\int }_{{T}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}}^{\mathrm{i}}{\rm{d}}t+{\int }_{{T}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}}^{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{{T}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}}^{\mathrm{e}\mathrm{n}\mathrm{d}}}{P}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}}^{i}{\rm{d}}t+{{T}_{i}(P}_{\mathrm{c}\mathrm{g}\mathrm{t}\mathrm{d}\mathrm{i}\mathrm{d}\mathrm{l}\mathrm{e}}+{P}_{\mathrm{m}\mathrm{i}\mathrm{d}\mathrm{l}\mathrm{e}})}\right)=\\ &\dfrac{n}{NB}\sum _{i=1}^{N}\Bigg(\dfrac{BN}{n}\left(\int {P}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}}^{i}{\rm{d}}t+\int {P}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}}^{i}{\rm{d}}t+\int {P}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{g}\mathrm{t}\mathrm{d}}^{i}{\rm{d}}t\right)+\int {P}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}}^{i}{\rm{d}}t+\int {P}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}}^{i}{\rm{d}}t+ \\ & {{\int {P}_{\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{s}\mathrm{f}\mathrm{e}\mathrm{r}}^{i}{\rm{d}}t+\int {P}_{\mathrm{f}1}^{i}{\rm{d}}t+\int {P}_{\mathrm{f}2}^{i}{\rm{d}}t+\int {P}_{\mathrm{b}1}^{i}{\rm{d}}t+\int {P}_{\mathrm{b}2}^{i}{\rm{d}}t+\int {P}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}}^{i}{\rm{d}}t+\int {P}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}}^{i}+{{T}_{i}(P}_{\mathrm{c}\mathrm{g}\mathrm{t}\mathrm{d}\mathrm{i}\mathrm{d}\mathrm{l}\mathrm{e}}+{P}_{\mathrm{m}\mathrm{i}\mathrm{d}\mathrm{e}\mathrm{l}}})}\Bigg)\mathrm{ }. \end{split} (41) 3. 实验结果与分析
3.1 实验对象
3.1.1 实验硬件配置
本文的实验平台天河三号E级原型机是由国防科技大学和天津超算中心联合开发的国产E级原型超级计算机之一[53]. 其计算节点包括Phytium FT-2000+(FT)和Phytium MT-2000+(MT)两种,每个FT包含32个armv8架构的FTC662处理器核和64 GB内存,处理器工作主频在2.4 GHz,片上集成了32 MB的2级cache,可提供204.8 Gbps访存带宽,FT节点典型工作能耗约为96 W;而MT计算节点,每个节点包含32个处理器核和16 GB内存,主频最高可达2.0 GHz,MT节点典型工作功耗为135 W.FT计算节点和MT计算节点处理器的典型功耗开销分别约为50 W和60 W[54]. 值得一提的是,这2种处理器都支持128 b的SIMD向量或标量浮点操作,这对于深度学习而言非常关键. 天河三号软硬件基本情况如表2所示.
表 2 天河三号原型机基本信息Table 2. Basic Information of Tianhe-3 Prototype类别 属性 FT-2000+ MT-2000+ 硬件 节点数 128 512 单节点核数 32 32 频率/GHz 2.4 2.0 内存容量/GB 64 16 网络互联带宽/Gbps 200 软件 操作系统 kylin 4.0-1a OS with kernel v4.4.0 文件系统 lustre MPI版本 mpich v3.2.1 编译器 gcc v4.9.1/v4.9.3 库 Boost,BLAS,openBLAS,scalapack等 本文实验中分别使用32个FT节点(
1024 处理器核和2048 GB内存)和128个MT节点(4096 个处理器核和2048 GB内存)进行DNN模型大规模分布式数据并行训练实验并对实验能耗进行建模分析.3.1.2 实验数据集
本文用于目标识别任务的数据集为Cifar-10和ImageNet. Cifar-10是由 Hinton 的学生 Alex Krizhevsky 和 Ilya Sutskever 整理的一个用于识别普适物体的小型数据集. 一共包含 10 个类别的 RGB 彩色图片:飞机、汽车、鸟类、猫、鹿、狗、蛙类、马、船和卡车. 图片的尺寸为 32×32 ,数据集中一共有
50000 张训练图片和10000 张测试图片. ImageNet是一个用于视觉对象识别软件研究的大型可视化数据库,超过1400 万的图像URL被ImageNet手动注释,以指示图片中的对象;为至少100万个图像提供了边界框.3.1.3 实验模型
本文选择的DNN模型为VGG16[55],ResNet50[56]和Vision Transformer (ViT)[57]. 本文实验中采用的网络模型均来自开源Torchvision库[58],在使用时只需要根据实际分类数量设置参数num_classs.
VGG16模型结构如图4所示,VGG16沿用了AlexNet[59]的基本结构,但深度比起AlexNet有所提升,其有13个卷积层和3个全连接层,具体由5组“多卷积层-池化层-Batchnorm+ReLU”加上全连接层构成,使用softmax获得平均结果. 在VGG16模型中,用3个3×3卷积核代替了7×7卷积核,用2个3×3卷积核代替了了5×5卷积核,从而保证在相同感知野的条件下提升了网络的深度,在一定程度上提升了神经网络的效果,也因此需要大量的计算开销,适合于使用大规模分布式环境进行网络模型训练.
通过对VGG16模型进行分析可以得出,在使用包含动量的随机梯度下降算法对VGG16模型进行训练时,模型参数(包括前向传播和反向传播中的参数)占用的内存为1.54 GB,每张图片所有层次的输入输出中间状态内存占用为116.24 MB,本实验单节点批次大小为64,所以实验过程中每批次训练的内存开销约为8.81 GB.
ResNet模型为了解决更深层次的神经网络难以训练的问题,提出了新型的building block结构的去克服退化问题. 如图5所示,ResNet在几个堆叠层之间并没有采用直接映射,而是添加了一条额外分支并显式地拟合了残差映射. 图5(a)是ResNet34中所用的构建块结构;图5(b)是在ResNet50模型中为了有效减少训练时间,在原来的基础上修改得到的构建块结构. 即对于每个残差函数使用3层的堆叠去拟合,其中各层应用的分别是1×1,3×3,1×1的卷积核.
如图6所示,在ResNet34与ResNet50模型中都拥有4个3层构建组,每个构建组分别有3个、4个、6个、3个块,4个构件组相加为48块. 除此之外,在每个构建组的第1层都有1个单独的卷积层,所以共49块卷积层. 使用平均池化以及softmax获得最终结果. 在极大地增加网络深度之后,网络的效果得到极其显著的提升,同时伴随而来的也包括高额的计算开销. 因此,同样适合于使用大规模分布式环境进行网络模型训练.
自从深度学习暴发以来,CNN一直是计算机视觉(CV)领域的主流模型,而且取得了很好的效果,相比之下Transformer却独霸自然语言处理(NLP)领域,Transformer在CV领域的探索正是学术界想把Transformer在NLP领域的成功借鉴到CV领域. 视觉变压器(vision Transformer, ViT)模型是Google公司在2020年提出的直接将Transformer应用在图像分类的模型,后续很多研究都基于ViT进行改进.ViT原理如图7所示,图像被分成固定大小的分片,然后通过线性变换得到分片嵌入,这就类比NLP的词和词嵌入,由于Transformer的输入就是一系列的符号嵌入(token embeddings),所以将图像的分块嵌入送入Transformer后就能够依据特征提取而分类了.ViT模型已经在许多CV领域超越了基于卷积神经网络的模型达到了最优的效果.
为了进一步凸显本文提出的MC2能耗模型的优越性,本文还使用常用的与时间成比例的能耗模型(基准时间分别为1 s,4 s,8 s,16 s)和经典的AR[60],SES[61],ARIMA[62]模型,3种模型的训练时间步均为500作为参照的基线.
3.1.4 实验流程与测试目的
本文实验中使用VGG16模型和ViT模型对Cifar-10数据集;ResNet50模型对ImageNet数据集分别进行了1个epoch完整训练,并且每种配置下的实验均进行了10次,在将各阶段的结果使用夏皮洛-威尔克检验[63]证明10次实验的结果满足正态分布后(检验内容见附录A),使用10次实验的均值代表本文最终的实验结果.
本文实验部分旨在验证MC2模型在大规模分布式数据并行DNN训练中能耗预测的有效性和可靠性. 预期通过使用MC2模型、线性扩展的能耗模型以及AR,SES,ARIMA等经典能耗预测方法对DNN模型训练开销进行预测,并与真实的训练开销进行对比,从而证明MC2能够实现更加精准的能耗预测.
3.2 实验设置
由第2节可知,各部件精准的功耗模型需要对部件各个子系统功耗进行详实的了解,在此基础上进行建模或使用功耗性能评价计数器进行精准观测. 本文使用4.1节观测到的天河三号节点功率值作为各部件正常工作时的功率. 基于对天河三号原型机平台处理器频率的实测结果和SPECpower基准[64]对广泛的CPU平台功耗测量的普遍情况,本文将天河三号处理器正常运行功率值的25%视为待机功率来计算. 受限于观测器的粒度,本文将前向阶段和反向阶段都视为1个阶段并令处理器和内存处于活动状态. 本文实验面向的是CPU超算平台,没有额外加速设备,所以不存在计算节点内存到加速设备内存的转移能耗开销.
另外,在本文实验中忽略了磁盘到内存的写入开销和网络设备通信开销. 一方面,由于保密原因,天河三号原型机的存储节点和网络设备信息不能被公开地获取到且测量困难. 另一方面,相对于计算节点的计算开销和内存读写开销而言,底层存储节点磁盘设备的功耗更低(以2022年12月TOP500第1名Frontiers使用的Toshiba AL14SX Series Hard Disk Drive为例,功耗仅为5.6 W). 同时,我们通过实验进一步表明,如图8所示,在Cifar-10数据集训练过程中读写硬盘所带来的时间开销占总训练时间开销不到8%;同样地,天河三号原型机节点间采用高速双向互联且通信时间占比很少,约占训练时间的3.6%,按照数据中心级网络设备Cisco Nexus X9536PQ计算每个设备平均功率为10 W. ImageNet相较Cifar-10具有更多的图片数量和更大的图像尺寸,但相较模型的总时间开销而言,硬盘读写时间开销仍不到总开销的10%,而网络开销也仅为总时间开销的3.9%左右. 因此,通过理论分析和实测结果可以证明硬盘读写开销和网络通信开销相较于庞大的计算开销确实可以忽略.
因此,在天河三号原型机平台使用32 FT节点和128 MT节点对VGG模型大规模分布式数据并行训练过程中各组件功耗情况如表3所示.
表 3 各组件功耗Table 3. Power Consumption of Each Component组件类型 功率/W MT-Pca 60 MT-Pci 15 MT-Pma 75 MT-Pmi 18.75 FT-Pca 50 FT-Pci 12.5 FT-Pma 46 FT-Pmi 11.5 注:Pca和Pci分别表示处理器正常工作和空闲时的开销;Pma和Pmi分别表示内存设备正常工作和空闲时的功率. 根据式(5)和Nishtala等人[65]、Jahanshahi等人[66]和Zhao等人[67]的相关研究表明处理器频率的变化可以用来表征功率的变化. 因此本文使用CPU频率表征功率情况,通过对比各种能耗模型对CPU频率变化的预测情况与真实CPU频率变化情况来验证本文提出的MC2能耗模型的有效性和准确性.
3.3 实验结果
3.3.1 在Cifar-10上的实验结果
使用MT128节点各阶段的运行时间如表4和表5所示,使用FT32节点各阶段的运行时间如表6所示.
表 4 VGG16-MT128各阶段训练时间Table 4. Training Time of Each Stage in VGG16-MT128类型 训练时间/s Tsetdataset 4.5603 Tloaddata 0.1891 Tpreprocess 0.7302 Tinoutmodel 0.5636 Tf 21.2910 Tb 28.6782 Tcommunication 2.1815 Tupdate 0.2425 Tadd 1.8468 表 5 ViT-MT128各阶段训练时间Table 5. Training Time of Each Stage in ViT-MT128类型 训练时间/s Tsetdataset 13.6556 Tloaddata 1.0237 Tpreprocess 1.8221 Tinoutmodel 0.9213 Tf 140.0465 Tb 323.5359 Tcommunication 21.2551 Tupdate 16.7213 Tadd 20.0640 表 6 VGG16-FT32各阶段训练时间Table 6. Training Time of Each Stage in VGG16-FT32类型 训练时间/s Tsetdataset 3.2940 Tloaddata 0.1932 Tpreprocess 0.4508 Tinoutmodel 0.2546 Tf 76.4447 Tb 100.1702 Tcommunication 6.3135 Tupdate 0.6579 Tadd 4.7971 因此,实验总能耗可近似表示为
Etotal=N(Pca(Tpreprocess+Tf+Tb+Tupdate+Tcommunication)+Pci(Tsetdataset+Tloaddata+Tinoutmodel+Tadd)+Pma(Tinoutmodel+Tpreprocess+Tsetdataset+Tloaddata+Tf+Tb+Tupdate+Tcommunication)+Pmi(Tadd)), (42) 其中Tf、Tb分别表示前向传播和反向传播的时间,Pca和Pci分别表示处理器正常工作和空闲时的开销,Pma和Pmi分别表示内存设备正常工作和空闲时的功率. Tadd表示各节点等待慢节点完成计算以进行梯度平均的平均等待时间. 值得注意的是,式(41)(42)中时间变量T的含义有所不同. 在式(41)中,∫TendoperatorTbeginoperatorPioperatordt指得是节点i执行1次某个算子操作所产生的能耗. 而在式(42)中,PxToperator指得是单个节点在整个训练过程中执行某个算子操作的处理器或内存的总能耗.
由表3~5以及式(42)可知,MT128完成本实验设置下的大规模分布式训练任务的VGG总能耗和各阶段能耗如表7所示,ViT各子阶段能耗和总能耗如表8所示.
表 7 VGG MT128训练中的能耗Table 7. Energy Consumption in VGG MT128 Training阶段 能耗/(kW·h) 总能耗/(kW·h) MT128-数据预处理 0.0205 0.2743 MT128-前向与反向传播 0.2399 MT128-梯度同步与更新 0.0139 FT32-数据预处理 0.0023 0.1600 FT32-前向与反向传播 0.1507 FT32-梯度同步与更新 0.0070 表 8 ViT MT128训练中的能耗Table 8. Energy Consumption in ViT MT128 Training类别 能耗/(kW·h) Esetdataset 0.065546674 Eloaddata 0.003275884 Epreprocess 0.00874608 Einoutmodel 0.00294816 Ef 0.672223157 Eb 1.552972412 Ecommunication 0.10202448 Eupdate 0.080256 Etotal 2.5120 进一步地,当扩大训练的epoch次数时,只需要对应扩大第2部分和第3部分时间就可以算出最终的能耗情况,例如,当使用MT128训练VGG网络100个epoch时的能耗约为25.39 kW·h,使用FT32训练100个epoch时的能耗约为15.77 kW·h.以MT128为例,参考Cisco Nexus X9536PQ和 Toshiba AL14SX Series Hard Disk Drive计算得到100个epoch的网络能耗和存储能耗分别为0.096 kW·h和0.077 kW·h,占比均不超过0.4%,因此,这2部分能耗确实是可以忽略的.
3.3.2 在ImageNet上的实验结果
使用MT128节点在各阶段的运行时间如表9所示. ImageNet的总实验能耗仍然使用式(42)的MC2能耗模型,其基于表10所示的各组件能耗开销情况计算得到. 如表10所示,使用128 MT节点在ImageNet上训练1个epoch 的ResNet50模型的能耗为77.44 kW·h,类似地,使用100个epoch的训练能耗约为7 122.28 kW·h.
表 9 MT128 ResNet50各阶段训练时间Table 9. Training Time of Each Stage in MT128 ResNet50阶段 训练时间/min Tsetdataset 40.1352 Tloaddata 6.0920 Tpreprocess 4.3322 Tinoutmodel 2.2662 Tf 115.5126 Tb 157.6198 Tcommunication 13.0800 Tupdate 4.9034 Tadd 17.9000 表 10 ResNet50训练能耗Table 10. Energy Consumption in ResNet50 Training阶段 能耗/(kW·h) MT128-数据预处理 6.28 MT128-前向与反向传播 64.69 MT128-梯度同步与更新 6.47 MT128-总能耗 77.44 本文在典型小数据集和大数据集上对经典模型和最新模型使用MC2能耗模型进行训练能耗预测的结果表明本文提出的能耗模型可以快速、准确、有效预测各种DNN在各种数据集上开展大规模分布式数据并行训练的能耗情况. 本文在3.4节进一步对比了MC2和其他能耗模型预测情况与真实能耗情况. 结果表明,MC2能耗模型在各种模型和数据集上相较于其他能耗预测模型都能够更逼近真实的能耗情况,具有较强的准确性和普遍适用性.
使用MC2能耗模型能够帮助研究者快速、准确地定位被预测模型训练时的能耗瓶颈,指导后续高能效网络模型的优化研究.
3.4 结果分析
如图9所示,我们捕获了在天河三号原型机环境下使用Cifar-10数据集分布式并行训练VGG网络1个epoch的CPU频率变化情况,按照本文的超参数设置,每个epoch将会执行6个批次,为了更好地展示CPU频率变化情况,我们将每个时间步下的频率进行了标准化(在当前频率为主频时,频率为1). 通过图9中CPU频率变化(图9中实线)可以看出,在数据集初始化阶段CPU频率较低,该阶段时长占总训练时长约8%,随后频率随批次呈周期性变化,每个周期又可分为2个阶段:第1个阶段主要执行密集计算,CPU频率维持在主频附近,该部分占每个周期的96%;第2个阶段主要以执行通信和每批次数据读取为主,该部分频率保持在最低频率附近. CPU频率的变化曲线很好地吻合了MC2模型曲线(图9中虚线)对实验结果的预想,图中高频、低频出现的位置和持续时间与MC2模型预测的处理器高能耗与低能耗出现的位置和持续时间基本一致.
另外,图9显示了CPU主频在训练过程中可以分为非周期性部分和周期性部分,并且频率的周期很难在不使用MC2进行建模前得到. 为了对比MC2能耗模型和与计算时间成线性比例的能耗模型,我们同时绘制了MC2能耗模型预测曲线和使用1s,4s,8s,16s进行训练并与时间成比例的能耗模型和AR[60],SES[61],ARIMA[62]模型预测曲线. 实验结果表明,MC2的预测准确率达到了97.16%,相较于其余7种模型分别高出了69.12,69.50,34.58,13.47,5.23,22.13,10.53个百分点. 另外我们也使用类似的方法评估了ResNet50模型的能耗预测结果,预测准确率为97.53%.
MC2能耗模型曲线与真实结果更加一致,使用成比例线性放大能耗和时间序列预测模型均不能很好地拟合真实的CPU频率变化图像. 因此,使用MC2能耗模型将比使用计算时间成线型比例更加准确. 值得注意的是,本文进行了重复多次测试,虽然每次实验都会有个别突发的频率尖峰,但每次尖峰的出现时刻和持续时间都是不同的. 本文认为这种突发的“超频”可能是由于Linux系统内核态异常导致的,这种异常对于用户态是不可知的,也不是由于程序所引起,因为即使不运行任何程序,仍然会有某些时刻突发的超频. 本文提出的MC2模型是面向实际应用行为和底层硬件的普遍情况进行建模的,很难预测底层这种突发的异常. 由于“超频”时间较短,对总体功耗影响不大,我们会在后续的研究中进一步地观测和确定这种突发的“超频”出现的原因.
由于MC2模型对大规模分布式DNN任务的每一个阶段所对应的硬件表现情况都进行了细致地分析,只要使用准确的各组件能耗信息就可以得到一个与真实开销十分接近的能耗模型,效果要远胜于仅仅考虑处理器开销,且未考虑到处理器在不同时期表现的现有静态处理器能耗模型.
除此之外,在大型分布式计算中心使用功率计对某一个具体的任务进行能耗测量是十分困难的,而我们的MC2模型只需要知道硬件组件的静态功耗和动态功耗情况就可以得到较为准确的结果. 如果采用公开发行的处理器、内存、磁盘、网卡等设备,这些功率信息就可以从生产商处容易地获取到.
如第2节所述,目前常用的针对特定任务的能耗度量方法主要有2种:一种是采用功率计进行直接测量;另一种主要根据CPU功率乘以运行时间来估计能耗. 我们提出的MC2能耗模型对于这2种方法的对比结果如表11所示. 由于上述2种方法均将分布式DNN训练任务和底层硬件情况视为黑盒,不了解应用本身特点,所以必须通过完整地执行整个训练任务才能得到最终的能耗情况. 相较而言,MC2根据DNN训练任务运行特点和底层硬件能耗表现,仅计算1个epoch的能耗即可得到总训练能耗,成本更低、耗时更少.
表 11 能耗模型对比Table 11. Comparison of Energy Consumption Model类别 速度 成本 部署难易程度 准确性 测量方法 慢 高 困难 高 CPU估算 慢 高 简单 低 MC2 快 低 中等 较高 4. 结论与展望
本文提出了一种面向DNN大规模分布式数据并行训练的MC2能耗模型,该模型细致地将训练任务拆解为数据预处理、前向和反向传播、梯度同步与更新3个阶段,结合各阶段处理器及加速设备、内存、硬盘等设备的硬件运行特征建立各阶段功耗模型,仅需要各阶段基本的组件功耗,就可以根据训练轮次要求建模得到整体训练能耗;并且针对异构平台提出了能耗补偿策略,比将训练任务看成单一任务仅考虑处理器能耗的模型得到更准确的能耗评估. 本文通过在国产E级超算原型机天河三号原型机上使用典型的VGG16和ResNet50网络模型,得到了在不同规模下2种计算节点上的训练能耗,证明了本文算法的有效性和扩展性.
本文所提出的MC2模型用于评估在大规模DNN分布式训练过程中3个阶段的能耗情况以及总能耗情况. 一方面,科研人员可以利用MC2模型轻松地得到自己对裁剪后的DNN模型的能耗情况,从而评估自己的裁剪算法在能耗优化上的优劣情况;另一方面,科研人员也可以利用MC2模型获取到自己的训练能耗瓶颈在DNN任务的哪个阶段以及所对应的哪个(或哪几个)设备中,针对性地使用各种优化方法来减少自己的训练能耗.
未来,我们将在其他数据中心、计算中心、云服务中心等分布式计算集群上进一步地验证和优化MC2能耗模型. 为了实现上述平台的部署,我们将对代码进行分布式多机多GPU数据并行训练的适配,并支持NCCL和GLOO等更多的通信底层框架. 我们会在后续的研究中进一步考虑网络的拓扑、路由、流控及应用通信过程对网络能耗的影响以增强MC2模型的准确性. 我们也将尝试预测和拟合图8中出现的“尖峰”点.
另外,除了节点计算性能差异导致的节点同步等待之外,还有一类节点同步等待是分布式节点网络导致的,这一类网络问题出现的原因包括网络拓扑结构异常、偶发的网络异常、网络阻塞等,针对这一类原因导致的等待产生的能耗开销我们正在探索中,并会在之后的研究中进一步讨论.
最后,我们将进一步基于本文提出的能耗模型,设计和验证新的基于能耗感知的DNN剪枝、任务调度优化和模块卸载等节能策略.
作者贡献声明:魏嘉提出了研究思路、完成主要实验并撰写论文;张兴军提供思路指导并修改论文;王龙翔提出了实验设计方法;赵明强完成了部分实验和文章校对;董小社优化了论文研究思路.
-
表 1 相关工作中的关键变量
Table 1 Key Variables in Related Work
符号 含义 W 神经网络权值 λlr 神经网络学习率 n 批大小 E 能耗 P 功率 T 时间 t 时刻 Ptotal 总功率 Pdynamic 动态功率 Pstatic 静态功率 A 每个时钟周期内的开关数 V 电压 C 电容 Istatic 漏电电流 Td 温度 Ki 技术常数 αi 某个事件发生的次数 Ci 某个事件所花费的能耗 m 处理器核数 ρ 处理器核利用率 Ps 速度为s时的处理器功率 λ 任务到达率 R 每个任务平均执行指令数目 αai 活动因子 fmaxi 处理器组件最大频率 Pidlesm 空闲流处理组件功率 EDRAMtoSRAM 从DRAM读写数据到SRAM的能耗 ESRAM SRAM实现激活和权值缓冲区的能耗 Erest TPU其余组件能耗 PDRAM 动态随机存储器(DRAM)功率 μwrite 写吞吐量 μread 读吞吐量 Eicache 指令高速缓存能耗 Edcache 数据高速缓存能耗 Ebuses 高速缓存指令开销 Epads 主存与外设间总线能耗 Emem 内存能耗 α(A) 算法A激活阶段指令周期数 R(A) 算法A激活阶段指令读次数 W(A) 算法A激活阶段指令写次数 Pcke 内存静态功率 Pstby 激活存储组件和等待指令功率 Eact 激活时能耗 Prdwr 内存读写功率 Pser 整个服务器的功率 Pcpu 服务器中CPU功率 Ccpu 每台服务器CPU的数量 Cmem 每个服务器中内存DIMMs的数量 Cd 每个服务器磁盘数量 Pd 每个磁盘的功率 (Pi,Ti) MapReduce初始化阶段 (Pm,Tm) MapReduce映射阶段 (Pshu,Tshu) MapReduce洗牌阶段 (Pr,Tr) MapReduce规约阶段 Elayer 每一层的能耗 {E}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{p}} 计算开销 {E}_{\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}} 数据输入、数据输出以及卷积核的访存开销 表 2 天河三号原型机基本信息
Table 2 Basic Information of Tianhe-3 Prototype
类别 属性 FT-2000+ MT-2000+ 硬件 节点数 128 512 单节点核数 32 32 频率/GHz 2.4 2.0 内存容量/GB 64 16 网络互联带宽/Gbps 200 软件 操作系统 kylin 4.0-1a OS with kernel v4.4.0 文件系统 lustre MPI版本 mpich v3.2.1 编译器 gcc v4.9.1/v4.9.3 库 Boost,BLAS,openBLAS,scalapack等 表 3 各组件功耗
Table 3 Power Consumption of Each Component
组件类型 功率/W MT- {P}_{\mathrm{c}\mathrm{a}} 60 MT- {P}_{\mathrm{c}\mathrm{i}} 15 MT- {P}_{\mathrm{m}\mathrm{a}} 75 MT- {P}_{\mathrm{m}\mathrm{i}} 18.75 FT- {P}_{\mathrm{c}\mathrm{a}} 50 FT- {P}_{\mathrm{c}\mathrm{i}} 12.5 FT- {P}_{\mathrm{m}\mathrm{a}} 46 FT- {P}_{\mathrm{m}\mathrm{i}} 11.5 注:{P}_{\mathrm{c}\mathrm{a}} 和{P}_{\rm{ci}} 分别表示处理器正常工作和空闲时的开销;{P}_{\mathrm{m}\mathrm{a}} 和{P}_{\mathrm{m}\mathrm{i}} 分别表示内存设备正常工作和空闲时的功率. 表 4 VGG16-MT128各阶段训练时间
Table 4 Training Time of Each Stage in VGG16-MT128
类型 训练时间/s {T}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}} 4.5603 {T}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}} 0.1891 {T}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}} 0.7302 {T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}} 0.5636 {T}_{\mathrm{f}} 21.2910 {T}_{\mathrm{b}} 28.6782 {T}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}} 2.1815 {T}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}} 0.2425 {T}_{\mathrm{a}\mathrm{d}\mathrm{d}} 1.8468 表 5 ViT-MT128各阶段训练时间
Table 5 Training Time of Each Stage in ViT-MT128
类型 训练时间/s {T}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}} 13.6556 {T}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}} 1.0237 {T}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}} 1.8221 {T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}} 0.9213 {T}_{\mathrm{f}} 140.0465 {T}_{\mathrm{b}} 323.5359 {T}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}} 21.2551 {T}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}} 16.7213 {T}_{\mathrm{a}\mathrm{d}\mathrm{d}} 20.0640 表 6 VGG16-FT32各阶段训练时间
Table 6 Training Time of Each Stage in VGG16-FT32
类型 训练时间/s {T}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}} 3.2940 {T}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}} 0.1932 {T}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}} 0.4508 {T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}} 0.2546 {T}_{\mathrm{f}} 76.4447 {T}_{\mathrm{b}} 100.1702 {T}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}} 6.3135 {T}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}} 0.6579 {T}_{\mathrm{a}\mathrm{d}\mathrm{d}} 4.7971 表 7 VGG MT128训练中的能耗
Table 7 Energy Consumption in VGG MT128 Training
阶段 能耗/(kW·h) 总能耗/(kW·h) MT128-数据预处理 0.0205 0.2743 MT128-前向与反向传播 0.2399 MT128-梯度同步与更新 0.0139 FT32-数据预处理 0.0023 0.1600 FT32-前向与反向传播 0.1507 FT32-梯度同步与更新 0.0070 表 8 ViT MT128训练中的能耗
Table 8 Energy Consumption in ViT MT128 Training
类别 能耗/(kW·h) {E}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}} 0.065546674 {E}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}} 0.003275884 {E}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}} 0.00874608 {E}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}} 0.00294816 {E}_{\mathrm{f}} 0.672223157 {E}_{\mathrm{b}} 1.552972412 {E}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}} 0.10202448 {E}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}} 0.080256 Etotal 2.5120 表 9 MT128 ResNet50各阶段训练时间
Table 9 Training Time of Each Stage in MT128 ResNet50
阶段 训练时间/min {T}_{\mathrm{s}\mathrm{e}\mathrm{t}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}\mathrm{s}\mathrm{e}\mathrm{t}} 40.1352 {T}_{\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{a}} 6.0920 {T}_{\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{p}\mathrm{r}\mathrm{o}\mathrm{c}\mathrm{e}\mathrm{s}\mathrm{s}} 4.3322 {T}_{\mathrm{i}\mathrm{n}\mathrm{o}\mathrm{u}\mathrm{t}\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{e}\mathrm{l}} 2.2662 {T}_{\mathrm{f}} 115.5126 {T}_{\mathrm{b}} 157.6198 {T}_{\mathrm{c}\mathrm{o}\mathrm{m}\mathrm{m}\mathrm{u}\mathrm{n}\mathrm{i}\mathrm{c}\mathrm{a}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}} 13.0800 {T}_{\mathrm{u}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}} 4.9034 {T}_{\mathrm{a}\mathrm{d}\mathrm{d}} 17.9000 表 10 ResNet50训练能耗
Table 10 Energy Consumption in ResNet50 Training
阶段 能耗/(kW·h) MT128-数据预处理 6.28 MT128-前向与反向传播 64.69 MT128-梯度同步与更新 6.47 MT128-总能耗 77.44 表 11 能耗模型对比
Table 11 Comparison of Energy Consumption Model
类别 速度 成本 部署难易程度 准确性 测量方法 慢 高 困难 高 CPU估算 慢 高 简单 低 MC2 快 低 中等 较高 -
[1] Orhan A E. Robustness properties of Facebook’s ResNeXt WSL models[J]. arXiv preprint, arXiv: 1907.07640, 2019
[2] Gao Yongqiang, Guan Haibing, Qi Zhengwei, et al. Quality of service aware power management for virtualized data centers[J]. Journal of Systems Architecture, 2013, 59(4/5): 245−259
[3] Bilal K, Malik S U R, Khan S U, et al. Trends and challenges in cloud datacenters[J]. IEEE Cloud Computing, 2014, 1(1): 10−20 doi: 10.1109/MCC.2014.26
[4] Whitehead B, Andrews D, Shah A, et al. Assessing the environmental impact of data centres part 1: Background, energy use and metrics[J]. Building and Environment, 2014, 82(4): 151−159
[5] Rivoire S M. Designing Energy-Efficient Computer Systems[M]//Models and Metrics for Energy-Efficient Computer Systems. Ann Arbor, MI: ProQuest, 2008: 29−65
[6] vor dem Berge M, Da Costa G, Kopecki A, et al. Modeling and simulation of data center energy-efficiency in coolemall[C]//Proc of the 1st Int Workshop on Energy Efficient Data Centers. Berlin: Springer, 2012: 25−36
[7] Floratou A, Bertsch F, Patel J M, et al. Towards building wind tunnels for data center design[J]. Proceedings of the VLDB Endowment, 2014, 7(9): 781−784 doi: 10.14778/2732939.2732950
[8] Dean J, Corrado G S, Monga R, et al. Large scale distributed deep networks[C]//Proc of the 26th Neural Information and Processing System. Cambridge, MA: MIT, 2012: 1223−1231
[9] Raina R, Madhavan A, Ng A Y. Large-scale deep unsupervised learning using graphics processors[C]//Proc of the 26th Int Conf on Machine Learning. New York: ACM, 2009: 873−88
[10] Li Teng, Dou Yong, Jiang Jingfei, et al. Optimized deep belief networks on CUDA GPUs[C]//Proc of the 27th Int Joint Conf on Neural Networks. Piscataway, NJ: IEEE, 2015: 1688−1696
[11] Bottleson J, Kim S Y, Andrews J, et al. clCaffe: OpenCL accelerated Caffe for convolutional neural networks[C]//Proc of the 30th IEEE Int Parallel and Distributed Processing Symp Workshops. Piscataway, NJ: IEEE, 2016: 50−57
[12] Kaler T, Stathas N, Ouyang A, et al. Accelerating training and inference of graph neural networks with fast sampling and pipelining[C]//Proc of the 5th Machine Learning and Systems. New York: ACM, 2022: 172−189
[13] Tan Sijun, Knott B, Tian Yuan, et al. CryptGPU: Fast privacy-preserving machine learning on the GPU[C]//Proc of the 42nd IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2021: 1021−1038
[14] Viebke A, Memeti S, Pllana S, et al. CHAOS: A parallelization scheme for training convolutional neural networks on Intel Xeon Phi[J]. The Journal of Supercomputing, 2019, 75(1): 197−227 doi: 10.1007/s11227-017-1994-x
[15] Liu Junjie, Wang Haixia, Wang Dongsheng, et al. Parallelizing convolutional neural networks on Intel many integrated core architecture[C]//Proc of the 28th Int Conf on Architecture of Computing Systems. Berlin: Springer, 2015: 71−82
[16] Zlateski A, Lee K, Seung H S. Scalable training of 3D convolutional networks on multi-and many-cores[J]. Journal of Parallel and Distributed Computing, 2017, 106(7): 195−204
[17] Suda N, Chandra V, Dasika G, et al. Throughput-optimized OpenCL-based FPGA accelerator for large-scale convolutional neural networks[C]//Proc of the 24th ACM/SIGDA Int Symp on Field-Programmable Gate Arrays. New York: ACM, 2016: 16−25
[18] Zhang Jialiang, Li Jing. Improving the performance of OpenCL-based FPGA accelerator for convolutional neural network[C]//Proc of the 25th ACM/SIGDA Int Symp on Field-Programmable Gate Arrays. New York: ACM, 2017: 25−34
[19] Aydonat U, O’Connell S, Capalija D, et al. An OpenCL™ deep learning accelerator on Arria 10[C]//Proc of the 25th ACM/SIGDA Int Symp on Field-Programmable Gate Arrays. New York: ACM, 2017: 55−64
[20] 朱传家,刘鑫,方佳瑞. 基于“神威太湖之光”的Caffe分布式扩展研究[J]. 计算机应用与软件,2020,37(1):15−20 Zhu Chuanjia, Liu Xin, Fang Jiarui. Research on distributed extension of Caffe based on “Light of Taihu Lake” in Shenwei[J]. Computer Applications and Software, 2020, 37(1): 15−20 (in Chinese)
[21] 魏嘉,张兴军,纪泽宇,等. 天河三号原型机分布式并行深度神经网络性能评测及调优[J]. 计算机工程与科学,2021,43(5):782−791 doi: 10.3969/j.issn.1007-130X.2021.05.003 Wei Jia, Zhang Xingjun, Ji Zeyu, et al. Performance evaluation and optimization of distributed parallel deep neural networks on the Tianhe-3 prototype[J]. Computer Engineering and Science, 2021, 43(5): 782−791 doi: 10.3969/j.issn.1007-130X.2021.05.003
[22] Ji Shihao, Satish N, Li Sheng, et al. Parallelizing Word2Vec in shared and distributed memory[J]. IEEE Transactions on Parallel and Distributed Systems, 2019, 30(9): 2090−2100 doi: 10.1109/TPDS.2019.2904058
[23] Das D, Avancha S, Mudigere D, et al. Distributed deep learning using synchronous stochastic gradient descent[J]. arXiv preprint, arXiv: 1602.06709, 2016
[24] Roy P, Song S L, Krishnamoorthy S, et al. Numa-caffe: Numa-aware deep learning neural networks[J]. ACM Transactions on Architecture and Code Optimization, 2018, 15(2): 1−26
[25] Mittal S, Rajput P, Subramoney S. A survey of deep learning on CPUs: Opportunities and co-optimizations[J]. IEEE Transactions on Neural Networks and Learning Systems, 2021, 33(10): 5095−5115
[26] Awan A A, Hamidouche K, Hashmi J M, et al. S-Caffe: Co-designing MPI runtimes and Caffe for scalable deep learning on modern GPU clusters//Proc of the 22nd ACM SIGPLAN Symp on Principles and Practice of Parallel Programming. New York: ACM, 2017: 193−205
[27] Yin J, Gahlot S, Laanait N, et al. Strategies to deploy and scale deep learning on the summit supercomputer[C]//Proc of the 3rd IEEE/ACM Workshop on Deep Learning on Supercomputers. Piscataway, NJ: IEEE, 2019: 84−94
[28] Duan Qingyang, Wang Zeqin, Xu Yuedong, et al. Mercury: A simple transport layer scheduler to accelerate distributed DNN training[C]//Proc of the 41st IEEE Conf on Computer Communications. Piscataway, NJ: IEEE, 2022: 350−359
[29] Huang Yanping, Cheng Youlong, Bapna A, et al. Gpipe: Efficient training of giant neural networks using pipeline parallelism[J]. Advances in Neural Information Processing Systems, 2019, 32(1): 103−112
[30] Narayanan D, Harlap A, Phanishayee A, et al. PipeDream: Generalized pipeline parallelism for DNN training[C]//Proc of the 27th ACM Symp on Operating Systems Principles. New York: ACM, 2019: 1−15
[31] Rajbhandari S, Ruwase O, Rasley J, et al. Zero-infinity: Breaking the gpu memory wall for extreme scale deep learning[C]//Proc of the 34th Int Conf for High Performance Computing, Networking, Storage and Analysis. Piscataway, NJ: IEEE, 2021: 826−840
[32] Dayarathna M, Wen Yonggang, Fan Rui. Data center energy consumption modeling: A survey[J]. IEEE Communications Surveys & Tutorials, 2015, 18(1): 732−794
[33] Ge Rong, Feng Xizhou, Cameron K W. Performance-constrained distributed dvs scheduling for scientific applications on power-aware clusters[C]//Proc of the 18th ACM/IEEE Conf on Supercomputing. Piscataway, NJ: IEEE, 2005: 34−34
[34] Yeo S, Lee H H S. Peeling the Power Onion of Data Centers[M]//Energy Efficient Thermal Management of Data Centers. Berlin: Springer, 2012: 137−168
[35] Gao Yongqiang, Guan Haibing, Qi Zhengwei, et al. Quality of service aware power management for virtualized data centers[J]. Journal of Systems Architecture, 2013, 59(4): 245−259
[36] Shin D, Kim J, Chang N, et al. Energy-optimal dynamic thermal management for green computing[C]//Proc of the 22nd IEEE/ACM Int Conf on Computer-Aided Design-Digest of Technical Papers. Piscataway, NJ: IEEE, 2009: 652−657
[37] Merkel A, Bellosa F. Balancing power consumption in multiprocessor systems[J]. ACM SIGOPS Operating Systems Review, 2006, 40(4): 403−414 doi: 10.1145/1218063.1217974
[38] Bertran R, Becerra Y, Carrera D, et al. Accurate energy accounting for shared virtualized environments using pmc-based power modeling techniques[C/OL]//Proc of the 11th IEEE/ACM Int Conf on Grid Computing. Piscataway, NJ: IEEE, 2010[2023-07-20].https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5697889
[39] Li Hui, Casale G, Ellahi T. SLA-driven planning and optimization of enterprise applications[C]//Proc of the 1st Joint WOSP/SIPEW Int Conf on Performance Engineering. New York: ACM, 2010: 117−128
[40] Li Keqin. Optimal configuration of a multicore server processor for managing the power and performance tradeoff[J]. The Journal of Supercomputing, 2012, 61(1): 189−214 doi: 10.1007/s11227-011-0686-1
[41] Kim S, Roy I, Talwar V. Evaluating integrated graphics processors for data center workloads[C]//Proc of the 46th Workshop on Power-Aware Computing and Systems. New York: ACM, 2013: 41−45
[42] Jouppi N P, Young C, Patil N, et al. In-datacenter performance analysis of a tensor processing unit[C]//Proc of the 44th Annual Int Symp on Computer Architecture. New York: ACM, 2017: 1−12
[43] Zhang Boyu, Davoodi A, Hu Yuhen. Exploring energy and accuracy tradeoff in structure simplification of trained deep neural networks[J]. IEEE Journal on Emerging and Selected Topics in Circuits and Systems, 2018, 8(4): 836−848 doi: 10.1109/JETCAS.2018.2833383
[44] Ellison B, Minas L. The problem of power consumption in servers[J]. Energy Efficiency for Information Technology, 2009, 41(2): 1−17
[45] Giridhar B, Cieslak M, Duggal D, et al. Exploring DRAM organizations for energy-efficient and resilient exascale memories[C]//Proc of the 26th Int Conf on High Performance Computing, Networking, Storage and Analysis. Piscataway, NJ: IEEE, 2013: 277−289
[46] Lin Jiang, Zheng Hongzhong, Zhu Zhichun, et al. Thermal modeling and management of DRAM memory systems[C]//Proc of the 34th Annual Int Symp on Computer Architecture. New York: ACM, 2007: 312−322
[47] Vijaykrishnan N, Kandemir M, Irwin M J, et al. Energy-driven integrated hardware-software optimizations using SimplePower[J]. ACM SIGARCH Computer Architecture News, 2000, 28(2): 95−106 doi: 10.1145/342001.339659
[48] Shiue W T, Chakrabarti C. Memory exploration for low power, embedded systems[C]//Proc of the 36th Design Automation Conf. Piscataway, NJ: IEEE, 1999: 140−145
[49] Roy S, Rudra A, Verma A. An energy complexity model for algorithms[C]//Proc of the 4th Conf on Innovations in Theoretical Computer Science. New York: ACM, 2013: 283−304
[50] Poess M, Othayoth Nambiar R. A power consumption analysis of decision support systems[C]//Proc of the 1st Joint WOSP/SIPEW Int Conf on Performance Engineering. New York: ACM, 2010: 147−152
[51] Feng Boliang, Lu Jiaheng, Zhou Yongluan, et al. Energy efficiency for MapReduce workloads: An in-depth study[C]//Proc of the 33rd Australasian Database Conf. Canberra, Australian: ACS, 2012: 61−70
[52] Yang T, Chen Y, Sze V. Designing energy-efficient convolutional neural networks using energy-aware pruning[C]//Proc of the 30th IEEE Conf on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2017: 5687−5695
[53] Wang Ruibo, Lu Kai, Chen Juan, et al. Brief introduction of TianHe exascale prototype system[J]. Tsinghua Science and Technology, 2020, 26(3): 361−369
[54] Wei Jia, Zhang Xingjun, Ji Zeyu, et al. Deploying and scaling distributed parallel deep neural networks on the Tianhe-3 prototype system[J]. Scientific Reports, 2021, 11(1): 1−14
[55] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint, arXiv:1409.1556, 2014
[56] He Kaiming, Zhang Xiangyu, Ren Shaoqing, et al. Deep residual learning for image recognition[C]//Proc of the 29th IEEE Conf on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2016: 770−778
[57] Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16×16 words: Transformers for image recognition at scale[J]. arXiv preprint, arXiv: 2010.11929, 2021
[58] Marcel S, Rodriguez Y. Torchvision the machine-vision package of torch[C]//Proc of the 18th ACM Int Conf on Multimedia. New York: ACM, 2010: 1485−1488
[59] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in Neural Information Processing Systems, 2012, 25(1): 1097−1105
[60] Akaike H. Autoregressive model fitting for control[M]//Selected Papers of Hirotugu Akaike. Berlin: Springer, 1998: 153−170
[61] Gardner Jr E S. Exponential smoothing: The state of the art[J]. Journal of Forecasting, 1985, 4(1): 1−28
[62] Box G E P, Pierce D A. Distribution of residual autocorrelations in autoregressive-integrated moving average time series models[J]. Journal of the American statistical Association, 1970, 332(65): 1509−1526
[63] Hanusz Z, Tarasinska J, Zielinski W. Shapiro-Wilk test with known mean[J]. REVSTAT-Statistical Journal, 2016, 14(1): 89−100
[64] Henning J L. SPEC CPU2000: Measuring CPU performance in the new millennium[J]. Computer, 2000, 33(7): 28−35
[65] Nishtala R, Petrucci V, Carpenter P, et al. Twig: Multi-agent task management for colocated latency-critical cloud services[C]//Proc of the 26th IEEE Int Symp on High Performance Computer Architecture. Piscataway, NJ: IEEE, 2020: 167−179
[66] Jahanshahi A, Yu Nanpeng, Wong D. PowerMorph: QoS-aware server power reshaping for data center gegulation service[J]. ACM Transactions on Architecture and Code Optimization, 2022, 19(3): 1−27
[67] Zhao Laiping, Yang Yanan, Zhang Kaixuan, et al. Rhythm: Component-distinguishable workload deployment in datacenters[C]//Proc of the 15th European Conf on Computer Systems. New York: ACM, 2020: 153−170
-
期刊类型引用(0)
其他类型引用(1)