CN108960420B - 处理方法及加速装置 - Google Patents
处理方法及加速装置 Download PDFInfo
- Publication number
- CN108960420B CN108960420B CN201710370905.1A CN201710370905A CN108960420B CN 108960420 B CN108960420 B CN 108960420B CN 201710370905 A CN201710370905 A CN 201710370905A CN 108960420 B CN108960420 B CN 108960420B
- Authority
- CN
- China
- Prior art keywords
- equal
- weight
- weights
- positive integer
- neural network
- 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.)
- Active
Links
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
Abstract
本公开提供了一种处理方法及加速装置。其中处理方法包括使用滑动窗口选取出一组权值,将选取的权值都置为零;对数据进行训练,训练过程中已经被置为零的权值保持为零。上述处理方法能减少访存同时减少运算量,从而获得加速比并降低能耗。
Description
技术领域
本公开涉及计算机领域,进一步涉及人工智能领域。
背景技术
神经网络(neural network)已经获得了非常成功的应用。但是随着我们设计更大规模,更深层次的神经网络,将引入更多的权值,而超大规模权值成为神经网络应用的一个巨大挑战。一方面,大规模的权值数据对存储提出了更高的要求,大量访存操作将带来巨大的访存能耗,另一方面,大量的权值对运算单元也提出更高要求,计算时间和计算能耗随之增加。因此,减少神经网络的权值并减少计算量成为一个亟待解决的问题。
目前大部分的工作主要利用低秩矩阵分解或者哈希技巧等,但是这些方法能够减少的权值以及计算量有限,并且会降低神经网络的精度,因此,需要一种更加有效的方法减少神经网络的权值并减少计算量。
公开内容
(一)要解决的技术问题
有鉴于此,本公开的目的在于提供一种处理方法以及加速装置,以解决以上所述的至少一项技术问题。
(二)技术方案
根据本发明的第一方面,提供一种处理方法,其中包括:
使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;
对神经网络进行训练,训练过程中已经被置为零的权值保持为零。
进一步的,使用滑动窗口选取神经网络的一组权值的条件为:
将组内所有权值绝对值的算术平均值作为该组的第一代表权值,第一代表权值小于第一阈值;或者将组内所有权值绝对值的几何平均值作为该组的第二代表权值,第二代表权值小于第二阈值;或者将组内所有权值绝对值的最大值作为该组的第三代表权值,第三代表权值小于第三阈值。
进一步的,处理方法还包括:重复进行对神经网络进行剪枝以及将剪枝后的神经网络进行训练,直至保证精度不损失设定精度的前提下没有权值能被置为零。
进一步的,所述设定精度为x%,其中x介于0至5之间。
进一步的,对神经网络进行剪枝包括:对神经网络的全连接层、卷积层或LSTM层的权值进行剪枝。
进一步的,对神经网络的全连接层进行剪枝包括:所述全连接层的权值是一个二维矩阵(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个权值将同时置为零。
进一步的,采用将剪枝后的神经网络进行训练具体为:通过使用反向传播算法进行重新训练。
进一步的,在剪枝和重训练之间还包括量化和/或降低权值比特数操作。
根据本发明的第二方面,提供一种加速装置,用于加速处理剪枝后的神经网络,包括存储单元,粗粒度选数单元和运算单元,其中,
存储单元,用于存储神经网络的神经元、权值以及指令;
粗粒度选数单元,用于接收输入神经元和非零权值位置信息,选出非零权值对应的神经元;
运算单元,用于接收输入非零权值对应的神经元和对应的非零权值,完成神经网络训练运算并将输出神经元重新传输给存储单元。
进一步的,加速装置还包括:指令控制单元,用于接收所述指令,经过译码后生成控制信息控制运算单元。
进一步的,所述存储单元用于存放的权值为非零权值以及非零权值的位置信息。
进一步的,加速装置还包括预处理单元:用于对原始数据进行预处理,将预处理后的数据输入所述存储部分。
进一步的,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。
进一步的,加速装置还包括指令缓存单元,用于缓存指令,所述指令缓存单元为片上缓存。
进一步的,加速装置还包括非零权值缓存单元,用于缓存非零权值数据,所述非零权值缓存单元为片上缓存。
进一步的,加速装置还包括非零权值位置缓存单元,用于缓存非零权值数据位置,所述非零权值位置缓存单元为片上缓存。
进一步的,加速装置还包括输入神经元缓存单元,用于缓存输入神经元,所述输入神经元缓存单元为片上缓存。
进一步的,加速装置还包括输出神经元缓存单元,用于缓存输出神经元,所述输出神经元缓存单元为片上缓存。
进一步的,所述非零权值位置缓存单元,用于缓存非零权值位置数据;非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。
进一步的,加速装置还包括直接数据存取单元DMA,用于在所述存储单元,与所述指令缓存单元、非零权值缓存单元、非零权值位置缓存单元、输入神经元缓存单元或输出神经元缓存中进行数据或者指令读写。
进一步的,所述运算单元包括以下至少一种:乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax 函数操作。
进一步的,所述运算单元还包池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
根据本发明的第三方面,提供一种加速装置,包括:
存储器:用于存储可执行指令;
处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述方法进行操作。
根据本发明的第四方面,提供一种芯片,所述芯片包括以上所述的装置。
根据本发明的第五方面,提供一种芯片封装结构,包括以上所述的芯片。
根据本发明的第六方面,提供一种板卡,包括以上所述的芯片封装结构。
根据本发明的第七方面,提供一种电子装置,包括以上所述的板卡。
进一步的,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
进一步的,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
(三)有益效果
本公开的处理方法对神经网络的权值进行粗粒度剪枝,相比于传统的方法,能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间。
本公开的处理装置能够实现本公开的处理方法,粗粒度剪枝单元对神经网络进行粗粒度剪枝,训练单元对剪枝后的神经网络重新进行训练。
本公开的加速装置通过设置能够加速处理粗粒度剪枝后的神经网络,充分挖掘粗细度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。
本公开的存储单元将权值按照非零权值配合非零权值位置信息的存储方式能够减少存储开销以及访存开销,粗粒度选数单元能够根据非零权值位置信息选出需要参与运算的神经元,从而减少运算量;通过采用针对粗粒度稀疏的多层人工神经网络运算的专用SIMD指令和定制的运算单元,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
附图说明
图1是本公开实施例的处理方法的流程图。
图2是本公开实施例的处理方法的另一流程图。
图3是本公开实施例神经网络的全连接层的剪枝方法。
图4是本公开实施例神经网络的卷积层粗粒度剪枝方法。
图5是本公开实施例的处理装置的结构示意图。
图6是本公开实施例的加速装置的结构示意图。
图7是本公开实施例的另一种加速装置的结构示意图。
图8是本公开以处理方法的一具体实施例。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开实施例的所有模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA 计算机。
应该注意的是,本公开中使用的“第一”、“第二”、“第三”等仅用于区分不同对象,而不意味着这些对象之间具有任何特定顺序关系。
根据本公开的基本构思,提供一种对神经网络进行剪枝稀疏化的处理方法,处理装置和加速装置,以减少权值存储以及计算量。
图1是本公开实施例的处理方法的流程图。在本公开一些实施例中,提供了一种处理方法,用于神经网络的稀疏化,如图1所示,处理方法包括:
S101:使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;
S102:对神经网络进行训练,训练过程中已经被置为零的权值保持为零。
步骤S101实际为对神经网路进行剪枝的过程;步骤S1022中是将剪枝后的神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为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表示输入特征图像(feature map)数量,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(direct memory access)。
更进一步的,加速装置还可包括指令缓存,输入神经元缓存,非零权值缓存,非零权值位置缓存,输出神经元缓存。
特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放非零权值以及非零权值的位置信息。
特别的,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、sofimax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
运算单元还可以包池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool 为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括几个部分,第一部分是将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到输出数据;第三部分执行激活函数运算,对第五输入数据通过激活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而实现各种不同功能的运算。
以下,列举神经网络处理器实施例,对本公开的处理方法进行具体说明,但应理解的是其并非因此限制本公开,凡是利用本具体实施例所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本公开的保护范围内。
图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超仪和/或心电图仪。
应该理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
通过本公开的实施例,提供了神经网络的粗粒度稀疏化的处理方法和对应的处理装置,以及芯片、芯片封装结构、板卡和电子装置。其中,粗粒度稀疏化处理方法能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间。神经网络处理器能够充分挖掘粗粒度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (15)
1.一种处理方法,用于神经网络的稀疏化,其中包括:
使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;
对神经网络进行训练,训练过程中已经被置为零的权值保持为零;
其中,对神经网络进行剪枝包括:对神经网络的全连接层、卷积层或LSTM层的权值进行剪枝;
对神经网络的全连接层进行剪枝包括:
所述全连接层的权值是一个二维矩阵(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个权值将同时置为零。
2.根据权利要求1所述的方法,其特征在于,使用滑动窗口选取神经网络的一组权值的条件为:
将组内所有权值绝对值的算术平均值作为该组的第一代表权值,第一代表权值小于第一阈值;
或者将组内所有权值绝对值的几何平均值作为该组的第二代表权值,第二代表权值小于第二阈值;
或者将组内所有权值绝对值的最大值作为该组的第三代表权值,第三代表权值小于第三阈值。
3.根据权利要求1-2任一所述的方法,其特征在于,还包括:
重复进行对神经网络进行剪枝以及将剪枝后的神经网络进行训练,直至保证精度不损失设定精度的前提下没有权值能被置为零。
4.根据权利要求3所述的方法,其特征在于,所述设定精度为x%,其中x介于0至5之间。
5.根据权利要求1所述的方法,其特征在于,对神经网络的卷积层进行剪枝包括:
所述卷积层的权值是一个四维矩阵(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个权值将同时置为零。
6.根据权利要求1所述的方法,其特征在于,对神经网络的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个权值将同时置为零。
7.根据权利要求1所述的方法,其特征在于,采用将剪枝后的神经网络进行训练具体为:通过使用反向传播算法进行重新训练。
8.根据权利要求1所述的方法,其特征在于,在剪枝和重训练之间还包括量化和/或降低权值比特数操作。
9.一种加速装置,用于神经网络的稀疏化,包括:
存储器:用于存储可执行指令;
处理器:用于执行存储单元中的可执行指令,在执行指令时依照权利要求1-8任一所述方法进行操作。
10.一种芯片,其特征在于,所述芯片包括权利要求9所述的加速装置。
11.一种芯片封装结构,其特征在于,所述芯片封装结构包括权利要求10所述的芯片。
12.一种板卡,其特征在于,所述板卡包括权利要求11所述的芯片封装结构。
13.一种电子装置,其特征在于,所述电子装置包括权利要求12的板卡。
14.根据权利要求13所述的电子装置,其特征在于,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
15.根据权利要求14所述的电子装置,其特征在于,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
Priority Applications (16)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710583336.9A CN108960415B (zh) | 2017-05-23 | 2017-05-23 | 处理装置和处理系统 |
CN201710370905.1A CN108960420B (zh) | 2017-05-23 | 2017-05-23 | 处理方法及加速装置 |
PCT/CN2018/088033 WO2018214913A1 (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
CN201880002821.5A CN109478251B (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
EP19214007.7A EP3657340B1 (en) | 2017-05-23 | 2018-05-23 | Processing method and accelerating device |
EP19214015.0A EP3657399A1 (en) | 2017-05-23 | 2018-05-23 | Weight pruning and quantization method for a neural network and accelerating device therefor |
CN201910474387.7A CN110175673B (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
EP18806558.5A EP3637325A4 (en) | 2017-05-23 | 2018-05-23 | TREATMENT METHOD AND ACCELERATION DEVICE |
EP19214010.1A EP3657398A1 (en) | 2017-05-23 | 2018-05-23 | Weight quantization method for a neural network and accelerating device therefor |
US16/699,027 US20200097826A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,051 US20220335299A9 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,029 US11710041B2 (en) | 2017-05-23 | 2019-11-28 | Feature map and weight selection method and accelerating device |
US16/699,046 US11727276B2 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,049 US20200134460A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,055 US20200097828A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,032 US11907844B2 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710370905.1A CN108960420B (zh) | 2017-05-23 | 2017-05-23 | 处理方法及加速装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710583336.9A Division CN108960415B (zh) | 2017-05-23 | 2017-05-23 | 处理装置和处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108960420A CN108960420A (zh) | 2018-12-07 |
CN108960420B true CN108960420B (zh) | 2021-06-08 |
Family
ID=64493829
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710370905.1A Active CN108960420B (zh) | 2017-05-23 | 2017-05-23 | 处理方法及加速装置 |
CN201710583336.9A Active CN108960415B (zh) | 2017-05-23 | 2017-05-23 | 处理装置和处理系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710583336.9A Active CN108960415B (zh) | 2017-05-23 | 2017-05-23 | 处理装置和处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108960420B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766993B (zh) * | 2018-12-13 | 2020-12-18 | 浙江大学 | 一种适合硬件的卷积神经网络压缩方法 |
CN111831254B (zh) * | 2019-04-15 | 2024-10-22 | 阿里巴巴集团控股有限公司 | 图像处理加速方法、图像处理模型存储方法及对应装置 |
CN112215351B (zh) * | 2020-09-21 | 2022-05-03 | 浙江大学 | 增强的多尺度卷积神经网络软测量方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8700552B2 (en) * | 2011-11-28 | 2014-04-15 | Microsoft Corporation | Exploiting sparseness in training deep neural networks |
CN106355248A (zh) * | 2016-08-26 | 2017-01-25 | 深圳先进技术研究院 | 一种深度卷积神经网络训练方法及装置 |
CN106874956B (zh) * | 2017-02-27 | 2018-10-23 | 陕西师范大学 | 图像分类卷积神经网络结构的构建方法 |
-
2017
- 2017-05-23 CN CN201710370905.1A patent/CN108960420B/zh active Active
- 2017-05-23 CN CN201710583336.9A patent/CN108960415B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Non-Patent Citations (1)
Title |
---|
Learning both Weights and Connections for Efficient Neural Networks;Song Han et al.;《https://arxiv.org/abs/1506.02626》;20151103;第1-9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108960415B (zh) | 2021-04-20 |
CN108960415A (zh) | 2018-12-07 |
CN108960420A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221578B (zh) | 计算装置以及计算方法 | |
US11710041B2 (en) | Feature map and weight selection method and accelerating device | |
US11531541B2 (en) | Processing apparatus and processing method | |
US11307865B2 (en) | Data processing apparatus and method | |
CN107609642B (zh) | 计算装置和方法 | |
US11507350B2 (en) | Processing apparatus and processing method | |
CN108960420B (zh) | 处理方法及加速装置 | |
CN109478251B (zh) | 处理方法及加速装置 | |
CN109389208B (zh) | 数据的量化装置及量化方法 | |
CN108320018A (zh) | 一种人工神经网络运算的装置及方法 | |
CN110490317B (zh) | 神经网络运算装置及运算方法 | |
CN109389218B (zh) | 数据压缩方法及压缩装置 | |
CN109146069B (zh) | 运算装置、运算方法和芯片 | |
CN109389209B (zh) | 处理装置及处理方法 | |
CN110175673B (zh) | 处理方法及加速装置 | |
CN109711538B (zh) | 运算方法、装置及相关产品 | |
CN114692847A (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 |