一种训练装置的制作方法

文档序号:16432629发布日期:2018-12-28 20:15阅读:153来源:国知局
一种训练装置的制作方法

本公开涉及人工智能技术领域,尤其涉及一种稀疏训练装置。

背景技术

深度神经网络是目前许多人工智能应用的基础,其在语音识别、图像处理、数据分析、广告推荐系统、汽车自动驾驶等多方面得到了突破性的应用,使得深度神经网络被应用在了生活的各个方面。但是,深度神经网络的运算量巨大,一直制约着其更快速的发展和更广泛的应用。当考虑运用加速器设计来加速深度神经网络的运算时,巨大的运算量,必然会带了很大的能耗开销,同样制约着加速器的进一步的广泛应用。

在神经网络的运算中,主要包括两部分,正向推测和反向训练。然而对于现有的加速器来说,大多都只支持正向推测部分,而没有考虑反向训练部分于是,这也带来了一个问题就是,加速器只能够加速正向推测部分,无法加速反向训练部分,也就无法完成神经网络的整个训练过程,具有明显的局限性。



技术实现要素:

(一)要解决的技术问题

为了解决或者至少部分缓解上述技术问题,本公开提供了一种稀疏训练装置。本公开稀疏训练装置,可以支持稀疏或稠密的神经网络的正向推测部分,也可以加速反向训练部分,能够用于整个神经网络的训练流程加速。

(二)技术方案

根据本公开的一个方面,提供了一种训练装置,包括:

数据处理模块,用于对输入数据进行压缩或扩展;以及,

运算模块,与所述数据处理模块连接,用于接收所述数据处理模块处理后的数据进行运算。

在一些实施例中,所述数据处理模块包括:

数据压缩单元,用于根据一压缩判断条件对输入数据进行压缩;

以及数据扩展单元,用于根据一扩展判断条件对输入数据进行扩展。

在一些实施例中,所述数据扩展单元,用于对输入数据进行扩展,其将压缩的稀疏的数据扩展为非压缩格式。

在一些实施例中,所述压缩判断条件及扩展判断条件包括阈值判断条件或函数映射判断条件。

在一些实施例中,所述阈值判断条件,包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

在一些实施例中,所述数据压缩单元根据数据的稀疏索引值对输入数据进行筛选和压缩,得到待运算的数据;或根据数据本身的值进行判断,从而筛选并压缩得到符合所述压缩判断条件的数值。

在一些实施例中,所述数据压缩单元根据突触数据的稀疏索引值对输入的神经元数据进行筛选和压缩,得到待运算的神经元数据,或根据神经元数据的稀疏索引值对输入的突触数据进行筛选和压缩,得到待运算的突触数据。

在一些实施例中,所述数据压缩单元根据突触本身的值与一给定阈值相比较,筛选并压缩得到绝对值不小于给定阈值的突触数据,或根据神经元本身的值与一给定阈值相比较,筛选并压缩得到绝对值不小于给定阈值的神经元数据。

在一些实施例中,所述数据处理模块还用于根据一梯度值判断条件确定是否将梯度值及待运算的数据发送至运算模块。

在一些实施例中,所述梯度值判断条件包括阈值判断条件或函数映射判断条件。

在一些实施例中,所述阈值判断条件,包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

在一些实施例中,若经数据处理模块判断确定神经元梯度值的绝对值小于给定阈值,则将梯度值和对应的待运算的突触压缩,即不发送运算模块进行运算;否则,若梯度值的绝对值不小于给定阈值,则将梯度值和对应的待运算的突触发送至运算模块中进行运算。

在一些实施例中,若突触以稀疏形式存储,则在输入运算模块运算之前,由所述数据处理模块对突触和突触索引值进行扩展,转换成非稀疏模式。

在一些实施例中,所述运算模块包括:

第一运算单元,其包括多个pe,每个pe包括乘法器和/或加法器,用于完成乘法、加法或乘加运算;

第二运算单元,其包括两组加法树,每组加法树包括多个加法树,用于完成累加运算;以及

