CN115437795B - 一种异构gpu集群负载感知的显存重计算优化方法及系统 - Google Patents

一种异构gpu集群负载感知的显存重计算优化方法及系统 Download PDF

Info

Publication number
CN115437795B
CN115437795B CN202211386085.2A CN202211386085A CN115437795B CN 115437795 B CN115437795 B CN 115437795B CN 202211386085 A CN202211386085 A CN 202211386085A CN 115437795 B CN115437795 B CN 115437795B
Authority
CN
China
Prior art keywords
video memory
stage
recalculation
neural network
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211386085.2A
Other languages
English (en)
Other versions
CN115437795A (zh
Inventor
张竞慧
翁财善
徐正佳
李剑歌
东方
罗军舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN202211386085.2A priority Critical patent/CN115437795B/zh
Publication of CN115437795A publication Critical patent/CN115437795A/zh
Application granted granted Critical
Publication of CN115437795B publication Critical patent/CN115437795B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种异构GPU集群负载感知的显存重计算优化方法及系统,针对异构GPU集群环境下流水线训练显存需求,刻画出其训练执行过程中计算时间、GPU显存总量、显存占用等相应指标,并将其作为负载感知的显存重计算优化方法的输入,建立显存重计算优化模型,计算各GPU上显存负载百分比,确定所有阶段中显存负载最高的阶段,根据最小化显存开销算法进行重计算优化,保证各阶段负载均衡,提升整体吞吐率,本发明提出最小化负载最高阶段显存开销算法与平衡异构GPU各阶段开销算法,减少异构GPU集群环境下流水线训练的显存占用,同时最小化显存优化开销,更好地支持大模型的训练。

Description

一种异构GPU集群负载感知的显存重计算优化方法及系统
技术领域
本发明属于分布式计算机技术领域,主要涉及了一种异构GPU集群负载感知的显存重计算优化方法及系统。
背景技术
近年来人工智能技术快速发展,深度神经网络 (Deep Neural Networks,DNNs)成为了应用最广泛的人工智能技术之一。深度学习是通过复杂的多层次神经网络来学习大量数据中的特征,然后在应用在诸如分类、识别等高精度预测领域中。大规模深度神经网络结构和大数据集在深度学习中扮演着至关重要的地位。为了更好地从数据中心提取特征,研究者们尝试用更大的神经网络模型来学习特征,以提升深度学习预测的准确率。然而,更大的模型也意味着需要更强的计算能力和更大的显存容量。对于更大的深度神经网络模型,显存占用量也急剧增加。但是对于训练模型常用的硬件加速器 GPU 来说,显存容量却相对有限。随着深度学习模型显存占用的增加,模型的准确率也在上升,但是此时 GPU 的显存容量却成为了设计更大模型的瓶颈,例如 ResNet1001需要大概32GB显存,但是常见的NVIDIA RTX 3090 GPU的显存只有24GB,远远不能满足需求。
深度神经网络的训练通过执行正向传播和反向传播算法来学习模型中的特性并且更新参数。深度神经网络的训练通常包括以下三个阶段:(1)正向传播。正向传播是指神经网络从带有标签的训练集中读取数据,通过中间层进行计算,最后由输出层输出计算结果的过程。为了减少训练过程中的噪声以及提高训练速度,每次正向传播会处理一个批次的数据。(2)反向传播。正向传播过程结束后,要把正向传播的结果与训练集上的标签对比,并采用相应的损失函数计算出误差。然后通过链式求导法则,从正向传播的反方向求出各个参数的梯度,计算不同参数对误差影响的权重大小,反向传播时要用到对应层正向传播的中间结果。(3)梯度下降。根据反向传播中得到的参数梯度,采用梯度下降的方法,更新每一层的参数,完成一次训练迭代。不断重复迭代过程直到神经网络达到收敛状态,完成训练。由上述描述可知,深度学习在训练过程中,除了缓存参数和参数的梯度用于计算以外,还需要缓存前向传播的中间结果在反向传播的过程中参与运算,进一步增加了显存的占用。因此,为了能够在现有的GPU上执行大规模深度深度神经网络模型的运算,优化 GPU 显存需求成为深度神经网络训练的一大挑战。
流水线训练中,由于同一时间内,GPU 内存在多个批次的数据,为了保证模型能够正常收敛,需要储存多个版本的参数和中间结果,让每个批次正向和反向计算时的所使用的数据版本相同,以保证统计有效性。同时,由于GPU的异构性,不同GPU间的显存容量存在差异,这就使得显存占用问题更加复杂,显存较小的 GPU 会成为整体流水线训练的瓶颈,给训练带来了巨大限制。异构 GPU 集群分布式流水线训练中,多版本参数和中间结果以及GPU的异构性,导致显存资源不足,为大模型的训练带来的巨大的限制。因此,在异构 GPU集群环境下,多版本中间结果的缓存和显存异构性带来的短板效应成为影响支持更大模型训练的关键问题之一。
发明内容
本发明正是针对现有技术中异构GPU集群中流水线训练模式下分布式深度学习的训练,多版本中间结果的缓存和显存异构性带来的短板无法支持大规模训练的问题,提供一种异构GPU集群负载感知的显存重计算优化方法及系统,建立显存重计算优化模型,计算各GPU上显存负载百分比,确定所有阶段中显存负载最高的阶段,根据最小化显存开销算法进行重计算优化,保证各阶段负载均衡,提升整体吞吐率,本发明提出最小化负载最高阶段显存开销算法与平衡异构GPU各阶段开销算法,减少异构 GPU 集群环境下流水线训练的显存占用,同时最小化显存优化开销,更好地支持大模型的训练。
为了实现上述目的,本发明采取的技术方案是:一种异构GPU集群负载感知的显存重计算优化方法,建立显存重计算优化模型,计算各GPU上显存负载百分比,确定所有阶段中显存负载最高的阶段,根据最小化显存开销算法进行重计算优化,保证各阶段负载均衡。
作为本发明的一种改进,所述最小化显存开销算法具体为:对于负载最高的阶段,需要最小化显存计算开销,即
Figure 239742DEST_PATH_IMAGE001
其中,L为神经网络层的集合;s为神经网络划分的阶段;compl为神经网络第 l 层的计算时间;
Figure 787574DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 849202DEST_PATH_IMAGE003
表示checkpoint层的选择,当/>
Figure 306729DEST_PATH_IMAGE003
为0 时,代表第/>
Figure 432685DEST_PATH_IMAGE003
层被设置为checkpoint,需要重计算;当/>
Figure 583044DEST_PATH_IMAGE003
为1 时,代表需要满足显存限制表第i 层不需要重计算, 其中/>
Figure 663127DEST_PATH_IMAGE004
为阶段s的神经网络层集合,即
Figure 658764DEST_PATH_IMAGE005
所述显存限制为:
Figure 907736DEST_PATH_IMAGE006
其中,s为神经网络划分的阶段;
Figure 963417DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;/>
Figure 530796DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;/>
Figure 330125DEST_PATH_IMAGE002
为阶段s需要储存的版本数;/>
Figure 165094DEST_PATH_IMAGE009
为显存优化率。
作为本发明的一种改进,采用动态规划中0−1背包的思想对最小化显存开销算法进行求解,将显存限制定义为背包容量,每层所占用的显存定义为代价,重计算的开销定义为获利,采用重计算开销的倒数进行计算。
作为本发明的一种改进,所述负载均衡为各阶段重计算开销与显存负载最高的阶段相等,即
Figure 657256DEST_PATH_IMAGE010
其中,
Figure 711930DEST_PATH_IMAGE011
为各阶段重计算开销;/>
Figure 49371DEST_PATH_IMAGE012
为显存负载最高的阶段重计算开销;S为神经网络的划分阶段集合,s为神经网络划分的阶段。
作为本发明的另一种改进,所述各阶段重计算开销与显存负载最高的阶段相等,对于任意阶段s,
Figure 741777DEST_PATH_IMAGE013
其中,s为神经网络划分的某个阶段;
Figure 404839DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 946810DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 87941DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 897503DEST_PATH_IMAGE003
表示 checkpoint层的选择;
Figure 731467DEST_PATH_IMAGE012
为显存负载最高的阶段重计算开销;
当绝对值内的值大于等于 0时:
Figure 495155DEST_PATH_IMAGE014
当绝对值内的值小于 0时:
Figure 439977DEST_PATH_IMAGE015
作为本发明的另一种改进,本案一种异构GP U集群负载感知的显存重计算优化方法,包括如下步骤:
S1:建立深度神经网络的层次累积分布函数模型,根据层次累积分布函数模型,使用异构GPU硬件环境执行预训练过程,刻画出神经网络在训练过程中的指标;
S2:建立显存重计算优化模型,以步骤S1中的指标及异构GPU集群中GPU间的网络拓扑连接作为输入,分析得到显存负载最高的阶段,对所有阶段显存进行约束以及负载最高的阶段显存进行约束,保证各阶段负载均衡;
S3:选择最佳重计算层,使显存负载最高的 GPU 阶段显存降低为原来的 d 倍,并减少重计算开销;其他阶段选择重计算层,在满足总显存限制的前提下,重计算开销与负载最高的阶段平衡。
作为本发明进一步改进,所述步骤S1中,每一个阶段的显存占用
Figure 106975DEST_PATH_IMAGE016
具体为
Figure 111840DEST_PATH_IMAGE017
其中,s为神经网络划分的某个阶段;
Figure 362824DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;/>
Figure 845758DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;/>
Figure 629912DEST_PATH_IMAGE002
为阶段s需要储存的版本数。
作为本发明更进一步改进,所述步骤S3中,显存使用率降低为原来的 d 倍,所有阶段都应满足显存占用小于等于显存总量,即:
Figure 805679DEST_PATH_IMAGE018
其中,s为神经网络划分的某个阶段;
Figure 543959DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 830584DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 218313DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 564981DEST_PATH_IMAGE019
为减少的显 存;
Figure 524978DEST_PATH_IMAGE020
阶段 s 所使用的 GPU 的显存总量;
对于负载最高的阶段,还应满足:
Figure 615294DEST_PATH_IMAGE021
其中,每一个阶段的显存占用
Figure 108461DEST_PATH_IMAGE016
Figure 360451DEST_PATH_IMAGE019
为减少的显存;
Figure 73323DEST_PATH_IMAGE002
为阶段s需要储存 的版本数;
Figure 701750DEST_PATH_IMAGE009
为显存优化率。
为了实现上述目的,本发明还采取的技术方案是:一种异构GPU集群负载感知的显存重计算优化系统,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述方法的步骤。
与现有技术相比,本发明具有的有益效果:
(1)提出了最小化负载最高阶段显存开销算法,使显存负载最高的 GPU 阶段显存降低为原来的 d 倍,并且减少了重计算开销。
(2)提出了平衡异构GPU各阶段开销算法,在满足总显存限制的前提下,能够选择合适的重计算层,使得重计算开销尽可能与负载最高的阶段平衡,降低了重计算开销对整体流水线速度的影响。
(3)提供了一种异构GPU集群负载感知的显存重计算优化系统及方法,解决在异构GPU流水线训练过程中减少显存的占用同时保证各个阶段间的负载均衡,优化显存重计算开销,能够同时满足显存优化需求和训练速度的保证。
附图说明
图1为本发明原型系统整体架构图;
图2为本发明测试例中流水线模式下不同模型各个阶段的显存占用对比图;
图3为本发明测试例中不同模型各个阶段显存占用率对比图;
图4为在异构GPU流水线模式下,经典神经网络的负载最高阶段优化前后显存占用与开销对比图;
图5为显存优化率为0.6时的显存优化示意图;
图6为在异构GPU流水线模式下,使用本发明方法前后训练VGG16模型的显存负载平衡示意图;
图7为深度神经网络模型在本发明重计算开销平衡算法机制与原始的流水线训练速度的对比图;
图8为本发明方法步骤S3中最小化显存开销算法的步骤示意图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
实施例1
一种异构GPU集群负载感知的显存重计算优化方法,本方法主要在具有异构GPU集群环境下进行,如图1所示,包括如下步骤:
S1: 建立深度神经网络的层次累积分布函数模型,分析在异构GPU集群环境中深度学习应用在流水线模式下执行负载感知的显存重计算优化方法所需要的输入条件,为了后续的显存优化开销最小化,通过预训练分析设备与模型,得到流水段所使用的GPU显存总量,神经网络按层计算时间,神经网络各层参数与中间结果的显存占用,为步骤S2做准备工作。
由于神经网络训练分为前向传播预测结果和反向传播更新参数过程,数据经过神经网络逐层计算,因此在流水线模式下,对于神经网络的层次结构建立累积分布函数模型。根据累积分布函数模型,使用异构GPU硬件环境执行预训练过程,刻画出神经网络在训练过程中的响应指标。
在模型刻画阶段,对于计算量而言,使用给定的mini-batch大小,利用profile刻画出神经网络在GPU上依次执行前向传反向传播的矩阵计算(mkldnn_convolution、max_pool2d_with_indices、batch_norm、addmm等)所需计算时间,然后按照层次顺序按层统计计算时间。对于显存而言,利用PyTorch模型可视化工具可打印出神经网络各层输出的矩阵形状以及神经网络各层参数的数量,然后按照浮点数所需字节计算得到各层中间结果显存占用以及参数显存占用。通过预训练之后得到,异构 GPU 集群环境下流水线训练计算时间与显存开销等参数,具体为:
a. 刻画流水线阶段s所使用的 GPU 的显存总量
Figure 317933DEST_PATH_IMAGE022
b. 刻画神经网络各层的计算时间
Figure 6403DEST_PATH_IMAGE023
c. 刻画神经网络各层参数显存占用
Figure 206571DEST_PATH_IMAGE024
d. 刻画神经网络各层中间结果显存占用
Figure 638690DEST_PATH_IMAGE025
S2:建立显存重计算优化模型,针对异构GPU集群,对流水线模式下分布式深度学习训练过程中显存需求进行建模,分析各层显存负载,采用重计算的方式进行显存优化,保证各个阶段重计算的开销尽可能均衡,同时要求各阶段重计算开销与显存负载最高的阶段尽可能相等。
所述步骤S2中显存重计算优化模型是以步骤S1中刻画得到的相应指标,以及异构GPU集群中GPU间的网络拓扑连接作为算法输入,分析得到显存负载最高的阶段,对所有阶段显存进行约束以及负载最高的阶段显存进行约束,提出各个阶段重计算开销代价指标,优化目标是负载均衡,即要求各阶段重计算开销与显存负载最高的阶段尽可能相等。
计算每个阶段的显存占用百分比,找到所有阶段中显存负载最高的阶段。将显存负载最高的阶段作为基准,采用重计算的方式进行显存优化,保证各阶段负载均衡。
Figure 168766DEST_PATH_IMAGE011
各阶段重计算开销,/>
Figure 778870DEST_PATH_IMAGE012
为显存负载最高阶段重计算开销。负载均衡要求各阶段重计算开销与显存负载最高的阶段尽可能相等,即
Figure 122127DEST_PATH_IMAGE026
其中,S为神经网络的划分阶段集合,s为神经网络划分的阶段。
建立显存重计算优化模型,先对异构 GPU 集群环境下流水线训练显存需求进行建模。
首先,每一个阶段的显存占用:
Figure 938029DEST_PATH_IMAGE027
其中,每一个阶段的显存占用为
Figure 683131DEST_PATH_IMAGE016
;s为神经网络划分的某个阶段;
Figure 713404DEST_PATH_IMAGE007
为神经 网络第l层的参数显存占用;
Figure 950482DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 396507DEST_PATH_IMAGE002
为阶段s需 要储存的版本数。
然后,计算每个阶段的显存占用百分比
Figure 573279DEST_PATH_IMAGE028
,找到所有阶段中显存负载最高的阶段:
Figure 774453DEST_PATH_IMAGE029
将显存负载最高的阶段作为基准,采用重计算的方式进行显存优化。但是重计算所带来的负载会导致各个阶段间负载不均衡,从而降低 GPU 的利用率,此外如果只有一个阶段进行显存优化,其他阶段产生的数据会在此阶段形成显存堆积,造成显存瓶颈。为了解决上述问题,需要对开销进行平衡,对其他阶段也进行重计算,保证各阶段负载均衡,提升整体吞吐率。令
Figure 170930DEST_PATH_IMAGE030
为每个阶段需要重计算的神经网络层的集合,/>
Figure 482963DEST_PATH_IMAGE031
为重计算开销,/>
Figure 782751DEST_PATH_IMAGE032
为减少的显存。
d 为显存优化率,即将显存使用率降低为原来的 d 倍,可以得到求解目标和限制条件:所有阶段都应满足显存占用小于等于显存总量:
Figure 889247DEST_PATH_IMAGE033
其中,
Figure 773021DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 888744DEST_PATH_IMAGE008
为神经网络第l层的中间结果 显存占用;
Figure 40109DEST_PATH_IMAGE034
为阶段S需要储存的版本数;
Figure 848665DEST_PATH_IMAGE019
为减少的显存;
Figure 688576DEST_PATH_IMAGE020
阶段 s 所使用的 GPU 的显存总量。
对于负载最高的阶段,还应满足:
Figure 607990DEST_PATH_IMAGE035
其中每一个阶段的显存占用为
Figure 605072DEST_PATH_IMAGE016
Figure 318950DEST_PATH_IMAGE036
为减少的显存,
Figure 442895DEST_PATH_IMAGE037
为阶段s需要储存的 版本数。
每个阶段的重计算开销:
Figure 900421DEST_PATH_IMAGE038
,其中,L为神经网络层的集合,s为神经网络划分的阶段,/>
Figure 760799DEST_PATH_IMAGE039
神经网络第层的计算时间;/>
Figure 911157DEST_PATH_IMAGE040
为阶段s需要储存的版本数;/>
Figure 991240DEST_PATH_IMAGE041
为重计算开销。
负载均衡要求各阶段重计算开销与显存负载最高的阶段尽可能相等,即
Figure 986878DEST_PATH_IMAGE042
S3: 为了求解上述问题,对过程进行简化,首先找出负载最高的 GPU,将显存使用量降低到原来的 d 倍,并尽量减少重计算开销。对于其他阶段,在满足最大显存约束条件的前下,尽量保证显存优化开销与第一阶段相同。
具体来说,将求解分为以下两个步骤:1)如何选择合适的重计算层,使显存负载最高的 GPU 阶段显存降低为原来的 d 倍,并且尽可能地减少重计算开销。2)在其他阶段如何选择合适的重计算层,在满足总显存限制的前提下,使重计算开销尽可能与负载最高的阶段平衡。
首先,最小化负载最高阶段显存开销算法:
对于负载最高的阶段,需要最小化显存计算开销,即
Figure 704692DEST_PATH_IMAGE043
其中,L为神经网络层的集合,s为神经网络划分的某个阶段,
Figure 25952DEST_PATH_IMAGE044
为神经网络 第 l 层的计算时间;
Figure 593330DEST_PATH_IMAGE045
为阶段s需要储存的版本数。
我们令
Figure 392659DEST_PATH_IMAGE003
表示checkpoint (检查点)的选择,当/>
Figure 227629DEST_PATH_IMAGE003
为0 时,代表第/>
Figure 985369DEST_PATH_IMAGE046
层被设置为checkpoint,需要重计算;当/>
Figure 508885DEST_PATH_IMAGE047
为1 时,代表需要满足显存限制表第/>
Figure 111905DEST_PATH_IMAGE046
层不需要重计算,即
Figure 69890DEST_PATH_IMAGE048
需要满足显存限制:
Figure 467373DEST_PATH_IMAGE050
其中,s为神经网络划分的某个阶段,其中
Figure 9344DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 150476DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用,
Figure 960038DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 528422DEST_PATH_IMAGE009
为显存优 化率;
Figure 557689DEST_PATH_IMAGE003
表示checkpoint层的选择。
对于该问题,可以采用动态规划中0−1背包的思想去求解,将显存限制定义为背包容量,每层所占用的显存定义为代价,重计算的开销定义为获利。由于我们的目标是最小化显存优化开销,所以采用重计算开销的倒数进行计算。
如图8所示,图8中算法1给出了求解该问题的具体算法,算法的输入包括显存占用最高阶段的各层计算时间c,各层显存占用m,显存占用
Figure 502512DEST_PATH_IMAGE051
,显存优化率d。算法的输出为被设置checkpoint 层的编号以及显存优化后的总开销。算法的第2−4行初始化相关变量,其中visit 代表需要设置为checkpoint 的层,dp[i][j] 为动态规划状态转移数组,表示在第0−i层中,显存容量小于j时的最小重计算时间。第5−12用动态规划的方式求解最小重计算时间。第 6-16 根据之前的计算结果进行回溯,求得最小代价下的 visit 设置。
平衡异构 GPU 各阶段开销算法:
如何在异构 GPU 环境下平衡各个阶段的显存优化开销。虽然在流水线模式下,各个阶段间具有拓扑关系,但是在显存优化时,各个阶段间相互独立,可以将问题拆分如下:在满足各阶段显存约束的前提下,各阶段的重计算开销与负载最高阶段的显存优化开销尽可能接近,对于任意阶段 s,我们可以得到:
Figure 169510DEST_PATH_IMAGE052
其中,
Figure 971112DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 222096DEST_PATH_IMAGE008
为神经网络第l层的中间结果显 存占用;
Figure 705030DEST_PATH_IMAGE034
为阶段S需要储存的版本数,
Figure 223605DEST_PATH_IMAGE003
表示checkpoint层的选择,
Figure 133792DEST_PATH_IMAGE012
为显存负载 最高的阶段重计算开销。
其中含有绝对值,所以求解时我们需要分类讨论,根据结果的正负划分为两种情况:
1)绝对值内的值大于等于 0:
Figure 872072DEST_PATH_IMAGE053
2)绝对值内的值小于 0:
Figure 830801DEST_PATH_IMAGE054
上述的目标函数中,未知量只有变量,代表第 i 层是否被选定为 checkpoint层,所以求解此问题是一个线性规划问题,即 0 − 1 线性规划问题。求解此问题,采用python 中的scipy 库来解决,将Profile 刻画得到的神经网络各层计算时间,中间结果及参数量等作为输入,输出一维张量
Figure 812006DEST_PATH_IMAGE003
,表示各层 checkpoint 的设置情况。
测试例
为了验证本本案提出方法的有效性,在异构GPU集群环境下基于流水线的分布式深度学习系统Pipepar之上,集成了此机制并应用于东南大学云计算中心的异构GPU环境,采用经典的神经网络模型和数据集,展示本案在异构GPU流水线模式下的显存占用情况、所产生的开销对整体吞吐率的影响、在平衡和非平衡开销机制下整体吞吐率的影响。
采取如下配置执行实验,Config-a:集群有两个服务器,服务器A上搭载2块NVIDIARTX 2080Ti,服务器B上搭载2块NVIDIA RTX3090,共4块GPU通过PCIE 连接,PCIE带宽约为10GB/s,服务器间间通过 的以太网连接。实验使用的数据集为ImageNet(ILSVRC2012),其包含1000 个图片类别,128万张训练集,5万张验证集以及10万张测试集。训练模型选用了AlexNet,VGG16,ResNet34,ResNet50,ResNext50等典型神经网络模型。
(1)流水线模式下显存占用情况:
为了证明本案提出的显存重计算机制的有效性,首先对所选择的多个经典的神经网络模型横向对比各个阶段的显存占用。
图2所示为流水线模式下不同模型各个阶段的显存占用,默认的batchsize大小为64,对于较小或者较大的模型,将适当调整batchsize大小,标注在图中模型名称的后面。
第一个阶段多为卷积层,中间结果较大,而且保存了最多版本的中间结果与参数,所以在所有模型中,第一阶段显存占用量都是最高的,其中占用最多的ResNet50达到了21.5GB。不过由于不同阶段GPU的显存总量不同,图3给出了不同模型各个阶段显存占用率。由于前面阶段的任务放置在RTX 3090上,RTX 3090的24GB显存远远大于RTX 2080Ti,所以大部分模型中第一阶段的显存占用率仍然是最高的。不过在ResNext模型中,后两个阶段和前两个阶段相比,显存占用率相近,其中ResNext50(32)上,第三阶段的占用率最高,超过了前两个阶段。
根据上述分析,可以针对不同模型负载情况的不同,选择负载最高的阶段进行显存优化,该阶段通常为显存占用最高的第一阶段或者显存容量较小的2080Ti上的阶段。
(2)负载最高阶段显存优化:
为了展示本案的基于重计算的异构GPU显存优化算法的有效性,横向对比多个神经网络采用所提方法后显存负载最高阶段的显存占用情况以及由于重计算所带来的开销。
图4展示了在异构GPU流水线模式下,经典神经网络的负载最高阶段优化前后显存占用与开销对比,显存优化率d设置为0.8。此时的重计算开销在8%左右,但由于ResNext18模型显存负载最高的阶段在RTX 2080Ti上,算力低于其他模型的3090,所以重计算开销较大,达到了14.41%。图5展示了d设置为0.6时的显存优化情况。此时的重计算开销在20%左右。相比d=0.8的情况,显存优化代价有所增加。对于放置在RTX 2080Ti上的ResNext18模型第三阶段,重计算开销达到了27.51%。
(3)显存重计算负载平衡:
下面展示本案提出的平衡异构GPU各阶段显存开销算法的有效性,即在满足总显存限制的条件下异构GPU各阶段开销是否达到平衡状态。
图6展示了在异构GPU流水线模式下,使用该机制前后训练VGG16模型的显存负载平衡情况。在异构GPU流水线模式下,VGG16被划分为了三个阶段,其中第一个阶段由两块RTX 3090执行数据并行,后两个阶段各由一块RTX 2080Ti执行。由于中间结果、参数量的不同和版本储存数的差异,不同阶段的显存占用量不同。选择显存占用率最高的第一阶段进行重计算优化,优化后第一阶段的显存占用降低为原来的0.8倍左右,同时为了保流水线的均衡,平衡其他阶段的开销。图中可以看出各个阶段的重计算开销均为8%左右,但是后两个阶段由于中间结果较小,相同重计算开销下的显存优化效率要低于第一阶段。
(4)异构 GPU 流水线训练模式下平衡与非平衡状态下的吞吐率对比:
为了验证显存重计算负载均衡的有效性,本节在上述的实验配置config-a上,对比重计算平衡与非平衡的方法对流水线整体训练速度的影响。重计算平衡方案下,对显存负载最高的阶段进行重计算优化,此时d设置为0.6,同时对其他阶段进行重计算开销优化,使各个阶段负载均衡。非平衡方案下,各个阶段均设置d为0.6进行优化,而不采取显存重计算开销平衡。
图7给出了几种常见的深度神经网络模型在本发明给出的重计算开销平衡算法机制与原始的流水线训练速度的对比,展示了异构GPU流水线模式下各阶段重计算开销平衡与否对于流水线训练速度的影响。重计算显存优化均会带来一定的计算开销,由于ResNext50(32)的优化阶段分配在RTX 2080Ti上,所以重计算开销较大。当不采用重计算开销平衡算法机制时,各个模型的训练速度进一步下降,前四个模型的优化阶段均分配给RTX3090显卡运算,而其他阶段上的RTX 2080Ti显卡要达到相同的显存优化效果重计算开销更大,所以前四个模型训练速度下降较为严重,其中VGG16,ResNet34(128),ResNet50,ResNext18分别下降了12.18%,10.04%,14.46%,12.57%,而ResNext50(32)的优化阶段分配给RTX 2080Ti显卡,训练速度只下降了7.71%。
综上,本案提出了一种负载感知的显存重计算优化方法,在异构 GPU 集群环境下,流水线训练过程中多版本中间结果缓存和异构 GPU 显存负载不平衡所导致的显存瓶颈,根据神经网络各层参数刻画以及 GPU 设备拓扑,设计采用重计算的优化方法来减少负载最高阶段的显存占用。同时设计显存重计算优化平衡策略,平衡显存重计算优化引入的开销,保证各个阶段间负载均衡。最终实现在减少流水线模式下的 GPU 显存占用的同时最小化显存优化开销。
需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。

