CN106909971A - 一种面向多核计算环境的bp神经网络并行化方法 - Google Patents
一种面向多核计算环境的bp神经网络并行化方法 Download PDFInfo
- Publication number
- CN106909971A CN106909971A CN201710073067.1A CN201710073067A CN106909971A CN 106909971 A CN106909971 A CN 106909971A CN 201710073067 A CN201710073067 A CN 201710073067A CN 106909971 A CN106909971 A CN 106909971A
- Authority
- CN
- China
- Prior art keywords
- layer
- caching
- neural network
- training
- hidden
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Abstract
本发明提供了一种面向多核计算环境的BP神经网络并行化方法。包括:并行计算任务划分及映射方法;存储各层中间计算结果的缓存设置方法;BP神经网络的并行训练方法。所述对含P个计算单元的硬件平台,任务划分方法对将隐藏层和输出层计算任务整体组合成一个粒度更大任务,提高并行性;所述缓存设置方法,在一趟训练过程中,同一变量被上一个子任务访问后可用于下一个子任务,下一个子任务不会产生Cache缺失;所述BP神经网络训练方法中,样本分成K批进入网络训练,K值的设计综合计算平台的二级缓存大小,与缓存设置相结合,最大限度发挥硬件性能,适用于多核计算平台下的BP神经网络应用。
Description
技术领域
本发明涉及BP神经网络和高性能计算领域,特别涉及一种面向多核计算环境的BP神经网络并行化方法。
背景技术
人工神经网络(Artificial Neural Network,即ANN)由人脑神经元网络抽象而来,通过对自然神经网络的特性进行抽象和模拟完成信息分析和处理。BP神经网络算法是目前应用最广泛的神经网络模型之一,被成功应用于信息、生物和医学等领域的研究中。神经网络算法在面对庞大数据集或复杂网络结构时,网络训练时间长、训练速度慢,导致网络计算的整体效率下降,阻碍了BP神经网络的应用与发展。
在硬件进入多核时代后,串行计算方式已经无法充分利用多核硬件资源,只有并行化BP神经网络才能体现神经网络的价值。并行神经网络通常采用数据并行或结构并行方式。数据并行将训练样本集平均划分给不同的节点,每一个计算单元保存网络的完整结构和参数,多个计算单元对不同样本同时进行学习,在所有样本学习结束后,基于样本总误差对神经元权值进行调整。数据并行适合神经网络的训练阶段,但在输入变量数较大情况下仍然无法充分利用计算资源。在预测或分类阶段,数据并行也不能有效利用计算资源。
结构并行根据网络本身的结构特点,将网络中的神经元进行划分,交由不同的计算单元进行处理,计算单元之间需交换数据,实现网络训练的并行化。结构并行可最大限度利用计算资源,常采用按层或横向结构划分。按层划分将不同层级的计算任务分配给不同的计算单元,必要时可用结合流水技术,但这种方法需精心设计,否则易出现负载不均衡,影响效率提升。横向结构划分将整个网络横向划分,将各层的神经元分配给不同的计算单元,每个计算单元都包含输入层、隐藏层和输出层的一部分神经元。横向结构划分容易平衡负载,但同步过多,因此效率提升有限。
在高性能计算技术发展迅速情况下,如何提高BP神经网络的扩展性,使之能在训练和分类阶段均可充分利用硬件资源,能适用不同输入规模,缩短从输入到产生有效输出的时间,并行化方法尤为重要。
发明内容
为克服现有技术存在的缺点和不足,本发明针对多核计算环境的特点,提供了一种面向多核计算环境的BP神经网络并行化方法。
为了达到上述目的,本发明采用以下技术方案:
一种面向多核计算环境的BP神经网络并行化方法,包括下述步骤:
S1、并行计算任务划分及映射方法;
并行计算任务划分为:对含P个计算单元的硬件平台,将BP神经网络划分为P个初始任务和P个训练任务,每个训练任务贯穿输入层、各隐藏层和输出层,贯穿于正向计算和反向调整阶段;
所述的任务映射方法为:将一个计算任务映射到一个计算单元,设置最后一个计算单元为主计算单元;
S2、存储各层中间计算结果的缓存设置方法,使一趟训练过程中,同一变量被上一个子任务访问后可用于下一个子任务,不会产生二级缓存缺失;
S3、BP神经网络的并行训练方法,训练方法如下:
将训练过程分为M趟,每一趟训练中的样本分K批输入BP神经网络,一批样本完成正向计算后再执行反向调整,依次计算输出层校正误差、连接权值调整量部分和、阈值调整量部分和,计算各隐藏层校正误差、连接权值调整量部分和、阈值调整量部分和,K批样本完成训练后再根据输出层总体校正误差,利用连接权值调整量和阈值调整量反向实施各层的连接权值和阈值调整。
作为优选的技术方案,所述初始化任务包括:
BP神经网络初始化子任务,生成BP神经网络实例;
样本初始化处理子任务,将样本编码为BP神经网络的输入向量。
作为优选的技术方案,所述训练任务包括:
H个第i隐藏层正向计算子任务,其中H为整数,H表示为隐藏层数,1≤i≤H,计算第i隐藏层各神经元的输出;
输出层正向计算子任务,计算输出层各神经元输出和校正误差;
输出层反向计算子任务,计算输出层各神经元的连接权值调整量和阈值调整量;
H个第i隐藏层反向计算子任务,计算第i隐藏层各神经元的校正误差、连接权值调整量和阈值调整量。
作为优选的技术方案,步骤S2中
所述缓存设置方法具体包括下述步骤:
S21、共享的输入缓存1个,用于暂存在当前神经网络中训练的输入向量;
S22、输出缓存H+P个,用于暂存每批样本对神经元产生的计算输出,包括H个隐藏层共享输出缓存和P个输出层私有输出缓存;
S23、共享的连接权值缓存H+1个,用于暂存第i层到第i+1层连接权值,0≤i≤H;
S24、共享的阈值缓存H+1个,用于暂存第i层阈值向量,1≤i≤H+1;
S25、共享的校正误差缓存H+1个,用于暂存每趟训练中每批样本产生的校正误差,包括H个隐藏层共享校正误差缓存和1个输出层共享校正误差缓存;
S26、连接权值调整量缓存H+P个,用于暂存每趟训练中样本所产生的连接权值调整累加量,包括H个第i层到第i+1层共享的连接权值调整量缓存和P个第H隐藏层到输出层连接权值调整量缓存,主计算单元共享,其他计算单元私有,0≤i<H;
S27、阈值调整量缓存H+P个,用于暂存每趟训练中样本所产生的阈值调整累加量,包括H个隐藏层共享阈值调整量缓存和P个输出层阈值调整量缓存,主计算单元共享,其他计算单元私有;
S28、校正误差部分和缓存P个,用于暂存每批样本产生的校正误差和,主计算单元共享,其他计算单元私有。
作为优选的技术方案,所述的缓存有一部分采用双缓存机制,即当一个缓存区用于部分和计算时,另外一个用于保存上一趟的连接权值,采用双缓存机制的缓冲区包括:
所述第i层到第i+1层间共享的连接权值调整量缓存和连接权值采用双缓存机制,0≤i<H,第H隐藏层到输出层共享的连接权值缓存和主计算单元第H隐藏层到输出层共享的连接权值调整量缓存采用双缓存机制,当一个用于部分和计算时,另外一个用于保存上一趟的连接权值。
作为优选的技术方案,所述BP神经网络训练方法在隐藏层采用结构并行,一批样本被分成P个样本块,P个计算单元均分每个样本的神经元计算,每个样本块完成所有H个隐藏层的正向计算后开始下一个样本块,P个样本块连续处理。
作为优选的技术方案,所述BP神经网络训练方法在输出层采用数据并行,P个计算单元并行计算P个样本块在输出层的正向计算和反向调整,每个计算单元处理一个样本块。
作为优选的技术方案,所述BP神经网络训练方法中,K的取值综合计算平台的二级缓存大小,BP神经网络各连接权值、阈值、输出、校正误差、连接权值调整量和阈值调整量,使一趟训练过程变量占用的内存总和不超过二级缓存大小,减少缓存替换带来的开销。
作为优选的技术方案,所述BP神经网络训练方法,包括以下步骤:
S31、P个计算单元按照应用要求并行初始化训练样本集,构造各样本的BP神经网络输入向量;
S32、P个计算单元并行初始化各层的连接权值和阈值等参数以生成BP神经网络实例;
S33、对BP神经网络进行最多M趟并行训练,直到训练次数达到M趟或某趟训练时误差已经达到设定要求。
作为优选的技术方案,所述一趟BP神经网络的训练,包括以下步骤:
S331、开始第j轮训练,1≤j≤K,P个计算单元同时读取P个样本块的第一个块;
S332、H个隐藏层正向计算:对第i隐藏层,1≤i≤H,初始为1,P个计算单元分摊第i隐藏层神经元正向计算,将输出写入到第i隐藏层共享输出缓存,计算完一个块后各计算单元进入同步状态,同步后i加1并进入下一隐藏层正向计算,直到完成所有隐藏层的正向计算;
S333、读下一个样本块并做H个隐藏层的正向计算,直到连续完成P个样本块;
S334、输出层正向计算:P个计算单元并行处理P个样本块,每个计算单元负责一个样本块并处理一个完整的输出层计算,将结果写入计算单元输出层私有输出缓存;
S335、输出层反向调整,第H隐藏层权值误差计算:P个计算单元并行处理P个样本块,每个计算单元负责一个样本块,计算各样本对输出层各神经元所产生的校正误差并将结果写入输出层共享的校正误差缓存,计算局部产生的校正误差部分和并将结果写入校正误差部分和缓存,计算下一趟时第H隐藏层到输出层的连接权值调整量部分和并将结果写入连接权值调整量缓存,计算输出层阈值调整量部分和并将结果写入阈值调整量缓存,计算第H隐藏层对各样本的校正误差并将结果写入第H隐藏层共享的校正误差缓存,各计算单元完成计算后进入同步状态,同步后进入下一步;
S336、H-1个隐藏层反向调整计算:对第i隐藏层,1≤i<H,初始为H-1,P个计算单元分摊第i隐藏层到第i+1隐藏层连接权值调整量部分和计算并将结果写入第i隐藏层到第i+1隐藏层连接权值调整量缓存,P个计算单元分摊第i+1隐藏层阈值调整量部分和计算并将结果保存到第i+1隐藏层阈值调整量缓存,P个计算单元分摊第i隐藏层的校正误差计算并将结果写入第i隐藏层的校正误差缓存,各计算单元完成计算后进入同步状态,同步后i减1并进入相应隐藏层反向调整计算,直到i等于1时进入下一步;
S337、第1隐藏层反向调整计算:P个计算单元分摊输入层到第1隐藏层的连接权值调整量部分和计算并将结果写入输入层到第1隐藏层连接权值调整量缓存,P个计算单元分摊第1隐藏层阈值调整量部分和计算并将结果保存到第1隐藏层阈值调整量缓存,各计算单元完成计算后进入同步状态,同步后j加1,继续下一轮计算,直到完成所有K×P个样本块的计算;
S338、输出层反向计算结果归约:P个计算单元以求平均方式归约校正误差部分和、以求和方式归约第H隐藏层到输出层连接权值调整量部分和、以求和方式归约输出层阈值调整量部分和到主计算单元,主计算单元判断校正误差和是否小于期望误差,若小于期望误差,则结束网络训练,若网络误差大于期望误差,则判断网络训练次数是否达到最大学习次数,当网络训练次数达到最大学习次数时,结束网络训练,否则进入下一步;
S339、双缓存指针切换:主计算单元切换第i层到第i+1层间的连接权值缓存和连接权值调整量缓存指针,0≤i≤H,切换第i层的阈值缓存和阈值调整量缓存指针,1≤i≤H,完成后开始下一趟训练。
本发明与现有技术相比,具有如下优点和有益效果:
本发明对BP神经网络算法从任务划分、缓存设置和训练方法三方面进行并行优化,任务划分方法将隐藏层和输出层计算任务整体组合成一个粒度更大任务,提高并行性,缓存设置和训练方法使每批训练任务可在二级缓存中完成,减少缓存替换,最大限度发挥硬件性能,适用于多核计算平台下的BP神经网络应用。
附图说明
图1为本发明面向多核计算环境的BP神经网络各层输入及并行任务划分示意图;
图2为本发明BP神经网络并行训练算法流程图;
图3为BP神经网络初始化及正向计算第1隐藏层输出时用到的缓存示意图;
图4为正向计算第i+1隐藏层输出时需用到的缓存示意图;
图5为正向计算输出层输出时用到的缓存示意图;
图6为输出层反向调节时用到的缓存示意图;
图7为第i隐藏层反向调节时用到的缓存示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图和具体实施例对本发明作进一步的详细描述。
设可用计算单元数为P,处理器的二级共享缓存大小为C字节,记输入层为第0层,输入向量维度为N,BP神经网络最多H个隐藏层,其中第i隐藏层有Ti个神经元,输出层为H+1层,有TH+1个神经元,样本集大小为Q,最大训练趟数为M(P、N、H、i、Ti、TH+1、Q、M均为大于1的正常数)。
对含P个计算单元的硬件平台,BP神经网络训练划分为P个初始任务和P个训练任务,每个初始化任务包括:
子任务101:样本初始化处理子任务,按应用要求将样本集中的每个样本编码为输入向量,前个计算单元每个负责个样本,其他×P个计算单元负责个样本的初始化;
子任务102:BP神经网络初始化子任务,前个计算单元每个处理个输入层到第1隐藏层连接权值,其他个计算单元负责个输入层到第1隐藏层连接权值的初始化;前个计算单元每个处理个Ti层到Ti+1层连接权值初始化(1≤i≤H),其他个计算单元负责个Ti层到Ti+1层连接权值初始化(1≤i≤H);前个计算单元每个处理(1≤i≤H)个神经元阈值的初始化,其他个计算单元负责个神经元阈值的初始化,主计算单元处理TH+1个输出层神经元阈值的初始化;
图1为根据本发明面向多核计算环境的BP神经网络并行化方法实施的训练任务划分方案,P个任务中的每个任务均贯穿输入层、各隐藏层和输出层,贯穿于正向计算和反向调整阶段,每个任务被映射到一个计算单元,并设置最后一个计算单元为主计算单元,每个任务包括:
子任务201:隐藏层正向计算子任务,对给定第i隐藏层,前个计算单元每个处理个神经元,其他个计算单元负责个神经元的输出计算(1≤i≤H);
子任务202:输出层正向计算子任务,对指定输入,每个计算单元处理输出层所有神经元上的输出计算;
子任务203:输出层反向调整计算子任务,每个计算单元负责一个样本块在输出层产生的校正误差计算、第H隐藏层到输出层连接权值调整量部分和计算、输出层阈值调整量部分和计算;
子任务204:隐藏层误差计算子任务,对给定第i隐藏层,前个计算单元每个负责个第i隐藏层神经元校正误差计算,其余计算单元处理个第i隐藏层神经元校正误差计算(1≤i≤H);
子任务205:隐藏层反向连接权值部分和计算子任务,对给定第i隐藏层,前个计算单元每个负责个第Ti隐藏层到Ti+1隐藏层连接权值部分和计算,其余计算单元处理个第Ti隐藏层到Ti+1隐藏层连接权值部分和计算(1≤i<H);
子任务206:隐藏层神经元阈值调整量部分和计算子任务,对给定第i隐藏层,前个计算单元每个负责个神经元阈值调整量部分和计算,其余计算单元处理个神经元阈值部分和计算(1≤i≤H);
子任务207:输入层到第1隐藏层反向连接权值部分和计算子任务,前个计算单元每个负责个输入层到第1隐藏层连接权值部分和计算,其余计算单元处理个输入层到第1隐藏层连接权值部分和计算;
子任务208:P个计算单元的校正误差部分和、第H隐藏层到输出层连接权值部分和、输出层阈值调整量部分和归约。
图2为根据本发明面向多核计算环境的BP神经网络并行化方法实施例流程图,包括:
步骤101:并行初始化训练样本集,构造各样本的BP神经网络输入向量,每个计算单元执行子任务101;
步骤102:并行生成BP神经网络实例,对各层的连接权值和阈值赋初值,每个计算单元执行子任务102,令j=1;
步骤103:并行训练样本集Q中的样本,直到BP神经网络的输出误差小于期望误差或训练次数达到最大趟数M;
步骤103中,样本集产生的输入向量被分为P×K个输入向量块(K为大于1的正常数),若则前P×(K-1)个输入向量块大小为剩余的输入向量平均分成P个样本块。
步骤103中,其中C表示多个核共享的二级cache大小,c1表示网络参数及阈值所占字节数,c2表示输入向量被编码后单个分量占用字节数。
步骤103为一趟BP神经网络训练,其中每一趟BP神经网络的训练包括:
步骤1031:开始第j批样本训练(1≤j≤K),P个计算单元同时读取P个输入向量块中的第一个块,令i=1,p=1;
步骤1032:第i隐藏层输出计算,P个计算单元并行执行P个第i隐藏层子任务201,循环处理块p中的输入向量,计算第i隐藏层神经元的输出值,将输出写入第i隐藏层共享输出缓存;
步骤1033:同步,i=i+1,若i≤H,转步骤1032,否则进入下一步骤;
步骤1034:若p<P,p=p+1,读取第j批样本的第p个输入向量块,i=1,转步骤1032,否则进入下一步骤;
步骤1035:P个计算单元均分P个样本块,并行执行子任务202,将计算结果写入输出层共享输出缓存;
步骤1036:P个计算单元并行执行子任务203和204,各计算单元完成计算后进入同步状态,同步后进入下一步骤,包括:
步骤10361:P个计算单元并行执行子任务203,对各自块中样本比较网络实际输出与期望输出,计算各样本所产生的输出层校正误差,将计算结果写入输出层共享校正误差缓存,计算局部校正误差部分和,将结果写入输出层校正误差部分和缓存。
步骤10362:P个计算单元并行计算下一趟时第H隐藏层到输出层的连接权值调整量部分和,将结果写入各自的第H隐藏层到输出层连接权值调整量缓存,并行计算输出层阈值调整量部分和,将结果写入各自的输出层阈值调整量缓存,完成后同步;
步骤10363:令i=H,P个计算单元并行执行第H隐藏层子任务204,将结果写入第H隐藏层共享校正误差缓存,完成后同步;
步骤1037:令i=H,P个计算单元并行计算子任务204~108,各计算单元完成计算后执行同步,同步后i减1,继续步骤1037,i等于1时进入下一步骤,包括:
步骤10371:P个计算单元根据第i隐藏层校正误差,并行执行第i隐藏层子任务205,将计算结果写入第i-1隐藏层到第i隐藏层共享连接权值调整量缓存,并行执行第i隐藏层子任务206,将计算结果写入第i隐藏层共享阈值调整量缓存;
步骤10372:P个计算单元并行执行第i-1隐藏层子任务204,将计算结果写入第i-1隐藏层共享校正误差缓存,i=i-1;
步骤1038:P个计算单元并行执行第1隐藏层子任务207,将计算结果分别保存到输入层到第1隐藏层共享连接权值调整量缓存和第1隐藏层共享阈值调整量缓存,各计算单元完成计算后进入同步状态,同步后j加1,转步骤1031继续下一批样本计算,直到完成所有K×P个样本块的计算。
步骤1039:P个计算单元并行执行子任务208,以求平均方式归约局部校正误差部分和至主计算单元共享的校正误差部分和缓存,以求和方式归约第H隐藏层到输出层连接权值部分和至主计算单元对应的连接权值调整量缓存,以求和方式归约输出层神经元阈值调整量部分和至主计算单元共享的输出层阈值调整量缓存,主计算单元判断误差是否小于期望误差,若小于期望误差,则结束网络训练,若网络误差大于期望误差,继续判断网络训练次数是否达到最大学习次数,当网络训练次数达到最大学习次数时,结束网络训练,否则进入下一步;
步骤1040:主计算单元切换第i层到第i+1层间的连接权值缓存和连接权值调整量缓存指针(0≤i<H),切换第H层到输出层间的连接权值缓存和主计算单元的第H层到输出层间的连接权值调整量缓存指针,切换第i层的阈值缓存和阈值调整量缓存指针(1≤i≤H),切换输出层的阈值缓存和主计算单元的阈值调整量缓存指针,完成后开始下一趟训练。
图3~7为根据本发明面向多核计算环境的BP神经网络并行化方法实施的缓存示意图。图3为BP神经网络初始化及正向计算第1隐藏层输出时用到的缓存示意图,P个计算单元的初始化模块分摊各层的连接权值矩阵和阈值的初始化;P个计算单元的正向计算读输入层到第1隐藏层连接权值缓存、第1隐藏层阈值缓存和输入缓存,计算结果暂存到第1隐藏层共享的输出缓存。其中,输入缓存暂存P个输入向量块,大小为字节;输入层到第1隐藏层连接权值缓存大小为N×T1×c1字节;第1隐藏层阈值缓存大小为T1×c1;第1隐藏层共享输出缓存大小为
图4为正向计算第i+1隐藏层输出时需用到的缓存示意图(1≤i<H)。P个计算单元的隐藏层正向计算模块读第i隐藏层共享输出缓存、第i隐藏层到第i+1隐藏层连接权值缓存和第i+1隐藏层阈值缓存,并行计算第i+1隐藏层的输出并保存到第i+1隐藏层共享输出缓存。图中,第i隐藏层共享输出缓存大小为字节;第i层到第i+1隐藏层连接权值缓存大小为Ti×Ti+1×c1字节;第i隐藏层阈值缓存大小为Ti×c1;第i+1隐藏层共享输出缓存大小为
图5为正向计算输出层输出时用到的缓存示意图。P个计算单元的输出层正向计算模块读第H隐藏层共享输出缓存、第H隐藏层到输出层连接权值缓存和输出层阈值缓存,并行计算输出层输出并保存到各自私有的共享输出缓存。图中,第H隐藏层到输出层连接权值缓存大小为TH×TH+1×c1字节;输出层阈值缓存大小为TH+1×c1;每个计算单元的私有输出缓存大小为
图6为输出层反向调节时用到的缓存示意图。P个计算单元读私有的输出缓存数据,将计算出的各样本校正误差保存到共享误差缓存,将校正误差部分和保存到私有的校正误差部分和缓存(主计算单元共享),将第H隐藏层到输出层连接权值部分和保存到私有的连接权值调整量缓存(主计算单元共享),将输出层阈值调整量部分和保存到阈值调整量缓存。图中,输出层校正误差缓存大小为校正误差部分和缓存大小为TH+1×c1;第H隐藏层到输出层连接权值调整量缓存大小为TH×TH+1×c1;输出层阈值调整量缓存大小为TH+1×c1。
图7为第i隐藏层反向调节时用到的缓存示意图。P个计算单元读第i+1层的共享校正误差缓存(1≤i≤H),第i隐藏层共享输出缓存,第i-1到第i隐藏层连接权值缓存,计算第i隐藏层校正误差,将结果写入第i隐藏层校正误差缓存,计算第i隐藏层阈值调整量部分和,将结果写入第i隐藏层阈值调整量缓存,计算第i-1层到第i层的连接权值调整量部分和,将结果保存到第i-1层到第i隐藏层连接权值调整量缓存。图中,第i隐藏层校正误差缓存大小为第i-1隐藏层到第i隐藏层连接权值调整量缓存大小为Ti-1×Ti×c1;第i隐藏层阈值调整量缓存大小为Ti×c1。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种面向多核计算环境的BP神经网络并行化方法,其特征在于,包括下述步骤:
S1、并行计算任务划分及映射方法;
并行计算任务划分为:对含P个计算单元的硬件平台,将BP神经网络划分为P个初始任务和P个训练任务,每个训练任务贯穿输入层、各隐藏层和输出层,贯穿于正向计算和反向调整阶段;
所述的任务映射方法为:将一个计算任务映射到一个计算单元,设置最后一个计算单元为主计算单元;
S2、存储各层中间计算结果的缓存设置方法,使一趟训练过程中,同一变量被上一个子任务访问后可用于下一个子任务,不会产生二级缓存缺失;
S3、BP神经网络的并行训练方法,训练方法如下:
将训练过程分为M趟,每一趟训练中的样本分K批输入BP神经网络,一批样本完成正向计算后再执行反向调整,依次计算输出层校正误差、连接权值调整量部分和、阈值调整量部分和,计算各隐藏层校正误差、连接权值调整量部分和、阈值调整量部分和,K批样本完成训练后再根据输出层总体校正误差,利用连接权值调整量和阈值调整量反向实施各层的连接权值和阈值调整。
2.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述初始化任务包括:
BP神经网络初始化子任务,生成BP神经网络实例;
样本初始化处理子任务,将样本编码为BP神经网络的输入向量。
3.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述训练任务包括:
H个第i隐藏层正向计算子任务,其中H为整数,H表示为隐藏层数,1≤i≤H,计算第i隐藏层各神经元的输出;
输出层正向计算子任务,计算输出层各神经元输出和校正误差;
输出层反向计算子任务,计算输出层各神经元的连接权值调整量和阈值调整量;
H个第i隐藏层反向计算子任务,计算第i隐藏层各神经元的校正误差、连接权值调整量和阈值调整量。
4.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,步骤S2中
所述缓存设置方法具体包括下述步骤:
S21、共享的输入缓存1个,用于暂存在当前神经网络中训练的输入向量;
S22、输出缓存H+P个,用于暂存每批样本对神经元产生的计算输出,包括H个隐藏层共享输出缓存和P个输出层私有输出缓存;
S23、共享的连接权值缓存H+1个,用于暂存第i层到第i+1层连接权值,0≤i≤H;
S24、共享的阈值缓存H+1个,用于暂存第i层阈值向量,1≤i≤H+1;
S25、共享的校正误差缓存H+1个,用于暂存每趟训练中每批样本产生的校正误差,包括H个隐藏层共享校正误差缓存和1个输出层共享校正误差缓存;
S26、连接权值调整量缓存H+P个,用于暂存每趟训练中样本所产生的连接权值调整累加量,包括H个第i层到第i+1层共享的连接权值调整量缓存和P个第H隐藏层到输出层连接权值调整量缓存,主计算单元共享,其他计算单元私有,0≤i<H;
S27、阈值调整量缓存H+P个,用于暂存每趟训练中样本所产生的阈值调整累加量,包括H个隐藏层共享阈值调整量缓存和P个输出层阈值调整量缓存,主计算单元共享,其他计算单元私有;
S28、校正误差部分和缓存P个,用于暂存每批样本产生的校正误差和,主计算单元共享,其他计算单元私有。
5.根据权利要求4所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述的缓存有一部分采用双缓存机制,即当一个缓存区用于部分和计算时,另外一个用于保存上一趟的连接权值,采用双缓存机制的缓冲区包括:
所述第i层到第i+1层间共享的连接权值调整量缓存和连接权值采用双缓存机制,0≤i<H,第H隐藏层到输出层共享的连接权值缓存和主计算单元第H隐藏层到输出层共享的连接权值调整量缓存采用双缓存机制,当一个用于部分和计算时,另外一个用于保存上一趟的连接权值。
6.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述BP神经网络训练方法在隐藏层采用结构并行,一批样本被分成P个样本块,P个计算单元均分每个样本的神经元计算,每个样本块完成所有H个隐藏层的正向计算后开始下一个样本块,P个样本块连续处理。
7.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述BP神经网络训练方法在输出层采用数据并行,P个计算单元并行计算P个样本块在输出层的正向计算和反向调整,每个计算单元处理一个样本块。
8.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述BP神经网络训练方法中,K的取值综合计算平台的二级缓存大小,BP神经网络各连接权值、阈值、输出、校正误差、连接权值调整量和阈值调整量,使一趟训练过程变量占用的内存总和不超过二级缓存大小,减少缓存替换带来的开销。
9.根据权利要求1所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述BP神经网络训练方法,包括以下步骤:
S31、P个计算单元按照应用要求并行初始化训练样本集,构造各样本的BP神经网络输入向量;
S32、P个计算单元并行初始化各层的连接权值和阈值等参数以生成BP神经网络实例;
S33、对BP神经网络进行最多M趟并行训练,直到训练次数达到M趟或某趟训练时误差已经达到设定要求。
10.根据权利要求9所述的一种面向多核计算环境的BP神经网络并行化方法,其特征在于,所述一趟BP神经网络的训练,包括以下步骤:
S331、开始第j轮训练,1≤j≤K,P个计算单元同时读取P个样本块的第一个块;
S332、H个隐藏层正向计算:对第i隐藏层,1≤i≤H,初始为1,P个计算单元分摊第i隐藏层神经元正向计算,将输出写入到第i隐藏层共享输出缓存,计算完一个块后各计算单元进入同步状态,同步后i加1并进入下一隐藏层正向计算,直到完成所有隐藏层的正向计算;
S333、读下一个样本块并做H个隐藏层的正向计算,直到连续完成P个样本块;
S334、输出层正向计算:P个计算单元并行处理P个样本块,每个计算单元负责一个样本块并处理一个完整的输出层计算,将结果写入计算单元输出层私有输出缓存;
S335、输出层反向调整,第H隐藏层权值误差计算:P个计算单元并行处理P个样本块,每个计算单元负责一个样本块,计算各样本对输出层各神经元所产生的校正误差并将结果写入输出层共享的校正误差缓存,计算局部产生的校正误差部分和并将结果写入校正误差部分和缓存,计算下一趟时第H隐藏层到输出层的连接权值调整量部分和并将结果写入连接权值调整量缓存,计算输出层阈值调整量部分和并将结果写入阈值调整量缓存,计算第H隐藏层对各样本的校正误差并将结果写入第H隐藏层共享的校正误差缓存,各计算单元完成计算后进入同步状态,同步后进入下一步;
S336、H-1个隐藏层反向调整计算:对第i隐藏层,1≤i<H,初始为H-1,P个计算单元分摊第i隐藏层到第i+1隐藏层连接权值调整量部分和计算并将结果写入第i隐藏层到第i+1隐藏层连接权值调整量缓存,P个计算单元分摊第i+1隐藏层阈值调整量部分和计算并将结果保存到第i+1隐藏层阈值调整量缓存,P个计算单元分摊第i隐藏层的校正误差计算并将结果写入第i隐藏层的校正误差缓存,各计算单元完成计算后进入同步状态,同步后i减1并进入相应隐藏层反向调整计算,直到i等于1时进入下一步;
S337、第1隐藏层反向调整计算:P个计算单元分摊输入层到第1隐藏层的连接权值调整量部分和计算并将结果写入输入层到第1隐藏层连接权值调整量缓存,P个计算单元分摊第1隐藏层阈值调整量部分和计算并将结果保存到第1隐藏层阈值调整量缓存,各计算单元完成计算后进入同步状态,同步后j加1,继续下一轮计算,直到完成所有K×P个样本块的计算;
S338、输出层反向计算结果归约:P个计算单元以求平均方式归约校正误差部分和、以求和方式归约第H隐藏层到输出层连接权值调整量部分和、以求和方式归约输出层阈值调整量部分和到主计算单元,主计算单元判断校正误差和是否小于期望误差,若小于期望误差,则结束网络训练,若网络误差大于期望误差,则判断网络训练次数是否达到最大学习次数,当网络训练次数达到最大学习次数时,结束网络训练,否则进入下一步;
S339、双缓存指针切换:主计算单元切换第i层到第i+1层间的连接权值缓存和连接权值调整量缓存指针,0≤i≤H,切换第i层的阈值缓存和阈值调整量缓存指针,1≤i≤H,完成后开始下一趟训练。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710073067.1A CN106909971A (zh) | 2017-02-10 | 2017-02-10 | 一种面向多核计算环境的bp神经网络并行化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710073067.1A CN106909971A (zh) | 2017-02-10 | 2017-02-10 | 一种面向多核计算环境的bp神经网络并行化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106909971A true CN106909971A (zh) | 2017-06-30 |
Family
ID=59208433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710073067.1A Pending CN106909971A (zh) | 2017-02-10 | 2017-02-10 | 一种面向多核计算环境的bp神经网络并行化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909971A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446758A (zh) * | 2018-02-11 | 2018-08-24 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理方法 |
CN108491924A (zh) * | 2018-02-11 | 2018-09-04 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理装置 |
CN109409513A (zh) * | 2018-10-10 | 2019-03-01 | 广州市百果园信息技术有限公司 | 一种基于神经网络的任务处理方法及相关设备 |
CN109426553A (zh) * | 2017-08-21 | 2019-03-05 | 上海寒武纪信息科技有限公司 | 任务切分装置及方法、任务处理装置及方法、多核处理器 |
CN109739703A (zh) * | 2018-12-28 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 调错方法及相关产品 |
CN109976809A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 调度方法及相关装置 |
CN110058943A (zh) * | 2019-04-12 | 2019-07-26 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
CN110502330A (zh) * | 2018-05-16 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 处理器及处理方法 |
CN110597558A (zh) * | 2017-07-20 | 2019-12-20 | 上海寒武纪信息科技有限公司 | 一种神经网络任务处理系统 |
WO2020088370A1 (zh) * | 2018-11-01 | 2020-05-07 | 北京灵汐科技有限公司 | 一种众核系统及其数据处理方法和处理装置 |
CN111723900A (zh) * | 2019-03-18 | 2020-09-29 | 北京灵汐科技有限公司 | 一种基于众核处理器的神经网络的映射方法及计算设备 |
US10901815B2 (en) | 2017-06-26 | 2021-01-26 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
US11537843B2 (en) | 2017-06-29 | 2022-12-27 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
US11687467B2 (en) | 2018-04-28 | 2023-06-27 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
-
2017
- 2017-02-10 CN CN201710073067.1A patent/CN106909971A/zh active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726844B2 (en) | 2017-06-26 | 2023-08-15 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
US10901815B2 (en) | 2017-06-26 | 2021-01-26 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
US11537843B2 (en) | 2017-06-29 | 2022-12-27 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
CN110597558A (zh) * | 2017-07-20 | 2019-12-20 | 上海寒武纪信息科技有限公司 | 一种神经网络任务处理系统 |
US11656910B2 (en) | 2017-08-21 | 2023-05-23 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
CN109426553A (zh) * | 2017-08-21 | 2019-03-05 | 上海寒武纪信息科技有限公司 | 任务切分装置及方法、任务处理装置及方法、多核处理器 |
CN109976809A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 调度方法及相关装置 |
CN108491924B (zh) * | 2018-02-11 | 2022-01-07 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理装置 |
CN108491924A (zh) * | 2018-02-11 | 2018-09-04 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理装置 |
CN108446758B (zh) * | 2018-02-11 | 2021-11-30 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理方法 |
CN108446758A (zh) * | 2018-02-11 | 2018-08-24 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理方法 |
US11687467B2 (en) | 2018-04-28 | 2023-06-27 | Shanghai Cambricon Information Technology Co., Ltd | Data sharing system and data sharing method therefor |
CN110502330A (zh) * | 2018-05-16 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 处理器及处理方法 |
RU2771008C1 (ru) * | 2018-10-10 | 2022-04-25 | Биго Текнолоджи Пте. Лтд. | Способ и устройство для обработки задач на основе нейронной сети |
CN109409513A (zh) * | 2018-10-10 | 2019-03-01 | 广州市百果园信息技术有限公司 | 一种基于神经网络的任务处理方法及相关设备 |
WO2020088370A1 (zh) * | 2018-11-01 | 2020-05-07 | 北京灵汐科技有限公司 | 一种众核系统及其数据处理方法和处理装置 |
CN109739703A (zh) * | 2018-12-28 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 调错方法及相关产品 |
CN109739703B (zh) * | 2018-12-28 | 2020-01-17 | 中科寒武纪科技股份有限公司 | 调错方法及相关产品 |
CN111723900A (zh) * | 2019-03-18 | 2020-09-29 | 北京灵汐科技有限公司 | 一种基于众核处理器的神经网络的映射方法及计算设备 |
CN111723900B (zh) * | 2019-03-18 | 2023-10-20 | 北京灵汐科技有限公司 | 一种基于众核处理器的神经网络的映射方法及计算设备 |
CN110058943B (zh) * | 2019-04-12 | 2021-09-21 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
CN110058943A (zh) * | 2019-04-12 | 2019-07-26 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909971A (zh) | 一种面向多核计算环境的bp神经网络并行化方法 | |
CN106844294B (zh) | 卷积运算芯片和通信设备 | |
CN109976903A (zh) | 一种基于层宽内存分配的深度学习异构计算方法和系统 | |
CN106875011A (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
Seide et al. | On parallelizability of stochastic gradient descent for speech DNNs | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
CN108280514A (zh) | 基于fpga的稀疏神经网络加速系统和设计方法 | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
CN108416437A (zh) | 用于乘加运算的人工神经网络的处理系统及方法 | |
CN107194426A (zh) | 一种基于Spiking神经网络的图像识别方法 | |
KR20150016089A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN107742150A (zh) | 一种卷积神经网络的数据处理方法和装置 | |
CN107491811A (zh) | 用于加速神经网络处理器的方法和系统及神经网络处理器 | |
CN107784628A (zh) | 一种基于重建优化和深度神经网络的超分辨率实现方法 | |
CN112884149B (zh) | 一种基于随机敏感度st-sm的深度神经网络剪枝方法及系统 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN104103042B (zh) | 一种基于局部相似性和局部选择的非凸压缩感知图像重构方法 | |
CN110363704A (zh) | 融合形态及色彩的图像超分辨率重建模型构建及重建方法 | |
CN110069444A (zh) | 一种计算单元、阵列、模块、硬件系统及实现方法 | |
CN111861886A (zh) | 一种基于多尺度反馈网络的图像超分辨率重建方法 | |
CN109145107A (zh) | 基于卷积神经网络的主题提取方法、装置、介质和设备 | |
US20230127608A1 (en) | Image processing system and related image processing method for image enhancement based on region control and multiple processing branch | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN109615067B (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: 20170630 |
|
RJ01 | Rejection of invention patent application after publication |