第三运算单元,其包括alu。

在一些实施例中,所述第一运算单元包括m*n个pe,每个pe包括一乘法器和一加法器;所述第二运算单元包括两组加法树,一组包括m个n输入的加法树,另一组包括n个m输入的加法树;所述第三运算单元包括max(m,n)个alu;其中,m和n均为正整数。

在一些实施例中,在运算模块中,所述第一运算单元用于完成梯度值和突触的乘法操作,即将突触和对应的梯度值进行一一对应相乘,所述第二运算单元利用加法树将同一列待累加的数据进行累加;若该累加结果不是最终需要的累加结果,即累加操作尚未完成,则跳过第三运算单元,将该中间结果保存在缓存中,等待下次一并累加;否则,由第三运算单元中的alu完成后续运算。

在一些实施例中,若上一层存在激活函数,则所述第三运算单元还用于将该累加结果和所述激活函数的反函数相乘,得到最终的梯度值。

在一些实施例中,所述第三运算单元还用于根据一置零判断条件对所述梯度值进行置零设置。

在一些实施例中,所述置零判断条件为阈值判断条件,若梯度值的绝对值小于置零阈值,则将该梯度值置0;否则梯度值保持不变。

在一些实施例中,还包括:

存储模块,用于存储数据;

控制模块,用于存储和发出指令,从而控制所述存储模块、数据控制模块及运算模块。

根据本公开的另一个方面,提供了一种芯片,其包括所述的训练装置。

根据本公开的另一个方面,提供了一种芯片封装结构,其包括所述的芯片。

根据本公开的另一个方面,提供了一种板卡,其包括所述的芯片封装结构。

根据本公开的另一个方面,提供了一种电子装置,其包括所述的板卡。

(三)有益效果

从上述技术方案可以看出,本公开稀疏训练装置至少具有以下有益效果其中之一:

(1)本公开稀疏训练装置,可有效加速反向训练部分,大大提高了训练速度,降低了训练功耗。

(2)通过对数据进行扩展或压缩,降低了训练功耗。

(3)同时,本公开稀疏序列装置可很好的支持稀疏或稠密的神经网络的正向推测部分,从而能够用于整个神经网络的训练流程加速。

(4)在反向训练的时,通过增加梯度值判断条件、置零判断条件,从而进一步的提高了运算的有效性,提高了运算速度。

附图说明

图1是根据本公开稀疏训练装置功能模块图。

图2是根据本公开运算模块结构示意图。

图3是根据本公开运算模块另一结构示意图。

图4是根据本公开数据处理模块结构示意图。

图5是根据本公开数据稀疏处理过程示意图。

图6是根据本公开数据稀疏处理过程另一示意图。

图7是根据本公开数据扩展处理过程示意图。

图8是根据本公开运算模块另一结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。

需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。

本公开主要提出了一种神经网络稀疏训练装置,能够支持神经网络的整个训练过程。如图1所示,所述稀疏训练装置包括控制模块、存储模块、数据处理模块和运算模块。

其中,控制模块主要用于存储指令、发射指令,从而调控存储模块、数据控制模块及运算模块,使其稀疏训练装置整体上能够协调有序的合作。

存储模块主要用于存储数据,包括运算过程中的待运算的神经元数据、突触数据、中间结果数据、最终结果数据以及运算中需要的其他相关参数等。

数据处理模块主要用于通过对待运算数据进行处理筛选,根据一定的判断条件选择出需要输入运算模块进行运算的数据。

运算模块主要用于进行神经网络运算,并将需要存储的中间结果数据和最终结果数据送回存储部分进行保存。

