CN115994567B - 一种深度神经网络模型并行计算任务异步调度方法 - Google Patents
一种深度神经网络模型并行计算任务异步调度方法 Download PDFInfo
- Publication number
- CN115994567B CN115994567B CN202211688400.7A CN202211688400A CN115994567B CN 115994567 B CN115994567 B CN 115994567B CN 202211688400 A CN202211688400 A CN 202211688400A CN 115994567 B CN115994567 B CN 115994567B
- Authority
- CN
- China
- Prior art keywords
- phase
- stage
- stream
- micro
- pivot
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000003062 neural network model Methods 0.000 title claims abstract description 39
- 238000004364 calculation method Methods 0.000 claims abstract description 81
- 238000012549 training Methods 0.000 claims abstract description 81
- 230000006854 communication Effects 0.000 claims abstract description 80
- 238000004891 communication Methods 0.000 claims abstract description 79
- 230000008569 process Effects 0.000 claims abstract description 53
- 238000005457 optimization Methods 0.000 claims abstract description 29
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 18
- 230000007246 mechanism Effects 0.000 claims abstract description 17
- 230000011218 segmentation Effects 0.000 claims abstract description 17
- 238000007726 management method Methods 0.000 claims abstract description 6
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims description 30
- 238000013439 planning Methods 0.000 claims description 19
- 230000001133 acceleration Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 10
- 238000013135 deep learning Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 8
- 238000005520 cutting process Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000002441 reversible effect Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims description 4
- 230000006641 stabilisation Effects 0.000 claims description 4
- 238000011105 stabilization Methods 0.000 claims description 4
- 101100508818 Mus musculus Inpp5k gene Proteins 0.000 claims description 3
- 101100366438 Rattus norvegicus Sphkap gene Proteins 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims description 3
- 238000009826 distribution Methods 0.000 claims description 3
- 238000005538 encapsulation Methods 0.000 claims description 3
- 238000012804 iterative process Methods 0.000 claims description 3
- 238000012821 model calculation Methods 0.000 claims description 3
- 230000000087 stabilizing effect Effects 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000002474 experimental method Methods 0.000 abstract description 6
- 238000013468 resource allocation Methods 0.000 abstract description 3
- 239000010410 layer Substances 0.000 description 33
- 238000010586 diagram Methods 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 10
- 230000004913 activation Effects 0.000 description 6
- 238000003058 natural language processing Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种深度神经网络模型并行计算任务异步调度方法,采用改进的流水线模型并行任务调度优化方法,建立适合大规模模型计算任务的多迭代异步并行任务管理机制;结合给定的模型结构和硬件配置信息,通过启发式动态规划算法设计计算任务和计算资源分配机制;设计计算资源和任务运行时调度策略,控制微批量单元调度过程,对设备默认流进行优化,最大限度消除计算节点计算和通信的相互依赖关系,实现计算与通信最大化重叠。本发明在不增加额外开销和无需特殊硬件支持情况下,降低模型切分难度、实现神经网络模型计算任务和计算资源合理匹配、实现计算与通信最大重叠,提高计算资源利用率。实验证明,本发明将大规模深度神经网络模型训练速度平均提升2.8倍。
Description
技术领域
本发明属于深度学习神经网络领域,涉及一种模型并行任务调度方法,尤其涉及一种深度神经网络模型并行计算任务异步调度方法。
背景技术
近年来,深度学习神经网络模型在自然语言处理、计算机视觉、自动驾驶、图像识别等领域得到了广泛的应用,但不断增大的模型规模和数据,给大规模神经网络模型的训练提出了新的挑战。如AmoebaNet、NASNet、BERT、GPT-3等模型,由于模型参数量多、训练时层间激活占用内存大、单个加速设备难以存储,使得传统数据并行不能满足需求。目前主要采用分布式异构集群实现可扩展的并行训练,对模型按照一定策略进行切分,将切分后不相交的任务子集分配到不同的专用计算设备上,实现模型的分布式并行训练。在训练过程中,由于子模型间的值传递需要在加速设备间顺序执行,使得模型并行中计算和通信不能重叠,产生许多气泡开销,从而引起了训练耗时长、训练成本增大、设备利用率不高和模型难以收敛的问题。如何通过合理分配硬件资源和调度并行计算任务,在模型训练过程中实现计算资源和并行计算任务的最佳匹配,是提升大规模深度神经网络模型计算性能的关键。
现有的深度学习神经网络模型并行优化工作主要分为张量并行和流水线并行两方面。通过对大规模自然语言处理(NLP)模型进行层内行列切分实现张量并行,由于对切分后的模型层梯度更新时需要进行All-Reduce操作,使得计算和通信无法重叠,不能较好地利用梯度累加来降低通信开销,会导致训练时长增大,模型收敛较慢的问题。通过使用张量并行实现模型任务并行训练,但只能在Transformer类模型和特定的TPU硬件环境中实现,缺乏泛化性。流水线并行被认为是训练大规模深度神经网络的一种创新性方法,其思想是将模型层切分为多个阶段(stage),并将其放置在一组相互连接的设备上。在训练期间,每个输入批量进一步分为多个微批量,这些微批量以流水线方式在多个设备上运行。与模型并行训练相比,流水线并行可将大规模模型并行训练的通信量最高减少95%。
流水线并行可分为同步流水线并行和异步流水线并行。同步流水线优化工作中,通过GPipe优化方法,将模型切分后实现同步训练,但在所有微批量的前向计算完成之前,不能安排任何反向传播任务,使得训练时间较长。同时,在训练过程中,通过放弃一些中间结果来释放内存,需要时在反向传播期间重新计算,由于重复计算引入的额外开销造成气泡时间过大,加剧了训练耗时。通过Mesh-Tensorflow优化模型,遵循SPMD模式,结合流水线并行和数据并行,允许用户根据加速器的数量线性缩放单个矩阵乘法的大小,达到同步并行训练目的。然而,由于包含了大量用于合并每个并行化矩阵乘法输出的类似All-Reduce的操作,会在加速器之间引入过高的通信开销。使用PyTorch深度学习框架设计实现的流水并行优化模型TorchGPipe,在确定性时钟周期给出了任务的总执行顺序,但同样存在由于重复计算导致的气泡开销大,计算和通信不能重叠并行的问题。异步流水线并行优化工作中,通过PipeDream优化模型对输入的微批量,一旦完成前向计算,立即执行反向传播,然后开始交替对后续微批量执行前向计算和反向传播操作,虽然提高了模型训练的效率,但反向传播产生的梯度延迟更新问题,使得应用权重缺乏时效性,模型在相同训练时间内往往难以收敛。通过PipeDream-2BW及PipeDream-Flush优化方法,提高了基准测试的准确性,但需要存储多个版本的模型参数,会引起内存消耗过大的问题,同时梯度的延迟更新会影响模型的收敛精度。对大规模深度神经网络模型进行分布式训练和推理任务的过程中,考虑到训练模型的巨大成本,除了设计适合多迭代并行任务调度管理策略,还必须优化计算和通信的相互依赖关系以获得最佳性能。然而,目前深度学习框架中计算和通信内核之间的逻辑分离,不能充分实现计算和通信的重叠并行。同时,手动进行计算和通信的并行优化,需要修改每个具体硬件环境的底层计算和通信库,这对在新型硬件加速器上实现大规模细粒度流水线并行性提出了巨大挑战。
针对以上存在的问题,目前还没有一种在不增加额外开销和无需特殊硬件支持的情况下,降低模型切分的难度、实现神经网络模型计算任务和计算资源合理匹配、最大限度消除计算节点计算和通信的相互依赖关系,实现计算与通信最大化重叠,提高计算资源利用率,充分利用硬件计算资源,提升深度神经网络模型并行训练速度的任务调度方法。
发明内容
本发明的目的在于克服上述现有技术中的问题,提供一种深度神经网络模型并行计算任务异步调度方法,本发明在保证模型训练精度的同时,提升大规模深度神经网络模型训练速度。
为达到上述目的,本发明采用以下技术方案予以实现:
一种深度神经网络模型并行计算任务异步调度方法,包括如下步骤:
1)采用异步并行,提前调度反向传播BW操作的流水线并行任务调度优化方法,建立模型计算任务的多迭代异步并行管理机制。
2)根据运行平台所支持的硬件计算资源环境,采用具体的深度神经网络模型,对输入的单个全局批量mini-batch进行训练。
3)探测模型不同层的前向计算和反向传播时间开销,并使用相应数据结构进行记录和存储。
4)应用记录的层各类开销信息,采用启发式动态规划算法将模型任务切分为各个阶段stage,通过自适应调度方式将计算任务映射到具体加速设备中,实现模型训练任务和计算资源的最佳匹配。
5)将全局批量切分为微批量micro-batch,为每个流水线阶段分别对微批量单元具体调度过程,通过控制数据依赖,以及参数相关性优化异步并行时梯度延迟更新问题,构建前向计算和反向传播执行图,保证模型收敛。
6)将通信阶段放置在CUDA非默认流上,消除计算与通信阶段依赖关系,实现计算和通信重叠的最大化。
7)将用户模型及其规划结果作为输入,模型任务转换为异步流水线并行调度机制,并在多个分布式设备上执行。
其中:
步骤1)的具体实现:将模型结合具体硬件计算资源分为各个阶段,完成任务映射后,调度程序开始前向计算;通过区分每个GPU中的阶段次序为其调度安排Ki个微批量,Ki是阶段i开始时调度处理的微批量数,之后整体循环交错执行前向计算FW和提前调度反向传播BW。
步骤2)中,对用户输入的单个全局批量mini-batch数据使用PyTorch深度学习框架进行训练。
步骤3)中,对模型内部数据使用以下数据结构定义存储方式:使用字典键值进行存储,将层类型作为键,前向计算和反向传播时间作为值进行存储。
步骤4)中,具体模型任务切分及设备映射方法为:
4-1)优化目标,将单个全局批量mini-batch的执行时间作为流水线延迟D,优化目标将训练模型在结合具体硬件资源上的计算时间,最小化流水线延迟;将流水线并行训练迭代过程分为预热阶段、稳定阶段和结束阶段;其中,气泡开销最小的阶段表示为枢轴阶段P;最终优化目标即最小化流水线延迟D,是这三个阶段的计算时间总和;
Ts=(M-1)*(FP+BP) (2)
D=Tw+Ts+Te (4)
其中,公式(1)Tw表示预热阶段的执行时间,即一个微批量阶段的前向计算执行到枢轴阶段P的时间总和;公式(2)Ts表示稳定阶段,包括除去预热和结束阶段的微批量,其余所有微批量的枢轴阶段P的前向计算和反向传播时间;公式(3)Te对应于结束阶段,计算枢轴阶段P之前和之后阶段的反向传播时间的最大值;M、S、Fs和Bs分别表示总微批量数、阶段数为计算阶段+通信阶段、阶段s的前向计算时间,以及阶段a根据枢轴阶段P之前和之后阶段取s各值时的反向传播时间。
4-2)调度算法,使用启发式动态规划算法来确定枢轴阶段P,通过遍历各阶段时间成本,对比气泡开销最小阶段作为模型任务切分的依据;枢轴阶段P的迭代更新如公式(5)所示:
公式(5)描述了如何从阶段stage S-1到stage 0迭代更新枢轴阶段P,其中,初始化时将枢轴阶段P设置为S-1,假设枢轴阶段为j,表示稳定阶段无气泡开销的持续时间;对于阶段s<P,如果/>大于/>和阶段s与当前枢轴阶段P之间相应通信时间Fs’、Bs’之和,argmax表示此二者取最大值时的变量的取值,即如果将枢轴阶段设置为s而非当前枢轴阶段P,稳定阶段的气泡开销将更少,则将枢轴阶段P更新为s。
4-3)模型任务分配:通过将总任务流水线延迟进行递归迭代,对模型任务进行切分,具体依据初始化的枢轴阶段与后续气泡开销最大阶段作为切入点,将模型层从后往前分为两部分,第一部分是规划完成的各个独立阶段,第二部分为剩余流水线延迟最高的部分,并使用递归解空间进行切分,对于每个规划完成的最佳阶段,算法会动态分配给一个阶段的GPU。
具体动态规划过程如公式(6)所示:
公式(6)表示对用户输入的模型整体进行遍历,递归寻找使用最小GPU数获得最大流水线延迟的层切分;其中,将流水线延迟TPD(j,m)定义为子问题,具体表示使用m个GPU为j层网络计算的最大时间开销;优化目标是求解总任务流水线延迟TPD(N,M),M={0,1,…,M-1},其中N和M分别表示神经网络模型层数和GPU数。
步骤4)中,迭代规划过程为:假设已经规划了第一个j(0≤j<N)层,形成阶段stages’1,并将估计的TPD(j,m)作为当前流水线延迟;同时,得到当前策略的最优枢轴阶段Pj以及Pj到随后层的FP和BP作为通信时间;接着,对剩余部分继续进行规划;假设在层j′(0≤j′<j)规划得到新阶段,则在得到的剩余部分中再添加一个分区阶段stage s′2,并根据公式(7)计算当前流水线延迟:
TPD(j',m+m')=D (7)
其中,D与公式(4)中相同;公式(7)中计算D的关键是找到子问题TPD(j',m+m')=D的枢轴阶段P;将得到的当前最优枢轴阶段Pj应用公式(5)来获得TPD(j',m+m')=D的枢轴阶段Pj’:如果当前策略的最优枢轴阶段Pj以及Pj到Pj’的FP和BP通信时间小于枢轴阶段Pj’的时间开销,即如果枢轴阶段Pj不是气泡开销最小的最佳阶段s′,则将枢轴阶段Pj’更新为当前的最优枢轴阶段,并且不需要迭代j’层之后的所有阶段,而是在迭代过程中对j’层之前的剩余层(remain layers)继续使用更新后的最优枢轴阶段Pj’进行计算分配。
步骤5)中,在训练过程中,通过各个微批量间的数据依赖保证前向计算和反向传播交错循环执行外,需要对前一微批量本地梯度更新后引入控制相关性,在同加速器内不同微批量间使用当前最新参数进行训练。
步骤6)中,所述CUDA非默认流构建步骤为:
(1)流封装:使用PyTorch框架提供的torch.device.type()方法对训练中,CPU与GPU间通信数据传递和设备内流类型进行分析,分为传输流和设备CUDA流;如果不为计算核的CUDA默认流,则为CPU到GPU间相互传递数据的传输流操作;对各类流操作使用集合Union进行无重复记录,如果在判断时流操作相同,由于流处理为顺序执行,则一个流等待另外一个流完成后再进行判断。
(2)构建通信流:由于前向计算位于CUDA默认流中,所以要想并行处理下一个微批量的预读取,就必须将预读取或梯度传递操作放置在另一个流上执行;具体通过使用PyTorch框架提供的torch.cuda.stream()方法将每个梯度传递操作注册到CUDA非默认流中,同时将当前计算过程保留在CUDA默认流中;并通过使用Priority(int)为每个流设置优先级,其中int可以是-1,高优先级或0,低优先级,默认优先级为0。
(3)并行操作:在并行操作中,遵循微批量单元调度中设定的数据依赖关系,在设备默认流进行计算时,通过构建前后设备传输数据的通信流,将CUDA非默认流与计算流进行重叠;在初始化中获取所有微批量M和阶段数N列表Schedule[M,N],前后设备通信所构建的CUDA非默认流comm_streams,微批量前向计算与反向传播操作间的数据依赖和控制相关性depend,以及阶段间执行顺序skip;对微批量间默认流中的前向计算不做干涉,执行反向传播过程中需确保微批量i-1在i之后执行;具体并行过程分为以下三个步骤:
a)当前微批量编号不为第一个(ID!=0)时,获取下一个设备通信流next_stream,在当前设备计算进行时,使用copy()函数将下一个微批量和流中信息传递后续设备中。
b)如果设备编号不为第一个(GPU ID!=0),则得到上一个设备的通信流prev_stream,将其计算结果中梯度信息使用copy()函数传递到下一设备。
c)使用wait()函数同步计算流和通信流使得计算与通信并行执行,之后所有提交到各个流的后续任务将等待所有计算内核完成,并在调用完成时提交另外微批量计算流。
与现有技术相比,本发明具有以下有益效果:
本发明在不增加额外开销和无需特殊硬件支持的情况下,降低模型切分的难度、实现神经网络模型计算任务和计算资源合理匹配、最大限度消除计算节点计算和通信的相互依赖关系,实现计算与通信最大化重叠,提高计算资源利用率,为充分利用硬件计算资源,提升深度神经网络模型训练速度提供一个有效的解决方法。实验证明,本发明可以将大规模深度神经网络模型训练速度平均提升2.8倍。
附图说明
图1为本发明的总体框架图;
图2为本发明的一种改进的异步流水线并行调度方法示意图;
图3为本发明具体流水线并行任务调度机制的示例图;
图4为本发明具体模型任务分配及放置的示意图;
图5为本发明具体微批量单元调度示例图;
图6为本发明设备默认流改进计算与通信重叠的示意图;
图7为本发明与GPipe、PipeDream在ResNet-101流水线并行训练耗时结果;
图8为本发明与GPipe、PipeDream在ResNet-101流水线并行加速比结果;
图9为本发明与GPipe、PipeDream在AmoebaNet-36流水线并行训练耗时结果;
图10为本发明与GPipe、PipeDream在AmoebaNet-36流水线并行加速比结果。
具体实施方式
下面结合附图对本发明做进一步详细描述:
参见图1,一种深度神经网络模型并行计算任务异步调度方法,包括以下步骤:
1)设计流水线并行任务调度优化方法,具体就是:采用异步并行,提前调度反向传播(BW)操作,从而释放由于存储前向计算(FW)任务生成的中间激活数据所占用的额外内存,建立模型计算任务的多迭代异步并行管理机制,解决传统同步流水线由于重新计算造成的内存开销过大的问题,以及模型分区和设备分配问题,同时保持较高的吞吐量。具体的,将模型结合具体硬件计算资源分为各个阶段(stage),完成任务映射后,调度程序开始前向计算。通过区分每个GPU中的阶段次序为其调度安排Ki个微批量,具体来说,Ki是阶段i开始时调度处理的微批量数,之后整体循环交错执行FW和BW。图2显示了使用传统同步并行和改进流水线的方法,将模型切分为4个阶段,批量切分为8个微批量的执行示例。其中,图2(a)为传统的同步并行任务调度机制,图2(b)为本发明改进的流水线并行任务调度机制,图中单元格内的数字表示微批量ID。
首先,在开始时对每个阶段注入K个微批量(K<M)而不是一次注入所有M个微批量,其中,微批量数K根据阶段次序进行预设,如图2(b)中依次显示各阶段在GPU中预先注入的微批量数,以减少内存压力,提前安排微批量的BW,达到异步并行的目的。其次,通过严格控制FW和BW的执行顺序,即严格按照微批量的一个FW来安排一个BW。微批量FW生成中间激活占用的内存将在相应的BW之后释放,以便下次注入的微批量可以重用,来提高微批量的执行效率,增大模型训练的吞吐量。
图2(c)显示了在GPU0中传统的同步流水线并行和改进的流水并行方法,在并行执行微批量计算任务时的内存消耗随时间变化的情况。起初,两种方法内存使用量随时间推移而增加,当注入4个微批量之后,提出的改进方法由于BW的提前调度,及时地释放了微批量FW生成的中间激活数据,从而后续再增加微批量后内存占用一直固定不变。相比之下,同步流水线并行需要在8个微批量前向计算全部完成后才能开始反向传播任务,持续存储FW生成的中间激活值,使得内存占用量持续增加,从而造成过大的内存消耗。最终,提出的方法在完成相同微批量的FW任务时,即在第5个微批量BW结束后,还可以持续增加微批量以训练更多的数据,相比同步并行有更好的流水线效率,获得更高的吞吐量。
2)根据运行平台所支持的硬件计算资源环境,采用具体的深度神经网络模型,对用户输入的单个全局批量(mini-batch)数据使用PyTorch深度学习框架进行训练。
硬件计算资源环境没有限制,根据不同集群的GPU个数和通信带宽决定;具体的深度神经网络模型,依据输入的模型类型决定,对不同卷积神经网络模型、循环神经网络模型和Transformer同样适用;对输入的单个全局批量数据没有限制,依据所采用的数据集进行输入划分。
3)使用python编写的脚本文件,探测模型不同层的前向计算和反向传播时间开销,并使用相应数据结构进行记录和存储。对模型内部数据使用以下数据结构定义存储方式:使用字典键值进行存储,将层类型作为键,前向计算和反向传播时间作为值进行存储。
4)根据步骤3)中定义的数据结构以及记录的相关信息,采用启发式动态规划算法将模型任务切分为各个阶段(stage),通过自适应调度方式将计算任务映射到具体加速设备中,实现模型训练任务和计算资源的最佳匹配。具体的任务切分及设备映射过程分为如下几步:
(1)优化目标。将单个全局批量(mini-batch)的执行时间作为流水线延迟D,其主要功能是衡量流水线并行性能的指标。优化目标是训练模型在结合具体硬件资源上的计算时间,最小化流水线延迟。
通过严格控制微批量前向计算和反向传播的执行顺序,实现异步训练过程。例如,第s阶段微批量i的前向计算块必须在第s+1阶段微批量i的前向计算之前执行,第s-1阶段微批量i+1的反向传播块必须在第s阶段微批量i+1的反向传播之后执行。在训练过程中,将气泡开销最小的阶段表示为枢轴阶段P,它是计算流水线延迟D的主要因素。图3为具体的流水线并行任务调度机制示例图,其中网络通信过程被表示为各个阶段,最终阶段(stage 6)为此示例中的枢轴阶段。
改进的流水线并行训练迭代过程主要包括三个阶段,即预热阶段、稳定阶段和结束阶段。如图3中,将从开始阶段(stage 0)到枢轴阶段P(stage 6)的第一个前向微批量执行阶段称为流水线并行中的预热阶段,将从枢轴阶段P最后一个反向微批量到结束的执行阶段称为结束阶段。最终优化目标即最小化流水线延迟D,是这三个阶段的计算时间总和,如公式(4)所示,具体计算过程如下:
Ts=(M-1)*(FP+BP) (2)
D=Tw+Ts+Te (4)
其中,公式(1)Tw表示预热阶段的执行时间,即一个微批量阶段的前向计算执行到枢轴阶段P的时间总和。公式(2)Ts表示稳定阶段,包括除去预热和结束阶段的微批量,其余所有微批量的枢轴阶段P的前向计算和反向传播时间。公式(3)Te对应于结束阶段,计算枢轴阶段P之前和之后阶段的反向传播时间的最大值。M、S、Fs和Bs分别表示总微批量数、阶段数(计算阶段+通信阶段)、阶段s的前向计算时间和反向传播时间,以及阶段a根据枢轴阶段P之前和之后阶段取s各值时的反向传播时间。将级间通信视为与计算过程一起的独立阶段,
例如图3中的stage1、stage3和stage5。此外,将通信阶段的Fs和Bs定义为其随后的前向计算和反向传播通信时间。
(2)调度算法。使用启发式动态规划来寻找最优的模型分区和任务放置策略,从而最小化流水线延迟D。首先介绍如何在规划过程中更新枢轴阶段P,它是影响流水线延迟D的主要因素,然后通过枢轴阶段来最小化流水线延迟,最终结合硬件环境对计算任务进行具体分配。
为计算流水线延迟D,选择合适的枢轴阶段P是至关重要的。具体是找到具有最小气泡开销的阶段,使用启发式动态规划算法来确定枢轴阶段P,通过遍历各阶段时间成本,对比气泡开销最小阶段作为模型任务切分的依据。具体枢轴阶段P的迭代更新如公式(5)所示:
公式(5)体现了如何从阶段stage S-1到stage 0迭代更新枢轴阶段P,其中,初始化时将枢轴阶段P设置为S-1。假设枢轴阶段为j,表示稳定阶段无气泡开销的持续时间。对于阶段s<P,如果/>大于/>和阶段s与当前枢轴阶段P之间相应通信时间Fs’、Bs’之和(argmax表示此二者取最大值时的变量的取值),即如果将枢轴阶段设置为s而非当前枢轴阶段P,稳定阶段的气泡开销将更少,则将枢轴阶段P更新为s。
在后续进行模型任务切分时,调度算法从后往前依次将各阶段定义为枢轴阶段,通过对比其前序各阶段的计算与通信时间,获得当前稳定阶段的最小气泡开销阶段,并将气泡开销最小时的枢轴阶段所在层设置为当前模型最佳切分点,是模型任务分配时的主要迭代部分。
(3)模型任务分配。将流水线延迟TPD(j,m)定义为子问题,具体表示使用m个GPU为j层网络计算的最大时间开销。优化目标是求解总任务流水线延迟TPD(N,M),M={0,1,…,M-1},其中N和M分别表示神经网络模型层数和GPU数,具体动态规划过程如公式(6)所示:
公式(6)表示对用户输入的模型整体进行遍历,递归寻找使用最小GPU数获得最大流水线延迟的层切分。其中,将流水线延迟TPD(j,m)定义为子问题,具体表示使用m个GPU为j层网络计算的最大时间开销。优化目标是求解总任务流水线延迟TPD(N,M),M={0,1,…,M-1},其中N和M分别表示神经网络模型层数和GPU数。
通过将总任务流水线延迟进行递归迭代,对模型任务进行切分,具体依据初始化的枢轴阶段与后续气泡开销最大阶段作为切入点,将模型层从后往前分为两部分,第一部分是规划完成的各个独立阶段,第二部分为剩余流水线延迟最高的部分,并使用递归解空间进行切分。对于每个规划完成的最佳阶段s′,算法会动态分配给一个阶段的GPU。
图4描述了迭代规划过程。假设已经规划了第一个j(0≤j<N)层,形成阶段stages’1,并将估计的TPD(j,m)作为当前流水线延迟。同时,得到当前策略的最优枢轴阶段Pj以及Pj到随后层的FP和BP作为通信时间。接着,对剩余部分继续进行规划。假设在层j′(0≤j′<j)规划得到新阶段,则在得到的剩余部分中再添加一个分区阶段stage s′2,并根据公式(7)计算当前流水线延迟:
TPD(j',m+m')=D (7)
其中,D与公式(4)中相同。公式(7)中计算D的关键是找到子问题TPD(j',m+m')=D的枢轴阶段P。将得到的当前最优枢轴阶段Pj应用公式(5)来获得TPD(j',m+m')=D的枢轴阶段Pj’:如果当前策略的最优枢轴阶段Pj以及Pj到Pj’的FP和BP通信时间小于枢轴阶段Pj’的时间开销,即如果枢轴阶段Pj不是气泡开销最小的最佳阶段s′,则将枢轴阶段Pj’更新为当前的最优枢轴阶段,并且不需要迭代j’层之后的所有阶段,而是在迭代过程中对j’层之前的剩余层(remain layers)继续使用更新后的最优枢轴阶段Pj’进行计算分配。
通过上述过程,动态规划使用记忆搜索记录解决方案空间中每个点的当前最佳分割和阶段放置,实现计算任务和硬件资源的自适应分配,最终将规划结果输入运行时调度策略中进行训练。具体的模型任务分配及放置过程如图4所示。
5)将全局批量切分为微批量(micro-batch),为每个流水线阶段分别对微批量单元具体调度过程,通过控制数据依赖,以及参数相关性优化异步并行时梯度延迟更新问题,构建前向计算和反向传播执行图,保证模型收敛。
针对异步并行中产生的梯度延迟更新问题,通过构建前向和反向传播执行图,在具体调度过程对每个流水线阶段根据其微批量单元控制数据依赖以及参数相关性,在微批量单元调度之间强制执行特殊的处理顺序,来优化异步并行参数更新时需要的梯度信息,降低延迟梯度对模型收敛产生的影响。
图5显示了在2个GPU上通过控制相关性连接多达三个微批量,以实现细粒度的流水线并行微批量单元调度,图中数字表示微批量ID。如图5(a)中,当只有一个微批量时,为传统的模型并行过程,通过控制微批量间前向计算和反向传播数据依赖实现梯度更新,不需要存储参数信息控制相关性。图5(b)中,对于两个微批量,在训练过程中,除了各个微批量间的数据依赖保证前向计算和反向传播交错循环执行,需要对前一微批量本地梯度更新后引入控制相关性,在同加速器内不同微批量间使用当前最新参数进行训练。同理如三个微批量的情况(图5(c))。通过对前向计算和反向传播过程中的数据依赖的控制,保证多个微批量流水线并行调度,以及使用控制相关性,在反向传播更新梯度后,可及时使用批量间最新参数值进行训练,保证模型的收敛性。
6)将通信阶段放置在CUDA非默认流上,最大限度地消除计算与通信阶段依赖关系,实现计算和通信重叠的最大化,提高设备利用率,减少模型训练耗时。
设备流改进计算与通信重叠如图6,具体分为以下3步:
(1)流封装。使用PyTorch框架提供的torch.device.type()方法对训练中,CPU与GPU间通信数据传递和设备内流类型进行分析,分为传输流和设备CUDA流。如果不为计算核的CUDA默认流,则为CPU到GPU间相互传递数据的传输流操作。对各类流操作使用集合Union进行无重复记录,如果在判断时流操作相同,由于流处理为顺序执行,则一个流等待另外一个流完成后再进行判断。
(2)构建通信流。由于前向计算位于CUDA默认流中,所以要想并行处理“下一个微批量的预读取(拷贝CPU到GPU)或不同设备间梯度传递”和“当前微批量的前向计算”,就必须将预读取或梯度传递操作放置在另一个流上执行。具体通过使用PyTorch框架提供的torch.cuda.stream()方法将每个梯度传递操作注册到CUDA非默认流中,同时将当前计算过程保留在CUDA默认流中。并通过使用Priority(int)为每个流设置优先级,其中int可以是-1(高优先级)或0(低优先级),默认优先级为0。
(3)并行操作。在并行操作中,遵循微批量单元调度中设定的数据依赖关系,在设备默认流进行计算时,通过构建前后设备传输数据的通信流,将CUDA非默认流与计算流进行重叠。在初始化中获取所有微批量(M)和阶段数(N)列表Schedule[M,N],前后设备通信所构建的CUDA非默认流comm_streams,微批量前向计算与反向传播操作间的数据依赖和控制相关性depend,以及阶段间执行顺序skip。对微批量间默认流中的前向计算不做干涉,执行反向传播过程中需确保微批量i-1在i之后执行。具体并行过程分为以下三个步骤:
a)当前微批量编号不为第一个(ID!=0)时,获取下一个设备通信流next_stream,在当前设备计算进行时,使用copy()函数将下一个微批量和流中信息传递后续设备中;
b)如果设备编号不为第一个(GPU ID!=0),则得到上一个设备的通信流prev_stream,将其计算结果中梯度信息使用copy()函数传递到下一设备;
c)使用wait()函数同步计算流和通信流使得计算与通信并行执行,之后所有提交到各个流的后续任务将等待所有计算内核完成,并在调用完成时提交另外微批量计算流。
通过对通信流的控制,允许设备j的前向计算FWi+1,j在发送给第i+1个微批量应用最新权重W更新BWi+1,j的同时,可接收来自设备j-1的梯度具体如图6所示,其中箭头为设备执行时间线,(a)为默认流,通信流会阻塞计算核(反之亦然),直到通信阶段完全完成。(b)为改进的异步非默认流,计算过程与发送或接收数据传输操作可同时进行,大幅缩短了执行时间。此外,每个设备对每个微批量使用不同的流,由于不同微批量处理之间没有真正的依赖关系,因此使用流是线程安全的,使得计算与通信达到重叠,提高了设备的利用率和模型并行训练效率。
7)将用户模型及其规划结果作为输入,模型任务转换为异步流水线并行调度机制,并在多个分布式设备上执行。
本发明针对大规模深度神经网络模型并行任务调度问题,首先提出一种改进的流水线模型并行任务调度优化策略,建立适合大规模模型计算任务的多迭代异步并行任务管理机制,解决模型分区和设备分配问题;然后,针对计算任务切分和计算资源的分配问题,结合给定的模型结构和硬件配置信息,通过启发式动态规划算法设计计算任务和计算资源的分配机制,实现模型训练任务和计算资源的合理匹配;最后,设计计算资源和任务的运行时调度策略,通过控制微批量单元调度过程,对设备默认流进行优化,最大限度消除计算节点计算和通信的相互依赖关系,实现计算与通信最大化重叠,提高计算资源利用率,在保证模型训练精度的同时,提升大规模深度神经网络模型训练速度。
下面通过实验进一步证明本发明。
1实验设置
(1)集群节点:使用的实验环境为国家超算天津中心的HPC4-GPU分区,采用两个计算节点的单机双卡硬件环境,具体配置及软件信息如表1所示。
表1软硬件配置
(2)数据集和模型:实验基于PyTorch深度学习框架进行,采用CIFAR-10数据集,包含训练数据集50000张图片,测试数据集10000张图片,并进行图像增强操作,设置图片尺寸为224×224。实验模型采用ResNet-101和AmoebaNet-D,其中AmoebaNet模型过滤器尺寸D为36。
(3)实验参数设置:使用分布式随机梯度下降优化算法,设置学习率为0.1,动量0.9,学习率每经历30轮迭代衰减0.001,训练ResNet-101的batch size分别使用256,512,1024,2048,以及AmoebaNet-D的batch size分别使用256,512,768,1024进行实验,共迭代90个Epoch。同时,在训练过程中采用cuDNN提供的CUDA加速,以及混合精度训练方法进一步加速优化。实验中利用FP16进行模型训练过程中张量的乘法和存储,FP32来进行张量加法运算。具体是在FP32基础上,将权重从FP32转成FP16进行前向计算,得到损失值Loss之后,使用FP16计算梯度,再转成FP32更新到FP32的权重上。
2实验结果分析
2.1流水线并行训练耗时对比
为验证本发明在提升模型并行训练速度方面的有效性,首先将本发明(PP)与GPipe同步流水线并行和PipeDream异步流水线并行方法,在ResNet-101和AmoebaNet-36深度神经网络模型上,训练90个Epoch达到稳定准确率时,训练所花费的时间进行对比,并计算各方法并行加速比,实验结果如图7-10所示。
从实验结果可以看出,在ResNet-101模型训练中,当batch size较小时,由于所采用的计算资源显存大,小的批量未能占满整个GPU计算核,在训练中会有较小的气泡开销,导致训练时间较长。随着batch size逐渐增大,由于本发明通过严格控制任务调度顺序的异步流执行,消除了计算与通信的相互依赖关系,使得计算与通信重叠最大化,训练耗时逐步降低,当batch size到达1024时,整体训练时间逐渐趋于平稳。当batch size达到2048时,所提出的方法和已有方法相比最大训练时间可以降低近241分钟,平均可以降低178分钟。
在AmoebaNet-36模型训练过程中,由于GPipe需要在前向计算结束后进行反向传播梯度更新,在反向传播过程中使用重新计算前向计算时层间产生的激活值,导致训练耗时不断增长。PipeDream在训练时,由于使用异步并行不需要存储中间值而比GPipe训练耗时少。本发明采用异步并行提前调度反向传播,从而释放用于存储相应前向计算任务生成激活的内存,并且对梯度计算使用半精度FP16,更新权重使用FP32,从而在训练更大批量的时候,通信量大幅度减少,加速了微批量训练效率。当batch size达到1024时,实验结果表明提出的方法和已有的方法相比最大训练时差近226分钟,平均可以降低161分钟。
通过与已有的模型并行方法相比,所提出的深度神经网络模型并行计算任务异步调度方法可以充分利用各GPU计算资源,在ResNet-101模型训练中,最大加速比提升3.65倍,在AmoebaNet-36模型训练中,最大加速比提升1.95倍,最终将大规模深度神经网络模型训练加速比平均提升2.8倍。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (7)
1.一种深度神经网络模型并行计算任务异步调度方法,其特征在于,包括如下步骤:
1)采用异步并行,提前调度反向传播BW操作的流水线并行任务调度优化方法,建立模型计算任务的多迭代异步并行管理机制;
2)根据运行平台所支持的硬件计算资源环境,采用具体的深度神经网络模型,对输入的单个全局批量mini-batch进行训练;
3)探测模型不同层的前向计算和反向传播时间开销,并使用相应数据结构进行记录和存储;对模型内部数据使用以下数据结构定义存储方式:使用字典键值进行存储,将层类型作为键,前向计算和反向传播时间作为值进行存储;
4)应用记录的层各类开销信息,采用启发式动态规划算法将模型任务切分为各个阶段stage,通过自适应调度方式将计算任务映射到具体加速设备中,实现模型训练任务和计算资源的最佳匹配;
5)将全局批量切分为微批量micro-batch,为每个流水线阶段分别对微批量单元具体调度过程,通过控制数据依赖,以及参数相关性优化异步并行时梯度延迟更新问题,构建前向计算和反向传播执行图,保证模型收敛;
6)将通信阶段放置在CUDA非默认流上,消除计算与通信阶段依赖关系,实现计算和通信重叠的最大化;
7)将用户模型及其规划结果作为输入,模型任务转换为异步流水线并行调度机制,并在多个分布式设备上执行。
2.根据权利要求1所述的一种深度神经网络模型并行计算任务异步调度方法,其特征在于:步骤1)的具体实现:将模型结合具体硬件计算资源分为各个阶段,完成任务映射后,调度程序开始前向计算;通过区分每个GPU中的阶段次序为其调度安排Ki个微批量,Ki是阶段i开始时调度处理的微批量数,之后整体循环交错执行前向计算FW和提前调度反向传播BW。
3.根据权利要求1所述的一种深度神经网络模型并行计算任务异步调度方法,其特征在于:步骤2)中,对用户输入的单个全局批量mini-batch数据使用PyTorch深度学习框架进行训练。
4.根据权利要求1所述的一种深度神经网络模型并行计算任务异步调度方法,其特征在于:步骤4)中,具体模型任务切分及设备映射方法为:
4-1)优化目标,将单个全局批量mini-batch的执行时间作为流水线延迟D,优化目标将训练模型在结合具体硬件资源上的计算时间,最小化流水线延迟;将流水线并行训练迭代过程分为预热阶段、稳定阶段和结束阶段;其中,气泡开销最小的阶段表示为枢轴阶段P;最终优化目标即最小化流水线延迟D,是这三个阶段的计算时间总和;
Ts=(M-1)*(FP+BP) (2)
D=Tw+Ts+Te (4)
其中,公式(1)Tw表示预热阶段的执行时间,即一个微批量阶段的前向计算执行到枢轴阶段P的时间总和,s为阶段编号;公式(2)Ts表示稳定阶段,包括除去预热和结束阶段的微批量,其余所有微批量的枢轴阶段P的前向计算和反向传播时间,Fp为枢轴阶段P的前向计算时间,Bp为枢轴阶段P的反向传播时间;公式(3)Te对应于结束阶段,计算枢轴阶段P之前和之后阶段的反向传播时间的最大值;M、S、Fs和Bs分别表示总微批量数、阶段数为计算阶段+通信阶段、阶段s的前向计算时间,以及阶段a根据枢轴阶段P之前和之后阶段取s各值时的反向传播时间,Ba为根据枢轴阶段P之前和之后阶段取a各值时的反向传播时间;
4-2)调度算法,使用启发式动态规划算法来确定枢轴阶段P,通过遍历各阶段时间成本,对比气泡开销最小阶段作为模型任务切分的依据;枢轴阶段P的迭代更新如公式(5)所示:
公式(5)描述了如何从阶段stage S-1到stage 0迭代更新枢轴阶段P,其中,初始化时将枢轴阶段P设置为S-1,假设枢轴阶段为j,表示稳定阶段无气泡开销的持续时间,/>和/>为枢轴阶段为P或s时,稳定阶段无气泡开销的持续时间;s'为s+1取值时的替代符号;Fs'为枢轴阶段s'的前向计算时间,Bs'为枢轴阶段s'的反向传播时间;对于阶段s<P,如果/>大于/>和阶段s与当前枢轴阶段P之间相应通信时间Fs’、Bs’之和,arg max表示此二者取最大值时的变量的取值,即如果将枢轴阶段设置为s而非当前枢轴阶段P,稳定阶段的气泡开销将更少,则将枢轴阶段P更新为s;
4-3)模型任务分配:通过将总任务流水线延迟进行递归迭代,对模型任务进行切分,具体依据初始化的枢轴阶段与后续气泡开销最大阶段作为切入点,将模型层从后往前分为两部分,第一部分是规划完成的各个独立阶段,第二部分为剩余流水线延迟最高的部分,并使用递归解空间进行切分,对于每个规划完成的最佳阶段,算法会动态分配给一个阶段的GPU;
具体动态规划过程如公式(6)所示:
公式(6)表示对用户输入的模型整体进行遍历,递归寻找使用最小GPU数获得最大流水线延迟的层切分;其中,将流水线延迟TPD(j,m)定义为子问题,具体表示使用m个GPU为j层网络计算的最大时间开销;优化目标是求解总任务流水线延迟TPD(N,M),M={0,1,…,M-1},其中N和M分别表示神经网络模型层数和GPU数。
5.根据权利要求4所述的一种深度神经网络模型并行计算任务异步调度方法,其特征在于:步骤4)中,迭代规划过程为:假设已经规划了第一个j(0≤j<N)层,形成阶段stages’1,并将估计的TPD(j,m)作为当前流水线延迟;同时,得到当前策略的最优枢轴阶段Pj以及Pj到随后层的FP和BP作为通信时间;接着,对剩余部分继续进行规划;假设在层j′(0≤j′<j)规划得到新阶段,则在得到的剩余部分中再添加一个分区阶段stage s′2,并根据公式(7)计算当前流水线延迟:
TPD(j',m+m')=D (7)
其中,D与公式(4)中相同;公式(7)中计算D的关键是找到子问题TPD(j',m+m')=D的枢轴阶段P;将得到的当前最优枢轴阶段Pj应用公式(5)来获得TPD(j',m+m')=D的枢轴阶段Pj’:如果当前策略的最优枢轴阶段Pj以及Pj到Pj’的FP和BP通信时间小于枢轴阶段Pj’的时间开销,即如果枢轴阶段Pj不是气泡开销最小的最佳阶段s′,则将枢轴阶段Pj’更新为当前的最优枢轴阶段,并且不需要迭代j’层之后的所有阶段,而是在迭代过程中对j’层之前的剩余层remain layers继续使用更新后的最优枢轴阶段Pj’进行计算分配;m'为m'个GPU。
6.根据权利要求1所述的一种深度神经网络模型并行计算任务异步调度方法,其特征在于:步骤5)中,在训练过程中,通过各个微批量间的数据依赖保证前向计算和反向传播交错循环执行外,需要对前一微批量本地梯度更新后引入控制相关性,在同加速器内不同微批量间使用当前最新参数进行训练。
7.根据权利要求1所述的一种深度神经网络模型并行计算任务异步调度方法,其特征在于:步骤6)中,所述CUDA非默认流构建步骤为:
(1)流封装:使用PyTorch框架提供的torch.device.type()方法对训练中,CPU与GPU间通信数据传递和设备内流类型进行分析,分为传输流和设备CUDA流;如果不为计算核的CUDA默认流,则为CPU到GPU间相互传递数据的传输流操作;对各类流操作使用集合Union进行无重复记录,如果在判断时流操作相同,由于流处理为顺序执行,则一个流等待另外一个流完成后再进行判断;
(2)构建通信流:由于前向计算位于CUDA默认流中,所以要想并行处理下一个微批量的预读取,就必须将预读取或梯度传递操作放置在另一个流上执行;具体通过使用PyTorch框架提供的torch.cuda.stream()方法将每个梯度传递操作注册到CUDA非默认流中,同时将当前计算过程保留在CUDA默认流中;并通过使用Priority(int)为每个流设置优先级,其中int是高优先级-1,或低优先级0,默认优先级为0;
(3)并行操作:在并行操作中,遵循微批量单元调度中设定的数据依赖关系,在设备默认流进行计算时,通过构建前后设备传输数据的通信流,将CUDA非默认流与计算流进行重叠;在初始化中获取所有微批量M和阶段数N列表Schedule[M,N],前后设备通信所构建的CUDA非默认流comm_streams,微批量前向计算与反向传播操作间的数据依赖和控制相关性depend,以及阶段间执行顺序skip;对微批量间默认流中的前向计算不做干涉,执行反向传播过程中需确保微批量i-1在i之后执行;具体并行过程分为以下三个步骤:
a)当前微批量编号不为第一个ID!=0时,获取下一个设备通信流next_stream,在当前设备计算进行时,使用copy()函数将下一个微批量和流中信息传递后续设备中;
b)如果设备编号不为第一个GPU ID!=0,则得到上一个设备的通信流prev_stream,将其计算结果中梯度信息使用copy()函数传递到下一设备;
c)使用wait()函数同步计算流和通信流使得计算与通信并行执行,之后所有提交到各个流的后续任务将等待所有计算内核完成,并在调用完成时提交另外微批量计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211688400.7A CN115994567B (zh) | 2022-12-28 | 2022-12-28 | 一种深度神经网络模型并行计算任务异步调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211688400.7A CN115994567B (zh) | 2022-12-28 | 2022-12-28 | 一种深度神经网络模型并行计算任务异步调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115994567A CN115994567A (zh) | 2023-04-21 |
CN115994567B true CN115994567B (zh) | 2024-03-22 |
Family
ID=85994791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211688400.7A Active CN115994567B (zh) | 2022-12-28 | 2022-12-28 | 一种深度神经网络模型并行计算任务异步调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115994567B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991483B (zh) * | 2023-09-25 | 2024-04-05 | 粤港澳大湾区数字经济研究院(福田) | 一种针对语言模型计算的流水线并行方法及装置 |
CN117273115B (zh) * | 2023-11-24 | 2024-03-29 | 上海燧原科技股份有限公司 | 一种反向计算图的静态生成方法、装置、设备及介质 |
CN118172232A (zh) * | 2024-04-25 | 2024-06-11 | 北京壁仞科技开发有限公司 | 人工智能装置及其操作方法和机器可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106358003A (zh) * | 2016-08-31 | 2017-01-25 | 华中科技大学 | 一种基于线程级流水线的视频分析加速方法 |
CN108805798A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于深度学习框架的细粒度计算通信执行 |
CN110533183A (zh) * | 2019-08-30 | 2019-12-03 | 东南大学 | 一种流水线分布式深度学习中异构网络感知的模型划分与任务放置方法 |
CN112784968A (zh) * | 2021-01-29 | 2021-05-11 | 东南大学 | 一种加速分布式深度神经网络训练的混合流水线并行方法 |
CN113312178A (zh) * | 2021-05-24 | 2021-08-27 | 河海大学 | 一种基于深度强化学习的流水线并行训练任务分配方法 |
CN113515370A (zh) * | 2021-04-28 | 2021-10-19 | 之江实验室 | 一种面向大规模深度神经网络的分布式训练方法 |
CN114064551A (zh) * | 2022-01-17 | 2022-02-18 | 广州嘉检医学检测有限公司 | 基于cpu+gpu异构的高并发序列比对计算加速方法 |
KR20220122175A (ko) * | 2021-02-26 | 2022-09-02 | 고려대학교 산학협력단 | 초병렬 심층 학습 방법 및 장치 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10564949B2 (en) * | 2013-09-20 | 2020-02-18 | Reservoir Labs, Inc. | System and method for generation of event driven, tuple-space based programs |
-
2022
- 2022-12-28 CN CN202211688400.7A patent/CN115994567B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106358003A (zh) * | 2016-08-31 | 2017-01-25 | 华中科技大学 | 一种基于线程级流水线的视频分析加速方法 |
CN108805798A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于深度学习框架的细粒度计算通信执行 |
CN110533183A (zh) * | 2019-08-30 | 2019-12-03 | 东南大学 | 一种流水线分布式深度学习中异构网络感知的模型划分与任务放置方法 |
CN112784968A (zh) * | 2021-01-29 | 2021-05-11 | 东南大学 | 一种加速分布式深度神经网络训练的混合流水线并行方法 |
KR20220122175A (ko) * | 2021-02-26 | 2022-09-02 | 고려대학교 산학협력단 | 초병렬 심층 학습 방법 및 장치 |
CN113515370A (zh) * | 2021-04-28 | 2021-10-19 | 之江实验室 | 一种面向大规模深度神经网络的分布式训练方法 |
CN113312178A (zh) * | 2021-05-24 | 2021-08-27 | 河海大学 | 一种基于深度强化学习的流水线并行训练任务分配方法 |
CN114064551A (zh) * | 2022-01-17 | 2022-02-18 | 广州嘉检医学检测有限公司 | 基于cpu+gpu异构的高并发序列比对计算加速方法 |
Non-Patent Citations (3)
Title |
---|
A pipeline-based approach for scheduling video processing algorithms on NOW;Mau-Tsuen Yang et al;《IEEE Transactions on Parallel and Distributed Systems》;20030219;第119-130页 * |
分布式数据流计算系统的数据缓存技术综述;袁旭初 等;《大数据》;20200630;第101-116页 * |
深度神经网络模型任务切分及并行优化方法;巨涛 等;《北京航空航天大学学报》;20221122;第1-18页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115994567A (zh) | 2023-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115994567B (zh) | 一种深度神经网络模型并行计算任务异步调度方法 | |
Jiang et al. | Accuracy vs. efficiency: Achieving both through fpga-implementation aware neural architecture search | |
WO2024060789A1 (zh) | 面向智能计算的分布式训练任务调度方法、系统和装置 | |
Yu et al. | Gillis: Serving large neural networks in serverless functions with automatic model partitioning | |
US20200219028A1 (en) | Systems, methods, and media for distributing database queries across a metered virtual network | |
CN111274036A (zh) | 一种基于速度预测的深度学习任务的调度方法 | |
CN109960576A (zh) | 一种面向cpu-gpu异构的低能耗任务调度策略 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN113472597B (zh) | 分布式卷积神经网络细粒度的参数传输调度方法及装置 | |
CN113312178A (zh) | 一种基于深度强化学习的流水线并行训练任务分配方法 | |
CN112463189B (zh) | 基于通信操作稀疏化的分布式深度学习多步延迟更新方法 | |
CN114647515A (zh) | 一种面向gpu集群的动态资源调度方法 | |
CN115437760A (zh) | 计算资源分配方法、电子设备、存储介质及程序产品 | |
Lan et al. | Accelerated device placement optimization with contrastive learning | |
CN116684420A (zh) | 集群资源调度方法、装置、集群系统和可读存储介质 | |
Xu et al. | OD-SGD: One-step delay stochastic gradient descent for distributed training | |
CN113741999B (zh) | 一种基于移动边缘计算的面向依赖型任务卸载方法及装置 | |
CN112862083B (zh) | 一种边缘环境下的深度神经网络推断方法及装置 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN112232401A (zh) | 一种基于差分隐私及随机梯度下降的数据分类方法 | |
CN116582407A (zh) | 一种基于深度强化学习的容器化微服务编排系统及方法 | |
CN111813525B (zh) | 一种异构系统工作流调度方法 | |
KR102477243B1 (ko) | 파라미터 동기화 모델에 기반한 기계 학습 트레이닝 방법 및 그 트레이닝 시스템 | |
WO2023184009A1 (en) | Systems and methods for cluster-based parallel split learning | |
CN114980216A (zh) | 基于移动边缘计算的依赖型任务卸载系统及方法 |
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 |