CN108960415A - 处理装置和处理系统 - Google Patents

处理装置和处理系统 Download PDF

Info

Publication number
CN108960415A
CN108960415A CN201710583336.9A CN201710583336A CN108960415A CN 108960415 A CN108960415 A CN 108960415A CN 201710583336 A CN201710583336 A CN 201710583336A CN 108960415 A CN108960415 A CN 108960415A
Authority
CN
China
Prior art keywords
weight
equal
zero
unit
data
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
Application number
CN201710583336.9A
Other languages
English (en)
Other versions
CN108960415B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201710583336.9A priority Critical patent/CN108960415B/zh
Priority to PCT/CN2018/088033 priority patent/WO2018214913A1/zh
Priority to EP19214010.1A priority patent/EP3657398A1/en
Priority to EP18806558.5A priority patent/EP3637325A4/en
Priority to EP19214007.7A priority patent/EP3657340A1/en
Priority to EP19214015.0A priority patent/EP3657399A1/en
Publication of CN108960415A publication Critical patent/CN108960415A/zh
Priority to US16/699,027 priority patent/US20200097826A1/en
Priority to US16/699,049 priority patent/US20200134460A1/en
Priority to US16/699,046 priority patent/US11727276B2/en
Priority to US16/699,032 priority patent/US11907844B2/en
Priority to US16/699,051 priority patent/US20220335299A9/en
Priority to US16/699,029 priority patent/US11710041B2/en
Priority to US16/699,055 priority patent/US20200097828A1/en
Application granted granted Critical
Publication of CN108960415B publication Critical patent/CN108960415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

本公开提供了一种处理装置,包括存储单元、粗粒度选数单元和运算单元,其中,存储单元用于存储网络的输入和输出数据以及指令;粗粒度选数单元用于接收输入数据和非零单元位置数据,选出非零单元对应的输入数据;运算单元,用于输入非零单元和非零权值对应的输入数据。上述处理系统能减少访存同时减少运算量,从而获得加速比并降低能耗。

Description