Claims (9)

1.一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:建立显存重计算优化模型,计算各GPU上显存负载百分比,确定所有阶段中显存负载最高的阶段,根据最小化显存开销算法进行重计算优化,保证各阶段负载均衡;
所述最小化显存开销算法具体为:对于负载最高的阶段,需要最小化显存计算开销,即
Figure 679058DEST_PATH_IMAGE001
其中,L为神经网络层的集合;s为神经网络划分的阶段;compl为神经网络第 l 层的计算时间;
Figure 122809DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 604606DEST_PATH_IMAGE003
表示checkpoint层的选择,当
Figure 405553DEST_PATH_IMAGE003
为0 时,代表第
Figure 289196DEST_PATH_IMAGE003
层被设置为checkpoint,需要重计算;当
Figure 638269DEST_PATH_IMAGE003
为1 时,代表需要满足显存限制表第i 层不需要重计算,其中,
Figure 607362DEST_PATH_IMAGE004
为阶段s的神经网络层集合,即
Figure 683771DEST_PATH_IMAGE005
所述显存限制为:
Figure 828444DEST_PATH_IMAGE006
其中,s为神经网络划分的阶段;
Figure 473052DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 319655DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 747225DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 730093DEST_PATH_IMAGE009
为显存优化率;
Figure 545602DEST_PATH_IMAGE003
表示checkpoint层的选择。
2.如权利要求1所述的一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:采用动态规划中0−1背包的思想对最小化显存开销算法进行求解,将显存限制定义为背包容量,每层所占用的显存定义为代价,重计算的开销定义为获利,采用重计算开销的倒数进行计算。
3.如权利要求2所述的一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:所述负载均衡为各阶段重计算开销与显存负载最高的阶段相等,即
Figure 630233DEST_PATH_IMAGE010
其中,
Figure 113692DEST_PATH_IMAGE011
为各阶段重计算开销;
Figure 967378DEST_PATH_IMAGE012
为显存负载最高的阶段重计算开销;S为神经网络的划分阶段集合;s为神经网络划分的阶段。
4.如权利要求3所述的一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:所述各阶段重计算开销与显存负载最高的阶段相等,对于任意阶段s,
Figure DEST_PATH_IMAGE014
其中,s为神经网络划分的阶段;
Figure 16106DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 102879DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 341094DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 173920DEST_PATH_IMAGE003
表示checkpoint层的选择;
Figure 190287DEST_PATH_IMAGE012
为显存负载最高的阶段重计算开销;
当绝对值内的值大于等于 0时:
Figure 374143DEST_PATH_IMAGE015
当绝对值内的值小于 0时:
Figure DEST_PATH_IMAGE016
5.如权利要求4所述的一种异构GPU集群负载感知的显存重计算优化方法,其特征在于,包括如下步骤:
S1:建立深度神经网络的层次累积分布函数模型,根据层次累积分布函数模型,使用异构GPU硬件环境执行预训练过程,刻画出神经网络在训练过程中的指标;
S2:建立显存重计算优化模型,以步骤S1中的指标及异构GPU集群中GPU间的网络拓扑连接作为输入,分析得到显存负载最高的阶段,对所有阶段显存进行约束以及负载最高的阶段显存进行约束,保证各阶段负载均衡;
S3:选择最佳重计算层,使显存负载最高的 GPU 阶段显存降低为原来的 d 倍,并减少重计算开销;其他阶段选择重计算层,在满足总显存限制的前提下,重计算开销与负载最高的阶段平衡。
6.如权利要求5所述的一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:所述步骤S1中指标至少包括各层的计算时间,参数显存占用,中间结果显存占用以及固定阶段所使用的 GPU 的显存总量。
7.如权利要求6所述一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:所述步骤S1中,每一个阶段的显存占用
Figure 334491DEST_PATH_IMAGE017
具体为
Figure 693928DEST_PATH_IMAGE018
其中,s为神经网络划分的阶段;
Figure 412354DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 958873DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 912791DEST_PATH_IMAGE002
为阶段s需要储存的版本数。
8.如权利要求5所述一种异构GPU集群负载感知的显存重计算优化方法,其特征在于:所述步骤S3中,显存使用率降低为原来的 d 倍,所有阶段都应满足显存占用小于等于显存总量,即:
Figure 392314DEST_PATH_IMAGE019
其中,s为神经网络划分的阶段;
Figure 956675DEST_PATH_IMAGE007
为神经网络第l层的参数显存占用;
Figure 849545DEST_PATH_IMAGE008
为神经网络第l层的中间结果显存占用;
Figure 216941DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 754233DEST_PATH_IMAGE020
为减少的显存;
Figure 424249DEST_PATH_IMAGE021
为阶段 s 所使用的 GPU 的显存总量;
对于负载最高的阶段,还应满足:
Figure 601152DEST_PATH_IMAGE022
其中,每一个阶段的显存占用为
Figure 647605DEST_PATH_IMAGE017
Figure 288671DEST_PATH_IMAGE020
为减少的显存;
Figure 270534DEST_PATH_IMAGE002
为阶段s需要储存的版本数;
Figure 137996DEST_PATH_IMAGE009
为显存优化率。
9.一种异构GPU集群负载感知的显存重计算优化系统,包括计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-8任一种所述方法的步骤。
CN202211386085.2A 2022-11-07 2022-11-07 一种异构gpu集群负载感知的显存重计算优化方法及系统 Active CN115437795B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211386085.2A CN115437795B (zh) 2022-11-07 2022-11-07 一种异构gpu集群负载感知的显存重计算优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211386085.2A CN115437795B (zh) 2022-11-07 2022-11-07 一种异构gpu集群负载感知的显存重计算优化方法及系统