进一步的,运算模块,经过配合能够完成训练过程,具体的,如图2-3所示,所述运算模块包括多组运算单元,每组运算单元包括第一运算单元1、第二运算单元2、第三运算单元3。其中,所述第一运算单元包括多个pe,每个pe包括乘法器和/或加法器,用于完成乘法、加法或乘加运算。所述第二运算单元包括多个加法树,用于完成累加运算。所述第三运算单元包括alu,优选为轻量级的alu,也即包含所需功能的alu即可。运算模块用于完成包括乘方、激活、比较等一系列非线性运算以及单独的乘法、加法等基本运算。在实际运算中,可以根据实际需求,对所述第一运算单元、第二运算单元、以及第三运算单元进行流水线作业,也可选择跳过其中某个运算单元或某个运算单元的的某个运算部分,如在pooling层无需第二运算单元中的累加操作,则可以直接跳过。

如图4所示,所述数据处理模块包含数据压缩单元和数据扩展单元。其中,所述数据压缩单元根据一压缩判断条件对输入数据进行压缩;所述数据扩展单元,用于根据一扩展判断条件对输入数据进行扩展。所述压缩判断条件及扩展判断条件包括阈值判断条件或函数映射判断条件。所述阈值判断条件,包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

具体的,所述数据压缩单元用于对数据进行压缩,既可对神经元数据数据进行压缩,也可对突触数据进行压缩。更具体而言,当突触数据为稀疏表示的情况,其可以根据突触数据的稀疏索引值对输入的神经元进行筛选和压缩,筛选出待运算的“有效”神经元数据,和突触值一同送入后面的运算模块,进行运算。反之,当神经元数据为稀疏表示的情况,可以根据神经元数据的稀疏索引值对输入的突触数据进行筛选和压缩。

如图5所示,突触为稀疏表示的数据,神经元为稠密表示的数据,根据稀疏表示的突触的索引值来压缩神经元值,这里选用的稀疏表示方式中包含两个数组,第一个用来记录稀疏表示的突触值,另一个用来保存这些突触值对应的位置,即索引。不妨假定原数列的长度为8,那么根据索引值表示该稀疏表示的突触值分别位于原序列的第1、3、6、7的位置(起始位为0),用该组索引值可以筛选出神经元值中待做运算的数值应为位于第1、3、6、7位置的神经元,故将这些待做运算的神经元数据筛选出来,得到压缩后的神经元序列,即n1n3n6n7。而后,和稀疏表示的突触值一同在运算单元中进行运算。

另外,该数据压缩单元还可以根据数据本身的值进行判断,从而筛选并压缩得到符合压缩判断条件的数值,传入后面的运算模块进行运算。以阈值判断条件为例,所述数据压缩单元可根据突触本身的值与一给定阈值相比较,筛选并压缩得到绝对值不小于给定阈值的突触数据,也可根据神经元本身的值与一给定阈值相比较,筛选并压缩得到绝对值不小于给定阈值的神经元数据。

如图6所示,为本公开数据压缩单元根据数值本身进行压缩。不妨假定原序列长度为8,分别为35210741。给定一个压缩条件,即压缩掉小于3的数值,那么012均被压缩筛除。保留其他数据,组成压缩后的序列,即3574。

数据扩展单元用于对输入数据进行扩展,包括神经元数据及突触数据,即根据将原本压缩的稀疏的数据进行扩展为非压缩格式。

具体的,如图7所示,为根据本公开数据扩展单元对稀疏表示的突触数据进行扩展。其中选用的稀疏表示方式中包括两个数组,第一个数组用来记录稀疏表示的突触值,另一个数组用来保存这些突触值对应的位置,即索引。不妨假定原数列的长度为8,那么根据索引系序列中每一位对应原序列中的1个数字,1表示原序列值有效,即不为0,0表示原序列值为0,那么这里表示该稀疏表示的突触值分别位于原序列的第1、3、6、7的位置(起始位为0)。用该组索引值依次将突触值填原来的位置,其他位置为0,由此即可得到扩展后的非压缩序列。

若数据无需压缩或者扩展时,可以跳过该数据处理模块,直接由存储模块传递给运算模块进行运算。

在本公开的一实施例中,如图8所示,所述第一运算单元1包括m*n个pe,每个pe包括一个乘法器和一个加法器。所述第二运算单元2包括两组加法树,一组包括m个n输入的加法树,一组包括n个m输入的加法树。所述第三运算单元3包括max(m,n)(即取m、n中较大者)个轻量级alu,即alu只包含运算所需的运算部件即可。本领域技术人员可以理解的是,所述第二运算单元2也可以包含一组加法树,包含max(m,n)个加法树,只需要相应的增加数据传输连线,完成相同的运算。

