CN111160535A - 基于Hadoop的DGCNN模型加速方法 - Google Patents
基于Hadoop的DGCNN模型加速方法 Download PDFInfo
- Publication number
- CN111160535A CN111160535A CN201911412304.8A CN201911412304A CN111160535A CN 111160535 A CN111160535 A CN 111160535A CN 201911412304 A CN201911412304 A CN 201911412304A CN 111160535 A CN111160535 A CN 111160535A
- Authority
- CN
- China
- Prior art keywords
- thread
- weight
- hadoop
- network
- feature matrix
- 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
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000001133 acceleration Effects 0.000 title claims abstract description 37
- 239000011159 matrix material Substances 0.000 claims abstract description 80
- 230000008859 change Effects 0.000 claims abstract description 57
- 210000002569 neuron Anatomy 0.000 claims abstract description 57
- 238000012549 training Methods 0.000 claims abstract description 47
- 238000004364 calculation method Methods 0.000 claims abstract description 39
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims description 56
- 230000008569 process Effects 0.000 claims description 34
- 239000000463 material Substances 0.000 claims description 28
- 238000005070 sampling Methods 0.000 claims description 16
- 238000000354 decomposition reaction Methods 0.000 claims description 9
- 239000013598 vector Substances 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 4
- 239000003638 chemical reducing agent Substances 0.000 claims description 3
- 238000002156 mixing Methods 0.000 claims description 3
- 230000009467 reduction Effects 0.000 claims description 3
- 238000013528 artificial neural network Methods 0.000 claims description 2
- 238000007781 pre-processing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 3
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 2
- 239000010931 gold Substances 0.000 description 2
- 229910052737 gold Inorganic materials 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000009396 hybridization Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010079 rubber tapping 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于Hadoop的DGCNN加速方法,其中,包括:利用MapReduce实现训练样本和计算答案初始位置与结束位置的并行化,分布式地存储在Hadoop平台的每个节点上,每个节点都存储一个相同的完整的卷积神经网络,对于各小块中的每一个样本,节点都执行一次前向传播和反向传播计算,得出各个权值和偏置的局部改变量以及位置信息,接着汇总每个权值和偏置的局部改变量从而得到全局改变量,多次用全局改变量更新权值之后,获得最终网络;使用CUDA进行特征矩阵、神经元以及权值的并行化,为每一层的特征矩阵启动一个线程格,线程块中每个线程对应一个神经元,使得神经元并行,在误差反向传播中,用一个线程对应一个权值,计算该权值的局部梯度改变量,使得权值并行。
Description
技术领域
本发明涉及云计算技术,特别涉及一种基于Hadoop的DGCNN模型加速方法。
背景技术
DGCNN全称Dilate Gated Convolutional Neural Network,即“膨胀门卷积神经网络”,基于CNN和简单的Attention机制,融合较新的膨胀卷积、门卷积,并增加了一些人工特征,最终使得模型在轻、快的基础上达到最佳的效果。DGCNN适用于WebQA式的任务,即“一个问题+多段材料”的格式,能够从多段材料中共同决策出问题的精准答案。DGCNN已经在多个数据集上证明其准确性。
DGCNN在训练模型的过程中,涉及到两轮卷积计算、两轮注意力机制整合序列信息以及一次位置向量计算,这些过程中包含大量矩阵和浮点数运算,使得DGCNN模型有较大的参数冗余,训练过程消耗了大量时间,使得训练模型对硬件成本以及时间成本要求较高。虽然现有的单机CPU+GPU系统很大程度上提高了卷积神经网络的运算速度,但是当面对TB级甚至PB级的海量数据时,由于处理器和存储器有限,仍然显得力不从心。
发明内容
本发明的目的在于提供一种基于Hadoop的DGCNN加速方法,用于解决上述现有技术的问题。
本发明一种基于Hadoop的DGCNN加速方法,其中,包括:利用MapReduce实现训练样本和计算答案初始位置与结束位置的并行化,将整个训练数据集和糅合了问题编码、位置向量和人工提取特征的卷积值分为多个小块,分布式地存储在Hadoop平台的每个节点上,每个节点都存储一个相同的完整的卷积神经网络,各个节点使用该节点存储的数据对网络进行训练以及求解答案位置,对于各小块中的每一个样本,节点都执行一次前向传播和反向传播计算,得出各个权值和偏置的局部改变量以及位置信息,接着汇总每个权值和偏置的局部改变量从而得到全局改变量,多次用全局改变量更新权值之后,获得最终网络,得到全局位置信息;使用CUDA进行特征矩阵、神经元以及权值的并行化,为每一层的特征矩阵启动一个线程格,线程格中线程块的数目大于等于特征矩阵数目,若线程块数目与线程图数目相等,则一个线程块对应一个特征矩阵;若线程块数目大于线程图数,将特征矩阵分为不重叠的小块,每个小块对应一个线程块,使得特征矩阵的并行,线程块中每个线程对应一个神经元,使得神经元并行,在误差反向传播中,用一个线程对应一个权值,计算该权值的局部梯度改变量,使得权值并行。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,对于训练数据集,需要对训练数据集进行预处理,包括去除停用词、降噪以及语句标注处理。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,进行训练样本的并行化,包括:采用主从结构基于数据并行的方式训练网络:从节点存储相同的网络结构和训练数据集中部分数据,各从节点并行使用本地存储的数据训练网络,计算出权值和偏置的局部梯度改变量之后做一次汇总,求得权值和偏置的全局梯度改变量,然后用全局梯度改变量更新权值和偏置,多次迭代至全体样本收敛或达到最大迭代次数。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,卷积神经网络MapReduce分解方法,包括:整体架构采用主从结构基于数据并行的方式训练网络:从节点存储相同的网络结构和训练数据集中部分数据,各从节点并行使用本地存储的数据训练网络,计算出权值和偏置的局部梯度改变量之后做一次汇总,求得权值和偏置的全局梯度改变量,然后用全局梯度改变量更新权值和偏置,多次迭代至全体样本收敛或达到最大迭代次数;CNN分解过程中,首先MapReduce模型的Mapper类首先调用Setup()函数,从分布式缓存中读取网络参数,包括网络层、各层神经元数及权值和偏置,并对网络进行初始化,然后调用map()函数接受键值对,经过前向传播和反向传播,计算出网络每一个权值w的局部梯度改变量,生成中间键值对,并将中间结果暂时存储在内存,达到设定值之后写入磁盘,对于每一个split,都将启动一个Map任务;然后用Reducer类执行Reduce任务,以网络中的权值和权值局部梯度改变量列表为输入,统计和求出权值和全局梯度改变量,将权值和权值全局梯度改变量以键值对的形式输出;对于每一个权值都启动一个Reduce任务;如果多次MapReduce任务之后,在规定误差范围内或者满足最大迭代次数,结束网络的训练过程。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,将MapReduce模型的分布式地存储到Hadoop平台,包括:在Hadoop平台中,主节点上的JobTracker负责任务的划分、调度以及失败任务的重新执行,各从节点上的TaskTracker负责卷积神经网络的前向传播、反向传播等计算;在计算开始之前,TaskTracker先从分布式缓存中读取网络参数信息并初始化网络,然后执行Map任务,从split小块中分离出类标号和样本值,接着样本值作为输入开始前向传播和误差反向传播,在反向传播中,计算出每个权值和偏置的局部改变量并输出,当所有训练样本计算完成之后,经过中间数据本地压缩及混排之后,JobTracker启动一个TaskTracker执行Reduce任务,汇总每一个权值以及偏置的局部梯度改变量得到权值以及偏置的全局改变量,然后对权值以及偏置做一次批处理更新并写入全局文件中;通过MapReduce编程模型将复杂的运行于云平台上的并行计算过程高度地抽象到map和reduce两个函数,map和reduce两个函数的功能是按一定的映射规则将输入的键值对转换成另一个或另一批输出键值对。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,在各个节点进行卷积运算时用卷积运算加速方法进一步加速计算过程,加快了矩阵乘法的时间,包括:
一个N*N的矩阵可以由一个N*1和一个1*N的矩阵相乘得到,通常,一次卷积运算产生的参数个数为:
input_channels×n×n×output_channels;
把卷积核大小分解成N*1和1*N之后,参数的个数就变为:
2×input_channels×n×output_channels。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,用CUDA方法并行化卷积神经网络的Attention前向传播,将每一个特征矩阵映射到一个线程块上,特征矩阵上的各个神经元映射到线程块上的各个线程上,用线程格的x,y,z三个维度分别对应到每层特征矩阵的宽、高以及数量上,在核函数的设置形式为:kernel<z,x,y>,该核函数启动了z个线程块,每个线程块包含x*y个线程,共启动了z*x*y个线程,由于一个线程块中线程数目最多为512,如果特征矩阵中神经元数目大于这个值,将特征矩阵分割,使用多个线程块对应一个特征矩阵。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,前向传播CUDA并行化包括:假设当前卷积层或子采样层有m个特征矩阵,每个特征矩阵的宽为fw,高为fh,那么核函数设置为kernel<m,fw,fh>,启动的线程数目与神经元数目相等并一一对应,使得每个线程计算一个神经元的输出;进行子采样层误差反向传播CUDA并行化包括:假设子采样层特征矩阵数目为m,特征矩阵大小为a*b,前层卷积层特征图数目也为m,特征矩阵大小为c*d,在计算偏置和权值的局部改变量的核函数设置为kernel<m,a,b>,计算前层神经元的输出误差的核函数设置为kernel<m,c,d>,首先并行计算出每个神经元的输入误差,接着使用每个线程块中的一个线程来计算该线程块对应偏执的局部梯度改变量,然后,每个线程读取对应神经元的输入误差并通过子采样窗口与千层神经元的输出求取乘积和,并保存在共享内存中,最后,使用线程块内的一个线程将共享内存中保存的数据累加即求的线程块对应的权值的局部梯度改变量;进行卷积层误差反向传播,包括:假设当前卷积层有n1个特征矩阵,特征矩阵大小为a*b,卷积窗口大小为kw×kh,前层子采样层有n2个特征矩阵,特征矩阵大小为c*d,为使得所有权值并行求得局部梯度改变量,计算权值的局部改变量的核函数设置为kernel<n1×n2,kw,kh>,线程数与卷积层权值个数相等,线程块数与权值矩阵数相等,每个线程块对应一个权值矩阵,在计算过程中,将权值矩阵对应的前层特征矩阵中神经元的输出和卷积层对应特征矩阵神经元的输入误差读入共享内存,计算千层神经元的输出误差的核函数设置为kernel<n2,c,d>,计算偏置的局部改变量的核函数。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,利用GPU进一步并行化map函数,加速其计算过程,在GPU加速的平台内,CPU负责I/O操作,GPU加速map()函数的运算过程,GPU运算结束后,在CPU的控制下将计算结果拷贝到内存,在Hadoop平台上,从节点在CPU线程中执行Map任务时,从单个CPU线程的计算来看,仍然相当于卷积神经网络在单机上串行执行,在GPU加速的异构Hadoop平台中,CPU负责控制和I/O操作,网络的特征矩阵、神经元和权值映射到线程块和线程上并行计算,达到加速运算的目的。
根据本发明的基于Hadoop的DGCNN加速方法的一实施例,其中,进行求位置信息的并行化包括:
训练数据集是把材料和问题分布到不同的节点上,接下来由各个节点分别求解每一段材料的答案位置信息,通过求出答案在材料中的起始位置与结束为止,而求解答案的位置信息,在不同节点上分别求出材料的答案位置之后,再根据各个材料的打分,求出问题的解。
本发明通过云计算利用多台机器并行处理数据,解决了单机处理器速度慢,无法处理大规模数据的问题。本发明提出了利用MapReduce并行化训练卷积神经网络的方法,并部署到Hadoop云计算平台,使得算法具有更快的速度。
附图说明
图1所示为基于Hadoop的DGCNN加速方法整体流程图;
图2所示为卷积神经网络的MapReduce并行化分解过程图;
图3为线程格与特征矩阵和神经元映射示意图;
图4为Hadoop平台数据流图;
图5为GPU并行加速Hadoop平台数据流图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图1所示为基于Hadoop的DGCNN加速方法整体流程图,如图1所示,基于Hadoop的DGCNN加速整体流程包括:利用Hadoop平台实现训练样本的并行性、特征矩阵的并行性、神经元的并行性、权值的并行性以及求答案位置的并行性;和使用CUDA(Compute UnifiedDevice Architecture)技术实现特征矩阵、神经元、权值的并行化。
(1)利用MapReduce实现训练样本和计算答案初始位置与结束位置的并行化,即将整个训练数据集和糅合了问题编码、位置向量和人工提取特征的卷积值分为一个一个小块,分布式地存储在Hadoop平台的每个节点上。每个节点都存储一个相同的完整的卷积神经网络,各个节点使用该节点存储的数据对网络进行训练以及求解答案位置。对于小块中的每一个样本,节点都执行一次前向传播和反向传播计算,得出各个权值和偏置的局部改变量以及位置信息,接着汇总每个权值和偏置的局部改变量从而得到全局改变量,多次用全局改变量更新权值之后,获得最终网络,也通过相同的方法汇总求得的局部位置信息从而得到全局位置信息。在这种并行方式中,训练数据集中所有的样本以及位置信息经过网络计算之后进行一次通信,因此这是一种“粗粒度”的并行方式,可以有效地减少平台中各个节点的通信开销,有利于在分布式网络环境下实现。
(2)使用CUDA技术实现了特征矩阵、神经元、权值的并行化。为每一层的特征矩阵启动一个线程格,线程格中线程块的数目大于等于特征矩阵数目。若线程块数目与线程图数目相等,则一个线程块对应一个特征矩阵;若线程块数目大于线程图数,可将特征矩阵分为不重叠的小块,每个小块对应一个线程块,这样就做到了特征矩阵的并行。线程块中每个线程对应一个神经元,这样就做到了神经元并行。在误差反向传播中,用一个线程对应一个权值,计算该权值的局部梯度改变量,这就实现了权值并行。
下面针对基于Hadoop的DGCNN加速方法的详细步骤进行介绍。
训练数据集包括:
首先需要对训练数据集进行预处理,包括去除停用词、降噪、语句标注等。由于DGCNN模型更多的是处理类似“问题-多文本”的问答系统的问题,所以数据格式应当形如:
<问题>社保缴纳多少年可以领养老金</问题>;
<答案>15年</答案>;
<材料1>最好不辞,交够15年到退休就可以领养老金了,如果有特殊原因非要辞,可以个人接着交</材料1>;
<材料2>您好!养老保险缴纳满15年。达到退休年龄可以领取养老金。</材料2>;
<材料3>在生活中,每个人都会缴纳社保,多少年可以领取退休金呢,在下文中为大家介绍</材料3>;
训练样本的并行化,包括:
(1)训练数据集拆分
卷积神经网络MapReduce并行分解的总体思路是在平台中采用主从结构基于数据并行的方式训练网络:从节点存储相同的网络结构和训练数据集中部分数据,各从节点并行使用本地存储的数据训练网络,计算出权值和偏置的局部梯度改变量之后做一次汇总,求得权值和偏置的全局梯度改变量,然后用全局梯度改变量更新权值和偏置,多次迭代至全体样本收敛或达到最大迭代次数。
图2所示为卷积神经网络的MapReduce并行化分解过程图,如图2所示,卷积神经网络MapReduce分解方法,包括:
执行Map任务的主题是Mapper类。Mapper类首先调用Setup()函数,从分布式缓存中读取网络参数,包括网络层、各层神经元数及权值和偏置,并对网络进行初始化。然后调用map()函数接受键值对,经过前向传播和反向传播,计算出网络每一个权值w的局部梯度改变量,生成中间键值对,并将中间结果暂时存储在内存,达到设定值之后写入磁盘。对于每一个split,都将启动一个Map任务。
执行Reduce任务的主体是Reducer类。类调用reduce()函数,以网络中的权值和权值局部梯度改变量列表为输入,统计、求出权值和全局梯度改变量。然后将权值和权值全局梯度改变量以键值对的形式输出。对于每一个权值都启动一个Reduce任务。
如果多次MapReduce任务之后,神经网络的权值变化已经很小,在规定误差范围内或者满足最大迭代次数,结束网络的训练过程。
(2)将MapReduce模型的训练部署到Hadoop平台
在Hadoop平台中,主节点上的JobTracker负责任务的划分、调度以及失败任务的重新执行,各从节点上的TaskTracker负责卷积神经网络的前向传播、反向传播等计算。在计算开始之前,TaskTracker先从分布式缓存中读取网络参数信息并初始化网络,然后执行Map任务,即从split小块中分离出类标号和样本值,接着样本值作为输入开始前向传播和误差反向传播。在反向传播中,计算出每个权值和偏置的局部改变量并输出。当所有训练样本计算完成之后,经过中间数据本地压缩及混排之后,JobTracker启动一个TaskTracker执行Reduce任务,即汇总每一个权值、偏置的局部梯度改变量得到权值、偏置的全局改变量,然后对权值、偏置做一次批处理更新并写入全局文件中。
MapReduce编程模型将复杂的运行于云平台上的并行计算过程高度地抽象到map和reduce两个函数,这两个函数的功能是按一定的映射规则将输入的键值对转换成另一个或另一批输出键值对,大大简化了编程的难度。使用MapReduce编程模型的任务必须符合一个基本要求:待处理的数据集可以分解成为多个互相独立的子数据集,并且每个子数据集完全可以并行地进行计算。
(3)将卷积层的训练数据进行卷积运算加速
此外,由于卷积运算的过程是两个矩阵相乘得到一个新的矩阵,在各个节点进行卷积运算时也可用如下的卷积运算加速方法进一步加速计算过程,从而加快了矩阵乘法的时间:
一个N*N的矩阵可以由一个N*1和一个1*N的矩阵相乘得到,通常,一次卷积运算产生的参数个数为:
input_channels×n×n×output_channels
这样的运算过程会产生大量的参数,为了把参数个数减少,我们把卷积核大小分解成N*1和1*N之后,参数的个数就变为
2×input_channels×n×output_channels
参数的数量与之前相比少了n/2倍,参数的个数减少了,计算资源的消耗也相应减少。同时要避免在接近输入卷积层的地方进行分解。同时,分接一个3*3的卷积核会影响网络的性能,应当在具有较大卷积核的地方进行分解,这样就可以更快的得到卷积运算结果。
利用GPU加速的方法包括:
在DGCNN中,对于训练数据集进行卷积计算既是对训练数据集进行了特征提取,之后通过Attention Encoder层要对得到的特征进行特征编码从而得到了问题的编码,之后将材料的词向量与问题编码拼接,再进行一次卷积运算与Attention Encoder就可以得到“问题-材料”的总编码,但是用传统的运算方法在此过程中会消耗大量的时间,本发明基于GPU和CUDA并行化技术对Attention Encoder过程进行加速。
图3为线程格与特征矩阵和神经元映射示意图,如图3所示,用CUDA技术并行化卷积神经网络的Attention前向传播过程,最直观的方法就是将每一个特征矩阵映射到一个线程块上,特征矩阵上的各个神经元映射到线程块上的各个线程上,即用线程格的x,y,z三个维度分别对应到每层特征矩阵的宽、高、数量上。在核函数的设置形式为:kernel<z,x,y>。该核函数启动了z个线程块,每个线程块包含x*y个线程,共启动了z*x*y个线程。由于一个线程块中线程数目最多为512。如果特征矩阵中神经元数目大于这个值,可以将特征矩阵分割,使用多个线程块对应一个特征矩阵。
(1)前向传播CUDA并行化
假设当前卷积层或子采样层有m个特征矩阵,每个特征矩阵的宽为fw,高为fh,那么核函数设置为kernel<m,fw,fh>,启动的线程数目与神经元数目相等并一一对应,使得每个线程计算一个神经元的输出。由于计算单元从片内共享内存读取数据的速度远远快于从全局内存读取数据的速度,因此将需要多次读取的数据线读入到片内共享内存。
(2)子采样层误差反向传播CUDA并行化
假设子采样层特征矩阵数目为m,特征矩阵大小为a*b,前层卷积层特征图数目也为m,特征矩阵大小为c*d。在计算偏置和权值的局部改变量的核函数设置为kernel<m,a,b>,计算前层神经元的输出误差的核函数设置为kernel<m,c,d>。首先并行计算出每个神经元的输入误差,接着使用每个线程块中的一个线程来计算该线程块对应偏执的局部梯度改变量。然后,每个线程读取对应神经元的输入误差并通过子采样窗口与千层神经元的输出求取乘积和,并保存在共享内存中。最后,使用线程块内的一个线程将共享内存中保存的数据累加即求的线程块对应的权值的局部梯度改变量。
(3)卷积层误差反向传播
假设当前卷积层有n1个特征矩阵,特征矩阵大小为a*b,卷积窗口大小为kw×kh。前层子采样层有n2个特征矩阵,特征矩阵大小为c*d。为使得所有权值并行求得局部梯度改变量,计算权值的局部改变量的核函数设置为kernel<n1×n2,kw,kh>。线程数与卷积层权值个数相等,线程块数与权值矩阵数相等,每个线程块对应一个权值矩阵。在计算过程中,将权值矩阵对应的前层特征矩阵中神经元的输出和卷积层对应特征矩阵神经元的输入误差读入共享内存。计算千层神经元的输出误差的核函数设置为kernel<n2,c,d>,计算偏置的局部改变量的核函数与子采样层的计算偏置局部改变量的核函数类似。
(4)整合了GPU加速的并行算法设计
在上文的并行计算算法中,计算量最大的是map()函数,所以利用GPU进一步并行化map函数,加速其计算过程。map()函数在Hadoop云计算平台和利用GPU加速的map()函数在异构Hadoop云计算平台上的数据流分别如图4和图5所示。图4为Hadoop平台数据流图;图5为GPU并行加速Hadoop平台数据流图。
在GPU加速的平台内,CPU负责I/O操作,GPU加速map()函数的运算过程,GPU运算结束后,在CPU的控制下将计算结果拷贝到内存。
在Hadoop平台上,从节点在CPU线程中执行Map任务时,从单个CPU线程的计算来看,仍然相当于卷积神经网络在单机上串行执行。在GPU加速的异构Hadoop平台中,CPU只负责控制和I/O操作,网络的特征矩阵、神经元和权值映射到线程块和线程上并行计算,达到加速运算的目的。
求位置信息的并行化包括:
在前面的训练构成中,DGCNN模型已经得到了“问题-材料”的总编码以及各个材料的打分,进而可以得到材料中问题答案位置的预测,对于求位置信息的并行化,数据集是把材料和问题分布到不同的节点上,接下来由各个节点分别求解每一段材料的答案位置信息,其中的部署到Hadoop平台、更新权值与步骤二中对问题求解问题编码的方法基本一致,所不同的是求解问题编码是对整个问题语句求其特征向量,而求解答案的位置信息只需求出答案在材料中的起始位置与结束为止。在不同节点上分别求出材料的答案位置之后,再根据各个材料的打分(视为权重),求出问题的解。
本发明通过云计算利用多台机器并行处理数据,解决了单机处理器速度慢,无法处理大规模数据的问题。本发明提出了利用MapReduce并行化训练卷积神经网络的方法,并部署到Hadoop云计算平台,使得算法具有更快的速度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种基于Hadoop的DGCNN加速方法,其特征在于,包括:
利用MapReduce实现训练样本和计算答案初始位置与结束位置的并行化,将整个训练数据集和糅合了问题编码、位置向量和人工提取特征的卷积值分为多个小块,分布式地存储在Hadoop平台的每个节点上,每个节点都存储一个相同的完整的卷积神经网络,各个节点使用该节点存储的数据对网络进行训练以及求解答案位置,对于各小块中的每一个样本,节点都执行一次前向传播和反向传播计算,得出各个权值和偏置的局部改变量以及位置信息,接着汇总每个权值和偏置的局部改变量从而得到全局改变量,多次用全局改变量更新权值之后,获得最终网络,得到全局位置信息;
使用CUDA进行特征矩阵、神经元以及权值的并行化,为每一层的特征矩阵启动一个线程格,线程格中线程块的数目大于等于特征矩阵数目,若线程块数目与线程图数目相等,则一个线程块对应一个特征矩阵;若线程块数目大于线程图数,将特征矩阵分为不重叠的小块,每个小块对应一个线程块,使得特征矩阵的并行,线程块中每个线程对应一个神经元,使得神经元并行,在误差反向传播中,用一个线程对应一个权值,计算该权值的局部梯度改变量,使得权值并行。
2.如权利要求1所述的基于Hadoop的DGCNN加速方法,其特征在于,对于训练数据集,需要对训练数据集进行预处理,包括去除停用词、降噪以及语句标注处理。
3.如权利要求1所述的基于Hadoop的DGCNN加速方法,其特征在于,基于MapReduce进行训练样本和卷积神经网络CNN模型训练过程的并行化,包括:
整体架构采用主从结构基于数据并行的方式训练网络:从节点存储相同的网络结构和训练数据集中部分数据,各从节点并行使用本地存储的数据训练网络,计算出权值和偏置的局部梯度改变量之后做一次汇总,求得权值和偏置的全局梯度改变量,然后用全局梯度改变量更新权值和偏置,多次迭代至全体样本收敛或达到最大迭代次数;
CNN分解过程中,首先MapReduce模型的Mapper类首先调用Setup()函数,从分布式缓存中读取网络参数,包括网络层、各层神经元数及权值和偏置,并对网络进行初始化,然后调用map()函数接受键值对,经过前向传播和反向传播,计算出网络每一个权值w的局部梯度改变量,生成中间键值对,并将中间结果暂时存储在内存,达到设定值之后写入磁盘,对于每一个split,都将启动一个Map任务;
然后用Reducer类执行Reduce任务,以网络中的权值和权值局部梯度改变量列表为输入,统计和求出权值和全局梯度改变量,将权值和权值全局梯度改变量以键值对的形式输出;对于每一个权值都启动一个Reduce任务;
如果多次MapReduce任务之后,在规定误差范围内或者满足最大迭代次数,结束网络的训练过程。
4.如权利要求3所述的基于Hadoop的DGCNN加速方法,其特征在于,将MapReduce模型的分布式地存储到Hadoop平台,包括:
Hadoop平台主节点上的JobTracker负责任务的划分、调度以及失败任务的重新执行,各从节点上的TaskTracker负责卷积神经网络的前向传播、反向传播等计算;在计算开始之前,TaskTracker先从分布式缓存中读取网络参数信息并初始化网络,然后执行Map任务,从split小块中分离出类标号和样本值,接着样本值作为输入开始前向传播和误差反向传播,在反向传播中,计算出每个权值和偏置的局部改变量并输出,当所有训练样本计算完成之后,经过中间数据本地压缩及混排之后,JobTracker启动一个TaskTracker执行Reduce任务,汇总每一个权值以及偏置的局部梯度改变量得到权值以及偏置的全局改变量,然后对权值以及偏置做一次批处理更新并写入全局文件中;通过MapReduce编程模型将复杂的运行于云平台上的并行计算过程高度地抽象到map和reduce两个函数,map和reduce两个函数的功能是按一定的映射规则将输入的键值对转换成另一个或另一批输出键值对。
5.如权利要求3所述的基于Hadoop的DGCNN加速方法,其特征在于,在各个从节点进行卷积运算时,用卷积运算加速方法进一步加速计算过程,加快矩阵乘法的时间,包括:
一个N*N的矩阵可以由一个N*1和一个1*N的矩阵相乘得到,通常,一次卷积运算产生的参数个数为:
input_channels×n×n×output_channels;
把卷积核大小分解成N*1和1*N之后,参数的个数就变为:
2×input_channels×n×output_channels。
6.如权利要求3所述的基于Hadoop的DGCNN加速方法,其特征在于,用CUDA方法并行化卷积神经网络的Attention前向传播,将每一个特征矩阵映射到一个线程块上,特征矩阵上的各个神经元映射到线程块上的各个线程上,用线程格的x,y,z三个维度分别对应到每层特征矩阵的宽、高以及数量上,在核函数的设置形式为:kernel<z,x,y>,该核函数启动了z个线程块,每个线程块包含x*y个线程,共启动了z*x*y个线程,由于一个线程块中线程数目最多为512,如果特征矩阵中神经元数目大于这个值,将特征矩阵分割,使用多个线程块对应一个特征矩阵。
7.如权利要求6所述的基于Hadoop的DGCNN加速方法,其特征在于,前向传播CUDA并行化包括:
假设当前卷积层或子采样层有m个特征矩阵,每个特征矩阵的宽为fw,高为fh,那么核函数设置为kernel<m,fw,fh>,启动的线程数目与神经元数目相等并一一对应,使得每个线程计算一个神经元的输出;
进行子采样层误差反向传播CUDA并行化包括:
假设子采样层特征矩阵数目为m,特征矩阵大小为a*b,前层卷积层特征图数目也为m,特征矩阵大小为c*d,在计算偏置和权值的局部改变量的核函数设置为kernel<m,a,b>,计算前层神经元的输出误差的核函数设置为kernel<m,c,d>,首先并行计算出每个神经元的输入误差,接着使用每个线程块中的一个线程来计算该线程块对应偏执的局部梯度改变量,然后,每个线程读取对应神经元的输入误差并通过子采样窗口与千层神经元的输出求取乘积和,并保存在共享内存中,最后,使用线程块内的一个线程将共享内存中保存的数据累加即求的线程块对应的权值的局部梯度改变量;
进行卷积层误差反向传播,包括:
假设当前卷积层有n1个特征矩阵,特征矩阵大小为a*b,卷积窗口大小为kw×kh,前层子采样层有n2个特征矩阵,特征矩阵大小为c*d,为使得所有权值并行求得局部梯度改变量,计算权值的局部改变量的核函数设置为kernel<n1×n2,kw,kh>,线程数与卷积层权值个数相等,线程块数与权值矩阵数相等,每个线程块对应一个权值矩阵,在计算过程中,将权值矩阵对应的前层特征矩阵中神经元的输出和卷积层对应特征矩阵神经元的输入误差读入共享内存,计算千层神经元的输出误差的核函数设置为kernel<n2,c,d>,计算偏置的局部改变量的核函数。
8.如权利要求6所述的基于Hadoop的DGCNN加速方法,其特征在于,利用GPU进一步并行化map函数,加速其计算过程,在GPU加速的平台内,CPU负责I/O操作,GPU加速map()函数的运算过程,GPU运算结束后,在CPU的控制下将计算结果拷贝到内存,在Hadoop平台上,从节点在CPU线程中执行Map任务时,从单个CPU线程的计算来看,仍然相当于卷积神经网络在单机上串行执行,在GPU加速的异构Hadoop平台中,CPU负责控制和I/O操作,网络的特征矩阵、神经元和权值映射到线程块和线程上并行计算,达到加速运算的目的。
9.如权利要求1所述的基于Hadoop的DGCNN加速方法,其特征在于,DGCNN模型位置向量计算过程中位置信息的并行化,包括:
训练数据集是把材料和问题分布到不同的节点上,接下来由各个节点分别求解每一段材料的答案位置信息,通过求出答案在材料中的起始位置与结束为止,而求解答案的位置信息,在不同节点上分别求出材料的答案位置之后,再根据各个材料的打分,求出问题的解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911412304.8A CN111160535B (zh) | 2019-12-31 | 2019-12-31 | 基于Hadoop的DGCNN模型加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911412304.8A CN111160535B (zh) | 2019-12-31 | 2019-12-31 | 基于Hadoop的DGCNN模型加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111160535A true CN111160535A (zh) | 2020-05-15 |
CN111160535B CN111160535B (zh) | 2024-01-30 |
Family
ID=70560010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911412304.8A Active CN111160535B (zh) | 2019-12-31 | 2019-12-31 | 基于Hadoop的DGCNN模型加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111160535B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112396016A (zh) * | 2020-11-26 | 2021-02-23 | 武汉宏数信息技术有限责任公司 | 一种基于大数据技术的人脸识别系统 |
CN112766609A (zh) * | 2021-02-05 | 2021-05-07 | 国网安徽省电力有限公司合肥供电公司 | 一种基于云计算的用电量预测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544528A (zh) * | 2013-11-15 | 2014-01-29 | 南京大学 | 一种基于Hadoop的BP神经网络分类方法 |
CN106383891A (zh) * | 2016-09-22 | 2017-02-08 | 重庆理工大学 | 一种基于深度哈希的医学图像分布式检索方法 |
CN109948457A (zh) * | 2019-02-26 | 2019-06-28 | 南京理工大学 | 基于卷积神经网络和cuda加速的实时目标识别算法 |
CN110032632A (zh) * | 2019-04-04 | 2019-07-19 | 平安科技(深圳)有限公司 | 基于文本相似度的智能客服问答方法、装置及存储介质 |
US20190279088A1 (en) * | 2016-11-29 | 2019-09-12 | Huawei Technologies Co., Ltd. | Training method, apparatus, chip, and system for neural network model |
-
2019
- 2019-12-31 CN CN201911412304.8A patent/CN111160535B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544528A (zh) * | 2013-11-15 | 2014-01-29 | 南京大学 | 一种基于Hadoop的BP神经网络分类方法 |
CN106383891A (zh) * | 2016-09-22 | 2017-02-08 | 重庆理工大学 | 一种基于深度哈希的医学图像分布式检索方法 |
US20190279088A1 (en) * | 2016-11-29 | 2019-09-12 | Huawei Technologies Co., Ltd. | Training method, apparatus, chip, and system for neural network model |
CN109948457A (zh) * | 2019-02-26 | 2019-06-28 | 南京理工大学 | 基于卷积神经网络和cuda加速的实时目标识别算法 |
CN110032632A (zh) * | 2019-04-04 | 2019-07-19 | 平安科技(深圳)有限公司 | 基于文本相似度的智能客服问答方法、装置及存储介质 |
Non-Patent Citations (4)
Title |
---|
张佳康;陈庆奎;: "基于CUDA技术的卷积神经网络识别算法" * |
王华利等: "基于深度卷积神经网络的快速图像分类算法" * |
陈旭: "基于融合架构的MapReduce模型与Hadoop加速策略研究" * |
马焕芳等: "基于MapReduce的卷积神经网络算法研究" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112396016A (zh) * | 2020-11-26 | 2021-02-23 | 武汉宏数信息技术有限责任公司 | 一种基于大数据技术的人脸识别系统 |
CN112396016B (zh) * | 2020-11-26 | 2021-07-23 | 武汉宏数信息技术有限责任公司 | 一种基于大数据技术的人脸识别系统 |
CN112766609A (zh) * | 2021-02-05 | 2021-05-07 | 国网安徽省电力有限公司合肥供电公司 | 一种基于云计算的用电量预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111160535B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11790212B2 (en) | Quantization-aware neural architecture search | |
CN110533183B (zh) | 流水线分布式深度学习中异构网络感知的任务放置方法 | |
EP3540652B1 (en) | Method, device, chip and system for training neural network model | |
US11507846B2 (en) | Representing a neural network utilizing paths within the network to improve a performance of the neural network | |
EP3158529B1 (en) | Model parallel processing method and apparatus based on multiple graphic processing units | |
US10169084B2 (en) | Deep learning via dynamic root solvers | |
US20220121903A1 (en) | Method of performing splitting in neural network model by means of multi-core processor, and related product | |
US20180039905A1 (en) | Large scale distributed training of data analytics models | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
CN110659725A (zh) | 神经网络模型的压缩与加速方法、数据处理方法及装置 | |
US20220172072A1 (en) | Representing a neural network utilizing paths within the network to improve a performance of the neural network | |
WO2021080873A1 (en) | Structured pruning for machine learning model | |
EP4035080A1 (en) | Pipelined neural network processing with continuous and asynchronous updates | |
US11295236B2 (en) | Machine learning in heterogeneous processing systems | |
CN111160535B (zh) | 基于Hadoop的DGCNN模型加速方法 | |
Lee et al. | Communication-efficient parallelization strategy for deep convolutional neural network training | |
CN106844024A (zh) | 一种自学习运行时间预测模型的gpu/cpu调度方法及系统 | |
CN108460453B (zh) | 一种用于ctc训练的数据处理方法、装置及系统 | |
CN110325984B (zh) | 在图形中进行层次社区检测的系统和方法 | |
Fan et al. | Model aggregation method for data parallelism in distributed real-time machine learning of smart sensing equipment | |
CN115688917A (zh) | 神经网络模型的训练方法、装置、电子设备及存储介质 | |
US20220129755A1 (en) | Incorporating a ternary matrix into a neural network | |
US20210125032A1 (en) | Method and system for distributed neural network training | |
Niu et al. | A Novel Distributed Duration-Aware LSTM for Large Scale Sequential Data Analysis | |
CN110956252A (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 |