CN106846236A - 一种可扩展的分布式gpu加速方法及装置 - Google Patents
一种可扩展的分布式gpu加速方法及装置 Download PDFInfo
- Publication number
- CN106846236A CN106846236A CN201611215270.XA CN201611215270A CN106846236A CN 106846236 A CN106846236 A CN 106846236A CN 201611215270 A CN201611215270 A CN 201611215270A CN 106846236 A CN106846236 A CN 106846236A
- Authority
- CN
- China
- Prior art keywords
- gpu
- node
- cpu
- data
- threads
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明提出一种可扩展的分布式GPU加速方法及装置,涉及计算机体系结构技术领域,该装置包括多个节点,所述节点包括CPU、多个GPU,所述CPU与所述GPU进行数据交互,多个所述节点之间通过InfiniBand进行连接,所述CPU控制所述GPU。
Description
技术领域
本发明涉及计算机体系结构技术领域,特别涉及一种可扩展的分布式GPU加速方法及装置,针对深度神经网络BP算法。
背景技术
近年来深度学习取得了巨大的进步,其应用范围也越来越广,涉及语音识别、图像识别以及虚拟现实、增强现实等市场需求快速增长的领域,传统的神经网络是由输入层、隐藏层和输出层构成的复杂网络,具有高度的非线性,能够进行各种逻辑操作以及拟合各种非线性函数,深度神经网络的构成会更复杂一些,包括了更多的隐藏层,各层神经元之间的连接分为部分连接和全连接,部分连接就是前层的每个神经元只和下一层的部分神经元有数据连接,比如卷积神经网络;全连接则是前层的每个神经元和下一层的每个神经元都有数据连接,比如传统的人工神经网络。
对于全连接的深度神经网络,由于自身结构的原因,其计算量巨大,目前的加速方式主要分为两种,硬件(GPU)加速和并行(多CPU)加速,GPU加速属于异构加速,利用GPU强大的浮点计算能力,在单个节点上提高深度神经网络的训练速度,由于单个节点的限制,使得这种方式利用的GPU硬件数量有限,一般为1~4个,从而限制了这种加速方式的可扩展性;多CPU并行加速分为两种,一种是节点并行加速,即每个节点只保存神经网络的一部分,在训练的过程中,参与计算的节点进行通信来更新数据,经过多次迭代从而完成神经网络的训练;另一种加速策略是训练数据并行,每个节点保存着完整的神经网络结构,将训练数据集进行划分,每个节点处理自己的部分,在每次通信的过程中,每个节点把自己的更新信息发送给其他节点,从而得到全局的更新。这种方式具有一定的可扩展性。
发明内容
针对现有技术的不足,本发明提出一种可扩展的分布式GPU加速方法及装置,针对深度神经网络BP算法。
本发明提出一种可扩展的分布式GPU加速装置,包括:
多个节点,所述节点包括CPU、多个GPU,所述CPU与所述GPU进行数据交互,多个所述节点之间通过InfiniBand进行连接,所述CPU控制所述GPU。
所述节点上GPU与CPU通过主板进行连接。
每个所述节点获取自己对应的训练数据,将所述训练数据分为多个批次数据,每个所述批次数据中包含多个数据,作为一次训练的输入,每个GPU作为一个单独的计算单元,分别处理相应的所述批次数据。
每个所述节点中的CPU负责把每个GPU计算的误差矩阵更新到全局的权值矩阵。
当某一节点的所有GPU处理完一轮批次数据后,所述某一节点与其他节点进行通信,将处理完成的批次数据发送到对应的节点,进行全局更新。
所述可扩展的分布式GPU加速装置的架构采用对等模式。
本发明还提出一种利用所述可扩展的分布式GPU加速装置的加速方法,主进程启动后,进行初始化并读取所述节点分到的批次数据,设置两个线程负责CPU与GPU的通信,所述两个线程包括Download线程与Upload线程,第一次迭代时,CPU准备好初始的参数W权值矩阵,Download线程读取参数W矩阵并将其下载到GPU的内存中,并通知GPU计算线程数据已经准备好,然后进入阻塞状态,等待下一轮计算开始,GPU计算完成参数W矩阵后,通知Upload线程,Upload线程将误差矩阵dW从GPU内存传输到CPU内存,并通知CPU进行参数W矩阵的更新,然后进入阻塞状态,等待下一轮计算结束,CPU更新参数W矩阵后,通知Download线程,进行第二轮计算,直到所有数据计算结束。
由以上方案可知,本发明的优点在于:
本发明解决了传统方法并行度差、可扩展性差以及计算效率低等问题。
本发明用InfiniBand交换机将各个计算节点互联,降低通信延迟,这样可以及时的将每个节点计算出的误差矩阵更新到其他节点,由于GPU强大的计算能力,进行一次迭代的时间非常短,如果用普通的网络连接各个计算节点,那么误差矩阵不能及时的更新,更新数据的操作会延迟几轮,这样会降低计算效率,而且会影响最终模型的准确性,通过提高节点的通信能力,能大大提高计算效率,同时保持模型结果的准确性。
本发明首先将样本分成若干batch(批量),按照GPU的数量进行划分,每个GPU均等的获得同样数量的batch,这样的数据划分方式,避免了模型划分在分布式结构中的通信压力,能更好的提高计算效率。
本发明采用异步的方式进行数据更新,在单个节点内,GPU每进行完一次迭代计算,在向CPU传输误差矩阵的时,并没有阻塞计算,而是直接利用当前最新的模型,进行下一轮的计算,我们将这种更新模式称为异步更新,这样的方式大幅减小了阻塞时间,增加了计算效率。
本发明在单个节点内,GPU和CPU进行数据交互时,采用双缓冲的策略,读数据和写数据都是采用两个缓冲区,用独立的线程进行读数据写,在读写完成时立即通知相应的线程,从而省去了读写时计算线程的等待,减小了整体的计算时间。
本发明在多个计算节点间,采用peer(对等)的通信模式,根据节点个数的不同,通过不同的通信次数来进行全局同步,避免了主从模式对计算资源的浪费。
本发明按照GPU的个数进行数据划分,使得负载更均衡,避免了模型划分的高通信量。
本发明采用异步方式进行数据更新,避免了同步方式的阻塞延迟,减小了整体的计算时间,提高了计算效率。
附图说明
图1是计算节点间的互联模式和单个节点的GPU和CPU互联模式图;
图2是单个节点的软件结构和计算流程图;
图3是两个计算节点的通信模式图;
图4是四个计算节点的通信模式图;
图5是节点间的通信过程图。
具体实施方式
(1)、一种针对深度神经网络BP算法的可扩展的分布式GPU加速方法,包括多节点之间CPU的数据交互方式,单个节点上CPU与多个GPU之间的数据交互方式。多个节点用InfiniBand(无限宽带)相连,在软件层面通过MPI进行通信,单节点上GPU与CPU通过主板连接。
(2)、在(1)的基础上,每个节点获取自己对应的训练数据,将数据分为多个batch(批次),每个batch中包含多个数据,作为一次训练的输入,每个GPU作为一个单独的计算单元,分别处理不同的batch数据。在同一个节点上,作为slave(从属)的GPU每处理完一个batch数据,都要和CPU进行通信,CPU作为Master,负责把每个GPU计算的误差矩阵更新到全局的权值矩阵。
(3)、在(1)、(2)的基础上,当每个节点的所有GPU处理完一轮batch数据后,该节点与其他节点进行通信,将该轮计算的数据发送到对应的节点,进行全局更新,对于不同的节点数量,每一轮通信的节点会有所改变,节点之间是peer模式。
本发明的具体硬件架构,如图1所示:
1.考虑到GPU超强的浮点计算能力,节点间必须用InfiniBand这种高速的连接方式,才能避免通信带来的延迟影响,从理论上讲,该加速方法不限制节点的个数,具有很强的可扩展性,但是对节点间的数据传输速度有一定的要求。
2.对于单个节点,目前可以支持1~4个GPU,这是由于主板的限制,理论上该方法支持的GPU数量没有上限。
对于每个节点,GPU主要负责计算,CPU主要负责将各个GPU的计算结果进行合并更新,然后再将更新的结果传输给GPU,进行下一轮计算,其软件架构及计算流程如图2所示:
主进程启动后,进行初始化并读取本节点分到的训练数据,除了GPU计算线程外,还要开辟两个线程负责CPU和GPU的通信,为了尽量减小通信带来的计算影响,在具体实现的过程中,采用了双缓冲技术,由Download线程和Upload线程负责切换,第一次迭代时,CPU端准备好了初始的参数W权值矩阵,Download线程读取W矩阵并将其下载到GPU的内存中,并通知GPU计算线程数据已经准备好,然后进入阻塞状态,等待下一轮计算开始,GPU计算完这一轮的数据后,通知Upload线程,Upload线程将误差矩阵dW从GPU内存传输到CPU内存,并通知CPU进行W矩阵的更新,然后进入阻塞状态,等待下一轮计算结束,CPU更新W矩阵后,通知Download线程,进行第二轮计算,这样的过程直到所有数据计算结束。
结合图1,每个GPU都对应着三个线程,一个负责从CPU端取数据,一个负责计算,一个负责将新的数据发送给CPU端,GPU之间不需要进行同步,只需要和CPU端进行数据交互即可,这样在单个节点内,最大限度的减小了数据通信带来的开销,提高了计算效率。理论上,在单节点上这种模式可以扩展到多个GPU,但是受限于主板,目前仅支持1~4个GPU。
多个节点间的通信根据计算节点的个数而定,两个节点的计算和通信模式如图3,本发明把单个节点内所有GPU都进行完一次计算的过程称为一轮计算,当节点1和节点2进行完第一轮计算后,开始进行通信,互相发送接收对方最新计算的数据,更新到神经网络的权值矩阵,然后开始下一轮计算,这样,只有两个节点的情况下,只需要一次通信就可以保证每个节点都包含了全局的信息。
总的计算节点有四个时,本发明设计的架构为对等(peer)模式,每个节点都负责计算,将计算所得的最新数据通过网络发送到对应的节点,四个节点需要两次通信获得全局节点的计算信息,如图4所示,第一次通信时,节点1和节点2相互发送更新的数据,节点3和节点4相互发送更新数据,每个节点将收到的数据利用到下一轮计算中,当下一轮计算完成后,进行第二次通信,此时,节点1和节点3进行通信,节点1向节点3发送上一轮收到的节点2的数据和此时节点1的计算数据,节点3向节点1发送上一轮收到的节点4的数据和此时节点3的计算数据,节点2和节点4也进行类似的通信,这样,通过两轮数据通信,节点1、2、3、4都包含了全局的更新数据,保证了训练结果的正确性和一致性。同时,这种通信方式也减少了节点间的数据交互,提高了计算效率。
一般的,当计算节点的总数为N时,节点间每轮总共需要C次通信才能保证每个节点都有全局的训练数据,C和N之间具有下列关系:
C=log2N (公式1)
在具体的数据通信过程中,本发明使用MPI进行节点的数据发送和接收,流程如图5所示:
如图5所示,由于本发明采用的对等通信模式,每轮的通信次数和系统内节点的个数相关,因此,在每次发送和接收过程中,本发明需要计算当时对应的通信节点。
Claims (7)
1.一种可扩展的分布式GPU加速装置,其特征在于,包括:
多个节点,所述节点包括CPU、多个GPU,所述CPU与所述GPU进行数据交互,多个所述节点之间通过InfiniBand进行连接,所述CPU控制所述GPU。
2.如权利要求1所述的可扩展的分布式GPU加速装置,其特征在于,所述节点上GPU与CPU通过主板进行连接。
3.如权利要求1所述的可扩展的分布式GPU加速装置,其特征在于,每个所述节点获取自己对应的训练数据,将所述训练数据分为多个批次数据,每个所述批次数据中包含多个数据,作为一次训练的输入,每个GPU作为一个单独的计算单元,分别处理相应的所述批次数据。
4.如权利要求1所述的可扩展的分布式GPU加速装置,其特征在于,每个所述节点中的CPU负责把每个GPU计算的误差矩阵更新到全局的权值矩阵。
5.如权利要求1所述的可扩展的分布式GPU加速装置,其特征在于,当某一节点的所有GPU处理完一轮批次数据后,所述某一节点与其他节点进行通信,将处理完成的批次数据发送到对应的节点,进行全局更新。
6.如权利要求1所述的可扩展的分布式GPU加速装置,其特征在于,所述可扩展的分布式GPU加速装置的架构采用对等模式。
7.一种利用如权利要求1-5所述可扩展的分布式GPU加速装置的加速方法,其特征在于,主进程启动后,进行初始化并读取所述节点分到的批次数据,设置两个线程负责CPU与GPU的通信,所述两个线程包括Download线程与Upload线程,第一次迭代时,CPU准备好初始的参数W权值矩阵,Download线程读取参数W矩阵并将其下载到GPU的内存中,并通知GPU计算线程数据已经准备好,然后进入阻塞状态,等待下一轮计算开始,GPU计算完成参数W矩阵后,通知Upload线程,Upload线程将误差矩阵dW从GPU内存传输到CPU内存,并通知CPU进行参数W矩阵的更新,然后进入阻塞状态,等待下一轮计算结束,CPU更新参数W矩阵后,通知Download线程,进行第二轮计算,直到所有数据计算结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611215270.XA CN106846236A (zh) | 2016-12-26 | 2016-12-26 | 一种可扩展的分布式gpu加速方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611215270.XA CN106846236A (zh) | 2016-12-26 | 2016-12-26 | 一种可扩展的分布式gpu加速方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106846236A true CN106846236A (zh) | 2017-06-13 |
Family
ID=59136461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611215270.XA Pending CN106846236A (zh) | 2016-12-26 | 2016-12-26 | 一种可扩展的分布式gpu加速方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106846236A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828841A (zh) * | 2019-01-21 | 2019-05-31 | 南京航空航天大学 | 一种cfd并行计算方法 |
CN111186139A (zh) * | 2019-12-25 | 2020-05-22 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
CN112199885A (zh) * | 2020-09-09 | 2021-01-08 | 北京达佳互联信息技术有限公司 | 一种分布式模型训练系统及应用方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135949A (zh) * | 2011-03-01 | 2011-07-27 | 浪潮(北京)电子信息产业有限公司 | 基于图形处理器的计算网络系统、方法及装置 |
CN102541804A (zh) * | 2011-12-26 | 2012-07-04 | 中国人民解放军信息工程大学 | 一种异构系统中多gpu互连体系结构 |
CN103902502A (zh) * | 2014-04-09 | 2014-07-02 | 上海理工大学 | 一种可扩展的分离式异构千核系统 |
CN104035751A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
-
2016
- 2016-12-26 CN CN201611215270.XA patent/CN106846236A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135949A (zh) * | 2011-03-01 | 2011-07-27 | 浪潮(北京)电子信息产业有限公司 | 基于图形处理器的计算网络系统、方法及装置 |
CN102541804A (zh) * | 2011-12-26 | 2012-07-04 | 中国人民解放军信息工程大学 | 一种异构系统中多gpu互连体系结构 |
CN103902502A (zh) * | 2014-04-09 | 2014-07-02 | 上海理工大学 | 一种可扩展的分离式异构千核系统 |
CN104035751A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828841A (zh) * | 2019-01-21 | 2019-05-31 | 南京航空航天大学 | 一种cfd并行计算方法 |
CN111186139A (zh) * | 2019-12-25 | 2020-05-22 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
CN111186139B (zh) * | 2019-12-25 | 2022-03-15 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
CN112199885A (zh) * | 2020-09-09 | 2021-01-08 | 北京达佳互联信息技术有限公司 | 一种分布式模型训练系统及应用方法 |
CN112199885B (zh) * | 2020-09-09 | 2021-07-06 | 北京达佳互联信息技术有限公司 | 一种分布式模型训练系统及应用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Keuper et al. | Distributed training of deep neural networks: Theoretical and practical limits of parallel scalability | |
CN107018184A (zh) | 分布式深度神经网络集群分组同步优化方法及系统 | |
CN108304918B (zh) | 一种数据并行的深度学习的参数交换方法和系统 | |
CN109299781A (zh) | 基于动量和剪枝的分布式深度学习系统 | |
CN110245743A (zh) | 一种异步分布式深度学习训练方法、装置及系统 | |
Cheung et al. | A large-scale spiking neural network accelerator for FPGA systems | |
CN108416436A (zh) | 使用多核心处理模块进行神经网络划分的方法及其系统 | |
WO2016119429A1 (zh) | 用于神经网络中训练参数集的系统和方法 | |
CN107330516A (zh) | 模型参数训练方法、装置及系统 | |
CN111353582A (zh) | 一种基于粒子群算法的分布式深度学习参数更新方法 | |
CN107122248A (zh) | 一种存储优化的分布式图处理方法 | |
CN110942138B (zh) | 一种混合内存环境下深度神经网络的训练方法和系统 | |
KR20130090147A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN110321997A (zh) | 高并行度计算平台、系统及计算实现方法 | |
Zhan et al. | Pipe-torch: Pipeline-based distributed deep learning in a gpu cluster with heterogeneous networking | |
CN106846236A (zh) | 一种可扩展的分布式gpu加速方法及装置 | |
CN104360896A (zh) | 一种基于gpu集群的并行流体仿真加速方法 | |
CN109635922A (zh) | 一种分布式深度学习参数量化通信优化方法及系统 | |
CN114418129B (zh) | 一种深度学习模型训练方法及相关装置 | |
CN107729995A (zh) | 用于加速神经网络处理器的方法和系统及神经网络处理器 | |
CN107844829A (zh) | 用于加速神经网络处理器的方法和系统及神经网络处理器 | |
CN103106253A (zh) | 一种MapReduce计算模型中基于遗传算法的数据平衡方法 | |
CN109657794A (zh) | 一种基于指令队列的分布式深度神经网络性能建模方法 | |
CN116362327A (zh) | 一种模型训练方法、系统及电子设备 | |
CN117785490B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170613 |
|
RJ01 | Rejection of invention patent application after publication |