CN109543815A - 神经网络的加速方法及装置 - Google Patents
神经网络的加速方法及装置 Download PDFInfo
- Publication number
- CN109543815A CN109543815A CN201811211042.4A CN201811211042A CN109543815A CN 109543815 A CN109543815 A CN 109543815A CN 201811211042 A CN201811211042 A CN 201811211042A CN 109543815 A CN109543815 A CN 109543815A
- Authority
- CN
- China
- Prior art keywords
- block number
- sparse
- number evidence
- evidence
- pattern
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种神经网络的加速方法及装置,其中方法包括:对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。本发明实施保证了每个像素位置处索引数量不因量化模式的不同而出现成倍增加的情况,解决了多种稀疏度和多种量化位宽混杂的神经网络编码问题。
Description
技术领域
本发明涉及加速器设计技术领域,更具体地,涉及神经网络的加速方法。
背景技术
由于目前的神经网络存在激活函数(ReLU),可以造成大量特征数据(featuremap)稀疏,采用剪枝等方法训练神经网络又可以造成大量权重数据(weight data)稀疏。高效利用这些稀疏性可以大幅提高神经网络加速器的处理效率。同时,硬件处理神经网络时,定点化相比于浮点处理会带来很大的能量提升。使用定点处理神经网络已经成为高能效加速器的通用做法。目前已经许多文献着眼于神经网络的稀疏性和定点化量化的利用。对于稀疏性,这些文献大致可以分为两类,一类着眼于跳过0值,减少输入为0的无效计算。此类方法假定神经网络非常稀疏,直接按稀疏的方式存储神经网络。另一类采取忽略零值的方法,比如当输入数据为0时,不执行乘法操作,从而可减少运算功耗。此类加速器假定神经网络比较稠密,直接以稠密模式存储神经网络。
但是,这些技术都着眼于处理稀疏神经网络本身,假定神经网络稀疏是完全稀疏的或者完全不稀疏的,相应的利用稀疏网络或者非稀疏的网络存储方式。然而实际上神经网络不一定是稀疏的。实际中运用的神经网络各层数据无论权重和特征数据的稀疏度都在5%-90%之间分布。也就是说某些层可以是稀疏的,也存在非稀疏层的情况,目前的存储格式很难高效率的适应这些问题。第二点,上述工作均把神经网络量化成固定的长度。实际上,为了进一步压缩神经网络的存储量,不同层的网络可以使用不同长度的量化模式。例如第一层使用8bit,第二层使用4bit进行量化。目前的稀疏神经网路加速器还无法同时处理不同量化的神经网络。其实的主要技术问题在于稀疏网络处理需要数据的索引值,不同量化模式的神经网络存储会造成索引值无法高效存储
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的神经网络的加速方法及装置。
第一个方面,本发明实施例提供一种神经网络的加速方法,包括:
对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;
计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
第二个方面,本发明实施例提供一种神经网络的加速装置,包括:
块数据获取模块,用于对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;
稀疏编码模块,用于计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的神经网络的加速方法及装置,利用神经网络每一次输出的特征图为三维特性,对特征图进行分块,获得若干个块数据,并且对每个块数据中同一位置的各像素共享同样的索引值,保证每个像素拼接后都为处理器处理的最高量化位宽,同时由于同一位置共享索引值,保证了每个像素位置处索引数量不因量化模式的不同而出现成倍增加的情况,解决了多种稀疏度和多种量化位宽混杂的神经网络编码问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的神经网络的加速方法的流程示意图;
图2为本发明实施例提供的三维数组的结构示意图;
图3为本发明另一个实施例提供的加速方法的流程示意图;
图4为本发明实施例提供的数据处理过程的流程示意图;
图5为本发明实施例提供的神经网络的加速装置的结构示意图;
图6为本发明实施例的加速方法与现有加速方法的访问次数的对比示意图;
图7为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了克服现有技术的上述问题,本发明实施例提供了一种神经网络的加速方法,其发明构思为:利用神经网络每一次输出的特征图为三维特性,对特征图进行分块,获得若干个块数据,并且对每个块数据中同一位置的各像素共享同样的索引值,保证每个像素拼接后都为处理器处理的最高量化位宽,同时由于同一位置共享索引值,保证了每个像素位置处索引数量不因量化模式的不同而出现成倍增加的情况,解决了多种稀疏度和多种量化位宽混杂的神经网络编码问题。
图1为本发明实施例提供的神经网络的加速方法的流程示意图,如图所示,包括:
S101、对于神经网络中的任一层,根据所述层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值。
具体地,神经网络中输入和输出每一层的特征图可以抽象为三维数组,图2为本发明实施例提供的三维数组的结构示意图,图2中三维数组进一步抽象为一个立方体,三维数组中的元素(在特征图中称作像素)可以用[x][y][z]表示,x、y和z分别表示元素在三维数组中不同坐标轴(X、Y和Z轴)的值,可以理解的是,在特征图中,(x,y)值表示了像素的位置,而z值则指示了像素所在的通道。
量化模式是指将神经网络量化为bit的过程,在神经网络中,不同的层bit值可能存在差异,比如有些层是8bit,而有些层是4bit,甚至有些层是2bit。由于加速器自身最高处理位宽固定的,为了达到每个像素位置处索引数量不因量化模式的不同出现成倍增加的情况,本发明实施例对相同位置的像素设置同一索引值。例如,某一个三维数组为3*3*3的结构,位置同为(1,2)的像素共有三个:[1][2][1]、[1][2][2]、[1][2][3],本发明实施例对这三个像素设置同一个索引值,比如为H12。索引值的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
为了保证每个像素拼接后都为处理器处理的最高量化位宽,本发明实施例根据最高处理位宽与量化模式的商作为分块数量。例如,若加速器处理的最高处理位宽为8bit,而某一层的量化模式为8bit,则该层输入的特征图每一个块数据包含1个通道的数据,若某一层的量化模式为4bit,则该层输入的特征图每一个块数据包含2个通道的数据,若某一层的量化模式为2bit,则该层输入的特征图每一个块数据包含4个通道的数据。显然,块数据也是一个矩阵,并且当块数据包含的通道数大于1时,块数据为三维矩阵。
S102、计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
本发明实施例在将特征图分为块数据后,需要计算每个块数据的稀疏度,块数据的稀疏度的计算方法可基于现有的对矩阵的稀疏度的计算方法。本发明实施例通过将特征图拆分为多个块数据,并分别计算每个块数据稀疏度,通过抛弃全为0的块数据能够避免对特征图全部进行稀疏编码,根据稀疏度确定块数据的稀疏类型,根据不同的稀疏类型进行不同形式的稀疏编码,计算量进一步减小。
在上述各实施例的基础上,作为一种可选实施例,本发明实施例的块数据的稀疏类型有3种,分别为稀疏、较稠密和稠密,可以理解的是,稀疏、较稠密和稠密三轴稀疏类型中非0像素的数目逐渐增多。此外,本发明实施例中块数据的系数类型的数目不局限于3种,在实际应用时可根据实际情况进行调整,例如2种、4种、5种等等,本发明实施例不作具体的限定。
当块数据的系数类型为3种时,根据稀疏类型对所述剩余的块数据进行稀疏编码,具体包括:
对于所述剩余的块数据中的任一块数据,若所述块数据的稀疏类型为稀疏,则将所述块数据编码为稀疏矩阵存储格式,所述稀疏矩阵存储格式包括所述块数据中的非零值以及响应所述非零值的索引值。
需要说明的是,当剩余的块数据的稀疏类型为稀疏,说明块数据中大部分像素的值为0,此时需要将块数据编码为稀疏矩阵存储格式,稀疏矩阵存储格式即只存储块数据中的非零值和响应所述非零值的索引值。索引值可以是像素的位置坐标。本发明实施例对系数的块数据的编码方法由于不存储零值,能够节省大量存储空间,同时节省大量计算时间。
若所述块数据的稀疏类型为较稠密,则对所述块数据中的各像素设置标志位,所述标志位用于指示对应像素是否为0。
需要说明的是,当块数据的稀疏类型为较稠密时,说明块数据中非零像素和零像素的比例不相上下,此时输出块数据的原始数据以及标志位。由上述各实施例可知,块数据实际上也是一个矩阵,所谓原始数据即不作处理的矩阵(由于稀疏的块数据在编码时只存储非零值,因此稀疏的块数据相当于作处理的矩阵)。标记位能够指示标记的像素是否为0,在后续计算时可以直接跳过标记为0的像素,从而降低功耗。
若所述块数据的稀疏类型为稠密,则对所述块数据不进行稀疏编码。具体地,若块数据的稀疏类型为稠密,则无须动态编码,直接输出块数据的原始数据。
在上述各实施例的基础上,作为一种可选实施例,本发明实施例的加速方法还包括设置用于存储数值的第一存储器以及用于存储标志位的第二存储器。
相应地,所述若所述块数据的稀疏类型为稀疏,则将所述块数据编码为稀疏矩阵存储格式,具体为:将所述块数据中的非零值以及响应所述非零值的索引值存储在第一存储器中,同时关闭所述第二存储器的电源;
所述若所述块数据的稀疏类型为较稠密,则对所述块数据中的各像素设置标志位,具体为:将所述块数据中的原始数据存储在第一存储器中,将所述标志位存储在所述第二存储器中;
所述若所述块数据的稀疏类型为稠密,则对所述块数据不进行稀疏编码,具体为:将所述块数据中的原始数据存储在第一存储器中,同时关闭所述第二存储器的电源。
需要说明的是,本发明实施例在对稀疏的块数据和稠密的块数据进行存储时,均关闭第二存储器的电源,能够进一步节省功耗。
在上述各实施例的基础上,作为一种可选实施例,计算所述块数据的稀疏度,具体为:统计所述块数据中非0像素的个数与像素的总个数;将所述块数据中非0像素的个数与像素的总个数的比值作为所述块数据的稀疏度。例如一个块数据中非0像素的个数为20,像素的总个数为100,那么该块数据的稀疏度为0.2。
在上述实施例的基础上,本发明实施例中预设阈值包括第一预设阈值和第二预设阈值,其中的第一预设阈值小于第二预设阈值;若所述块数据的稀疏度小于所述第一预设阈值,则确定所述块数据的稀疏类型为稀疏;若所述块数据的稀疏度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则确定所述块数据的稀疏类型为较稠密;若所述块数据的稀疏度大于或等于所述第二预设阈值,则确定所述块数据的稀疏类型为稠密。
本发明实施例提供了具体地确定块数据的稀疏类型的方法,为后续根据块数据的稀疏类型进行不同形式的稀疏编码提供了基础。
图3为本发明另一个实施例提供的加速方法的流程示意图,如图3所示,包括:
步骤一、块划分
特征图在图3所示的实施例中等效为一个立方体,特征图中各像素在正视该立方体的正面的坐标系中的坐标即作为该像素的位置,可以理解的是,特征图中的像素的坐标与该像素所在的位置以及特征图的通道有关,也即像素的位置和像素所在的通道共同构成了像素在特征图中的坐标。在对特征图进行分块的过程中,图3中以特征图的量化模式2-bit、4-bit和8-bit模式分别进行了展示,在图3所示的实施例中最高处理位宽为8bit,那么在2-bit模式下,特征图共分为4个块数据,每个块数据包括两个通道;在4-bit模式下,特征图共分为2个块数据,每个块数据包括4个通道;在8-bit模式下,特征图共分为1个块数据,一个块数据包括8个通道。图3中Block和BK均表示块数据。
步骤二、块稀疏度分析
图3中示出了一个9*9大小的特征图,该特征图共分为9个块数据,通过对9个块数据进行稀疏度的分析,可知BK00、BK12和BK22分别为稀疏块(即稀疏类型为稀疏),BK01、BK02、BK10和BK20分别为全0块,BK11为中间块(即稀疏类型为较稠密),BK21为稠密块(即稀疏类型为稠密)。
步骤三、编码存储
由于BK00为稀疏块,因此只需对块数据中的非零值和索引值进行存储,在图3所示的实施例中存在两个第一存储器,分别为BANK0和BANK1,其中在BANK0中存储2和6,共两个非零值,在BANK1中存储2和6对应的索引值,2在块数据中位于第2行第2列,其索引值为H11,而6在块数据中位于第3行第3列,其索引值为H22(本发明实施例中行号和列号从0开始计算)。由于对稀疏块进行稀疏编码的过程不需要设置标记位,因此可以关掉用于存储标记位的第二存储器——GUARD存储器的电源。
由于BK11为中间块,因此存储的是BK11的原始数据,根据BK11中各数值的排布顺序,在BANK0中存储20132,在BANK1中存储00060,同时在GUARD存储器中存储原始数据的标记位。由于BANK0中的第一位数字为2,所以在GUARD中的第一位数字为1,同理由于BANK1中的第一位数字为0,所以在GUARD中的第二为数字0,依次计算到BANK1中的最后一位数字。
由于BK21为稠密块,因此不需要对该块数据进行稀疏编码,直接将块数据中的原始数据存至BANK0和BANK1中,在这一过程中关闭GUARD的电源。
在上述各实施例的基础上,本发明实施例的神经网络的加速方法在稀疏编码后还包括数据处理的过程,包括:
将系数编码后的块数据输入至多模式乘法器进行乘加运算,获得中间结果;将所述中间结果进行移位和/或求和运算,获得输入至下层的特征图;其中,所述多模式乘法器根据所述层的量化模式配置为与块数据的通道相等的多个子乘法器。
需要说明的是,本发明实施例的数据处理方法与稀疏编码方法匹配,由于本发明实施例将特征图进行了分块,获得了多个块数据,因此,在数据处理过程,多模式乘法器也需要适应性地进行分块,众所周知,多模式乘法器实际上是由若干个以矩阵形式排列连接的乘法单元构成,本发明实施例中多模式乘法器根据所述层的量化模式配置为与块数据的通道相等的多个子乘法器,例如,加速器处理的最高处理位宽为8bit,而某一层的量化模式为8bit,则不对多模式乘法器进行分块,多某一层的量化模式为4bit,则需要分成两个子乘法器,若某一层的量化模式为2bit,则需要分成4个子乘法器。本发明实施例通过控制信号进行重构,实现不同量化模式的乘加,在多模式乘法器下方添加新的可重构数据通路,对于不同的量化模式可以在一个周期内完成乘加操作。
具体地,本发明实施例的数据处理过程具体由一个多模式乘法器附加移位电路、求和电路以及多路选择器电路组成。多模式乘法器(multiplier)是一种完成两个互不相关的模拟信号相乘作用的电子器件。它可以将两个二进制数相乘。
图4为本发明实施例提供的数据处理过程的流程示意图,如图所示,MU表示多模式乘法器中的乘法单元,C1、C2和C3为3个多路选择器,含有加号的圆形标识求和电路,而含有<<4的六边形则标识移位电路,在图4所示的实施例中,不同乘法单元的组合被配置为不同的工作模式。根据存储数据的量化位宽不同,该多模式乘法器可配置成1个8bit乘法器或者2个4bit乘法器或者4个2bit乘法器,无论哪种模式,均会产生16bit数据,切分成4个部分和,每个4bit。当乘法器被配置为2bit时,通过配置C3C2C1均为1.这些部分和将不通过移位器,直接相加。当乘法器配制成2个4bit乘法器时,通过C3C2C1配置成010,使得部分和3移位以后和部分和2相加。部分和1移位以后和部分和0相加。当配置成1个8bit乘法器时,直接通过移位相加拼接4个部分和。
图5为本发明实施例提供的神经网络的加速装置的结构示意图,如图5所示,该加速装置包括:块数据获取模块301和稀疏编码模块302,其中:
块数据获取模块301用于对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值。
具体地,由于加速器自身最高处理位宽固定的,为了达到每个像素位置处索引数量不因量化模式的不同出现成倍增加的情况,本发明实施例对相同位置的像素设置同一索引值。例如,某一个三维数组为3*3*3的结构,位置同为(1,2)的像素共有三个:[1][2][1]、[1][2][2]、[1][2][3],本发明实施例对这三个像素设置同一个索引值,比如为H12。索引值的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
为了保证每个像素拼接后都为处理器处理的最高量化位宽,本发明实施例根据最高处理位宽与量化模式的商作为分块数量。例如,若加速器处理的最高处理位宽为8bit,而某一层的量化模式为8bit,则该层输入的特征图每一个块数据包含1个通道的数据,若某一层的量化模式为4bit,则该层输入的特征图每一个块数据包含2个通道的数据,若某一层的量化模式为2bit,则该层输入的特征图每一个块数据包含4个通道的数据。显然,块数据也是一个矩阵,并且当块数据包含的通道数大于1时,块数据为三维矩阵。
稀疏编码模块302用于计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
本发明实施例提供的加速装置,具体执行上述各加速方法实施例流程,具体请详见上述各加速方法实施例的内容,在此不再赘述。本发明实施例提供的加速装置通过将特征图拆分为多个块数据,并分别计算每个块数据稀疏度,通过抛弃全为0的块数据能够避免对特征图全部进行稀疏编码,根据稀疏度确定块数据的稀疏类型,根据不同的稀疏类型进行不同形式的稀疏编码,计算量进一步减小。
在上述实施例的基础上,作为一种可选实施例,加速装置还包括:运算模块,用于将系数编码后的块数据输入至多模式乘法器进行乘加运算,获得中间结果,将所述中间结果进行移位和/或求和运算,获得输入至下层的特征图;其中,所述多模式乘法器根据所述层的量化模式配置为与块数据的通道相等的多个子乘法器。
例如,本发明实施例经由前端设计、后端设计、工场制造后流片。工艺制程采用台积电65nm工艺。而后分装芯片后测试功耗。芯片面积3mmx4mm。运行频率20-200MHz.功耗15.1-318.6毫瓦。本发明实施例的加速方法与现有的加速方法的访问次数的对比结果如图7所示,图6为本发明实施例的加速方法与现有加速方法的访问次数的对比示意图。本发明实施例在不同的稀疏状态和量化方式下都有较好的存储效率。
在稀疏区域中,本发明实施例只存储非零值与其索引值,相比于下,稠密存储的方案,本发明实施例可减少82.8%存储访问。在中间状态,本发明实施例存储零标志位关闭运算单元电源以后,可以节省一个单元53.6%的能量。在稠密区域,本发明实施例只存储原始数据,没有索引值等开销。在稠密区域,相比于传统的稀疏网络存储方案。可减少83.6%的存储开销。
图7为本发明实施例提供的电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储在存储器430上并可在处理器410上运行的计算机程序,以执行上述各实施例提供的加速方法,例如包括:对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的加速方法,例如包括:对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种神经网络的加速方法,其特征在于,包括:
对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;
计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
2.根据权利要求1所述的加速方法,其特征在于,所述根据所述稀疏类型对所述剩余的块数据进行稀疏编码,之后还包括:
将系数编码后的块数据输入至多模式乘法器进行乘加运算,获得中间结果,将所述中间结果进行移位和/或求和运算,获得输入至下层的特征图;
其中,所述多模式乘法器根据所述层的量化模式配置为与块数据的通道相等的多个子乘法器。
3.根据权利要求1或2所述的加速方法,其特征在于,所述稀疏类型包括稀疏、较稠密以及稠密;
相应地,根据所述稀疏类型对所述剩余的块数据进行稀疏编码,具体包括:
对于所述剩余的块数据中的任一块数据,若所述块数据的稀疏类型为稀疏,则将所述块数据编码为稀疏矩阵存储格式,所述稀疏矩阵存储格式包括所述块数据中的非零值以及响应所述非零值的索引值;
若所述块数据的稀疏类型为较稠密,则对所述块数据中的各像素设置标志位,所述标志位用于指示对应像素是否为0;
若所述块数据的稀疏类型为稠密,则对所述块数据不进行稀疏编码。
4.根据权利要求3所述的加速方法,其特征在于,还包括:设置用于存储数值的第一存储器以及用于存储标志位的第二存储器;
相应地,所述若所述块数据的稀疏类型为稀疏,则将所述块数据编码为稀疏矩阵存储格式,具体为:将所述块数据中的非零值以及响应所述非零值的索引值存储在第一存储器中,同时关闭所述第二存储器的电源;
所述若所述块数据的稀疏类型为较稠密,则对所述块数据中的各像素设置标志位,具体为:将所述块数据中的原始数据存储在第一存储器中,将所述标志位存储在所述第二存储器中;
所述若所述块数据的稀疏类型为稠密,则对所述块数据不进行稀疏编码,具体为:将所述块数据中的原始数据存储在第一存储器中,同时关闭所述第二存储器的电源。
5.根据权利要求1所述的加速方法,其特征在于,所述计算所述块数据的稀疏度,具体为:
统计所述块数据中非0像素的个数与像素的总个数;
将所述块数据中非0像素的个数与像素的总个数的比值作为所述块数据的稀疏度。
6.根据权利要求3所述的加速方法,其特征在于,所述根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,具体为:
设置第一预设阈值和第二预设阈值,所述第一预设阈值小于第二预设阈值;
若所述块数据的稀疏度小于所述第一预设阈值,则确定所述块数据的稀疏类型为稀疏;
若所述块数据的稀疏度大于或等于所述第一预设阈值,且小于所述第二预设阈值,则确定所述块数据的稀疏类型为较稠密;
若所述块数据的稀疏度大于或等于所述第二预设阈值,则确定所述块数据的稀疏类型为稠密。
7.一种神经网络的加速装置,其特征在于,包括:
块数据获取模块,用于对于神经网络中的任一层,根据层的量化模式,对输入至所述层的特征图进行分块,获得若干个块数据,对所述块数据中不同通道但同一位置的像素设置同一索引值;
稀疏编码模块,用于计算所述块数据的稀疏度,抛弃全为0的块数据,对剩余的块数据,根据所述剩余的块数据的稀疏度以及预设阈值确定相应的稀疏类型,根据所述稀疏类型对所述剩余的块数据进行稀疏编码。
8.根据权利要求7所述的加速装置,其特征在于,还包括:
运算模块,用于将系数编码后的块数据输入至多模式乘法器进行乘加运算,获得中间结果,将所述中间结果进行移位和/或求和运算,获得输入至下层的特征图;
其中,所述多模式乘法器根据所述层的量化模式配置为与块数据的通道相等的多个子乘法器。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6中任意一项所述的加速方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6中任意一项所述的加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811211042.4A CN109543815B (zh) | 2018-10-17 | 2018-10-17 | 神经网络的加速方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811211042.4A CN109543815B (zh) | 2018-10-17 | 2018-10-17 | 神经网络的加速方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109543815A true CN109543815A (zh) | 2019-03-29 |
CN109543815B CN109543815B (zh) | 2021-02-05 |
Family
ID=65843994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811211042.4A Active CN109543815B (zh) | 2018-10-17 | 2018-10-17 | 神经网络的加速方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109543815B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026700A (zh) * | 2019-11-21 | 2020-04-17 | 清华大学 | 实现加速的存内计算架构及其加速方法 |
CN111563589A (zh) * | 2020-04-14 | 2020-08-21 | 中科物栖(北京)科技有限责任公司 | 一种神经网络模型的量化方法及装置 |
CN112631983A (zh) * | 2020-12-28 | 2021-04-09 | 电子科技大学 | 一种面向稀疏神经网络的片上系统 |
CN112883982A (zh) * | 2021-01-08 | 2021-06-01 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
WO2021135573A1 (zh) * | 2019-12-31 | 2021-07-08 | 深圳云天励飞技术股份有限公司 | 图像识别神经网络处理方法、装置与系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
US20180046919A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Multi-iteration compression for deep neural networks |
US20180075344A1 (en) * | 2016-09-09 | 2018-03-15 | SK Hynix Inc. | Neural network hardware accelerator architectures and operating method thereof |
CN107944555A (zh) * | 2017-12-07 | 2018-04-20 | 广州华多网络科技有限公司 | 神经网络压缩和加速的方法、存储设备和终端 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108510066A (zh) * | 2018-04-08 | 2018-09-07 | 清华大学 | 一种应用于卷积神经网络的处理器 |
CN108596331A (zh) * | 2018-04-16 | 2018-09-28 | 浙江大学 | 一种细胞神经网络硬件架构的优化方法 |
-
2018
- 2018-10-17 CN CN201811211042.4A patent/CN109543815B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
US20180046919A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Multi-iteration compression for deep neural networks |
US20180075344A1 (en) * | 2016-09-09 | 2018-03-15 | SK Hynix Inc. | Neural network hardware accelerator architectures and operating method thereof |
CN107944555A (zh) * | 2017-12-07 | 2018-04-20 | 广州华多网络科技有限公司 | 神经网络压缩和加速的方法、存储设备和终端 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108510066A (zh) * | 2018-04-08 | 2018-09-07 | 清华大学 | 一种应用于卷积神经网络的处理器 |
CN108596331A (zh) * | 2018-04-16 | 2018-09-28 | 浙江大学 | 一种细胞神经网络硬件架构的优化方法 |
Non-Patent Citations (2)
Title |
---|
ZHANG CHEN等: "Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks", 《ACM PRESS,2015》 * |
余子健等: "基于FPGA的卷积神经网络加速器", 《计算机工程》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026700A (zh) * | 2019-11-21 | 2020-04-17 | 清华大学 | 实现加速的存内计算架构及其加速方法 |
CN111026700B (zh) * | 2019-11-21 | 2022-02-01 | 清华大学 | 实现加速的存内计算架构及其加速方法 |
WO2021135573A1 (zh) * | 2019-12-31 | 2021-07-08 | 深圳云天励飞技术股份有限公司 | 图像识别神经网络处理方法、装置与系统 |
CN111563589A (zh) * | 2020-04-14 | 2020-08-21 | 中科物栖(北京)科技有限责任公司 | 一种神经网络模型的量化方法及装置 |
CN111563589B (zh) * | 2020-04-14 | 2024-01-16 | 中科物栖(南京)科技有限公司 | 一种神经网络模型的量化方法及装置 |
CN112631983A (zh) * | 2020-12-28 | 2021-04-09 | 电子科技大学 | 一种面向稀疏神经网络的片上系统 |
CN112631983B (zh) * | 2020-12-28 | 2023-05-02 | 电子科技大学 | 一种面向稀疏神经网络的片上系统 |
CN112883982A (zh) * | 2021-01-08 | 2021-06-01 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
CN112883982B (zh) * | 2021-01-08 | 2023-04-18 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109543815B (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543815A (zh) | 神经网络的加速方法及装置 | |
CN109543816B (zh) | 一种基于权重捏合的卷积神经网络计算方法和系统 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN110880038B (zh) | 基于fpga的加速卷积计算的系统、卷积神经网络 | |
US11797855B2 (en) | System and method of accelerating execution of a neural network | |
CN110610237A (zh) | 模型的量化训练方法、装置及存储介质 | |
CN111542839B (zh) | 一种反卷积神经网络的硬件加速方法、装置和电子设备 | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
CN110097172A (zh) | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 | |
WO2022112739A1 (en) | Activation compression method for deep learning acceleration | |
CN110909874A (zh) | 一种神经网络模型的卷积运算优化方法和装置 | |
CN109325590A (zh) | 用于实现计算精度可变的神经网络处理器的装置 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
DE102017117381A1 (de) | Beschleuniger für dünnbesetzte faltende neuronale Netze | |
CN116992965B (zh) | Transformer大模型的推理方法、装置、计算机设备和存储介质 | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN110555519A (zh) | 一种基于符号随机计算的低复杂度卷积神经网络 | |
CN112686365A (zh) | 运行神经网络模型的方法、装置和计算机设备 | |
CN118043821A (zh) | 混合稀疏压缩 | |
CN113610222A (zh) | 计算神经网络卷积运算的方法及系统、硬件装置 | |
CN116090513A (zh) | 矩阵乘法的运算方法及装置 | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
CN113313253A (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 |