Publications (2)

Publication Number Publication Date
CN115437795A CN115437795A (zh) 2022-12-06
CN115437795B true CN115437795B (zh) 2023-03-24

Family

ID=84252870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211386085.2A Active CN115437795B (zh) 2022-11-07 2022-11-07 一种异构gpu集群负载感知的显存重计算优化方法及系统

Country Status (1)

Country Link
CN (1) CN115437795B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982091B (zh) * 2023-03-21 2023-06-23 深圳云豹智能有限公司 基于rdma引擎的数据处理方法与系统、介质、设备
CN116501502B (zh) * 2023-06-25 2023-09-05 电子科技大学 一种基于Pytorch框架的数据并行优化方法
CN117892769B (zh) * 2024-03-15 2024-06-11 之江实验室 神经网络训练方法、显存调度方法、系统、设备和产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021238734A1 (zh) * 2020-05-29 2021-12-02 华为技术有限公司 一种神经网络的训练方法及相关设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035751B (zh) * 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
US12056604B2 (en) * 2018-05-23 2024-08-06 Microsoft Technology Licensing, Llc Highly performant pipeline parallel deep neural network training
CN109213601B (zh) * 2018-09-12 2021-01-01 华东师范大学 一种基于cpu-gpu的负载均衡方法及设备
CN110533183B (zh) * 2019-08-30 2021-08-20 东南大学 流水线分布式深度学习中异构网络感知的任务放置方法
CN112784968A (zh) * 2021-01-29 2021-05-11 东南大学 一种加速分布式深度神经网络训练的混合流水线并行方法
CN115237580B (zh) * 2022-09-21 2022-12-16 之江实验室 面向智能计算的流水并行训练自适应调整系统、方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021238734A1 (zh) * 2020-05-29 2021-12-02 华为技术有限公司 一种神经网络的训练方法及相关设备