下面以稀疏卷积神经网络的卷积层为例介绍本公开稀疏训练装置用于反向训练流程的加速。在反向训练的时,假设输入下层传来的梯度值gradient,正向推测时的突触为w,对应的稀疏索引为index,正向推测时的输入神经元值为input。

需要说明的是,在反向训练时,所述数据处理模块根据梯度值判断条件确定是否将梯度值及待运算的数据发送至运算模块。所述梯度值判断条件包括阈值判断条件或函数映射判断条件。所述阈值判断条件,包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外。

首先,更新上一层的神经元梯度值gradient’。控制模块发出取数指令读取梯度值gradient和相应的突触w后,送入数据处理模块的数据压缩单元对其进行筛选压缩处理。如果gradient的绝对值小于给定阈值,那么将gradient和对应需要运算的突触跳过,即不送入运算模块进行运算;否则,如果gradient值的绝对值不小于给定阈值,则和相应的突触w一并送入运算模块中进行运算。另外,如果突触w以稀疏形式保存的,为便于对神经元的梯度值的累加,那么需要送入运算部分之前,将w和index一同送入数据处理模块的数据扩展单元对其进行扩展,变成非稀疏模式,而后再和gradient一同送入运算模块中进行运算。在运算模块中,首先将梯度值和突触送入所述第一运算单元1中,完成梯度值和突触的乘法操作,即将w和对应的gradient进行一一对应相乘,而后送入该列对应的第二运算单元2中的加法树中,利用加法树将同一列待累加的数据进行累加。如果该累加结果不是最终需要的累加结果,即累加操作尚未完成,则跳过所述第三运算单元3,将该中间结果保存,等待下次一并累加;否则,送入对应的所述第三运算单元3中的alu完成后续运算。如果上一层有激活函数,那么在所述第三运算单元3中将该累加结果和激活函数的反函数相乘。得到最终的gradient’。

另外,所述alu可用于根据一置零判断条件对梯度值进行置零设置。以置零阈值判断条件作为所述置零判断条件为例,如果此时用户提供了置零阈值,那么在所述第三运算单元3中进行判断,如果该gradient’的绝对值小于该置零阈值,则gradient’=0。否则不变。将结果写回到存储模块存储。其中,置零阈值还可以为其他判断条件,如函数映射等,当gradient’满足给定的判断条件,则将gradient’置零保存,否则保存原值。

而后,更新突触。控制模块发出取数指令读取出神经元数据input,突触w对应的索引数据index,读取梯度值gradient后,送入数据处理部分中的数据压缩单元对其进行压缩处理,即根据index对input进行相应的压缩,而后送入运算模块中进行运算。对于每一组运算单元中,首先将梯度值gradient和原神经元数据input送入第一运算单元1中,完成乘法操作,即将input和对应的gradient进行一一对应相乘,而后送入第二运算单元2中,利用加法树将同一行待累加的数据进行累加。如果该累加结果不是最终需要的累加结果,即累加操作尚未完成,则跳过第三运算单元3,将该中间结果保存,等待下次一并累加;否则,送入对应的第三运算单元3中的alu中进行后续运算。第三运算单元3接收该累加数据,除以和该突触相连的gradient的个数,得到该突触的更新量。将该更新量与学习率相乘,保存至存储模块。而后,从存储模块中读取出突触w和突触更新量,送入运算模块的第一运算单元1中完成单独的加法操作,因为无需进行其他的累加和非线性运算,故可以直接跳过第二运算单元2和第三运算单元3,保存更新后的突触数据。

本公开稀疏训练装置也可以支持稀疏或稠密的神经网络的正向推测部分,流程类似于更新突触的流程。由此本公开稀疏训练装置能够用于加速整个神经网络的训练流程。

