CN110503194A - 一种分布式并行训练的方法和系统 - Google Patents
一种分布式并行训练的方法和系统 Download PDFInfo
- Publication number
- CN110503194A CN110503194A CN201910736410.5A CN201910736410A CN110503194A CN 110503194 A CN110503194 A CN 110503194A CN 201910736410 A CN201910736410 A CN 201910736410A CN 110503194 A CN110503194 A CN 110503194A
- Authority
- CN
- China
- Prior art keywords
- gpu
- training
- parameter
- bus
- cpu
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
本发明涉及了本发明基于上述目的提出了一种分布式并行训练的方法,包括以下步骤:执行多个GPU基于训练模型的训练以得到训练参数;根据训练参数的传输所需带宽确定GPU与CPU之间的第一总线的第一GPU数量阈值,并将该第一GPU数量阈值与GPU的数量进行比较;响应于GPU的数量大于第一GPU数量阈值,将GPU分组并计算每组GPU的训练参数之和;将各组的该训练参数之和通过第一总线上传至CPU,并根据CPU对全部训练参数之和计算的梯度平均值更新各GPU的训练模型。根据本发明的分布式并行训练的方法及系统优化了分布式并行训练,提高训练效率、节省深度学习训练时间并在一定程度上减轻CPU负担、增强深度学习效果。
Description
技术领域
本发明涉及深度学习技术领域。本发明进一步涉及一种分布式并行训练的方法和系统。
背景技术
当前,人工智能已经在图像、语音等多个领域的技术上,取得了较大的突破,从而掀起新的科技革命。在可预见的未来,人工智能将对整个互联网乃至人们的日常生活造成深刻影响。而作为人工智能主要技术的深度学习,正在被广泛的研究和应用。
TensorFlow是谷歌在2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法,也是深度学习最流行的库之一,其支持中央处理器CPU和图形处理器GPU的分布式训练。它天生具备便携、高效、可扩展,还能在不同计算机上运行。
TensorFlow的分布式训练分为数据并行和模型并行两种方式。其中由于使用模型并行方式训练的模型准确度不够稳定,因此目前最主要使用的是数据并行方式训练。在数据并行方式下每个GPU上的训练模型相同,但训练数据不同。数据并行方式下使用同步更新参数和异步更新参数求平均梯度。同步更新是指每个GPU同时上传其训练产生的训练参数,CPU汇总所有GPU的训练参数,并求平均梯度,根据平均梯度更新模型的参数,以此方式损失下降稳定,容易得到最优解。异步更新是指不用等所有GPU的训练参数,每个GPU均可更新模型的参数,以此方式损失下降过程抖动较大,模型的参数容易移出最优解。因此目前广泛使用同步更新参数的数据并行方式进行训练。
在目前的单机多卡服务器中,多使用PCIe(高速串行计算机扩展总线标准,Peripheral Component Interface Express)总线结构,且分布式训练基本采用相同性能GPU。基于此,在GPU性能相同且使用PCIe接口的GPU服务器中,使用同步更新参数的数据并行方式进行训练,训练参数会同时上传至参数服务器。但是由于单个GPU训练所产生的训练参数的数据量已经非常大,对于单机多卡训练来说同时上传多个训练参数就非常容易造成GPU与CPU之间的第一PCIe总线拥堵,此时CPU必须要等待训练参数上传完成才能对这些数据进行任务繁重地处理,并且反馈处理结果同样可能造成总线拥堵,以上几点都会导致训练效率较低、浪费深度学习时间。
因此,需要提出一种优化深度学习分布式并行训练的方法来解决上述提到的问题,提高训练效率、节省深度学习训练时间并在一定程度上减轻CPU负担。
发明内容
一方面,本发明基于上述目的提出了一种分布式并行训练的方法,包括以下步骤:
执行多个GPU基于训练模型的训练以得到训练参数;
根据训练参数的传输所需带宽确定GPU与CPU之间的第一总线的第一GPU数量阈值,并将该第一GPU数量阈值与GPU的数量进行比较;
响应于GPU的数量大于第一GPU数量阈值,将GPU分组并计算每组GPU的训练参数之和;
将各组的该训练参数之和通过第一总线上传至CPU,并根据CPU对全部训练参数之和计算的梯度平均值更新各GPU的训练模型。
根据本发明的分布式并行训练的方法的实施例,其中执行多个GPU基于训练模型的训练以得到训练参数进一步包括:
多个GPU以基于TensorFlow的分布式数据并行训练的方式执行基于训练模型的深度学习训练。
根据本发明的分布式并行训练的方法的实施例,其中响应于GPU的数量大于第一GPU数量阈值,将GPU分组并计算每组GPU的训练参数之和进一步包括:
根据训练参数的传输所需带宽确定各GPU之间的第二总线的第二GPU数量阈值;
根据第二GPU数量阈值确定每组GPU的数量。
根据本发明的分布式并行训练的方法的实施例,其中响应于GPU的数量大于第一GPU数量阈值,将GPU分组并计算每组GPU的训练参数之和进一步包括:
在每组GPU的其中一个GPU上设置GPU参数服务器;
该GPU参数服务器通过第二总线接收相应组中其它GPU发送的训练参数,计算本组训练参数之和。
根据本发明的分布式并行训练的方法的实施例,其中将各组的训练参数之和通过第一总线上传至CPU,并根据CPU对全部训练参数之和计算的梯度平均值更新各GPU的训练模型进一步包括:
通过CPU参数服务器对全部训练参数之和计算梯度平均值,并通过第一总线反馈至GPU参数服务器;
由GPU参数服务器通过第二总线将梯度平均值发送至相应组中的各GPU。
根据本发明的分布式并行训练的方法的实施例,其中方法进一步包括:
响应于GPU的数量不大于第一GPU数量阈值,GPU分别通过第一总线将训练参数上传至CPU,并根据CPU对训练参数计算的梯度平均值更新GPU的训练模型。
根据本发明的分布式并行训练的方法的实施例,其中根据训练参数的传输所需带宽确定GPU与CPU之间的第一总线的第一GPU数量阈值,并将第一GPU数量阈值与GPU的数量进行比较进一步包括:
根据训练参数的数据量和预设传输时间确定训练参数的传输所需带宽;
根据第一总线的第一带宽和训练参数的传输所需带宽的整除数确定第一总线的第一GPU数量阈值。
根据本发明的分布式并行训练的方法的实施例,其中根据训练参数的传输所需带宽确定各GPU之间的第二总线的第二GPU数量阈值进一步包括:
根据训练参数的数据量和预设传输时间确定训练参数的传输所需带宽;
根据第二总线的第二带宽和训练参数的传输所需带宽的整除数确定第二总线的第二GPU数量阈值。
根据本发明的分布式并行训练的方法的实施例,其中第一总线和第二总线为PCIe总线。
另一方面,本发明还提出了一种分布式并行训练的系统,包括处理器和存储器,所述存储器存储有处理器可执行指令,所述指令被处理器执行时实现以下步骤:
执行多个GPU基于训练模型的训练以得到训练参数;
根据训练参数的传输所需带宽确定GPU与CPU之间的第一总线的第一GPU数量阈值,并将该第一GPU数量阈值与GPU的数量进行比较;
响应于GPU的数量大于第一GPU数量阈值,将GPU分组并计算每组GPU的训练参数之和;
将各组的该训练参数之和通过第一总线上传至CPU,并根据CPU对全部训练参数之和计算的梯度平均值更新各GPU的训练模型。
采用上述技术方案,本发明至少具有如下有益效果:通过根据每次训练得到的参数对参与训练的GPU进行动态分组,在组内进行训练参数的汇总,减少需要在GPU与CPU之间的总线上上传的训练参数的数量,解决GPU与CPU之间的总线拥堵的问题。同时由于在组内进行了训练参数的部分计算过程,因此也在一定程度上减轻了CPU的负担。此外,利用本发明的方法的分布式并行训练也在一定程度上进一步稳定了GPU训练损失的下降,更容易得到最优解,增强了深度学习效果。因此,根据本发明的分布式并行训练的方法及系统优化了分布式并行训练,提高训练效率、节省深度学习训练时间并在一定程度上减轻CPU负担、增强深度学习效果。
本发明提供了实施例的各方面,不应当用于限制本发明的保护范围。根据在此描述的技术可设想到其它实施方式,这对于本领域普通技术人员来说在研究以下附图和具体实施方式后将是显而易见的,并且这些实施方式意图被包含在本申请的范围内。
下面参考附图更详细地解释和描述了本发明的实施例,但它们不应理解为对于本发明的限制。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术和实施例描述中所需要使用的附图作简单地介绍,附图中的部件不一定按比例绘制,并且可以省略相关的元件,或者在一些情况下比例可能已经被放大,以便强调和清楚地示出本文描述的新颖特征。另外,如本领域中已知的,结构顺序可以被不同地布置。
图1示出了根据本发明的分布式并行训练的方法的实施例的示意性框图。
具体实施方式
虽然本发明可以以各种形式实施,但是在附图中示出并且在下文中将描述一些示例性和非限制性实施例,但应该理解的是,本公开将被认为是本发明的示例并不意图将本发明限制于所说明的具体实施例。
图1示出了根据本发明的分布式并行训练的方法的实施例的示意性框图。在图1所示实施例中,根据本发明的方法至少包括以下步骤:
S1:执行多个GPU基于训练模型的训练以得到训练参数;
S2:根据训练参数的传输所需带宽Bt确定GPU与CPU之间的第一总线的第一GPU数量阈值C1,并将该第一GPU数量阈值C1与GPU的数量M进行比较;
S3:响应于GPU的数量M大于第一GPU数量阈值C1,将GPU分组并计算每组GPU的训练参数之和;
S4:将各组的该训练参数之和通过第一总线上传至CPU,并根据CPU对全部训练参数之和计算的梯度平均值更新各GPU的训练模型。
具体地说,步骤S1中有M(M∈N且M≥1)个GPU参与训练。M个GPU基于其训练模型进行深度学习训练,例如图形卷积等。训练产生的训练参数包括GPU根据训练中的损失的梯度值,例如图形卷积梯度值。通常情况下,该训练参数的数据量N非常大,有的甚至可以达到几百兆的数据量。由于数据并行方式下各GPU性能相同、所使用的基础训练模型也相同,因此各个GPU训练产生的训练参数的数据量N也基本相同。
步骤S2中根据训练参数的传输所需带宽Bt确定GPU与CPU之间的第一总线的第一GPU数量阈值C1,并将该第一GPU数量阈值C1与GPU的数量M进行比较。为了保证GPU与CPU之间的第一总线不发生拥堵,需要确定针对当次训练该总线上允许的训练参数的上传数量,也就是其能够支持同时进行上传操作的GPU的数量,即第一GPU数量阈值C1。由于每次训练所产生的训练参数的数据量N并不一定相同,因此其传输所需带宽Bt也相应发生变化,进而每次训练后的第一GPU数量阈值C1都会进行动态调整。在确定了当次训练的第一GPU数量阈值C1后将C1与GPU的数量M进行比较,以确定后续的操作。
在步骤S2的第一GPU数量阈值C1与GPU的数量M比较的基础上,如果M>C1,即GPU的数量大于第一GPU数量阈值,则认为此时可能发生第一总线拥堵造成等待,因此需要对此时的训练参数上传进行优化。步骤S3提出了优化的方法步骤,即将GPU分组并计算每组GPU的训练参数之和。在此,对各GPU的训练参数进行了预处理,完成了分组求和的过程,在一定程度上减轻了CPU对数据处理的负担。
随后在步骤S4中将该训练参数之和通过第一总线上传至CPU,并根据CPU对训练参数之和计算的梯度平均值更新各GPU的训练模型。由于各个GPU训练产生的训练参数的数据量N基本相同,因此对同组GPU的训练参数求和之后,该训练参数之和的数据量N'与单个GPU的训练参数的数据量N也基本相同。因此,通过第一总线上传至CPU的数据不再是大量的训练参数而是少量的训练参数之和,所以针对当次训练在第一总线上同时上传的总的数据量大大减少,或者说同时使用第一总线进行数据上传的GPU的数量大大减少,避免了第一总线发生拥堵。CPU在接收到训练参数之和后会对这些数据进行梯度平均处理得到梯度平均值。随后该梯度平均值会反馈给各GPU以更新其训练模型。当各GPU进行下一次的深度学习训练时就会以当次训练之后更新过的训练模型为基础展开下一次的数据并行训练。
下文将说明本发明的进一步实施例,需要注意的是,其中提到的步骤的编号在没有特殊说明的情况下,仅用于便捷明确地指示该步骤,并不限定所述步骤的顺序。
在本发明的分布式并行训练的方法的一些实施例中,GPU执行基于训练模型的训练以得到训练参数进一步包括:GPU以基于TensorFlow的分布式数据并行训练的方式执行基于训练模型的深度学习训练。根据本发明的分布式并行训练的方法优选地但不限于针对GPU以基于TensorFlow的分布式数据并行训练的方式进行深度学习训练时的优化。在经过合理的调整后,该方法的优化也适应于例如模型并行的训练方式或其它分布式构架的训练方式。
在本发明的分布式并行训练的方法的若干实施例中,步骤S3响应于GPU的数量M大于第一GPU数量阈值C1,将GPU分组并计算每组GPU的训练参数之和进一步包括:
S31:根据训练参数的传输所需带宽Bt确定各GPU之间的第二总线的第二GPU数量阈值C2;
S32:根据第二GPU数量阈值C2确定每组GPU的数量。
具体地说,在本发明的若干实施例中步骤S3进一步包括上述两个子步骤S31和子步骤S32,其中在子步骤S31中根据训练参数的传输所需带宽Bt确定各GPU之间的第二总线的第二GPU数量阈值C2。随后在子步骤S32根据第二GPU数量阈值C2确定每组GPU的数量。也就是说,在M>C1,即GPU的数量大于第一GPU数量阈值的情况下,认为此时可能发生第一总线拥堵造成等待,因此进一步将GPU分组,分组的规则遵循上述子步骤S31、S32,为了保证各GPU之间的第二总线不发生拥堵,需要子步骤S31确定针对当次训练该第二总线上允许的训练参数的上传数量,也就是其能够支持同时进行上传操作的GPU的数量,即第二GPU数量阈值C2。由于每次训练所产生的训练参数的数据量N并不一定相同,因此其传输所需带宽Bt也相应发生变化,进而每次训练后的第二GPU数量阈值C2都会进行动态调整。在确定了当次训练的第二GPU数量阈值C2后,子步骤S32根据C2对GPU进行分组,例如优选地将第1至第C2个GPU分为第一组,第C2+1至第2*C2个GPU分为第二组,以此类推,第(n-1)*C2+1至最后的GPU分为最后一组。分组之后再进行各组的训练参数求和的过程。
在本发明的分布式并行训练的方法的一些实施例中,步骤S3响应于GPU的数量M大于第一GPU数量阈值C1,将GPU分组并计算每组GPU的训练参数之和进一步包括:
S33:在每组GPU的其中一个GPU上设置GPU参数服务器;
S34:该GPU参数服务器通过第二总线接收相应组中其它GPU发送的训练参数,计算训练参数之和。
在本发明的若干实施例中步骤S3进一步包括上述两个子步骤S33和子步骤S34,其中在子步骤S33中在每组GPU的其中一个GPU上设置GPU参数服务器。随后在子步骤S34中该GPU参数服务器通过第二总线接收相应组中其它GPU发送的训练参数,计算训练参数之和。也就是说,例如在前述示例中,子步骤S33在各组GPU中其中一个GPU上设置GPU参数服务器PS(parameter server),优选在各组的第一个GPU上设置PS,例如在第一组的第1至第C2个GPU中的GPU_1上设置GPU参数服务器PS1,在第二组的第C2+1至第2*C2个GPU中的GPU_C2+1上设置GPU参数服务器PS2(parameter server),以此类推,在最后一组的第(n-1)*C2+1至最后的GPU中的GPU_(n-1)*C2+1上设置GPU参数服务器PSn。随后,在子步骤S34中上述S33中设置的GPU参数服务器PS1至PSn通过第二总线接收相应组中的其它GPU向GPU参数服务器发送的训练参数,并计算训练参数之和。通过上述子步骤,实质上利用第二总线分担了原本第一总线的训练参数传输的部分负担。
在本发明的分布式并行训练的方法的一些实施例中,步骤S4将训练参数之和通过第一总线上传至CPU,并根据CPU对训练参数之和计算的梯度平均值更新各GPU的训练模型进一步包括:
S41:通过CPU参数服务器对训练参数之和计算梯度平均值,并通过第一总线反馈至GPU参数服务器;
S42:由GPU参数服务器通过第二总线将梯度平均值发送至相应组中的各GPU。
在这些实施例中,步骤S4进一步分为了以上两个子步骤,其中子步骤S41通过CPU上的CPU参数服务器PSc对各GPU参数服务器上传的训练参数之和进行数据处理求得梯度平均值。所求得的梯度平均值随后同样通过第一总线反馈给GPU参数服务器。之后子步骤S42将CPU反馈回来的梯度平均值由GPU参数服务器通过第二总线发送至相应组中的各GPU。在此,由于CPU接收的是经过了预处理的训练参数之和,因此在一定程度上减轻了CPU对数据处理的负担。同时,CPU通过第一总线仅向GPU参数服务器反馈经计算得到的梯度平均值,而不是同时向所有GPU反馈计算结果,确保了第一总线在反馈过程中不会出现拥堵情况。此外,由GPU参数服务器通过第二总线向相应组中的各GPU发送梯度平均值实现了由第二总线分担原本第一总线的反馈过程中的部分负担。
在本发明的分布式并行训练的方法的一个或多个实施例中,该方法进一步包括:
S5:响应于GPU的数量M不大于第一GPU数量阈值C1,GPU分别通过第一总线将训练参数上传至CPU,并根据CPU对训练参数计算的梯度平均值更新GPU的训练模型。
也就是说,在步骤S2的第一GPU数量阈值C1与GPU的数量M比较的基础上,如果M≤C1,即GPU的数量不大于第一GPU数量阈值,认为此时不会发生第一总线拥堵,因此原本的训练参数上传方式可以满足对于训练效率和学习效果的要求。所以在这种情况下,可以不使用步骤S3、S4的方法,而是使用步骤S5的方式GPU分别通过第一总线将训练参数上传至CPU,并根据CPU对训练参数计算的梯度平均值更新GPU的训练模型。在GPU的数量不超过第一GPU数量阈值因而不会造成第一总线拥堵的情况下,可以直接令各GPU分别通过第一总线将训练参数上传至CPU,不必执行本发明的训练参数求和的预处理和通过第一总线仅上传训练参数之和的过程,省去了GPU的计算以及相互间的数据传输的负担。
在本发明的分布式并行训练的方法的一些实施例中,步骤S2根据训练参数的传输所需带宽Bt确定GPU与CPU之间的第一总线的第一GPU数量阈值C1,并将第一GPU数量阈值C1与GPU的数量M进行比较进一步包括:
S21:根据训练参数的数据量N和预设传输时间Ts确定训练参数的传输所需带宽Bt;
S22:根据第一总线的第一带宽B1和训练参数的传输所需带宽Bt的整除数确定第一总线的第一GPU数量阈值C1。
前述步骤S2确定训练参数的传输所需带宽Bt、第一GPU数量阈值C1是执行后续方法的基础。在一些实施例中,步骤S2进一步包括两个子步骤,其中子步骤S21进一步明确训练参数的传输所需带宽Bt的计算方法,即根据当次训练产生的训练参数的数据量N和预设传输时间Ts计算训练参数的传输所需带宽Bt。也就是说,根据以下公式计算传输所需带宽:
其中预设传输时间Ts优选地但不限于为1s,此时Bt=N。根据不同深度学习训练的效率要求,可以减小或增大上述预设传输时间Ts的设定值。
在此基础上,子步骤S22进一步明确第一总线的第一GPU数量阈值C1的计算方法,即优选地根据第一总线的第一带宽B1和当次训练的训练参数的传输所需带宽Bt的整除数计算第一总线的第一GPU数量阈值C1。也就是说,根据以下公式第一GPU数量阈值:
其中由于每次训练产生的训练参数的数据量N不相同,因此每次训练的第一GPU数量阈值C1也相应的不同。此外,当Ts根据优选实施例设置为1s时,第一GPU数量阈值C1就等于第一总线的第一带宽B1和当次训练的训练参数的数据量N的整除数,即C1=[B1/N]。
在本发明的分布式并行训练的方法的若干实施例中,子步骤S31根据训练参数的传输所需带宽Bt确定各GPU之间的第二总线的第二GPU数量阈值C2进一步包括:
S311:根据训练参数的数据量N和预设传输时间Ts确定训练参数的传输所需带宽Bt;
S312:根据第二总线的第二带宽B2和训练参数的传输所需带宽Bt的整除数确定第二总线的第二GPU数量阈值C2。
前述步骤S31确定训练参数的传输所需带宽Bt、第二GPU数量阈值C2是执行后续方法的基础。在一些实施例中,步骤S31进一步包括两个子步骤,其中子步骤S311进一步明确训练参数的传输所需带宽Bt的计算方法,即根据当次训练产生的训练参数的数据量N和预设传输时间Ts计算训练参数的传输所需带宽Bt。也就是说,根据以下公式计算传输所需带宽:
其中预设传输时间Ts优选地但不限于为1s,此时Bt=N。根据不同深度学习训练的效率要求,可以减小或增大上述预设传输时间Ts的设定值。
在此基础上,子步骤S312进一步明确第二总线的第二GPU数量阈值C2的计算方法,即优选地根据第二总线的第二带宽B2和当次训练的训练参数的传输所需带宽Bt的整除数计算第二总线的第二GPU数量阈值C2。也就是说,根据以下公式第二GPU数量阈值:
其中由于每次训练产生的训练参数的数据量N不相同,因此每次训练的第二GPU数量阈值C2也相应的不同。此外,当Ts根据优选实施例设置为1s时,第二GPU数量阈值C2就等于第二总线的第二带宽B2和当次训练的训练参数的数据量N的整除数,即C2=[B2/N]。
在本发明的分布式并行训练的方法的一个或多个实施例中国,第一总线和第二总线为PCIe总线。目前多卡GPU服务器使用PCIE总线和NVLink总线两种结构。根据本发明的方法的一些实施例优选适用于PCIe总线结构。PCIe总线结构具备更高的最大系统总线吞吐量、更低的I/O引脚数量和更小的物理尺寸、更好的总线设备性能缩放、更详细的错误检测和报告机制(高级错误报告AER)和本机热插拔功能。此外,PCIe总线可以提供相当大的带宽,更有利于分布式并行训练。
另一方面,本发明还提出了一种分布式并行训练的系统,该系统包括处理器和存储器,该存储器存储有处理器可执行指令,该指令被处理器执行时实现以下步骤:
S1:执行多个GPU基于训练模型的训练以得到训练参数;
S2:根据训练参数的传输所需带宽Bt确定GPU与CPU之间的第一总线的第一GPU数量阈值C1,并将该第一GPU数量阈值C1与GPU的数量M进行比较;
S3:响应于GPU的数量M大于第一GPU数量阈值C1,将GPU分组并计算每组GPU的训练参数之和;
S4:将各组的该训练参数之和通过第一总线上传至CPU,并根据CPU对全部训练参数之和计算的梯度平均值更新各GPU的训练模型。
采用上述技术方案,本发明至少具有如下有益效果:通过根据每次训练得到的参数对参与训练的GPU进行动态分组,在组内进行训练参数的汇总,减少需要在GPU与CPU之间的总线上上传的训练参数的数量,解决GPU与CPU之间的总线拥堵的问题。同时由于在组内进行了训练参数的部分计算过程,因此也在一定程度上减轻了CPU的负担。此外,利用本发明的方法的分布式并行训练也在一定程度上进一步稳定了GPU训练损失的下降,更容易得到最优解,增强了深度学习效果。因此,根据本发明的分布式并行训练的方法及系统优化了的分布式并行训练,提高训练效率、节省深度学习训练时间并在一定程度上减轻CPU负担、增强深度学习效果。
应当理解的是,在技术上可行的情况下,以上针对不同实施例所列举的技术特征可以相互组合,从而形成本发明范围内的另外实施例。此外,本文所述的特定示例和实施例是非限制性的,并且可以对以上所阐述的结构、步骤及顺序做出相应修改而不脱离本发明的保护范围。
在本申请中,反意连接词的使用旨在包括连接词。定或不定冠词的使用并不旨在指示基数。具体而言,对“该”对象或“一”和“一个”对象的引用旨在表示多个这样对象中可能的一个。然而,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。此外,可以使用连接词“或”来传达同时存在的特征,而不是互斥方案。换句话说,连接词“或”应理解为包括“和/或”。术语“包括”是包容性的并且具有与“包含”相同的范围。
上述实施例,特别是任何“优选”实施例是实施方式的可能示例,并且仅仅为了清楚理解本发明的原理而提出。在基本上不脱离本文描述的技术的精神和原理的情况下,可以对上述实施例做出许多变化和修改。所有修改旨在被包括在本公开的范围内。
Claims (10)
1.一种分布式并行训练的方法,其特征在于,所述方法包括以下步骤:
执行多个GPU基于训练模型的训练以得到训练参数;
根据所述训练参数的传输所需带宽确定所述GPU与CPU之间的第一总线的第一GPU数量阈值,并将所述第一GPU数量阈值与所述GPU的数量进行比较;
响应于所述GPU的数量大于所述第一GPU数量阈值,将所述GPU分组并计算每组GPU的训练参数之和;
将各组的所述训练参数之和通过所述第一总线上传至CPU,并根据CPU对全部所述训练参数之和计算的梯度平均值更新各GPU的训练模型。
2.根据权利要求1所述的方法,其特征在于,所述执行多个GPU基于训练模型的训练以得到训练参数进一步包括:
所述多个GPU以基于TensorFlow的分布式数据并行训练的方式执行基于训练模型的深度学习训练。
3.根据权利要求1所述的方法,其特征在于,所述响应于所述GPU的数量大于所述第一GPU数量阈值,将所述GPU分组并计算每组GPU的训练参数之和进一步包括:
根据所述训练参数的传输所需带宽确定各GPU之间的第二总线的第二GPU数量阈值;
根据所述第二GPU数量阈值确定每组GPU的数量。
4.根据权利要求3所述的方法,其特征在于,所述响应于所述GPU的数量大于所述第一GPU数量阈值,将所述GPU分组并计算每组GPU的训练参数之和进一步包括:
在每组GPU的其中一个GPU上设置GPU参数服务器;
所述GPU参数服务器通过所述第二总线接收相应组中其它GPU发送的训练参数,计算本组训练参数之和。
5.根据权利要求4所述的方法,其特征在于,所述将各组的所述训练参数之和通过所述第一总线上传至CPU,并根据CPU对全部所述训练参数之和计算的梯度平均值更新各GPU的训练模型进一步包括:
通过CPU参数服务器对全部所述训练参数之和计算梯度平均值,并通过所述第一总线反馈至所述GPU参数服务器;
由GPU参数服务器通过所述第二总线将所述梯度平均值发送至相应组中的各GPU。
6.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
响应于所述GPU的数量不大于所述第一GPU数量阈值,GPU分别通过所述第一总线将训练参数上传至CPU,并根据CPU对所述训练参数计算的梯度平均值更新GPU的训练模型。
7.根据权利要求1所述的方法,其特征在于,所述根据所述训练参数的传输所需带宽确定所述GPU与CPU之间的第一总线的第一GPU数量阈值,并将所述第一GPU数量阈值与所述GPU的数量进行比较进一步包括:
根据所述训练参数的数据量和预设传输时间确定所述训练参数的传输所需带宽;
根据所述第一总线的第一带宽和所述训练参数的传输所需带宽的整除数确定所述第一总线的第一GPU数量阈值。
8.根据权利要求3所述的方法,其特征在于,所述根据所述训练参数的传输所需带宽确定各GPU之间的第二总线的第二GPU数量阈值进一步包括:
根据所述训练参数的数据量和预设传输时间确定所述训练参数的传输所需带宽;
根据所述第二总线的第二带宽和所述训练参数的传输所需带宽的整除数确定所述第二总线的第二GPU数量阈值。
9.根据权利要求3所述的方法,其特征在于,所述第一总线和所述第二总线为PCIe总线。
10.一种分布式并行训练的系统,其特征在于,包括处理器和存储器,所述存储器存储有处理器可执行指令,所述指令被处理器执行时实现以下步骤:
执行多个GPU基于训练模型的训练以得到训练参数;
根据所述训练参数的传输所需带宽确定所述GPU与CPU之间的第一总线的第一GPU数量阈值,并将所述第一GPU数量阈值与所述GPU的数量进行比较;
响应于所述GPU的数量大于所述第一GPU数量阈值,将所述GPU分组并计算每组GPU的训练参数之和;
将各组的所述训练参数之和通过所述第一总线上传至CPU,并根据CPU对全部所述训练参数之和计算的梯度平均值更新各GPU的训练模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910736410.5A CN110503194B (zh) | 2019-08-09 | 2019-08-09 | 一种分布式并行训练的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910736410.5A CN110503194B (zh) | 2019-08-09 | 2019-08-09 | 一种分布式并行训练的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110503194A true CN110503194A (zh) | 2019-11-26 |
CN110503194B CN110503194B (zh) | 2022-05-24 |
Family
ID=68586416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910736410.5A Active CN110503194B (zh) | 2019-08-09 | 2019-08-09 | 一种分布式并行训练的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110503194B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111275173A (zh) * | 2020-02-12 | 2020-06-12 | 字节跳动有限公司 | 一种神经网络训练方法、装置及其设备 |
CN111488987A (zh) * | 2020-04-16 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种深度学习大模型训练的方法、系统、设备及介质 |
CN112862662A (zh) * | 2021-03-12 | 2021-05-28 | 云知声智能科技股份有限公司 | 一种分布式训练transformer-xl语言模型的方法和设备 |
CN112966829A (zh) * | 2021-03-03 | 2021-06-15 | 山东英信计算机技术有限公司 | 一种深度学习模型的训练方法、装置、设备及可读介质 |
CN115934181A (zh) * | 2022-11-07 | 2023-04-07 | 北京百度网讯科技有限公司 | 数据加载方法、装置、电子设备和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609978A (zh) * | 2012-01-13 | 2012-07-25 | 中国人民解放军信息工程大学 | 基于cuda架构的gpu加速锥束ct图像重建的方法 |
CN104036451A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104035751A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
CN105224502A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于gpu的深度学习方法及系统 |
CN106297774A (zh) * | 2015-05-29 | 2017-01-04 | 中国科学院声学研究所 | 一种神经网络声学模型的分布式并行训练方法及系统 |
CN108805795A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于机器学习的硬件实现的点对点通信原语 |
CN109032671A (zh) * | 2018-06-25 | 2018-12-18 | 电子科技大学 | 一种基于数据并行策略的分布式深度学习方法及系统 |
CN109754060A (zh) * | 2017-11-06 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 一种神经网络机器学习模型的训练方法及装置 |
CN109902818A (zh) * | 2019-01-15 | 2019-06-18 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的分布式加速方法及系统 |
CN109951438A (zh) * | 2019-01-15 | 2019-06-28 | 中国科学院信息工程研究所 | 一种分布式深度学习的通信优化方法及系统 |
-
2019
- 2019-08-09 CN CN201910736410.5A patent/CN110503194B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609978A (zh) * | 2012-01-13 | 2012-07-25 | 中国人民解放军信息工程大学 | 基于cuda架构的gpu加速锥束ct图像重建的方法 |
CN104036451A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104035751A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
CN106297774A (zh) * | 2015-05-29 | 2017-01-04 | 中国科学院声学研究所 | 一种神经网络声学模型的分布式并行训练方法及系统 |
CN105224502A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于gpu的深度学习方法及系统 |
CN108805795A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于机器学习的硬件实现的点对点通信原语 |
CN109754060A (zh) * | 2017-11-06 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 一种神经网络机器学习模型的训练方法及装置 |
CN109032671A (zh) * | 2018-06-25 | 2018-12-18 | 电子科技大学 | 一种基于数据并行策略的分布式深度学习方法及系统 |
CN109902818A (zh) * | 2019-01-15 | 2019-06-18 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的分布式加速方法及系统 |
CN109951438A (zh) * | 2019-01-15 | 2019-06-28 | 中国科学院信息工程研究所 | 一种分布式深度学习的通信优化方法及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111275173A (zh) * | 2020-02-12 | 2020-06-12 | 字节跳动有限公司 | 一种神经网络训练方法、装置及其设备 |
CN111275173B (zh) * | 2020-02-12 | 2023-08-04 | 字节跳动有限公司 | 一种神经网络训练方法、装置及其设备 |
CN111488987A (zh) * | 2020-04-16 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种深度学习大模型训练的方法、系统、设备及介质 |
CN111488987B (zh) * | 2020-04-16 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种深度学习大模型训练的方法、系统、设备及介质 |
CN112966829A (zh) * | 2021-03-03 | 2021-06-15 | 山东英信计算机技术有限公司 | 一种深度学习模型的训练方法、装置、设备及可读介质 |
CN112862662A (zh) * | 2021-03-12 | 2021-05-28 | 云知声智能科技股份有限公司 | 一种分布式训练transformer-xl语言模型的方法和设备 |
CN115934181A (zh) * | 2022-11-07 | 2023-04-07 | 北京百度网讯科技有限公司 | 数据加载方法、装置、电子设备和存储介质 |
CN115934181B (zh) * | 2022-11-07 | 2023-10-13 | 北京百度网讯科技有限公司 | 数据加载方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110503194B (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110503194A (zh) | 一种分布式并行训练的方法和系统 | |
CN109902818B (zh) | 一种面向深度学习训练任务的分布式加速方法及系统 | |
CN106844294B (zh) | 卷积运算芯片和通信设备 | |
CN103970718B (zh) | 一种快速傅里叶变换实现装置及方法 | |
CN110210610A (zh) | 卷积计算加速器、卷积计算方法及卷积计算设备 | |
CN106951926A (zh) | 一种混合架构的深度学习系统方法及装置 | |
CN108229687B (zh) | 数据处理方法、数据处理装置及电子设备 | |
CN110046048B (zh) | 一种基于工作量自适应快速重分配的负载均衡方法 | |
CN110990155B (zh) | 一种面向大规模安全监控的参数通信方法 | |
CN112532530B (zh) | 一种拥塞通知信息调整的方法及设备 | |
US11748156B1 (en) | System and method for maximizing processor and server use | |
CN106528490A (zh) | 一种fpga异构加速计算装置及系统 | |
CN106156142A (zh) | 一种文本聚类的处理方法、服务器及系统 | |
CN108334474A (zh) | 一种基于数据并行的深度学习处理器架构及方法 | |
WO2020042770A1 (zh) | 图像识别处理方法和装置 | |
CN110647396A (zh) | 端云协同低功耗带宽受限智能应用实现方法 | |
CN109298934A (zh) | 心跳周期调整方法、装置及系统 | |
CN109978129A (zh) | 调度方法及相关装置 | |
CN110163793B (zh) | 卷积计算加速方法和装置 | |
CN111538560B (zh) | 一种虚拟机部署方法、装置、电子设备及其存储介质 | |
CN110517183B (zh) | 一种基于视网膜机制的高速低功耗图像处理器 | |
CN111971692A (zh) | 卷积神经网络 | |
CN110276455B (zh) | 基于全局率权重的分布式深度学习系统 | |
US20210326619A1 (en) | Image recognition processing method and apparatus | |
CN112261023A (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 |