处理装置和处理系统
技术领域
本公开涉及计算机领域,进一步涉及人工智能领域。
背景技术
神经网络(neural network)已经获得了非常成功的应用。但是随着我们设计更大规模,更深层次的神经网络,将引入更多的权值,而超大规模权值成为神经网络应用的一个巨大挑战。一方面,大规模的权值数据对存储提出了更高的要求,大量访存操作将带来巨大的访存能耗,另一方面,大量的权值对运算单元也提出更高要求,计算时间和计算能耗随之增加。因此,减少神经网络的权值并减少计算量成为一个亟待解决的问题。
目前大部分的工作主要利用低秩矩阵分解或者哈希技巧等,但是这些方法能够减少的权值以及计算量有限,并且会降低神经网络的精度,因此,需要一种更加有效的方法减少神经网络的权值并减少计算量。
公开内容
(一)要解决的技术问题
有鉴于此,本公开的目的在于提供一种处理系统,以解决以上所述的至少一项技术问题。
(二)技术方案
根据本公开,提供一种处理装置,包括存储单元、粗粒度选数单元和运算单元,其中,
存储单元,用于存储神经网络的输入神经元、输出神经元、权值以及指令;
粗粒度选数单元,用于接收输入神经元和非零权值位置数据,选出非零权值对应的输入神经元;
运算单元,用于输入非零权值和非零权值对应的输入神经元,完成神经网络运算并将输出神经元作为下一层的输入神经元传输给存储单元。
进一步的,系统还包括指令控制单元,用于接收所述指令,经过译码后生成控制指令控制运算单元。
进一步的,所述存储单元用于存放的权值为非零权值以及非零权值位置数据。
进一步的,系统还包括:预处理单元:用于对输入神经元和权值进行预处理,将预处理后的数据输入所述存储部分。
进一步的,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。
进一步的,系统还包括指令缓存单元,用于缓存指令。
进一步的,系统还包括非零权值缓存单元,用于缓存非零权值数据。
进一步的,系统还包括非零权值位置缓存单元,用于缓存非零权值数据位置。
进一步的,系统还包括输入神经元缓存单元,用于缓存输入神经元。
进一步的,系统还包括输出神经元缓存单元,用于缓存输出神经元。
进一步的,指令缓存单元、非零权值缓存单元、非零权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元为片上缓存。
进一步的,系统还包括非零权值位置缓存单元,用于缓存非零权值位置数据;非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。
进一步的,系统还包括直接数据存取单元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中是将剪枝后的神经网络使用反向传播算法(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、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超仪和/或心电图仪。
应该理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
通过本公开的实施例,提供了神经网络的粗粒度稀疏化的处理方法和对应的处理装置,以及芯片、芯片封装结构、板卡和电子装置。其中,粗粒度稀疏化处理方法能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间。神经网络处理器能够充分挖掘粗粒度稀疏的特性,减少访存同时减少运算量,从而获得加速比并降低能耗。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (21)

1.一种处理装置,包括存储单元、粗粒度选数单元和运算单元,其中,
存储单元,用于存储神经网络的输入神经元、输出神经元、权值以及指令;
粗粒度选数单元,用于接收输入神经元和非零权值位置数据,选出非零权值对应的输入神经元;
运算单元,用于输入非零权值和非零权值对应的输入神经元,完成神经网络运算并将输出神经元作为下一层的输入神经元传输给存储单元。
2.根据权利要求1所述的处理装置,其特征在于还包括:指令控制单元,用于接收所述指令,经过译码后生成控制指令控制运算单元。
3.根据权利要求1或2所述的处理装置,其特征在于,所述存储单元用于存放的权值为非零权值以及非零权值位置数据。
4.根据权利要求1-3任一所述的处理装置,其特征在于,还包括预处理单元:用于对输入神经元和权值进行预处理,将预处理后的数据输入所述存储部分。
5.根据权利要求4所述的处理装置,其特征在于,所述预处理包括数据的切分、高斯滤波、二值化、正则化和/或归一化处理。
6.根据权利要求2-5任一所述的处理装置,其特征在于,还包括指令缓存单元,用于缓存指令。
7.根据权利要求2-5任一所述的处理装置,其特征在于,还包括非零权值缓存单元,用于缓存非零权值数据。
8.根据权利要求2-5任一所述的处理装置,特征在于,还包括非零权值位置缓存单元,用于缓存非零权值数据位置。
9.根据权利要求2-5任一所述的处理装置,其特征在于,还包括输入神经元缓存单元,用于缓存输入神经元。
10.根据权利要求2-5任一所述的处理装置,其特征在于,还包括输出神经元缓存单元,用于缓存输出神经元。
11.根据权利要求6-10任一所述的处理装置,其中所述指令缓存单元、非零权值缓存单元、非零权值位置缓存单元、输入神经元缓存单元或输出神经元缓存单元为片上缓存。
12.根据权利要求2-5任一所述的处理装置,其特征在于,非零权值位置缓存单元,用于缓存非零权值位置数据;非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。
13.根据权利要求1-12任一所述的处理装置,其特征在于,还包括直接数据存取单元DMA,用于在所述存储单元,与所述指令缓存单元、非零权值缓存单元、非零权值位置缓存单元、输入神经元缓存单元或输出神经元缓存中进行数据或者指令读写。
14.根据权利要求2-13任一所述的处理装置,其特征在于,所述运算单元包括以下至少一种:
乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;
一个或多个加法器,用于将第三输入数据相加;
激活函数运算单元,用于对第五数据通过激活函数运算得到输出数据,所述激活函数包括sigmoid、tanh、relu或softmax函数。
15.根据权利要求14所述的处理装置,其特征在于,所述运算单元包括多个加法器,所述多个加法器组成加法树,用于将第三输入数据通过加法树逐级相加。
16.根据权利要求14或15任一所述的处理装置,其特征在于,所述运算单元还包池化单元,用于对输入的数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
17.一种处理系统,其中包括:
粗粒度剪枝单元:用于使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;
训练单元:用于对神经网络进行训练,训练过程中已经被置为零的权值保持为零;以及
权利要求1-16任一所述的处理装置,用于接收非零权值。
18.根据权利要求17所述的处理系统,其特征在于,所述训练单元还用于重复将剪枝后的神经网络进行训练,直至不损失设定精度的前提下没有权值能被置为零。
19.根据权利要求17或18所述的处理系统,其特征在于,所述粗粒度剪枝单元用于使用滑动窗口从神经网络的全连接层选取出一组权值,包括:
所述全连接层的权值是一个二维矩阵(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个权值将同时置为零。
20.根据权利要求17-19任一所述的处理系统,其特征在于,所述粗粒度剪枝单元用于使用滑动窗口从神经网络的卷积层选取出一组权值,包括:
所述卷积层的权值是一个四维矩阵(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个权值将同时置为零。
21.根据权利要求17-20任一所述的处理系统,其特征在于,所述粗粒度剪枝单元用于使用滑动窗口从神经网络的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个权值将同时置为零。
CN201710583336.9A 2017-05-23 2017-05-23 处理装置和处理系统 Active CN108960415B (zh)

Priority Applications (13)

Application Number Priority Date Filing Date Title
CN201710583336.9A CN108960415B (zh) 2017-05-23 2017-05-23 处理装置和处理系统
PCT/CN2018/088033 WO2018214913A1 (zh) 2017-05-23 2018-05-23 处理方法及加速装置
EP19214010.1A EP3657398A1 (en) 2017-05-23 2018-05-23 Weight quantization method for a neural network and accelerating device therefor
EP18806558.5A EP3637325A4 (en) 2017-05-23 2018-05-23 TREATMENT METHOD AND ACCELERATION DEVICE
EP19214007.7A EP3657340A1 (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
US16/699,027 US20200097826A1 (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,046 US11727276B2 (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
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,055 US20200097828A1 (en) 2017-05-23 2019-11-28 Processing method and accelerating device

Applications Claiming Priority (2)

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 处理方法及加速装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201710370905.1A Division CN108960420B (zh) 2017-05-23 2017-05-23 处理方法及加速装置

Publications (2)

Publication Number Publication Date
CN108960415A true CN108960415A (zh) 2018-12-07
CN108960415B CN108960415B (zh) 2021-04-20

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 Before (1)

Application Number Title Priority Date Filing Date
CN201710370905.1A Active CN108960420B (zh) 2017-05-23 2017-05-23 处理方法及加速装置

Country Status (1)

Country Link
CN (2) CN108960420B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109766993A (zh) * 2018-12-13 2019-05-17 浙江大学 一种适合硬件的卷积神经网络压缩方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831254A (zh) * 2019-04-15 2020-10-27 阿里巴巴集团控股有限公司 图像处理加速方法、图像处理模型存储方法及对应装置
CN112215351B (zh) * 2020-09-21 2022-05-03 浙江大学 增强的多尺度卷积神经网络软测量方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
CN106874956A (zh) * 2017-02-27 2017-06-20 陕西师范大学 图像分类卷积神经网络结构的构建方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
CN106874956A (zh) * 2017-02-27 2017-06-20 陕西师范大学 图像分类卷积神经网络结构的构建方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SONG HAN,ETC: ""Learning bothWeights and Connections for Efficient Neural Networks"", 《ARXIV.ORG》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109766993A (zh) * 2018-12-13 2019-05-17 浙江大学 一种适合硬件的卷积神经网络压缩方法
CN109766993B (zh) * 2018-12-13 2020-12-18 浙江大学 一种适合硬件的卷积神经网络压缩方法

Also Published As

Publication number Publication date
CN108960420B (zh) 2021-06-08
CN108960415B (zh) 2021-04-20
CN108960420A (zh) 2018-12-07

Similar Documents

Publication Publication Date Title
CN109189473A (zh) 神经网络处理装置及其执行向量交换指令的方法
CN108416437A (zh) 用于乘加运算的人工神经网络的处理系统及方法
CN108733348B (zh) 融合向量乘法器和使用其进行运算的方法
CN110502330A (zh) 处理器及处理方法
CN108898554A (zh) 提高图像分辨率的方法及相关产品
CN107632965B (zh) 可重构的s型运算装置及运算方法
CN110298443A (zh) 神经网络运算装置及方法
CN109426553A (zh) 任务切分装置及方法、任务处理装置及方法、多核处理器
CN110163356A (zh) 一种计算装置及方法
CN109032670A (zh) 神经网络处理装置及其执行向量复制指令的方法
CN110383300A (zh) 一种计算装置及方法
CN108960415A (zh) 处理装置和处理系统
DE102021120605A1 (de) Effiziente softmax-berechnung
CN110276447A (zh) 一种计算装置及方法
CN110163350A (zh) 一种计算装置及方法
CN110163334A (zh) 集成电路芯片装置及相关产品
CN109389208A (zh) 数据的量化装置及量化方法
CN109478251A (zh) 处理方法及加速装置
CN109389213A (zh) 存储装置及方法、数据处理装置及方法、电子装置
CN109389210A (zh) 处理方法和处理装置
CN109359542A (zh) 基于神经网络的车辆损伤级别的确定方法及终端设备
CN109389209A (zh) 处理装置及处理方法
CN110490308A (zh) 加速库的设计方法、终端设备及存储介质
CN110175673A (zh) 处理方法及加速装置
CN109993290A (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