下面以稀疏卷积神经网络的全连接层为例介绍本公开稀疏训练装置用于反向训练流程的加速。在反向训练的时候,假设输入下层传来的梯度值gradient,正向推测时的突触为w,对应的稀疏索引为index,正向推测时的输入神经元值为input。

首先,更新上一层的梯度值gradient’。控制模块发出取数指令读取梯度值gradient和相应的突触w后,送入数据处理模块的数据压缩单元对其进行筛选压缩处理。不妨假定这里给定某判断阈值,如果gradient的绝对值小于给定阈值,那么将gradient和对应需要运算的突触跳过,即不送入运算模块进行运算;否则,如果gradient值的绝对值不小于给定阈值,则和相应的突触w一并送入运算模块中进行运算。此处的判断阈值还可以为其他条件,如给定判断范围,给定函数映射等,等满足给定的条件时,则将gradient及对应需要运算的突触跳过。如果突触w以稀疏形式保存的,那么需要送入运算模块之前,将w和index一同送入数据处理模块的数据扩展单元对其进行扩展,变成非稀疏模式,而后再和gradient一同送入运算模块中进行运算。在运算模块中,首先将数据送入第一运算单元1中,完成梯度值和突触的乘法操作,即将w和对应的gradient进行一一对应相乘,而后送入该列对应的第二运算单元2中的加法树中,利用加法树将同一列待累加的n个数据进行累加。如果该累加结果不是最终需要的累加结果,即累加操作尚未完成,则跳过第三运算单元3,将该中间结果保存,等待下次一并累加;否则,送入对应的第三运算单元3中的alu完成后续运算:如果上一层有激活函数,那么在第三运算单元3中将该累加结果和激活函数的反函数相乘,得到最终的gradient’。如果此时用户提供了置零阈值,那么在第三运算单元3中进行判断,如果该gradient’的绝对值小于该置零阈值,则gradient’=0。否则不变。将结果写回到存储模块存储。其中置零阈值还可以为其他判断条件,如函数映射等,当gradient’满足给定的判断条件,则将gradient’置零保存,否则保存原值。

而后,更新突触。控制模块发出取数指令读取出神经元数据input,突触w对应的索引数据index,读取梯度值gradient后,送入数据处理模块中的数据压缩单元对其进行压缩处理,即根据突触索引数据index对输入神经元input进行相应的压缩。而后送入运算模块中进行运算。对于每一组运算单元中,首先数据送入第一运算单元1中,完成乘法操作,即将input和对应的gradient进行一一对应相乘,得到突触更新量,再次乘以学习率,而后,和pe接收的从存储模块传来的原来的突触相加后,直接得到新的突触w。而后跳过第二运算单元2和第三运算单元3,保存回存储模块即可。

另外,虽然上述实施例中是通过给定阈值进行梯度值判断,但本公开梯度值判断条件并不限于阈值判断条件,还可以为函数映射判断条件,所述阈值判断条件可包括:小于一给定阈值,大于一给定阈值,在一给定取值范围内或在一给定取值范围外等;且本公开中梯度值判断条件,与压缩判断条件及扩展判断条件,可以采用相同的判断条件(例如均采用阈值判断,阈值大小的选取同样可相同也可不同),也可以采用不同的判断条件(例如分别为阈值判断和映射判断,具体的阈值和映射关系也可以各不相同),均不影响本公开的实现。

本公开稀疏训练装置也可以支持稀疏或稠密的神经网络的正向推测部分,流程类似于更新突触的流程。由此本公开稀疏训练装置能够用于加速整个神经网络的训练流程。另外,本公开稀疏训练装置并不限于用于神经网络的全连接层及卷积层,也可以应用于其他层,均不影响本公开的实现。

本公开稀疏训练装置所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,dna计算机。

在一个实施例里,本公开公开了一个芯片,其包括了上述神经网络训练装置。

在一个实施例里,本公开公开了一个芯片封装结构,其包括了上述芯片。

在一个实施例里,本公开公开了一个板卡,其包括了上述芯片封装结构。

在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡。

所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1