Also Published As

Publication number Publication date
CN115437795A (zh) 2022-12-06

Similar Documents

Publication Publication Date Title
CN115437795B (zh) 一种异构gpu集群负载感知的显存重计算优化方法及系统
CN107644254A (zh) 一种卷积神经网络权重参数量化训练方法及系统
CN112052958A (zh) 模型训练的方法、装置、设备及计算机可读存储介质
CN111178486B (zh) 一种基于种群演化的超参数异步并行搜索方法
CN103399841A (zh) 基于gpu的稀疏矩阵lu分解方法
CN114492770B (zh) 一种面向循环脉冲神经网络的类脑计算芯片映射方法
CN114548591A (zh) 一种基于混合深度学习模型和Stacking的时序数据预测方法及系统
CN112884236B (zh) 一种基于vdm分解与lstm改进的短期负荷预测方法及系统
CN112947300A (zh) 一种加工质量虚拟量测方法、系统、介质及设备
CN111325222A (zh) 图像归一化处理方法及装置、存储介质
CN115392441A (zh) 量化神经网络模型的片内适配方法、装置、设备及介质
CN115952856A (zh) 一种基于双向分割的神经网络流水线并行训练方法及系统
CN116755876A (zh) 一种大模型混合并行训练加速方法和系统
CN113052299B (zh) 基于通信下界的神经网络存内计算装置及加速方法
CN114064235A (zh) 多任务教与学优化方法、系统及设备
CN111859785B (zh) 流体特征提取方法、系统、计算机可读存储介质及设备
Zhang et al. Optimizing execution for pipelined‐based distributed deep learning in a heterogeneously networked GPU cluster
CN107038244A (zh) 一种数据挖掘方法和装置、一种可读介质和存储控制器
CN110674931B (zh) 一种基于权重重要性的全连接神经网络优化方法和装置
US20240004718A1 (en) Compiling tensor operators for neural network models based on tensor tile configurations
CN112232401A (zh) 一种基于差分隐私及随机梯度下降的数据分类方法
CN115456184B (zh) 量子电路处理方法、量子态制备方法、装置、设备及介质
CN111722923A (zh) 一种异构资源的调用方法、装置和计算机可读存储介质
CN115935888A (zh) 一种神经网络加速系统
WO2022057459A1 (zh) 一种基于Tensorcore处理int4数据类型的方法、系统、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant