处理装置和处理系统的制作方法

文档序号:16211775发布日期:2018-12-08 07:50阅读:120来源:国知局
处理装置和处理系统的制作方法

本公开涉及计算机领域,进一步涉及人工智能领域。

背景技术

神经网络(neuralnetwork)已经获得了非常成功的应用。但是随着我们设计更大规模,更深层次的神经网络,将引入更多的权值,而超大规模权值成为神经网络应用的一个巨大挑战。一方面,大规模的权值数据对存储提出了更高的要求,大量访存操作将带来巨大的访存能耗,另一方面,大量的权值对运算单元也提出更高要求,计算时间和计算能耗随之增加。因此,减少神经网络的权值并减少计算量成为一个亟待解决的问题。

目前大部分的工作主要利用低秩矩阵分解或者哈希技巧等,但是这些方法能够减少的权值以及计算量有限,并且会降低神经网络的精度,因此,需要一种更加有效的方法减少神经网络的权值并减少计算量。

公开内容

(一)要解决的技术问题

有鉴于此,本公开的目的在于提供一种处理系统,以解决以上所述的至少一项技术问题。

(二)技术方案

根据本公开,提供一种处理装置,包括存储单元、粗粒度选数单元和运算单元,其中,

存储单元,用于存储神经网络的输入神经元、输出神经元、权值以及指令;

粗粒度选数单元,用于接收输入神经元和非零权值位置数据,选出非零权值对应的输入神经元;

运算单元,用于输入非零权值和非零权值对应的输入神经元,完成神经网络运算并将输出神经元作为下一层的输入神经元传输给存储单元。

进一步的,系统还包括指令控制单元,用于接收所述指令,经过译码后生成控制指令控制运算单元。

进一步的,所述存储单元用于存放的权值为非零权值以及非零权值位置数据。

进一步的,系统还包括:预处理单元:用于对输入神经元和权值进行预处理,将预处理后的数据输入所述存储部分。

进一步的,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。

进一步的,系统还包括指令缓存单元,用于缓存指令。

进一步的,系统还包括非零权值缓存单元,用于缓存非零权值数据。

进一步的,系统还包括非零权值位置缓存单元,用于缓存非零权值数据位置。

进一步的,系统还包括输入神经元缓存单元,用于缓存输入神经元。

进一步的,系统还包括输出神经元缓存单元,用于缓存输出神经元。

进一步的,指令缓存单元、非零权值缓存单元、非零权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元为片上缓存。

进一步的,系统还包括非零权值位置缓存单元,用于缓存非零权值位置数据;非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。

进一步的,系统还包括直接数据存取单元dma,用于在所述存储单元,与所述指令缓存单元、非零权值缓存单元、非零权值位置缓存单元、输入神经元缓存单元或输出神经元缓存中进行数据或者指令读写。

进一步的,所述运算单元包括以下至少一种:

乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;

一个或多个加法器,用于将第三输入数据相加;

激活函数运算单元,用于对第五数据通过激活函数运算得到输出数据,所述激活函数包括sigmoid、tanh、relu或softmax函数。

进一步的,所述运算单元包括多个加法器,所述多个加法器组成加法树,用于将第三输入数据通过加法树逐级相加。

进一步的,所述运算单元还包池化单元,用于对输入的数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。

进一步的,所述训练单元还用于重复将剪枝后的神经网络进行训练,直至不损失设定精度的前提下没有权值能被置为零。

根据本公开的另一方面,提供一种处理系统,其中包括:

粗粒度剪枝单元:用于使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;

训练单元:用于对神经网络进行训练,训练过程中已经被置为零的权值保持为零;以及以上任意所述的处理装置,用于用于接收非零权值。

进一步的,所述粗粒度剪枝单元用于使用滑动窗口从神经网络的全连接层选取出一组权值,包括:所述全连接层的权值是一个二维矩阵(nin,nout),其中nin是输入神经元的个数,nout是输出神经元的个数,共有nin*nout个权值,设定一个大小为bin*bout的滑动窗口,其中bin为大于等于1小于等于nin正整数,bout为大于等于1小于等于nout的正整数;使滑动窗口能够沿着bin的方向按照sin的步长进行滑动,也可以沿着bout方向按照sout的步长进行滑动,其中sin为大于等于1小于等于bin的正整数,sout为大于等于1小于等于bout的正整数;当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即bin*bout个权值将同时置为零。

进一步的,所述粗粒度剪枝单元用于使用滑动窗口从神经网络的卷积层选取出一组权值,包括:所述卷积层的权值是一个四维矩阵(nfin,nfout,kx,ky),其中nfin是输入特征图像的个数,nfout是输出特征图像的个数,(kx,ky)是卷积核的大小,共有nfin*nfout*kx*ky个权值,设定一个大小为bfin*bfout*bx*by的四维滑动窗口,其中bfin为大于等于1小于等于nfin的正整数,bfout为大于等于1小于等于nfout的正整数,bx为大于等于1小于等于kx的正整数,by为大于等于1小于等于ky的正整数;使滑动窗口沿着bfin的方向按照sfin的步长(stride)进行滑动,或者沿着bfout方向按照sfout的步长进行滑动,或者沿着bx方向按照sx的步长进行滑动,或沿着by方向按照sy的步长进行滑动,其中sfin为大于等于1小于等于bfin的正整数,sfout为大于等于1小于等于bfout的正整数,sx为大于等于1小于等于bx的正整数,sy为大于等于1小于等于by的正整数;当某个滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即bfin*bfout*bx*by个权值将同时置为零。

进一步的,所述粗粒度剪枝单元用于使用滑动窗口从神经网络的lstm层选取出一组权值,包括:设定lstm层的权值由m个全连接层权值组成,其中m为大于0的正整数,第i个全连接层权值为(nin_i,nout_i),其中i是大于0小于等于m的正整数,nin_i表示第i个全连接层权值输入神经元个数,nout_i表示第i个全连接层权值输出神经元个数;还设定一个大小为bin_i*bout_i的滑动窗口,其中bin_i为大于等于1小于等于nin_i的正整数,bout_i为大于等于1小于等于nout_i的正整数;使滑动窗口沿着bin_i的方向按照sin_i的步长进行滑动,或沿着bout_i方向按照sout_i的步长进行滑动,其中sin_i为大于等于1小于等于bin_i的正整数,sout_i为大于等于1小于等于bout_i的正整数;当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即bin_i*bout_i个权值将同时置为零。

(三)有益效果

本公开的处理装置对神经网络的权值进行粗粒度剪枝,相比于传统的方法,能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间。

本公开的处理系统能够实现本公开的处理方法,粗粒度剪枝单元对神经网络进行粗粒度剪枝,训练单元对剪枝后的神经网络重新进行训练。

本公开的处理系统通过设置能够加速处理粗粒度剪枝后的神经网络,充分挖掘粗细度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。

本公开的存储单元将权值按照非零权值配合非零权值位置数据的存储方式能够减少存储开销以及访存开销,粗粒度选数单元能够根据非零权值位置数据选出需要参与运算的神经元,从而减少运算量;通过采用针对粗粒度稀疏的多层人工神经网络运算的专用simd指令和定制的运算单元,解决了cpu和gpu运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。

附图说明

图1是本公开实施例的处理方法的流程图。

图2是本公开实施例的处理方法的另一流程图。

图3是本公开实施例神经网络的全连接层的剪枝方法。

图4是本公开实施例神经网络的卷积层粗粒度剪枝方法。

图5是本公开实施例的含粗粒度剪枝单元和训练单元的处理装置的结构示意图。

图6是本公开实施例的处理装置的结构示意图。

图7是本公开实施例的另一种处理装置的结构示意图。

图8是本公开以处理方法的一具体实施例。

