CN112836787A - 通过高效混合并行化减少深度神经网络训练次数 - Google Patents
通过高效混合并行化减少深度神经网络训练次数 Download PDFInfo
- Publication number
- CN112836787A CN112836787A CN202011209924.4A CN202011209924A CN112836787A CN 112836787 A CN112836787 A CN 112836787A CN 202011209924 A CN202011209924 A CN 202011209924A CN 112836787 A CN112836787 A CN 112836787A
- Authority
- CN
- China
- Prior art keywords
- vertices
- dnn
- vertex
- sequence
- strategy
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 15
- 238000012549 training Methods 0.000 title claims description 25
- 239000010410 layer Substances 0.000 claims description 90
- 239000011229 interlayer Substances 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims 2
- 238000000034 method Methods 0.000 abstract description 86
- 238000013459 approach Methods 0.000 abstract description 12
- 230000008569 process Effects 0.000 description 48
- 238000002474 experimental method Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000001994 activation Methods 0.000 description 3
- 230000006698 induction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 102100040677 Glycine N-methyltransferase Human genes 0.000 description 1
- 101001039280 Homo sapiens Glycine N-methyltransferase Proteins 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
提出了自动寻找深度神经网络(DNN)的有效并行化策略的系统和方法。包括有效排序的顶点序列的计算图有助于在相对短的时间内计算最佳并行化策略。在各种DNN上评估并行化策略的有效性,并且将由各种实施例提出的策略的性能与数据并行、专家设计的策略和其它现有技术的方法进行比较。实验结果表明,所提出的策略优于基线数据并行策略,并取得了比专家设计的策略和现有技术的方法更好的性能。
Description
相关申请的交叉引用
本专利申请根据35USC§119(e)涉及并要求2019年11月4日提交的、标题为“REDUCING TRAINING TIMES OF DEEP NEURAL NETWORKS THROUGH EFFICIENT HYBRIDPARALLELISM”的第62/930,518号共同未决和共同拥有的美国专利申请的优先权权益,并将Venmugil Elango列出作为发明人(案号28888-2363P),该专利文件的全部内容出于所有目的通过引用并入本文。
背景技术
本公开总体上涉及用于计算机学习的、可以提供改进的计算机性能、特征和使用的系统和方法。更具体地,本公开涉及用于通过有效混合并行技术来减少深度神经网络(DNN)的训练时间的系统和方法。
DNN在诸如计算机视觉、自然语言处理、推荐系统等多个领域取得了巨大的成功。训练DNN需要大量的计算和存储器要求。将多个设备上的训练并行化以减少训练时间已经成为标准实践。有几种可行的方法来使DNN中的不同层平行化。穷举搜索该列表以找到最优并行化策略是过于耗时和不切实际的。标准的做法是使用数据并行,因为其简单性。然而,数据并行通常是次优的,并且受到差的性能和高存储器要求的困扰。已经利用特定的领域知识在逐个案例的基础上提出了专家设计的策略。这些专家设计的策略除了能够很好地推广到策略设计所针对的DNN外,不能很好地推广到其他的DNN。
因此,希望提供能够增加硬件利用率并减少深度神经网络的训练时间的更有效的系统和方法。
发明内容
本公开的实施方式提供了包括一个或多个指令序列的非暂时性计算机可读介质以及用于寻找对深度神经网络(DNN)的顶点进行并行化以增加所述DNN的硬件利用率并减少所述DNN的训练时间的有效策略的系统。
在本公开的一方面,提供了一种包括一个或多个指令序列的非暂时性计算机可读介质,所述一个或多个指令序列在由至少一个处理器执行时实现用于寻找对深度神经网络(DNN)的层进行并行化以增加所述DNN的硬件利用率并减少所述DNN的训练时间的有效策略的步骤,所述步骤包括:获得顶点序列,所述顶点序列中的顶点表示DNN的层,所述顶点序列已根据顶点排序策略排序,使得表示所述DNN的计算图中的受限邻居集合的大小得以减小;对于每个顶点,使用递归来计算用于对所述DNN的顶点进行并行化的子策略,每个顶点与一个或多个根据成本函数来降低配置成本的有效配置相关联;和输出具有用于所述计算图的最低成本的策略。
在本公开的另一方面,提供了一种包括一个或多个指令序列的非暂时性计算机可读介质,所述指令序列在由至少一个处理器执行时实现以下步骤,所述步骤用于对深度神经网络(DNN)的计算图的顶点进行排序以产生有效的顶点序列,其中,所述顶点序列中的顶点表示DNN的层,进而有效地计算提高所述DNN的硬件利用率和减少所述DNN的训练时间的最佳策略,所述步骤包括:对于顶点集合中的一个或多个顶点,初始化右相关顶点集合、末端顶点集合和未排序的顶点集合;对于每个顶点,执行以下步骤:从所述未排序的顶点集合中迭代地选择具有最小右相关集合基数的顶点,并将所选择的顶点分配给顶点序列;更新所述末端顶点集合和所述右相关顶点集合,使得计算图中的右相关顶点集合的大小得以正确保持;和输出所述顶点序列作为有序的顶点序列。
在本公开的又一方面,提供了一种用于寻找对深度神经网络(DNN)的顶点进行并行化以增加所述DNN的硬件利用率并减少所述DNN的训练时间的有效策略的系统,所述系统包括:一个或多个处理器;和包括一组或多组指令的非暂时性计算机可读介质,所述一组或多组指令在由所述一个或多个处理器中的至少一个执行时使得执行以下步骤,所述步骤包括:获得顶点序列,所述顶点序列中的顶点表示DNN的层,所述顶点序列已根据顶点排序策略排序,使得表示所述DNN的计算图中的受限邻居集合的大小得以减小;对于每个顶点,使用递归来计算用于对所述DNN的顶点进行并行化的子策略,每个顶点与一个或多个根据成本函数来降低配置成本的有效配置相关联;和输出具有用于所述计算图的最低成本的策略。
附图说明
将参考附图中示出的本公开的实施例和示例来描述本公开。这些附图是说明性的,而不是限制性的。尽管在这些实施例的上下文中一般性地描述了本公开,但是应当理解,其并不旨在将本公开的范围限制于这些特定实施例。附图中的项目可不是按比例绘制的。
图1示出了通过使用并行化配置(1,4,2)被并行化的通用矩阵乘法(GEMM)计算的示例性迭代空间。
图2A示出了根据本公开的实施例的简化的示例性计算图。
图2B示出了根据本发明实施例的图2A中的计算图的顶点的示例性排序。
图3A示出了根据本发明实施例的用于将顶点排序成有效序列的示例性过程。
图3B示出了根据本发明实施例的用于对DNN的计算图的顶点进行排序以产生有效的顶点序列以增加DNN的硬件利用率并减少DNN的训练时间的过程的流程图。
图4A示出了根据本发明实施例的计算用于计算图的有效策略的基于动态编程(DP)的过程。
图4B示出了根据本发明实施例的用于找到对DNN的顶点进行并行化以增加硬件利用率并减少训练时间的有效策略的过程的流程图。
图5示出了根据本发明实施例的计算子图。
图6示出了根据本公开实施例的、与数据并行策略相比在1080Ti系统上由在实验中使用实施例所提出的策略所实现的加速。
图7示出了根据本公开的实施例的,与数据并行策略相比在2080Ti系统上由在实验中使用实施例所提出的策略所实现的加速。
图8示出了根据本发明实施例的计算系统的简化框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以提供对本发明的理解。然而,对于本领域的技术人员显而易见的是,可以在没有这些细节的情况下实践本公开。此外,本领域技术人员将认识到,以下描述的本公开的实施例可以以多种方式来实现,诸如有形计算机可读介质上的过程、装置、系统、设备或方法。
附图中示出的组件或模块是本公开的示例性实施例的示例,并且旨在避免使本公开模糊。还应当理解,在整个讨论中,组件可以被描述为单独的功能单元,其可以包括子单元,但是本领域技术人员将认识到,各种组件或其部分可以被划分为单独的组件,或者可以被集成在一起,包括集成在单个系统或组件内。应注意,本文所论述的功能或操作可实施为组件。组件可以用软件、硬件或其组合来实现。
此外,附图中的组件或系统之间的连接并不限于直接连接。相反,这些组件之间的数据可以由中间组件修改、重新格式化或以其它方式改变。此外,可以使用另外的或更少的连接。还应注意,术语“联接”、“连接”或“通信联接”应理解为包括直接连接、通过一个或多个中间设备的间接连接和无线连接。
在说明书中对“一个实施例”、“优选实施例”、“实施例”或“多个实施例”的引用意味着结合该实施例描述的特定特征、结构、特性或功能被包括在本公开的至少一个实施例中,并且可以处于一个以上的实施例中。此外,在说明书的各个地方出现的上述短语不一定都是指相同的一个或多个实施例。
在本说明书的各个地方使用某些术语是为了说明而不应被解释为限制。服务、功能或资源不限于单个服务、功能或资源;这些术语的使用可以指一组相关服务、功能或资源,其可以是分布式的或聚集的。
术语“包括”和“包含”应理解为开放式术语,并且其后列出的任何项目都是示例性的,并不意味着限于所列出的项目。“层”可以包括一个或多个操作。词语“最佳的”、“最好的”、“最优的”等是指结果或过程的改进,并且不要求指定的结果或过程已经达到“最佳的”或峰值状态。
本文所用的任何标题仅用于组织目的,不应用于限制说明书或权利要求书的范围。在该专利文献中提及的每个参考文献/文献通过引用整体并入到本文中。
此外,本领域技术人员应认识到:(1)可任选地进行某些步骤;(2)步骤可以不限于本文所述的具体顺序;(3)某些步骤可以以不同的顺序进行;和(4)某些步骤可以同时进行。
应注意的是,本文提供的任何实验和结果通过举例说明的方式提供,并且使用一个或多个具体实施方案在具体条件下执行;因此,这些实验和它们的结果都不应用于限制本专利文件的公开范围。
A.概述
深度神经网络正变得越来越复杂并使用日益增长的数据集来提高精度。这使得对训练DNN的计算和存储器要求的增加。通常,需要几个小时到几天并且需要多个GPU来训练DNN。例如,谷歌的神经机器翻译(GNMT)模型使用96个NVIDIA K80 GPU在数据集3英语-法语(EN→FR)上训练大约6天。
训练DNN通常包括三个阶段:前向传播、后向传播(或反向传播)和更新阶段。首先,将输入数据集分成多个小批量。在一个步骤中,在前向传播期间,使一个小批量通过网络的层。在前向阶段结束时,将输出与地面真值进行比较,并且使用适当的损耗函数来计算损耗。为了使损耗最小化,在后向传播期间计算模型参数的梯度。最后,使用梯度来更新模型参数。在若干时间步长上重复该过程,称为回合(epoch),直到实现所需的精度。
DNN并行化策略可以广泛地分为三类,即数据并行、模型并行和管道并行。一种组合这三种方法以不同地对每一层进行并行化的策略通常被称为混合并行。如下所述,每个并行策略都具有其自身的优点和缺点。
在数据并行中,p个设备中的每一个保持整个DNN的副本,并且每一个小批量被分成p个碎片并且被分发到不同的设备。每个设备对其数据碎片独立地执行前向传播和后向传播。在更新阶段期间,在更新模型参数的本地副本之前,通常通过全缩减操作来累积来自所有设备的梯度。在具有大量模型参数的模型上,这成为主要的瓶颈。此外,由于模型参数被复制(而不是被拆分和分开),由于存储器约束,因此不可能通过仅使用数据并行来训练大的模型。此外,数据并行在小批量的大小较小时效率低下。不幸的是,由于收敛和精度较差,使用大小较大的小批量可能不总是可行的。尽管存在这些缺陷,但由于其简单性以及自动地在整个网络上应用数据并行的能力,数据并行仍然流行。数据并行也可以被看作是沿着小批量维度划分工作。
替代策略沿着模型维度(例如,信道维度、滤波器维度等)划分工作。这是在模型并行中采用的方法,其中模型参数分布在不同的设备中,并且每个设备在前向(和后向)传播期间只计算层的激活(和梯度)的一部分。这节省了存储器,但是它在前向(和后向)传播期间引起额外的通信(通常是全到全(all-to-all)通信)来累积激活(和梯度)。根据小批量和模型参数的大小,一种并行化策略可能比另一种更有效。
第三种方法,管道并行,涉及在不同设备上放置网络的不同层,而不沿着任何维度分割输入数据和模型参数。这允许对不具有数据相关性的层的计算重叠。每个设备计算它所拥有的层的激活(和梯度),并将结果发送到拥有连续层的设备。这种策略的优点是不需要对模型参数进行集中通信;然而,它需要足够的层间并行,并且数据需要通过管道以特定的速率到达,以便这种策略是有效的。
混合并行通过使用策略的组合(例如,数据+模型并行)来组合三个策略中的一些或全部,以不同地并行化不同的层。如下面的部分B所详述的,存在几种可能性来选择不同的层应该如何并行化。因此,彻底搜索用于混合并行的最优策略是不切实际的。基于特定的领域知识,提出了一种针对不同DNN的基于逐个案例的专家设计的策略。还努力自动找到良好的策略。这些方法(i)应用不同的试探法来找到贪心解(greedy solution),或者(ii)找到限制于某一类DNN(例如,卷积网络)的最优解,或者(iii)通过限制一些选择来减小搜索空间,以便在减小的搜索空间内找到最优策略。
在本专利文件中,使用混合并行策略。在一个或多个实施例中,可以忽略层间管道并行,并且可以使用模型并行和数据并行的组合来找到用于使DNN的不同层并行化的最佳策略。各种实施例包括用于有效地计算与DNN的最小训练成本相对应的并行化策略的公式和节点(或顶点)排序技术。一种有效的方法可以使用该公式来计算用于各种DNN的最佳策略。
实验结果表明,在一个或多个实施例中,忽略层间管道并行并不会从搜索空间中广泛删减最佳策略。将相对于基线数据并行策略、专家设计的策略和现有技术方法(框架1)所提出的策略来评估新方法所提出的策略,如在以下实验结果部分D中所讨论的。结果表明,在大多数情况下,本文的方法在几秒钟内为各种DNN找到了有效的策略。所呈现的策略在由1080Ti GPU组成的多节点/多GPU系统上优于数据并行高达1.85倍,并且在由用于各种基准的2080Ti GPU组成的系统上优于数据并行高达4倍。所提出的策略也比专家设计的策略和框架1提出的策略表现得更好。
B.问题表示
DNN可以表示为计算图G=(V,E),它是弱连通有向图,其中每个节点v∈V对应于DNN中的层(例如,完全连通层、卷积层等),并且每个边缘(u,v)∈E表示张量流动,该张量是输出u和输入v。每个节点v∈V具有捕获对v的计算的相关联的迭代空间。例如,考虑将矩阵AM×K与矩阵BK×N相乘的完全连通层。其迭代空间由集合 指定。
节点v的并行化配置Cv是正整数的d元组,其定义了v的迭代空间如何在不同设备上被分割和并行化,其中d是v的迭代空间的维度。图1示出了通过使用并行化配置(1,4,2)被并行化的GEMM计算的示例性迭代空间。对于图1中的完全连接的层示例,配置(1,4,2)指定迭代空间的第j维应当沿着其迭代空间的第二维被分成4个相等的部分,并且第k维应当沿着其迭代空间的第三维被分成2个部分,而第i维不被分割。计算上,配置指定将矩阵A102的列和矩阵B 104的行分成两半;将矩阵B 104的列分成四个四分之一;在8个单独的设备上执行与每个部分对应的8个GEMM计算;最后对中间结果进行部分缩减。给定具有d维迭代空间和p个设备的节点v,给出v的一组有效配置
并行化策略φ是为每个节点v∈V指定有效配置的集合 策略φ中节点v的配置由Cv=φ(v)给出。子策略φ|U是被限制于子集U的策略φ,即φ|U={(u,Cu)∈φ|u∈U}。最优策略是在给定的成本函数下,在V的所有可能策略上具有最小成本的并行化策略,即,其中Φ是V的所有有效策略的集合,其中每个策略φ∈Φ是V的有效配置的唯一组合。
在一个或多个实施例中,给定具有p个设备的处理环境,其中每个设备的平均峰值浮点性能为F FLOPS,并且每个链路的平均通信带宽为B字节/秒,则成本函数可以表示为:
其中r=F/B是FLOP与字节的比率;层成本t1是计算层(例如,完全连接的层)的成本(在FLOP中),并且可以包括可能在层内内部发生的计算和通信,例如归一化到FLOP(例如,通过将其乘以r)的全简化操作;并且数据传输成本tx是在前向和/或后向传播期间传送沿着边缘(u,v)或(v,u)流动的张量所需的以字节为单位的通信成本。注意,tx是边方向不可知的,即,对于边(u,v)∈E,tx(u,v,φ(u),φ(v))=tx(v,u,φ(v),φ(u))。
在一个或多个实施例中,成本函数可以是实际成本的近似值,并且可以通过将任意两个层的成本tl(vx,·,·)和tl(vy,·,·)相加来忽略不同层的重叠(或管道),例如,而不是在可能的情况下取最大值。如前所述,该方法准确地捕获数据和模型并行,并忽略管道并行。在一个或一个以上实施例中,尽管可忽略层之间的管道并行,但可(例如)通过考虑层成本tl中的层内管道并行来准确捕获层内的管道并行机会。如参考部分C更详细地讨论的,该近似允许设计一种有效且快速地找到DNN的最佳策略的技术。如实验结果所示,这种方法虽简单却非常有效的,因为大多数DNN不包含显著的固有管道并行机会。相反,一些现有的方法使用管道并行来通过对模型进行语义修改(包括使用较旧的权重)来改进并行训练吞吐量。然而,与原始模型相比,这种语义修改导致模型精度的变化。此外,它们也可能需要更多的回合来收敛,这因此消除了从管道并行获得的任何优点。为了比较,这里的各种实施例不需要对模型执行任何语义修改。结果,收敛速度和最终精度可以与原始模型完全相同,有利地,通过更优的并行增加硬件利用率。注意,即使各种实施例找到了针对的最优解由于成本函数本身表示近似值,而不是作为最优策略的解,所以在这里可以将解称为有效策略或最佳策略,以避免混淆。
在实施例中,可以通过在实验中使用简单的闭合形式表达式来分析性地计算tl和tx。对于边缘(u,v),tx可以由以下差表示:maxd|A(v,d)|+|A(u,d)|-|A(v,d)∩A(u,d)|,其中A(v,d)和A(u,d)是设备d所需的v的输入张量的量。对于少数不同类型的DNN层,可以使用解析导出的表达式来计算层成本tl。在一个或一个以上实施例中,可忽略许多低级细节,例如高速缓冲存储器效应等。此外,使用r=F/B来对成本进行归一化,隐含地假定计算实现接近机器峰值性能并且通信带宽被完全利用。注意,这样的假设对于所提出的系统和方法来说不是适当操作所必需的,但是它们可以保持简单的成本计算。此外,一些实施例集中于各种策略的成本的相对排序,而不是确定最佳策略的绝对成本。这些简化的假设或多或少地影响所有检查的策略的成本,从而保留了大多数相关的排序。此外,由于大多数DNN计算包括密集矩阵运算,因此实验表明,当标准库(例如cuBLAS、cuDNN、NCCL等)用于计算时,不会严重违反这些假设。
C.计算有效策略
如部分B所述,每个网络层可以具有一组有效的并行化配置。在一个或多个实施例中,找到用于DNN的有效策略包括为每个层选择最佳配置。
注释:令G=(V,E)是DNN的计算图。对于顶点v∈V,N(G,v)表示它的邻居,即N(G,v)={u∈V|(u,v)∈E∨(v,u)∈E}。符号N(v)是指当G从上下文中清除时的v的邻居,并且N(U)=∪u∈UN(u)。对于任何顶点集合X,它的受限邻居集合R(X,Y)=N(X)∩Y可以被定义为X中被限制到集合Y的顶点邻居集合。对于任何顶点集合U和顶点u∈U,它的受限可达集合P(U,u)可以被定义为使用长度为p>1s.t.的无向路径(v1,...,vp)从u可达的顶点v的集合,,即v∈P(U,u)是指u与v之间存在一条仅通过U中的顶点的受限路径。令ν=(v(1),…,v(|V|))是V中任意排序的顶点序列,ν<i和ν<i分别表示集合{v(1),…,v(i)和{v(1),…,v(|V|)}。ν<i和ν>i分别表示集合{v(1),…,v(i-1)}和{v(i+1),…,v(|V|)}。作为参考,表I概述了以下定义的这些符号和其它符号。
表I
在计算图G=(V,E)上使用的符号的概述
1.观察I和纳伊夫方法
计算G=(V,E)的有效策略的强力方法是列举顶点的配置的所有可能的组合,并选择具有最小成本的组合。该方法的组合性质使得即使在诸如DNN1之类的小图上也不能使用它,这在下面的实验结果部分D中讨论。然而,问题的复杂性可由于下面的在等式(1)中的观察而显著降低:将顶点v的配置从Ci改变到Cj只影响顶点本身的层成本tl(v,·,·)及其与邻居的数据传递成本tx(u,v,·,·),其中u∈N(v)。这允许按照在G的广度优先遍历期间顶点的访问顺序将顶点V排序为序列=(v(1),…,v(|V|)),并使用下面的递归(2)来计算G的最佳策略。令φi是用于R(ν≤i,ν>i)中的顶点集合的子策略,其中,受限邻居集合R(ν≤i,v>i)是v>i中的顶点集合与至少v≤i中的邻居的交集,那么,对于i∈[1,|V|]
其中,
用于G的有效并行化策略的成本由给出。如部分D中的表III所示,使用该递归计算有效策略仍然相当昂贵,并且花费大量时间来寻找用于除了诸如DNN1之类的简单路径图之外的图的最佳策略。下面讨论根据各种实施例找到最佳策略的更有效的方法。
2.观察II和有效方法
从递推(2)可以看出,由于是包含R(v≤i,v>i)的配置的子策略φi的函数,所以使用(2)计算有效策略的过程应该针对φi∈Φ'的所有可能的组合计算其中Φ'是R(v≤i,v>i)的所有可能的子策略的集合。因此,使用(2)找到有效策略的计算复杂度至少是R(v≤i,v>i),其中 是G中任何顶点的最大配置数目,并且M=|R(v≤i,v>i)|。
各种实施例将节点排序成序列v,使得对于v中的任何v(i),受限邻居集合R(v≤i,v>i)的大小都尽可能地小。在一个或多个实施例中,这可以通过使用以下述方式对顶点V排序的过程来实现,即受限邻居集合的大小被保持为最小。
定义:在给出图G=(V,E)和序列v=(v(1),…,v(|V|))的情况下,在一个或多个实施例中,左可达集合L(v,i)=P(v≤i,v(i))–{v(i)}可定义为v<i中的、可通过例如长度为p>1s.t.的无向路径(v(a),…,v(p))从v(i)可到达的节点集合。在一个或多个实施例中,v(i)的末端集合是从v(i)左可到达的且从任何其它顶点v(k)(k<i)非左可到达的顶点集合。可替换地,末端集合可以被定义为T(v,i)=L(v,i)-∪j<iL(v,j)。在一个或多个实施例中,右相关集合D(v,i)=R(L(v,i)∪{v(i)},v>i)={v∈v>i|v∈P(v≤i∪{v},v(i))}可以被定义为包括其自身的受限邻居及其左可达集合的v>i的子集。在一个或多个实施例中,对于下面定义的递归(4),右相关集合D(v,i)可以是递归(2)中的R(v≤i,v>i)的等同物。
在一个或多个实施例中,为了计算序列v,(2)中的递归可以重新表示如下:对于任何i∈[1,|V|],
图2A示出了根据本公开的实施例的简化的示例性计算图200。图2B示出了根据本发明实施例的图2A中的计算图的顶点的示例性排序250。图2B中的顶点以它们在序列中出现的顺序进行编号。图2B中v(5)的左可达集合、末端集合和右相关集合分别由{v(1),v(2),v(3)}、{v(2),v(3)}、和{v(8)}给出。图2B还示出了根据末端集合T(v,i)而不是根据如递归(2)中的序列v(i-1)中的前一节点来定义递归(4)的优点。在图2B的示例中,|R(v≤5,v>5)|=|{v(7),v(8),v(9)}|=3,而|D(v,5)|=1。因此,直接递归于R(v,i-1,φi)的简单递归R(v,i,φi)即使在简化的图上也具有|D(v,5)|大小的两倍以上的|φi|。由于这按指数规律增加了计算递归的计算复杂度。实验表明,这对计算有效并行化策略的过程的运行时间有显著影响(本节稍后详细描述)。用末端集合规划递归允许找到能够显著更快地找到最佳策略的顶点的有效排序。如下面的定理1所示,由递归(4)计算的成本是有效的,并且对应于使等式(1)中的成本函数最小化的策略。
引理1:给定计算图G=(V,E)和对于任何顶点的序列v
v(i)∈V以及包含用于D(v,i)中的顶点的配置的子策略φi,
其中,Φ'′是用于{v(i)}∪L(v,i)的所有有效子策略的集合。
为了证明(ii),作为一个矛盾,假设从来不从调用其中v(j)∈L(v,i)。在不丧失一般性的情况下,设v(j)是最接近v(i)的顶点,即,对于任何其它k∈[j+1,i-1],从递归地调用或令U={v(x)|v(j)∈L(V,x)}是这样的顶点集合,即v(j)从该顶点集合是左可达的。设v(k)∈U是U中最接近v(j)的顶点,即,然后,根据末端集合的定义,v(j)∈T(v,k),并且由于根据所做的假设从递归地调用因此还从调用这与该假设相矛盾。
下面的定理遵循引理1。
定理1:令G=(V,E)是在具有p个设备的处理环境中执行的DNN的计算图,所述p个设备具有平均的FLOP与字节比r。设v是用于V的序列,且Φ是G的所有可能的策略,则
证明:由于计算图是弱连通图,因此,L(v,|V|)∪{v|V|}=V,如下引理1
图3A示出了根据本发明实施例将顶点排序成有效序列的示例性过程。在一个或多个实施例中,过程300(在图3A中标记为GENERATESEQ)可以生成保持右相关集D(v,i)(在图3A中称为v.d)的大小尽可能小的序列。过程300还可以同时建立用于下面图4中使用的G的顶点的末端集合(在图3A中称为v.t)。
在行1中,图3A中的过程300可以针对每个节点v∈V初始化右相关集合v.d到其邻居。在行7中,可以从还要排序的节点集合U中选择具有最小基数|u.d|的节点u。该节点变为V中的v(i)。一旦u被添加到V,对于v(i).d中的所有节点,v.d可以被更新,例如,以确保行7中的|v.d|被正确地保持。在行11中,可以更新用于节点的末端集合。下面的定理2示出了由过程300计算的相关集合和末端集合是正确的。过程300的计算复杂度是O(|V|2)。
图3B示出了根据本发明实施例的对DNN的计算图的顶点进行排序以产生有效的顶点序列以增加DNN的硬件利用率并减少DNN的训练时间的过程的流程图。在一个或多个实施例中,开始执行对用于计算图的顶点进行排序的过程301起始于针对顶点集合中的一个或多个顶点初始化(305)右相关顶点集合、末端顶点集合和未排序顶点集合。在一个或多个实施例中,对于顶点集合中的每个顶点,可以从未排序顶点集合中迭代地选择(310)具有最小右相关集合基数的顶点,并且可以将所选择的顶点分配给序列。在一个或多个实施例中,可以以保持DNN的计算图中的右相关顶点集合的大小的方式来更新(315)末端顶点集合和右相关顶点集合。最后,顶点序列可以作为有序的顶点序列输出(320)。
图4A示出了根据本发明实施例的用于计算计算图的有效策略的基于动态编程(DP)的过程。在一个或多个实施例中,DP过程400(标记为GETBESTRATEGY)可以使用图3A中的排序过程和递归(4)。
在一个或多个实施例中,如DP过程400的第1行所示,可以首先使用GENERATESEQ过程对计算图G中的节点进行排序。在行6中,可以计算集合D(v,i)的所有可能的有效子策略Φ'。然后,对于每个φ'∈Φ',可以如第11-22行所示计算使成本最小化的配置行13计算行14-16使用存储在v(t).tbl中的成本来计算并且,在行19,可以将引起最小成本的配置存储到φ中。在一个或多个实施例中,如行22所示,用于v(i)的DP表可以用φ及其成本min _cost来更新。从末端节点的定义可以看出, 因此,在行15,表v(j).tbl包括用于子策略及其相应成本的一个条目。类似地,在图4A中的行26,v(|V|).tbl包括包含有用于G的有效策略及其成本的一个条目。图4A的总计算复杂度是O(|V|2KM+1),其中是用于层的最大配置数目,并且是右相关集合的最大大小。下面通过归纳的证明表明,通过使用图3A中的GENERATESEQ过程构建的右相关集合和末端集合确实是正确的,如下:
定理2:给定计算图G=(V,E),以及针对任何节点v(i)∈V,(i)v(i).d=D(v,i),以及(ii)v(i).t=T(v,i)、通过使用图3A中的GENERATESEQ过程计算的序列V。
证明:在任何迭代i结束时,存在部分序列v≤i以及仍将被排序的剩余节点U=V-v≤i。如图所示,以下不变量在任何迭代i结束时成立:对于任何u∈U,以及对于任何v(j)∈v≤i,v(j).d=D(v,j)和v(j).t=T(v,j)
u·d={v∈U-{u}|v∈P(v≤iU{u,v},u)} (6)
归纳步骤:作为假设,不变量在迭代i结束时为真。设v(i+1)是在迭代i+1期间由GENERATESEQ在行7选取的节点,并且设U是在迭代i+1开始处的未处理节点集合(其中v(i+1)∈U)。对于任何顶点 由于在u和v(i+1)之间不存在限制路径,因此P(v≤i∪{u},u)=P(v≤i+1∪{u},u)。因此,不变量(6)和(7)通常得以满足。对于任何u∈v(i+1).d,
因此,由于在GENERATESEQ中在行11处分配到u.t,因此不变量(7)得以满足。此外,v(i+1).t=P(v≤i∪{v(i+1)},v(i+1))-{v(i+1)}-∪j≤iL(v,j)=T(v,i+1)。此外,由于(对于任何u∈U),因此v(i+1).t从来不在迭代i+1之后被修改。
图4B示出了根据本发明实施例的找到DNN的顶点进行并行化以增加硬件利用率并减少训练时间的有效策略的过程的流程图。在一个或多个实施例中,用于找到有效并行化策略的过程401可以从获得(405)DNN的顶点序列开始。可以根据节点(或顶点)排序策略对顶点序列进行排序,使得表示DNN的计算图中的受限邻居集合的大小得以减小。在一个或多个实施例中,对于顶点序列中的每个顶点,可以使用递归来计算(410)用于使DNN的层并行化的子策略。每一层可与一个或多个根据成本函数来降低配置成本的有效配置相关联。最后,可以输出(415)具有用于计算图的最小配置成本的策略。
3.示例:DNN2
图5示出了根据本发明实施例的计算子图。计算子图500对应于DNN2网络的起始模块。类似的结构在整个图表中重复。图5中的节点171和193是高级的,而子图中的其余节点是稀疏的。
由于DNN的计算图通常是稀疏的并且具有很少的高级节点,因此在一个或多个实施例中,由GENERATESEQ产生的序列对于DNN的计算图是非常有效的,如实际运行时间(在下面的表III中示出)所示。例如,在DNN2模块的计算图中的218个节点中,206个节点具有<5的级别,其余12个节点具有≥5的级别。当按照原始顺序(其中建立有计算图)或使用宽度优先遍历对节点进行排序时,寻找最佳策略的过程在完成之前在存储器耗尽之前(因为DP表相应地显著增长)运行若干小时。
相反,在一个或多个实施例中,当使用GENERATESEQ对节点进行排序时,可以在20秒或更短的时间内找到有效的策略(对于p=8个GPU)。这主要是因为GENERATESEQ确保了高级节点(图5中的节点171和193)在它们的(低级)邻居和它们的祖先/后代被放置在序列中之后被放置在序列中,从而确保了这些高级节点的右相关集合的大小保持较小。
实验数据显示,对于p=8个GPU,DNN2的每个顶点的配置数目在10至30之间变化,并且对于p=64个GPU,最大配置数目达到100(即,K=100)。在一个或多个实施例中,通过使用GENERATESEQ对顶点进行排序,对于任何i,大小|D(v,i)∪{v(i)}|可以维持在≤3,并且可以通过该过程来分析每个顶点的最大组合数,|Φ'|≤25200(对于p=8)。为了进行比较,当使用宽度优先排序时,右相关集合的大小达到11,使得|Φ'|≥1110,从而导致在时间和存储器两方面的实际成本过高。
D.实验结果
在四个不同的基准上评估DP过程400所找到的混合并行策略。基准被选择为代表整个DNN空间。a)DNN1是图像分类卷积网络(CNN),其计算图是简单路径图,其中每一层仅连接到下一层;b)DNN2是深度CNN,其使用初始模块来增加层数,同时维持合理的计算预算。在每个起始模块的开头和结尾分别对节点进行拆分和级联,从而在其计算图中得到少量的高级节点;c)DNN3是由LSTM单元组成的两层递归神经网络,用于语言建模任务;最后,d)DNN4是一种非递归神经机器翻译模型,其计算图与诸如DNN3的递归网络有很大的不同。在实验中使用的数据集合总结在表II中。批量大小128用于CNN,批量大小64用于其余的基准。将使用本公开的实施例的结果与数据并行、专家设计的策略和框架1所提出的策略进行比较。
表II
用于不同DNN的实验的数据集合
网路网络 数据集合
框架1:框架1是深度学习框架,它自动寻找快速并行化策略。该算法利用一般的马尔可夫链蒙特卡罗(MCMC)搜索过程来探索搜索空间,并基于先前候选的仿真性能迭代地提出候选策略。当搜索过程结束时,框架返回它已经发现的最佳策略。由于这种方法是基于元启发式的,因此框架可能陷入局部极小值,从而返回次优策略。来自搜索空间的初始候选需要被提供给MCMC以开始搜索过程,并且由框架1找到的策略的效率也可能根据初始候选而变化。本文中对框架1的评估使用专家设计的策略作为初始候选者,从而使得框架1可以改进它们。
专家策略:专家设计的并行化策略由领域专家开发,以便在逐个案例的基础上改进模型的并行性能。由于并非所有DNN都具有明确的专家设计策略,因此选择了与各种基准最相关的以下策略:对于卷积网络,将数据并行用于卷积层,并且将模型并行用于完全连接的层。这种技术被称为“一个奇异特技(one weird trick)”(OWT)。即使对于DNN1特别提出了这种技术,但它通常也可应用于任何卷积网络。因此,我们使用这种技术来评价DNN1和DNN2,这在下面的实验结果部分D中讨论。对于RNN,已经提出了一种数据+管道并行策略,其中RNN的不同层被放置在不同的设备上以实现管道并行,并且为了实现数据并行,每一层被复制在剩余的设备上。将该策略与DNN3实验进行比较。对于DNN4模型,已经提出的模型并行策略在实验中用作专家设计的策略,这也在下面的实验结果部分D中讨论。这种策略主要是为了克服内存瓶颈,以在当前体系结构的内存约束下训练大的DNN4模型,同时实现良好的并行执行效率。
1.用于找到有效策略的不同方法的开销
在该子部分中,测量不同方法所花费的时间,以找到用于四个不同基准的最佳策略。将使用GENERATESEQ来排序顶点的实施例的运行时间与宽度优先(BF)遍历顶点排序以及使用元试探法来找到有效策略的框架工作1进行比较。这里的实施例在Python编写的原型工具中实现。在具有Intel Xeon E5(SandyBridge)处理器和1080Ti GPU的机器上进行测量。由于使用了用于tl和tx的分析成本,因此实施例不使用GPU来执行分析;然而,框架1通过在GPU上执行运算符来执行实际仿真,并且在其分析中使用这些测量来找到最佳策略。下面的表III显示了不同方法找到最佳策略所花费的时间。为了测量运行时间,当框架工作1不能在搜索时间的一半内改进最佳发现的策略时,或者当框架工作1达到250,000次迭代时,框架工作1的搜索过程被暂停。
由于DNN1的计算图是简单的路径图,所以对于不同的顶点,R(v≤i,v>i)和D(v,i)的大小都是1。因此,BF和GENERATESEQ排序都能够在相似的时间内有效地计算DNN1的最佳策略。然而,对于DNN2,BF排序由于一些顶点的高节点级别而不能找到最佳策略,而不会耗尽存储器,如下面的第3节中所详述的。
对于DNN3基准,由于RNN运算符(具有LSTM单元)可以在单个迭代空间中有效地表示,因此包括递归步骤的完整RNN运算符在计算图中被表示为单个顶点。RNN算子的迭代空间是由批量维度、句子序列维度(递归步长由该维度捕获)、层维度、隐藏维度和输出维度组成的五维空间。注意,这不同于RNN运算符由框架1处理的方式。在框架1中,展开循环维度(本文的实验使用展开因子40),并且每个迭代被表示为图中的顶点。在一个或多个实施例中,通过将整个RNN运算符表示为单个顶点,除了显著减小图大小之外,它还允许分析利用RNN运算符内存在的固有管道并行的配置。分割层维度和句子序列维度的配置可捕获RNN中的管道并行机会。如在部分B中详述的,不捕获层间管道并行的实施例仍然能够通过分割DNN3的迭代空间的层维度来捕获层内管道并行。利用该表示,DNN3的计算图简化为简单的路径图。因此,BF和GENERATESEQ排序都能够在例如一秒内有效地找到最佳策略。由于框架1动态地展开循环维度,因此它的处理花费更长的时间来分析所得到的更大的图。
与DNN2类似,DNN4模型的计算图具有大量稀疏顶点,其具有非常少的密集顶点。一个主要的不同之处在于,这些高级顶点(例如编码器的最终输出)具有更长的相关性(即,在实际计算中更长的有效范围),因为这些顶点的结果稍后在计算中使用。这种长相关性的存在可以消除可以与DNN2模型中一样有效地减小右相关集合的大小的、可能的顶点排序。在一个或多个实施例中,这可能导致更长的运行时间来找到最佳策略。与DNN2一样,BF排序由于内存限制而不能找到DNN4的最佳策略。由于没有用框架1实现和分析DNN4模型,因此这里没有给出对于DNN4的框架1的运行时间的比较。
2.不同策略性能比较
下面比较不同策略的性能。在从4(在单个节点上)到64(在8个节点上扩展)的不同数目的GPU上进行实验,以2的幂递增。使用无限带宽互连网络将节点彼此连接。结果在以下两种处理环境中进行评估:
a)多节点/多GPU系统,其中每个节点包括使用PCIe链路全连接的8个GeForce GTX1080 Ti GPU(具有sm_61计算能力);b)多节点/多GPU系统,其中每个节点包含使用PCIe链路全连接的8GeForce RTX 2080Ti GPU(具有sm_75计算能力)。该基准和策略在网格-张量流框架中实现,以用于评估。由于DNN4模型没有在框架1上实现和评估,所以DNN4模型的框架1结果不包括在实验中。图6和图7分别示出了在1080Ti和2080Ti系统上实验中使用的实施例所建议的策略相比于数据并行策略所实现的加速。在1080Ti机器上,本实施例提出的策略能够实现1.85×以上的数据并行加速。如图6所示,实施例所提出的策略始终比专家设计的策略以及框架1所提出的策略执行得更好。此外,在2080Ti机器上,实施例提出的策略实现了相对于数据并行的4倍加速,并且优于专家设计的策略和来自框架1的策略。当通过PCIe链路连接时,2080Ti GPU不支持对等数据访问,导致差的硬件通信效率,同时与1080TiGPU相比具有更高的计算峰值。这导致在2080Ti节点上的非常低的机器平衡(峰值通信带宽和峰值GFLOPS之间的比率)。因此,在2080Ti节点上的并行化策略的低效率比在1080Ti节点上更甚,从实验中来看这是明显的。这允许实施例在2080Ti节点上实现比数据并行策略高4倍的性能。
表III
不同过程寻找有效并行化策略所需的时间(单位:分钟:秒.毫秒)
p:GPU的数目;BF:宽度优先排序;OOM:内存不足;NA:不可用。
3.计算策略分析
DNN1:DNN1具有五个卷积层,接着是三个完全连接的层。对于p=8个GPU,参照图4A讨论的DP处理GETBESTRATEGY建议使用用于卷积层的数据并行策略。对于第一层和第三层完全连通的层,该处理建议将通道外维度拆分为2,以及通道内维度拆分为4;对于第二层全连通层,建议将通道外维度划分为4个,以及通道内维度划分为2个。有利地,这种交替图案消除了完全连接的层之间的层间通信。这与专家设计的OWT(“一个奇异特技”)策略不同,在专家设计的OWT策略中,对于所有完全连接的层使用简单的模型并行化,使得通道内的维度不被拆分,并且通道外的维度被拆分为8路,这导致在每个完全连接的层之间的不利的全对全通信。
DNN2:初始网络具有由卷积层组成的初始模块(A-E)序列,随后是单个最终完全连接的层。在一个或多个实施例中,从GETBESTRATEGY获得的有效策略建议将数据并行用于初始模块A到D,以及将数据+模型并行混合用于模块E。这是因为,随着模块越深,它们的输出信道维度越大。因此,DP过程的成本函数发现全数据并行的通信成本较高。对于最终的完全连接层,当p=8时,该过程建议将通道外维度分割为2,并且将通道内维度分割为4。
DNN3:RNNLM网络由嵌入层、接着是两层LSTM单元,以及最终的投影层组成,其计算由矩阵-矩阵相乘支配。嵌入层具有相对大的词汇量维度V和小得多的嵌入维度H。在一个或多个实施例中,对于嵌入层,GETBESTRATEGY可能更喜欢将词汇量维度与其他维度分开。
对于LSTM单元,DP过程建议完全拆分LSTM层维度,并且部分拆分其他三个维度-批量、隐藏和输出维度-至根据执行该DP过程的GPU的数目来改变级别。最终投影层的输出维度可以与V相同,而隐藏维度可以与H相同。在一个或多个实施例中,该过程建议完全分割输出维度。
DNN4:DNN4模型是一种基于NMT模型的非循环注意。已知的混合并行策略将所有层的批量维度拆分为m路,并将不同层的模型维度拆分为词汇维度,将前馈隐藏层维度和注意力头拆分为n路。在一个或多个实施例中,该过程建议在几个层,尤其是嵌入层上使用完全模型并行化,同时对于其余层使用不同程度的数据并行和模型并行化的混合。
E.相关工作
数据并行已被广泛地用作并行化训练DNN的标准技术。然而,当模型参数较大时,由于高通信要求,数据并行能较差。已经建议将OWT用于并行化CNN,并且一些人已经注意到现代CNN由具有不同特性的两种类型的层组成:(i)包含少量参数的卷积层,和(ii)具有大量参数的完全连接的层。因此,实施例考虑了不同地并行化这两种类型的层的并行化策略。由于数据并行典型地最适于包含少量模型参数的卷积层,并且模型并行对于CNN中所见的完全连接的层是最佳的,因此建议使用数据并行来并行化卷积层,并且切换到对网络末端出现的完全连接的层进行模型并行化。如图6和图7所示,可以使用根据本文提出的实施例的更复杂的混合并行策略来提高性能。
一种基于动态规划的自动找到CNN的最优调度的方法利用了通常在CNN的计算图中看到的以下图属性:CNN的计算图中的多个节点具有单个入沿和单个出沿。基于这一观察结果,提出了两个图约简操作:节点消除和边缘消除,以对图进行简化。这种方法考虑到通过这些简化操作来保持最优性,并且使用有效的基于动态规划的过程来计算用于各种CNN的最优策略。然而,诸如RNN的其它网络的计算图不具有这种特殊性质,因此该技术不能在合理的时间内有效地约简该图以找到最优策略。相反,这里公开的实施例不限于CNN的计算图,因此可以在几分钟内找到用于各种类型的网络(例如RNN和DNN4模型)的有效策略。此外,这里的实施例限定了用于分割迭代空间中的任何维度的并行化配置。这显著不同于仅分割输出张量维度,仅分割输出张量维度会严重限制搜索空间,因为一些维度(例如,GEMM的缩减k维度)不被认为是用于并行化的可能选择。
使用框架1自动找到用于各种DNN的有效并行化策略的一种方法使用执行仿真器,该执行仿真器使用一般马尔可夫链蒙特卡罗(MCMC)搜索过程来探索搜索空间以发现最佳策略。该框架返回的策略不必是最优的。虽然该方法考虑了整个搜索空间,但是本文的实施例可以忽略层间管道并行,以有利地找到用于各种DNN的比框架1快得多的有效策略,而不会受到在局部最小解决方案处停滞的限制。
加强方法(REINFORCE)使用机器学习来找到用于各种层的有效设备布置,以实现有效的管道并行化。然而,该技术在搜索过程中忽略了数据和模型并行策略。此外,它需要多个GPU并且需要花费几个小时来找到有效的策略,而本文的实施例在几分钟内结束。一些方法使用多面体编译技术来优化各个DNN操作体的内核,以在GPU上有效地执行。然而,这些方法不考虑这些内核在多个设备上的并行化。实施例可正交地使用此类技术以进一步改进每个GPU内的性能。
先前的一些努力对模型进行语义修改,以显露出更好的管道并行,从而改进并行训练。然而,与原始模型相比,这些语义修改导致模型精度的变化,并且它们也可能花费更多的时间来收敛,因此消除了从修改获得的任何优点。相反,本文的实施例不需要对模型执行语义修改。结果,收敛速度和最终精度可以与原始模型完全相同,通过增强的并行化提供更好的硬件利用。
基于特定领域的知识,针对不同的网络提出了几种专家设计的策略。一种建议用于卷积网络的技术,而另一种建议用于实现RNN的良好管道并行的方法。然而,每个网络必须被单独地手动分析,以获得有效的策略。此外,这些策略不必是最佳的。相反,本文提出的实施例使这个过程自动化,并且可以将专家用户指向用于并行化的正确方向。
F.一些结论
所提出的系统和方法有助于自动找到用于DNN应用的有效并行策略。实施例使用递归公式来计算计算图的最小成本。提出了一种以有效的顺序对顶点进行排序的技术,该技术允许在几分钟内计算最佳策略来对图进行并行化。相比于数据并行、专家设计的策略以及深度学习框架(框架1)所提出的策略,对结果进行了评估。结果表明,各实施例提出的策略比标准的数据并行高4倍。此外,所提出的策略比专家设计的策略和框架1提出的策略表现得更好。
G.计算系统实施例
在一个或多个实施例中,本专利文件的各方面可以针对一个或多个信息处理系统(或计算系统),可以包括一个或多个信息处理系统(或计算系统),或者可以在一个或多个信息处理系统(或计算系统)上实现。信息处理系统/计算系统可以包括可操作来计算、确定、分类、处理、发送、接收、检索、始发、路由、交换机、存储、显示、通信、证明、检测、记录、再现、处理或利用任何形式的信息、智能或数据的任何工具或工具的集合。例如,计算系统可以是或可以包括个人计算机(例如,膝上型计算机)、平板计算机、移动设备(例如、个人数字助理(PDA)、智能电话等)、智能手表、服务器(例如、刀片服务器或机架服务器)、网络存储设备、照相机或任何其它合适的设备,并且可以在大小、形状、性能、功能和价格上变化。计算系统可以包括随机存取存储器(RAM)、一个或多个处理资源、诸如中央处理单元(CPU)或硬件或软件控制逻辑、ROM、和/或其它类型的存储器。计算系统的附加组件可以包括一个或多个磁盘驱动器、用于与外部设备以及各种输入和输出(I/O)设备(例如键盘、鼠标、触摸屏和/或视频显示器)通信的一个或多个网络端口。计算系统还可以包括一个或多个用于在各种硬件组件之间传输通信的总线。
图8示出了根据本发明实施例的计算系统的简化框图。应当理解,系统800所示的功能可以操作为支持计算系统的各种实施例,尽管应当理解,计算系统可以被不同地配置并且包括不同的组件,包括具有如图8所示的更少或更多的组件。
如图8所示,计算系统800包括一个或多个提供计算资源并控制计算机的中央处理单元(CPU)801。CPU 801可以用微处理器等来实现,并且还可以包括用于数学计算的一个或多个图形处理单元(GPU)819和/或浮点协处理器。系统800还可以包括系统存储器802,其可以是随机存取存储器(RAM)、只读存储器(ROM)或两者的形式。
也可以提供多个控制器和外围设备,如图8所示。输入控制器803表示到诸如键盘、鼠标、触摸屏和/或触笔的各种输入设备804的接口。计算系统800还可以包括用于与一个或多个存储设备808接口连接的存储控制器807,所述一个或多个存储设备808中的每一个包括诸如磁带或磁盘的存储介质,或者可以用于记录用于操作系统、实用程序和应用程序的程序指令的光学介质,所述操作系统、实用程序和应用程序可以包括实现本公开的各个方面的程序的实施例。一个或多个存储设备808还可以用于存储根据本公开处理的数据或要处理的数据。系统800还可以包括用于提供到显示设备811的接口的显示控制器809,显示设备811可以是阴极射线管(CRT)、薄膜晶体管(TFT)显示器、有机发光二极管、电致发光面板、等离子体面板或其它类型的显示器。计算系统800还可以包括用于一个或多个外围设备806的一个或多个外围设备控制器或接口805。外围设备的示例可以包括一个或多个打印机、扫描仪、输入设备、输出设备、传感器等。通信控制器814可以与一个或多个通信设备815接口连接,这使得系统800能够通过包括因特网、云资源(例如,以太网云、以太网上的光纤信道(FCoE)/数据中心桥接(DCB)云等)、局域网(LAN)、广域网(WAN)、存储区域网络(SAN)或通过包括红外信号的任何合适的电磁载波信号在内的多种网络中的任何一种连接到远程设备。
在所示系统中,所有主要系统组件可连接到总线816,总线816可表示一个以上的物理总线。然而,各种系统组件可彼此物理接近或不物理接近。例如,输入数据和/或输出数据可以从一个物理位置远程传输到另一个物理位置。此外,可以通过网络从远程位置(例如,服务器)访问实现本公开的各个方面的程序。这种数据和/或程序可以通过各种机器可读介质中的任何一种来传送,所述机器可读介质包括但不限于:磁介质,例如硬盘、软盘和磁带;光学介质,例如CD-ROM和全息设备;磁光介质;以及被专门配置为存储或执行程序代码的硬件设备,例如专用集成电路(ASIC)、可编程逻辑设备(PLD)、闪存设备以及ROM和RAM设备。
本公开的各方面可以被编码在一个或多个非暂时性计算机可读介质上,所述非暂时性计算机可读介质具有用于一个或多个处理器或处理单元的指令,以使得步骤得以执行。应当注意,一个或多个非暂时性计算机可读介质应当包括易失性和非易失性存储器。应注意,替代实施方案是可能的,包括硬件实施方案或软件/硬件实施方案。硬件实现的功能可以使用ASIC、可编程阵列、数字信号处理电路等来实现。因此,任何权利要求中的“装置”术语旨在覆盖软件和硬件实现。类似地,本文使用的术语“计算机可读介质”包括其上包含有指令程序的软件和/或硬件,或其组合。考虑到这些实现替换,应当理解,附图和随附的描述提供了本领域技术人员将要求编写程序代码(即,软件)和/或制造电路(即,硬件)以执行所需处理的功能信息。
应当注意,本公开的实施例还可以涉及具有非暂时性、有形的计算机可读介质的计算机产品,所述计算机产品在其上具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是为了本公开的目的而专门设计和构造,或者它们可以是相关领域的技术人员已知或可用的类型。有形计算机可读介质的示例包括但不限于:磁介质,例如硬盘、软盘和磁带;光学介质,例如CD-ROM和全息设备;磁光介质;以及被专门配置为存储或执行程序代码的硬件设备,例如专用集成电路(ASIC)、可编程逻辑设备(PLD)、闪存设备以及ROM和RAM设备。计算机代码的示例包括诸如由编译器产生的机器代码,以及包含由使用解释器的计算机执行的更高级代码的文件。本公开的实施例可以全部或部分地作为机器可执行指令来实现,所述机器可执行指令可以位于由处理设备执行的程序模块中。程序模块的示例包括库、程序、例程、对象、组件和数据结构。在分布式计算环境中,程序模块可以物理地位于本地、远程或两者的设置中。
本领域的技术人员将认识到,对于本公开的实践,计算系统或编程语言并不是至关重要的。本领域的技术人员还将认识到,上述的多个元件可以物理地和/或功能地分隔成子模块或组合。
本领域技术人员应当理解,前述实施例和实施方案是示例性的,而不是限制本公开的范围。在阅读本说明书和研究附图后,本领域技术人员显而易见的所有置换、增强、等同物、组合和其改进都包括在本公开的真实精神和范围内。还应当注意,任何权利要求可以被不同地布置,包括具有多个从属关系、配置和组合。
Claims (20)
1.一种包括一个或多个指令序列的非暂时性计算机可读介质,所述一个或多个指令序列在由至少一个处理器执行时实现用于寻找对深度神经网络DNN的层进行并行化以增加所述DNN的硬件利用率并减少所述DNN的训练时间的有效策略的步骤,所述步骤包括:
获得顶点序列,所述顶点序列中的顶点表示DNN的层,所述顶点序列已根据顶点排序策略排序,使得表示所述DNN的计算图中的受限邻居集合的大小得以减小;
对于每个顶点,使用递归来计算用于对所述DNN的顶点进行并行化的子策略,每个顶点与一个或多个根据成本函数来降低配置成本的有效配置相关联;和
输出具有用于所述计算图的最低成本的策略。
2.如权利要求1所述的非暂时性计算机可读介质,其中,所述受限邻居集合是右相关顶点集合。
3.如权利要求2所述的非暂时性计算机可读介质,其中,获得所述顶点序列包括以下步骤:
对于顶点集合中的一个或多个顶点,初始化所述右相关顶点集合、末端顶点集合和未排序的顶点集合;
对于每个顶点,执行以下步骤:
从所述未排序的顶点集合中迭代地选择具有最小右相关集合基数的顶点,并将所选择的顶点分配给顶点序列;
更新所述末端顶点集合和所述右相关顶点集合,以正确保持用于所述DNN的计算图中的右相关顶点集合的大小;和
输出所述顶点序列作为有序的顶点序列。
4.如权利要求1所述的非暂时性计算机可读介质,其中,所述递归包括一组末端集合。
5.如权利要求1所述的非暂时性计算机可读介质,其中,所述成本函数忽略所述DNN的不同顶点中的层间管道并行以减小搜索空间,并考虑所述DNN的层内的管道并行。
6.如权利要求1所述的非暂时性计算机可读介质,所述步骤还包括使用具有所述最低成本的所述策略来根据所述策略在多个设备上并行执行所述DNN以训练所述DNN。
7.如权利要求1所述的非暂时性计算机可读介质,所述步骤还包括从动态编程表中检索所述一个或多个有效配置及其成本以提高计算速度。
8.如权利要求1所述的非暂时性计算机可读介质或介质,其中,所述计算图包括定义为通过无向路径从顶点可达的左可达顶点集合。
9.一种包括一个或多个指令序列的非暂时性计算机可读介质,所述指令序列在由至少一个处理器执行时实现以下步骤,所述步骤用于对深度神经网络DNN的计算图的顶点进行排序以产生有效的顶点序列,其中,所述顶点序列中的顶点表示DNN的层,进而有效地计算提高所述DNN的硬件利用率和减少所述DNN的训练时间的最佳策略,所述步骤包括:
对于顶点集合中的一个或多个顶点,初始化右相关顶点集合、末端顶点集合和未排序的顶点集合;
对于每个顶点,执行以下步骤:
从所述未排序的顶点集合中迭代地选择具有最小右相关集合基数的顶点,并将所选择的顶点分配给顶点序列;
更新所述末端顶点集合和所述右相关顶点集合,使得计算图中的右相关顶点集合的大小得以正确保持;和
输出所述顶点序列作为有序的顶点序列。
10.如权利要求9所述的非暂时性计算机可读介质,其中,所述计算图表示DNN。
11.如权利要求9所述的非暂时性计算机可读介质,其中,所述计算图包括定义为通过无向路径从顶点可达的左可达顶点集合。
12.如权利要求11所述的非暂时性计算机可读介质,其中,所述顶点与一个或多个有效配置相关联。
13.一种用于寻找对深度神经网络DNN的顶点进行并行化以增加所述DNN的硬件利用率并减少所述DNN的训练时间的有效策略的系统,所述系统包括:
一个或多个处理器;和
包括一组或多组指令的非暂时性计算机可读介质,所述一组或多组指令在由所述一个或多个处理器中的至少一个执行时使得执行以下步骤,所述步骤包括:
获得顶点序列,所述顶点序列中的顶点表示DNN的层,所述顶点序列已根据顶点排序策略排序,使得表示所述DNN的计算图中的受限邻居集合的大小得以减小;
对于每个顶点,使用递归来计算用于对所述DNN的顶点进行并行化的子策略,每个顶点与一个或多个根据成本函数来降低配置成本的有效配置相关联;和
输出具有用于所述计算图的最低成本的策略。
14.如权利要求13所述的系统,其中,所述受限邻居集合是右相关顶点集合。
15.如权利要求14所述的系统,其中,获得所述顶点序列包括以下步骤:
对于顶点集合中的一个或多个顶点,初始化所述右相关顶点集合、末端顶点集合和未排序顶点集合;
对于顶点集合中的每个顶点,执行以下步骤:
从所述未排序的顶点集合中迭代地选择具有最小右相关集合基数的顶点,并将所选择的顶点分配给顶点序列;
更新所述末端顶点集合和所述右相关顶点集合,使得所述DNN的计算图中的右相关顶点集合的大小得以正确保持;和
输出所述顶点序列作为有序的顶点序列。
16.如权利要求13所述的系统,其中,所述递归包括一组末端集合。
17.如权利要求13所述的系统,其中,所述成本函数忽略所述DNN的不同顶点中的层间管道并行以减小搜索空间,并考虑所述DNN的顶点内的管道并行。
18.如权利要求13所述的系统,其中,所述步骤还包括使用具有所述最低成本的所述策略来根据所述策略在多个设备上并行执行所述DNN以训练所述DNN。
19.如权利要求13所述的系统,其中,所述步骤还包括从动态编程表中检索所述一个或多个有效配置及其成本以提高计算速度。
20.如权利要求13所述的系统,其中,所述计算图包括定义为通过无向路径从顶点可达的左可达顶点集合。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962930518P | 2019-11-04 | 2019-11-04 | |
US62/930,518 | 2019-11-04 | ||
US16/985,121 | 2020-08-04 | ||
US16/985,121 US20210133591A1 (en) | 2019-11-04 | 2020-08-04 | Reducing training times of deep neural networks through efficient hybrid parallelism |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112836787A true CN112836787A (zh) | 2021-05-25 |
Family
ID=75686331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011209924.4A Pending CN112836787A (zh) | 2019-11-04 | 2020-11-03 | 通过高效混合并行化减少深度神经网络训练次数 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210133591A1 (zh) |
CN (1) | CN112836787A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254206B (zh) * | 2021-05-25 | 2021-09-28 | 北京一流科技有限公司 | 数据处理系统及其方法 |
CN114202027B (zh) * | 2021-12-10 | 2023-05-23 | 北京百度网讯科技有限公司 | 执行配置信息的生成方法、模型训练方法和装置 |
CN114820279B (zh) * | 2022-05-18 | 2023-03-24 | 北京百度网讯科技有限公司 | 基于多gpu的分布式深度学习方法、装置及电子设备 |
CN116050499B (zh) * | 2023-04-03 | 2023-07-18 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种模型并行训练中的自适应模型划分方法、系统及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688493A (zh) * | 2016-08-05 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 训练深度神经网络的方法、装置及系统 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
WO2018125429A1 (en) * | 2016-12-29 | 2018-07-05 | Qualcomm Incorporated | An architecture for sparse neural network acceleration |
CN108292374A (zh) * | 2015-11-09 | 2018-07-17 | 谷歌有限责任公司 | 训练表示为计算图的神经网络 |
-
2020
- 2020-08-04 US US16/985,121 patent/US20210133591A1/en active Pending
- 2020-11-03 CN CN202011209924.4A patent/CN112836787A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292374A (zh) * | 2015-11-09 | 2018-07-17 | 谷歌有限责任公司 | 训练表示为计算图的神经网络 |
CN107688493A (zh) * | 2016-08-05 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 训练深度神经网络的方法、装置及系统 |
WO2018125429A1 (en) * | 2016-12-29 | 2018-07-05 | Qualcomm Incorporated | An architecture for sparse neural network acceleration |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210133591A1 (en) | 2021-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11308398B2 (en) | Computation method | |
US11741342B2 (en) | Resource-efficient neural architects | |
Zeng et al. | GraphACT: Accelerating GCN training on CPU-FPGA heterogeneous platforms | |
Cai et al. | Enable deep learning on mobile devices: Methods, systems, and applications | |
CN112836787A (zh) | 通过高效混合并行化减少深度神经网络训练次数 | |
US20180260709A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US10699209B2 (en) | Quantum circuit libraries for floating-point arithmetic | |
CN112835627B (zh) | 用于单指令多线程或单指令多数据类型处理器的近似最近邻域搜索 | |
US20190311266A1 (en) | Device and method for artificial neural network operation | |
CN105706057A (zh) | 通过秩收敛的并行动态编程 | |
CN114330730A (zh) | 量子线路分块编译方法、装置、设备、存储介质和产品 | |
Phillips et al. | A CUDA implementation of the High Performance Conjugate Gradient benchmark | |
CN113449861A (zh) | 使用部分梯度更新的推测性训练 | |
Serang | The probabilistic convolution tree: efficient exact Bayesian inference for faster LC-MS/MS protein inference | |
US20200226458A1 (en) | Optimizing artificial neural network computations based on automatic determination of a batch size | |
TW202244792A (zh) | 產生及全域地調諧應用程式特定之機器學習加速器 | |
US20230196067A1 (en) | Optimal knowledge distillation scheme | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
Peng et al. | Mbfquant: a multiplier-bitwidth-fixed, mixed-precision quantization method for mobile cnn-based applications | |
US11710042B2 (en) | Shaping a neural network architecture utilizing learnable sampling layers | |
EP4242936A1 (en) | Reducing resources in quantum circuits | |
Polat et al. | GPU‐accelerated and mixed norm regularized online extreme learning machine | |
US11914999B2 (en) | Method for accelerating deep neural networks execution with advanced operator fusion | |
EP4348507A1 (en) | Scaling deep graph learning in distributed setting | |
US20240135216A1 (en) | Solving optimization problems on shallow circuits using a quantum computer |
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 |