具体实施方式

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

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

应该注意的是,本公开中使用的“第一”、“第二”、“第三”等仅用于区分不同对象,而不意味着这些对象之间具有任何特定顺序关系。

根据本公开的基本构思,提供一种对神经网络进行剪枝稀疏化的处理方法,处理装置和处理系统,以减少权值存储以及计算量。

图1是本公开实施例的处理方法的流程图。在本公开一些实施例中,提供了一种处理方法,用于神经网络的稀疏化,如图1所示,处理方法包括:

s101:使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;

s102:对神经网络进行训练,训练过程中已经被置为零的权值保持为零。

步骤s101实际为对神经网路进行剪枝的过程;步骤s1022中是将剪枝后的神经网络使用反向传播算法(backpropagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0。

其中,选取神经网络的一组权值的方法可以有以下几种,组内所有权值绝对值的算术平均值小于第一阈值;或者组内所有权值绝对值的几何平均值小于第二阈值;或者组内所有权值绝对值的最大值小于第三阈值。上述第一阈值、第二阈值和第三阈值中各自的选择可以本领域技术人员可以根据情况进行预先设定,本公开并不以此为限。

本公开实施例中,对神经网络进行剪枝可包括:对神经网络的全连接层、卷积层或lstm层的权值进行剪枝。

图3是本公开实施例神经网络的全连接层的剪枝方法。如图3所示,神经网络的全连接层可以看成是一个二维矩阵(nin,nout),其中nin表示输入神经元的个数,nout表示输出神经元的个数,共有nin*nout个权值。在粗粒度剪枝时,我们先设定一个大小为bin*bout的滑动窗口,其中bin为大于等于1小于等于nin正整数,bout为大于等于1小于等于nout的正整数。滑动窗口可以沿着bin的方向按照sin的步长(stride)进行滑动,也可以沿着bout方向按照sout的步长进行滑动,其中sin为大于等于1小于等于bin的正整数,sout为大于等于1小于等于bout的正整数。当滑动窗口内的一组权值被选取时,这组权值将全部被置为0,即bin*bout个权值将同时置为0。

图4是本公开实施例神经网络的卷积层粗粒度剪枝方法。如图4所示,神经网络的卷积层可以看成是一个四维矩阵(nfin,nfout,kx,ky),其中nfin表示输入特征图像(featuremap)数量,nout表示输出特征图像数量,(kx,ky)表示卷积核(kernel)的大小。在粗粒度剪枝时,我们先设定一个大小为bfin*bfout*bx*by的滑动窗口,其中bfin为大于等于1小于等于nfin的正整数,bfout为大于等于1小于等于nfout的正整数,bx为大于等于1小于等于kx的正整数,by为大于等于1小于等于ky的正整数。滑动窗口可以沿着bfin的方向按照sfin的步长(stride)进行滑动,或者沿着bfout方向按照sfout的步长进行滑动,或者沿着bx方向按照sx的步长进行滑动,或沿着by方向按照sy的步长进行滑动,其中sfin为大于等于1小于等于bfin的正整数,sfout为大于等于1小于等于bfout的正整数,sx为大于等于1小于等于bx的正整数,sy为大于等于1小于等于by的正整数。当某个滑动窗口内的一组权值被选取时,这组权值将全部被置为0,即bfin*bfout*bx*by个权值将同时置为0。

lstm层的权值由多个全连接层权值组成,假设lstm层的权值由m个全连接层权值组成,其中m为大于0的正整数。第i个全连接层权值为(nin_i,nout_i,),其中i是大于0小于等于m的正整数,nin_i表示第i个全连接层权值输入神经元个数,nout_i表示第i个全连接层权值输出神经元个数,在粗粒度剪枝时,对于第i个全连接层,我们先设定一个大小为bin_i*bout_i的滑动窗口,其中bin_i为大于等于1小于等于nin_i的正整数,bout_i为大于等于1小于等于nout_i的正整数。滑动窗口可以沿着bin_i的方向按照sin_i的步长进行滑动,也可以沿着bout_i方向按照sout_i的步长进行滑动,其中sin_i为大于等于1小于等于bin_i的正整数,sout_i为大于等于1小于等于bout_i的正整数。当滑动窗口内的一组权值被选取时,这组权值将全部被置为0,即bin_i*bout_i个权值将同时置为0。

图2是本公开实施例的处理方法的另一流程图。除包括与步骤s1和s2对于的步骤s201和s202外,还可以包括步骤s203:不断重复s201和s202直至在保证精度不损失x%的前提下没有权值能被置为0,x为大于0小于100的数,x根据不同的神经网络以及不同的应用可以有不同的选择。在一个实施例里,x的值为0-5。

图5是本公开实施例的包括粗粒度剪枝单元和神经网络训练单元的处理装置的结构示意图,用于对神经网络进行剪枝,包括粗粒度剪枝单元和神经网络训练单元。

粗粒度剪枝单元:用于对神经网络进行剪枝,包括使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;

神经网络训练单元:用于将剪枝后的神经网络进行训练,训练过程中已经被置为零的权值保持为零。

训练单元集成了神经网络反向训练算法,接收粗粒度剪枝后的神经网络,采用反向训练算法进行训练,在训练过程中被剪枝的权值始终保持为0。训练单元将训练后的神经网络或者传输给粗粒度剪枝单元进行进一步剪枝操作,或者直接输出。

进一步的,粗粒度剪枝单元还包括全连接层粗粒度剪枝单元,实现对神经网络的全连接层进行粗粒度剪枝操作。

进一步的,粗粒度剪枝单元还包括卷积层粗粒度剪枝单元,实现对神经网络的卷积层进行粗粒度剪枝操作。

进一步的,粗粒度剪枝单元还包括lstm层粗粒度剪枝单元,实现对神经网络的lstm层进行粗粒度剪枝操作。

本公开提供了一种处理装置(例如人工神经网络芯片),图6是本公开实施例的处理装置的结构示意图。如图6所示的处理装置,能够加速处理粗粒度稀疏后的神经网络,充分挖掘粗粒度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。

加速装置包括存储单元,指令控制单元,粗粒度选数单元和运算单元。加速装置可以是用于神经网络处理。

存储单元可用来存储神经网络的神经元,权值以及指令。

指令控制单元用于接收存储部分中的指令,经过译码后生成控制指令控制粗粒度选数单元进行选数操作和运算单元进行计算操作。

粗粒度选数单元用于接收输入神经元和非零权值位置数据,使用滑动窗口选取神经网络的一组权值,将选取的权值都置为零,并选取出非零权值对应的神经元。

运算单元用于接收输入被选择的神经元和非零权值,通过乘加运算单元完成神经网络运算并将输出神经元重新传输给存储部分。

更进一步的,存储单元存放权值时只存放非零权值以及非零权值位置数据。

更进一步的,粗粒度选数单元只会选择出非零权值对应的神经元并传输给运算单元。

更进一步的,加速装置还可包括预处理模块。如图7所示,该模块对原始数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。

更进一步的,加速装置还可包括直接数据存取单元dma(directmemoryaccess)。

更进一步的,加速装置还可包括指令缓存,输入神经元缓存,非零权值缓存,非零权值位置缓存,输出神经元缓存。

特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放非零权值以及非零权值位置数据。

特别的,dma用于在所述存储单元、指令缓存、非零权值缓存、非零权值位置缓存,输入神经元缓存和输出神经元缓存中进行数据或者指令读写。

指令缓存,用于存储专用指令;

非零权值缓存,用于缓存非零权值数据;

非零权值位置缓存,用于缓存非零权值位置数据;

非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。

一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。另一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系。另一种情形下非零权值位置缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。

输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元;

输出神经元缓存单元,用于缓存运算单元输出的输出神经元。

控制单元,用于接收指令缓存中的指令,经过译码后生成控制指令控制运算单元进行计算操作。

粗粒度选数单元,用于接收输入神经元和非零权值位置数据,选择出需要进行运算的神经元。粗粒度选数单元只会选择出非零权值对应的神经元并传输给运算单元。

运算单元,用于根据存储单元中存储的指令对所述数据执行相应运算。

运算单元包括但不仅限于三个部分,第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将第一输入数据(in1)和第二输入数据(in2)相乘得到相乘之后的输出(out1),过程为:out=in1*in2;第二部分将第三输入数据in3通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为n的向量,n大于1,过称为:out2=in3[1]+in3[2]+...+in3[n],和/或将第三输入数据(in3)通过加法数累加之后和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out=in3[1]+in3[2]+...+in3[n]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为:out2=in3+in4;第三部分将第五输入数据(in5)通过激活函数(active)运算得到激活输出数据(out),过程为:out3=active(in5),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。

运算单元还可以包池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。

所述运算单元执行运算包括几个部分,第一部分是将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到输出数据;第三部分执行激活函数运算,对第五输入数据通过激活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而实现各种不同功能的运算。

本公开的处理系统,可以为图5所示的装置与图6所示装置的结合,图6所示加速装置可以为一专用的神经网络处理芯片,图5所述的装置用于进行粗粒度剪枝。

以下,列举神经网络处理器实施例,对本公开的处理方法进行具体说明,但应理解的是其并非因此限制本公开,凡是利用本具体实施例所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本公开的保护范围内。

图8是本公开以处理方法的一具体实施例。如图8所示,其是神经网络的一个全连接层经过粗粒度剪枝后的结果,全连接层共有8个输入神经元为n1~n8和3个输出神经元为o1~o3。其中n3,n4,n7,n8四个输入神经元与o1,o2,o3三个输出神经元之间的权值通过粗粒度稀疏被置为零;n1与o1,o2,o3之间通过s11,s12,s13三个权值连接,n2与o1,o2,o3之间通过s21,s22,s23三个权值连接,n5与o1,o2,o3之间通过s31,s32,s33三个权值连接,n6与o1,o2,o3之间通过s41,s42,s43三个权值连接;我们用11001100这个比特串表示输入神经元与输出神经元之间的连接情况,即第一种表示非零权值位置数据的情况,1表示输入神经元与三个输出神经元都连接,0表示输入神经元与三个输出神经元都不连接。表1描述了实施例中神经元与权值的数据,公式1描述了o1,o2,o3三个输出神经元的运算公式。从公式1中可以看出o1,o2,o3将接收到相同的神经元进行运算。

表1

公式1--输出神经元运算公式:

o1=n1*s11+n2*s12+n5*s13+n6*s14

o2=n1*s21+n2*s22+n5*s23+n6*s24

o3=n1*s31+n7*s32+n5*s33+n6*s34

在处理装置进行运算时,8个输入神经元,12个权值和8比特的位置数据以及相应的指令被传输到存储单元。粗粒度选数单元接收8个输入神经元和非零权值位置,选出n1,n2,n5,n6四个需要参与运算的神经元。运算单元接收四个被选择的神经元与权值,通过公式1完成输出神经元的运算,然后将输出神经元传输回存储部分。

本公开一些实施例中,公开了一种处理装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述处理方法进行操作。

其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(cpu)或者图形处理器(gpu);还可以包括在现场可编程逻辑门阵列(fpga)或者专用集成电路(asic),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。

在一些实施例里,公开了一种芯片,其包括了上述处理装置或处理系统。

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

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

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

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

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

应该理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

通过本公开的实施例,提供了神经网络的粗粒度稀疏化的处理方法和对应的处理装置,以及芯片、芯片封装结构、板卡和电子装置。其中,粗粒度稀疏化处理方法能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间。神经网络处理器能够充分挖掘粗粒度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。

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

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