CN115456152A - 基于权重预编码的稀疏卷积神经网络加速器和计算设备 - Google Patents
基于权重预编码的稀疏卷积神经网络加速器和计算设备 Download PDFInfo
- Publication number
- CN115456152A CN115456152A CN202210963479.3A CN202210963479A CN115456152A CN 115456152 A CN115456152 A CN 115456152A CN 202210963479 A CN202210963479 A CN 202210963479A CN 115456152 A CN115456152 A CN 115456152A
- Authority
- CN
- China
- Prior art keywords
- data
- selection
- weight
- activation
- 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.)
- Granted
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 60
- 230000004913 activation Effects 0.000 claims abstract description 134
- 238000000034 method Methods 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 abstract description 15
- 238000001994 activation Methods 0.000 description 105
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 241001442055 Vipera berus Species 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了基于权重预编码的稀疏卷积神经网络加速器和计算设备,稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一引擎包括若干块;预编码模块用于对每一引擎的权重数据进行编码,得到该引擎中各块的编码权重数据;每一块包括:激活选择器用于获取掩码数据和若干激活数据,根据掩码数据从各激活数据中确定若干目标激活数据;乘法模块用于根据编码权重数据和各目标激活数据,确定部分积数据;加法树用于对各部分积数据进行累加,得到乘加运算数据。本发明通过掩码数据对激活数据进行筛选,实现了各种稀疏度场景下的卷积神经网络加速。解决了可变稀疏密度约束块受权重稀疏度限制,导致低权重稀疏度场景下难以实现卷积神经网络加速的问题。
Description
技术领域
本发明涉及数字电路领域,尤其涉及的是基于权重预编码的稀疏卷积神经网络加速器和计算设备。
背景技术
卷积神经网络(CNN)在边缘设备上的推理应用要求低功耗和高性能计算,因此开发高效节能的乘加单元和高通量稀疏CNN加速器具有重要意义。由于数据中的零可以显著降低计算和存储成本,因此数据稀疏性引起了人们的极大关注。常规的稀疏卷积神经网络加速器利用接受压缩稀疏列(CSC)格式的PE跳过0,但是常规的稀疏卷积神经网络加速器存在必要的存储和控制逻辑,难以满足低功耗设计的要求。因此可变稀疏密度CNN加速器更符合低功耗需求,然而可变稀疏密度CNN加速器是通过支持可变稀疏密度约束块(VDBB)的空间展开结构来实现稀疏机制的,因此不支持权重稀疏度低于50%的情况,难以满足各种稀疏度场景下的卷积神经网络加速需求。
因此,现有技术还有待改进和发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供基于权重预编码的稀疏卷积神经网络加速器和计算设备,旨在解决现有技术中通过可变稀疏密度约束块的空间展开结构来实现卷积神经网络加速,无法应用于权重稀疏度低于50%的场景的问题。
本发明解决问题所采用的技术方案如下:
第一方面,本发明实施例提供一种基于权重预编码的稀疏卷积神经网络加速器,其中,所述稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一所述引擎包括若干块;
所述预编码模块,用于获取每一所述引擎对应的权重数据,对该引擎对应的所述权重数据进行编码,得到该引擎中各所述块分别对应的编码权重数据;
每一所述块包括:
激活选择器,用于获取掩码数据和若干激活数据,根据所述掩码数据从各所述激活数据中确定若干目标激活数据,其中,每一所述块对应的所述掩码数据基于该块对应的所述权重数据确定;
乘法模块,用于根据所述编码权重数据和各所述目标激活数据,确定各所述目标激活数据分别对应的部分积数据;
加法树,用于对各所述部分积数据进行累加,得到该块对应的乘加运算数据。
在一种实施方式中,所述预编码模块基于基4booth乘法器对应的编码器构成。
在一种实施方式中,所述根据所述掩码数据从各所述激活数据中确定若干目标激活数据,包括:
获取所述掩码数据对应的稀疏度,其中,所述稀疏度基于所述掩码数据对应的零位个数与比特位数的比值确定;
当所述稀疏度大于或者等于稀疏阈值时,根据所述掩码数据中各非零位分别对应的标准值确定所述掩码数据对应的选择数据,其中,所述选择数据包括预设个数的若干选择值;
根据所述选择数据从各激活数据中确定若干所述目标激活数据,其中,各所述选择值与各所述目标激活数据一一对应。
在一种实施方式中,所述根据所述掩码数据从各所述激活数据中确定若干目标激活数据,包括:
获取所述掩码数据对应的稀疏度,其中,所述稀疏度基于所述掩码数据对应的零位个数与比特位数的比值确定;
当所述稀疏度小于稀疏阈值时,将所述掩码数据分为若干段;
根据各所述段分别对应的各非零位的标准值,确定各所述段分别对应的选择数据,其中,每一所述段对应的所述选择数据包括预设个数的若干选择值;
根据各所述选择数据和各所述激活数据,确定各所述选择数据分别对应的若干所述目标激活数据,其中,每一所述选择数据中各所述选择值与该选择数据的各所述目标激活数据一一对应。
在一种实施方式中,所述激活选择器还包括若干多路复用器,每一所述选择数据对应的若干所述目标激活数据的确定方法包括:
根据该选择数据中的各所述选择值,确定各所述选择值分别对应的选择信号;
将各所述选择信号和各所述激活数据输入各所述多路复用器,其中,各所述选择信号与各所述多路复用器一一对应,每一所述多路复用器对应的输入数据为一个所述选择信号和各所述激活数据;
获取各所述多路复用器分别基于各自对应的所述输入数据生成的所述目标激活数据,得到该选择数据对应的若干所述目标激活数据。
在一种实施方式中,每一所述部分积数据包括若干不同级别的部分积,所述对各所述部分积数据进行累加,得到该块对应的乘加运算数据,包括:
根据每一所述选择数据对应的各所述部分积数据,确定若干进位输出数据,其中,若干所述进位输出数据分别对应不同所述级别,每一所述进位输出数据基于各所述部分积数据中相同所述级别的所述部分积的和确定;
根据若干所述进位输出数据,确定该选择数据对应的所述乘加运算数据。
在一种实施方式中,当所述选择数据的数量为若干个时,各所述选择数据分别对应不同的数据处理周期。
在一种实施方式中,位于同一所述引擎中的各所述块分别对应的所述编码权重数据相同。
在一种实施方式中,各所述引擎中位于同一顺序位的各所述块分别对应相同的若干所述激活数据。
第二方面,本发明实施例还提供一种计算设备,其中,所述计算设备包括上述任一所述的基于权重预编码的稀疏卷积神经网络加速器。
本发明的有益效果:本发明实施例中的基于权重预编码的稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一所述引擎包括若干块;所述预编码模块,用于获取每一所述引擎对应的权重数据,对该引擎对应的所述权重数据进行编码,得到该引擎中各所述块分别对应的编码权重数据;每一所述块包括:激活选择器,用于获取掩码数据和若干激活数据,根据所述掩码数据从各所述激活数据中确定若干目标激活数据,其中,每一所述块对应的所述掩码数据基于该块对应的所述权重数据确定;乘法模块,用于根据所述编码权重数据和各所述目标激活数据,确定各所述目标激活数据分别对应的部分积数据;加法树,用于对各所述部分积数据进行累加,得到该块对应的乘加运算数据。本发明通过掩码数据对激活数据进行筛选,以实现稀疏机制。可以满足各种稀疏度场景下的卷积神经网络加速需求。解决了现有技术中通过可变稀疏密度约束块的空间展开结构来实现卷积神经网络加速,无法应用于权重稀疏度低于50%的场景的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于权重预编码的稀疏卷积神经网络加速器的体系结构示意图。
图2是本发明实施例提供的8比特的基4booth乘法器的工作原理图。
图3是本发明实施例提供的预编码模块的门级电路图。
图4(a)是本发明实施例提供的稀疏度大于或者等于50%下的激活选择器的工作原理图。
图4(b)是本发明实施例提供的稀疏度小于50%下的激活选择器的工作原理图。
图5是本发明实施例提供的改进的加法树的工作原理图。
图6是本发明实施例提供的计算设备的原理框图。
具体实施方式
本发明公开了基于权重预编码的稀疏卷积神经网络加速器和计算设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
针对现有技术的上述缺陷,本发明提供一种基于权重预编码的稀疏卷积神经网络加速器,所述稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一所述引擎包括若干块;所述预编码模块,用于获取每一所述引擎对应的权重数据,对该引擎对应的所述权重数据进行编码,得到该引擎中各所述块分别对应的编码权重数据;每一所述块包括:激活选择器,用于获取掩码数据和若干激活数据,根据所述掩码数据从各所述激活数据中确定若干目标激活数据,其中,每一所述块对应的所述掩码数据基于该块对应的所述权重数据确定;乘法模块,用于根据所述编码权重数据和各所述目标激活数据,确定各所述目标激活数据分别对应的部分积数据;加法树,用于对各所述部分积数据进行累加,得到该块对应的乘加运算数据。本发明通过掩码数据对激活数据进行筛选,以实现稀疏机制。可以满足各种稀疏度场景下的卷积神经网络加速需求。解决了现有技术中通过可变稀疏密度约束块的空间展开结构来实现卷积神经网络加速,无法应用于权重稀疏度低于50%的场景的问题。
如图1所示,所述基于权重预编码的稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一所述引擎包括若干块;
所述预编码模块,用于获取每一所述引擎对应的权重数据,对该引擎对应的所述权重数据进行编码,得到该引擎中各所述块分别对应的编码权重数据;
每一所述块包括:
激活选择器,用于获取掩码数据和若干激活数据,根据所述掩码数据从各所述激活数据中确定若干目标激活数据,其中,每一所述块对应的所述掩码数据基于该块对应的所述权重数据确定;
乘法模块,用于根据所述编码权重数据和各所述目标激活数据,确定各所述目标激活数据分别对应的部分积数据;
加法树,用于对各所述部分积数据进行累加,得到该块对应的乘加运算数据。
具体地,如图1所示,本实施例中的稀疏卷积神经网络加速器包括多个引擎和预编码模块,每个引擎包括多个块,可以实现多个乘法之和的运算。将各引擎的权重数据输入预编码模块,即得到各引擎分别对应的编码权重数据。为了使每个块在进行乘加运算时更加高效节能,每个块均设置有激活选择器、乘法模块以及加法树。针对每个块,根据该块对应的权重数据确定掩码数据,将掩码数据和各个激活数据输入激活选择器。激活选择器会自动基于掩码数据从多个激活数据中筛选出一部分作为目标激活数据,以达到数据稀疏、减少运算能耗的目的。然后将该块对应的编码权重数据和各个目标激活数据输入乘法模块,乘法模块会将每一目标激活数据与编码权重数据进行booth运算,从而得到各目标激活数据分别对应的部分积数据。然后将各部分积数据输入加法树,加法树会对各部分积数据进行累加运算,得到该块对应的乘加运算结果。本实施例中在进行乘加运算之前对激活数据进行了筛选,减少了后续乘加运算的运算能耗。
在一种实现方式中,所述预编码模块基于基4booth乘法器对应的编码器构成。
具体地,如图2所示,图中展现了booth乘法器的工作原理,基4Booth算法通过在被乘数的最高位扩展1位符号位或零,能支持卷积计算所需的无符号乘法和有符号乘法,可以提高乘法性能,并将部分积数量减少一半(图中Ex部分和Sx部分已知,所以无需计算,从而减少计算开销)。因此为了进一步降低功耗,本实施例采用基4booth乘法器对应的编码器构成预编码模块,通过预编码模块对各引擎的权重数据进行编码,以输出各引擎的编码权重数据。
在一种实现方式中,所述根据所述掩码数据从各所述激活数据中确定若干目标激活数据,包括:
步骤S10、获取所述掩码数据对应的稀疏度,其中,所述稀疏度基于所述掩码数据对应的零位个数与比特位数的比值确定;
步骤S11、当所述稀疏度大于或者等于稀疏阈值时,根据所述掩码数据中各非零位分别对应的标准值确定所述掩码数据对应的选择数据,其中,所述选择数据包括预设个数的若干选择值;
步骤S12、根据所述选择数据从各激活数据中确定若干所述目标激活数据,其中,各所述选择值与各所述目标激活数据一一对应。
具体地,如图4(a)、(b)所示,针对每一块,将该块对应的掩码数据和各个激活数据输入该块对应的激活选择器中,激活选择器首先根据掩码数据中零位个数与比特位数的比值得到稀疏度。然后判断稀疏度与预先设定的稀疏阈值之间的大小关系,例如稀疏阈值设定为50%。当稀疏度大于或者等于稀疏阈值时,根据预设的映射表确定掩码数据中各非零位分别对应的标准值。然后根据标准值的个数判断是否需要调用预设值,当标准值的个数与选择值的个数相等时,不调用预设值,根据各标准值确定选择数据,其中,各标准值与各选择值一一对应;当标准值的个数与选择值的个数不相等时,需要调用预设值,根据预设值和各标准值确定选择数据,其中,预设值与标准值的个数和与选择值的个数相等。然后通过该选择数据中的每一个选择值从各激活数据中筛选出一个目标激活数据,从而得到与选择值个数相等的多个目标激活数据。
举例说明,如图4(a)所示,掩码数据为8比特数据,其对应的零位个数为5,则稀疏度等于5/8=62.5%,大于预设稀疏阈值50%,因此在一个时钟周期中通过比对映射表,确定该掩码数据中各非零位分别对应的标准值,即6、4、1。由于本实施例中设定选择数据为4个3比特数据,因此需要调用预设值X,得到该掩码数据对应的选择数据X641。
在另一种实现方式中,所述根据所述掩码数据从各所述激活数据中确定若干目标激活数据,包括:
步骤S20、获取所述掩码数据对应的稀疏度,其中,所述稀疏度基于所述掩码数据对应的零位个数与比特位数的比值确定;
步骤S21、当所述稀疏度小于稀疏阈值时,将所述掩码数据分为若干段;
步骤S22、根据各所述段分别对应的各非零位的标准值,确定各所述段分别对应的选择数据,其中,每一所述段对应的所述选择数据包括预设个数的若干选择值;
步骤S23、根据各所述选择数据和各所述激活数据,确定各所述选择数据分别对应的若干所述目标激活数据,其中,每一所述选择数据中各所述选择值与该选择数据的各所述目标激活数据一一对应。
具体地,当稀疏度小于稀疏阈值时,需要对掩码数据进行分段处理,获得每一段分别对应的选择信号,其中,各段分别对应不同的时钟周期。具体地,针对每一段,根据预设的映射表确定该段内各非零位分别对应的标准值,然后通过标准值的个数判断是否需要调用预设值,从而得到该段对应的选择数据。由于每个时钟周期都会获得一个选择数据,因此最终会产生多个选择数据。针对每一选择数据,都需要根据该选择数据中的每一个选择值从各激活数据中筛选出一个目标激活数据,得到该选择数据对应的多个目标激活数据,从而实现在低权重稀疏度场景下的卷积神经网络加速。
举例说明,如图4(b)所示,掩码数据为8比特数据,其对应的零位个数为3,则稀疏度等于3/8=37.5%,小于预设稀疏阈值50%,因此需要将8比特数据分为两段,每段采用一个时钟周期处理。对于左半段,通过比对映射表,确定左半段中各非零位分别对应的标准值,即6、5、4。由于本实施例中设定选择数据为4个3比特数据,因此需要调用X,得到该掩码数据对应的一个选择数据X654。对于右半段,通过比对映射表,确定右半段中各非零位分别对应的标准值,即2、1。调用X,得到该掩码数据对应的第二个选择数据X21X。
在一种实现方式中,预设值X为0。
在一种实现方式中,每一所述引擎中采用1位控制信号来控制采用多少时钟周期计算数据。举例说明,假设使用8比特掩码数据完成激活过滤,当稀疏度大于或者等于稀疏阈值50%时,在一个时钟周期内从八个激活数据的选择最多四个目标激活数据;当稀疏度小于预设的稀疏阈值时,在两个时钟周期内完成目标激活数据的选择,每一时钟周期内从八个激活数据的选择最多四个目标激活数据。
在一种实现方式中,所述激活选择器还包括若干多路复用器,每一所述选择数据对应的若干所述目标激活数据的确定方法包括:
步骤S30、根据该选择数据中的各所述选择值,确定各所述选择值分别对应的选择信号;
步骤S31、将各所述选择信号和各所述激活数据输入各所述多路复用器,其中,各所述选择信号与各所述多路复用器一一对应,每一所述多路复用器对应的输入数据为一个所述选择信号和各所述激活数据;
步骤S32、获取各所述多路复用器分别基于各自对应的所述输入数据生成的所述目标激活数据,得到该选择数据对应的若干所述目标激活数据。
具体地,为了对各激活数据进行筛选,本实施例在激活选择器中设置了多个多路复用器。针对每一选择数据,根据该选择数据中的各选择值分别生成一个选择信号,各选择信号与各多路复用器一一对应。针对每一选择信号,将各个激活数据和该选择信号一起输入对应的多路复用器,该多路复用器从多个激活数据中输出一个作为目标激活数据。可以理解的是,每一选择数据都会生成一组目标激活数据,该组中包含的各目标激活数据与各多路复用器一一对应,当选择数据为多个时,则会生成多组目标激活数据。
举例说明,如图4(a)所示,假设掩码数据为8比特数据。当稀疏度大于或者等于稀疏阈值(例如50%)时,将掩码数据映射为四个3比特数据,分别作为四个8:1多路复用器的选择信号,其中,四个8:1多路复用器预先集成至激活选择器中。每一个8:1多路复用器采用其对应的选择信号,从八个激活数据中选择一个8比特激活数据作为目标激活数据,四个8:1多路复用器最多可以得到四个目标激活数据。如图4(b)所示,当稀疏度小于稀疏阈值(例如50%)时,将掩码数据映射为两组数据,每组包括四个3比特数据。对两组数据分别采用不同的时钟周期,每一时钟周期里根据一组数据中的四个3比特数据确定四个8:1多路复用器的选择信号。每一个8:1多路复用器采用其对应的选择信号,从八个激活数据中选择一个8比特激活数据作为目标激活数据,四个8:1多路复用器最多可以得到四个目标激活数据,即每个时钟周期最多可以得到四个目标激活数据。最后,将选定的数据发送到D型触发器。
在一种实现方式中,每一所述部分积数据包括若干不同级别的部分积,所述对各所述部分积数据进行累加,得到该块对应的乘加运算数据,包括:
步骤S40、根据每一所述选择数据对应的各所述部分积数据,确定若干进位输出数据,其中,若干所述进位输出数据分别对应不同所述级别,每一所述进位输出数据基于各所述部分积数据中相同所述级别的所述部分积的和确定;
步骤S41、根据若干所述进位输出数据,确定该选择数据对应的所述乘加运算数据。
具体地,本实施例在华莱士树结构的基础上对部分积的加法树进行了改进。如图5所示,为了减少累积阶段的位扩展,首先对各部分积数据进行改造,将各部分积数据中相同级别的部分积添加至同一阶段。然后,为了优化加法器树的时序,每个阶段只根据该阶段对应的各部分积生成进位和和输出,即得到每个阶段的进位输出数据,从而避免进位传播。最后,通过进位加法器根据各阶段的进位输出数据计算最后的进位和输出,得到最终的和,即乘加运算数据。
在一种实现方式中,为了进一步降低稀疏卷积神经网络加速器的功耗和面积消耗,本实施例根据真值表来搭建特殊的标准单元来作为基本单元构建加法器树,从而减少电路中用于翻转操作的晶体管数量。
在一种实现方式中,当所述选择数据的数量为若干个时,各所述选择数据分别对应不同的数据处理周期。
具体地,当选择数据为多个时,表示当前的稀疏度小于预设的稀疏阈值,属于低稀疏度场景。为了在低稀疏度场景下实现卷积神经网络的加速,本实施例采用分时钟周期处理的方式,采用不同时钟周期分别处理不同的选择数据,即一个时钟周期内仅对一个选择数据进行处理,得到该选择数据对应的多个目标激活数据,再根据该选择数据对应的多个目标激活数据调用乘法模块和加法树,以获得基于该选择数据产生的乘加运算数据。
在一种实现方式中,位于同一所述引擎中的各所述块分别对应的所述编码权重数据相同。
具体地,如图1、图3所示,图中显示了基于权重预编码的稀疏卷积神经网络加速器的门级电路,针对同一引擎中的各个块,本实施例的预编码模块的输出可以赋予给各个块共享,因为预编码模块的输出取决于权重值,即相当于权重复用。由于本实施例中无需每个块都重新获取编码权重数据,因此可以进一步降低稀疏卷积神经网络加速器的计算能耗。
在一种实现方式中,各所述引擎中位于同一顺序位的各所述块分别对应相同的若干所述激活数据。
具体地,为了进一步降低稀疏卷积神经网络加速器的计算能耗的目的,本实施例还采用了激活值复用的模式,如图1所示,不同引擎中同一顺序位的各块的激活值是相同的。
在一种实现方式中,所述稀疏卷积神经网络加速器包括16个引擎,每个引擎包括8个块,包含4个MAC的块选择对应于非零权重的激活,以实现4个乘法之和的高效运算。
在一种实现方式中,所述稀疏卷积神经网络加速器采用28nm工艺进行综合和实现,与现有的稀疏INT8 CNN加速器相比,对于50%和75%的权重稀疏性,该加速器提供了更高的面积和能效。在50%的稀疏度下达到11.1846TOPS/W,在87.5%的稀疏度下达到24.1410TOPS/W。
本发明的优点在于:
1、根据基4Booth算法的特点,降低了PPs的数目和比特宽度,以减少面积和功耗。
2、为了减少对内存的访问,根据加速器的体系结构重用激活值和权重,并允许重用乘法器中的预编码模块。
3、通过离线过滤权重,在每个引擎中生成8位掩码,以实现稀疏机制。
基于上述实施例,本发明还提供了一种计算设备,所述计算设备包括上述的基于权重预编码的稀疏卷积神经网络加速器。其原理框图可以如图6所示。该计算设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏。其中,该计算设备的处理器用于提供卷积神经网络计算和控制能力。该计算设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算设备的网络接口用于与外部的计算设备通过网络连接通信。该计算机程序被处理器执行时以实现以下步骤:
获取待运算数据;
将所述待运算数据输入上述任一所述的基于权重预编码的稀疏卷积神经网络加速器;
获取所述基于权重预编码的稀疏卷积神经网络加速器基于所述待运算数据输出的运算结果。
在一种实现方式中,该计算设备的显示屏可以是液晶显示屏或者电子墨水显示屏。
本领域技术人员可以理解,图6中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解计算机程序所执行的步骤,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中。其中,本发明所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
综上所述,本发明公开了基于权重预编码的稀疏卷积神经网络加速器和计算设备,所述稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一所述引擎包括若干块;所述预编码模块,用于获取每一所述引擎对应的权重数据,对该引擎对应的所述权重数据进行编码,得到该引擎中各所述块分别对应的编码权重数据;每一所述块包括:激活选择器,用于获取掩码数据和若干激活数据,根据所述掩码数据从各所述激活数据中确定若干目标激活数据,其中,每一所述块对应的所述掩码数据基于该块对应的所述权重数据确定;乘法模块,用于根据所述编码权重数据和各所述目标激活数据,确定各所述目标激活数据分别对应的部分积数据;加法树,用于对各所述部分积数据进行累加,得到该块对应的乘加运算数据。本发明通过掩码数据对激活数据进行筛选,以实现稀疏机制。可以满足各种稀疏度场景下的卷积神经网络加速需求。解决了现有技术中通过可变稀疏密度约束块的空间展开结构来实现卷积神经网络加速,无法应用于权重稀疏度低于50%的场景的问题。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种基于权重预编码的稀疏卷积神经网络加速器,其特征在于,所述稀疏卷积神经网络加速器包括若干引擎和预编码模块,每一所述引擎包括若干块;
所述预编码模块,用于获取每一所述引擎对应的权重数据,对该引擎对应的所述权重数据进行编码,得到该引擎中各所述块分别对应的编码权重数据;
每一所述块包括:
激活选择器,用于获取掩码数据和若干激活数据,根据所述掩码数据从各所述激活数据中确定若干目标激活数据,其中,每一所述块对应的所述掩码数据基于该块对应的所述权重数据确定;
乘法模块,用于根据所述编码权重数据和各所述目标激活数据,确定各所述目标激活数据分别对应的部分积数据;
加法树,用于对各所述部分积数据进行累加,得到该块对应的乘加运算数据。
2.根据权利要求1所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,所述预编码模块基于基4booth乘法器对应的编码器构成。
3.根据权利要求1所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,所述根据所述掩码数据从各所述激活数据中确定若干目标激活数据,包括:
获取所述掩码数据对应的稀疏度,其中,所述稀疏度基于所述掩码数据对应的零位个数与比特位数的比值确定;
当所述稀疏度大于或者等于稀疏阈值时,根据所述掩码数据中各非零位分别对应的标准值确定所述掩码数据对应的选择数据,其中,所述选择数据包括预设个数的若干选择值;
根据所述选择数据从各激活数据中确定若干所述目标激活数据,其中,各所述选择值与各所述目标激活数据一一对应。
4.根据权利要求1所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,所述根据所述掩码数据从各所述激活数据中确定若干目标激活数据,包括:
获取所述掩码数据对应的稀疏度,其中,所述稀疏度基于所述掩码数据对应的零位个数与比特位数的比值确定;
当所述稀疏度小于稀疏阈值时,将所述掩码数据分为若干段;
根据各所述段分别对应的各非零位的标准值,确定各所述段分别对应的选择数据,其中,每一所述段对应的所述选择数据包括预设个数的若干选择值;
根据各所述选择数据和各所述激活数据,确定各所述选择数据分别对应的若干所述目标激活数据,其中,每一所述选择数据中各所述选择值与该选择数据的各所述目标激活数据一一对应。
5.根据权利要求3或4所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,所述激活选择器还包括若干多路复用器,每一所述选择数据对应的若干所述目标激活数据的确定方法包括:
根据该选择数据中的各所述选择值,确定各所述选择值分别对应的选择信号;
将各所述选择信号和各所述激活数据输入各所述多路复用器,其中,各所述选择信号与各所述多路复用器一一对应,每一所述多路复用器对应的输入数据为一个所述选择信号和各所述激活数据;
获取各所述多路复用器分别基于各自对应的所述输入数据生成的所述目标激活数据,得到该选择数据对应的若干所述目标激活数据。
6.根据权利要求3或4所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,每一所述部分积数据包括若干不同级别的部分积,所述对各所述部分积数据进行累加,得到该块对应的乘加运算数据,包括:
根据每一所述选择数据对应的各所述部分积数据,确定若干进位输出数据,其中,若干所述进位输出数据分别对应不同所述级别,每一所述进位输出数据基于各所述部分积数据中相同所述级别的所述部分积的和确定;
根据若干所述进位输出数据,确定该选择数据对应的所述乘加运算数据。
7.根据权利要求5所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,当所述选择数据的数量为若干个时,各所述选择数据分别对应不同的数据处理周期。
8.根据权利要求1所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,位于同一所述引擎中的各所述块分别对应的所述编码权重数据相同。
9.根据权利要求1所述的基于权重预编码的稀疏卷积神经网络加速器,其特征在于,各所述引擎中位于同一顺序位的各所述块分别对应相同的若干所述激活数据。
10.一种计算设备,其特征在于,所述计算设备包括有权利要求1-9任一所述的基于权重预编码的稀疏卷积神经网络加速器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210963479.3A CN115456152B (zh) | 2022-08-11 | 2022-08-11 | 基于权重预编码的稀疏卷积神经网络加速器和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210963479.3A CN115456152B (zh) | 2022-08-11 | 2022-08-11 | 基于权重预编码的稀疏卷积神经网络加速器和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115456152A true CN115456152A (zh) | 2022-12-09 |
CN115456152B CN115456152B (zh) | 2023-12-05 |
Family
ID=84298602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210963479.3A Active CN115456152B (zh) | 2022-08-11 | 2022-08-11 | 基于权重预编码的稀疏卷积神经网络加速器和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115456152B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334803A (zh) * | 2019-07-18 | 2019-10-15 | 南京风兴科技有限公司 | 基于稀疏化Winograd算法的卷积计算方法和卷积神经网络加速器 |
CN111368699A (zh) * | 2020-02-28 | 2020-07-03 | 交叉信息核心技术研究院(西安)有限公司 | 基于图案的卷积神经网络剪枝方法及图案感知加速器 |
US20210319317A1 (en) * | 2021-06-24 | 2021-10-14 | Intel Corporation | Methods and apparatus to perform machine-learning model operations on sparse accelerators |
-
2022
- 2022-08-11 CN CN202210963479.3A patent/CN115456152B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334803A (zh) * | 2019-07-18 | 2019-10-15 | 南京风兴科技有限公司 | 基于稀疏化Winograd算法的卷积计算方法和卷积神经网络加速器 |
CN111368699A (zh) * | 2020-02-28 | 2020-07-03 | 交叉信息核心技术研究院(西安)有限公司 | 基于图案的卷积神经网络剪枝方法及图案感知加速器 |
US20210319317A1 (en) * | 2021-06-24 | 2021-10-14 | Intel Corporation | Methods and apparatus to perform machine-learning model operations on sparse accelerators |
Non-Patent Citations (2)
Title |
---|
KAI LI ET AL.: ""A Precision-Scalabl"e Energy-Efficient Bit-Split-and-Combination Vector Systolic Accelerator for NAS-Optimized DNNs on Edge"", 《2022 DESIGN, AUTOMATION&TEST IN EUROPE CONFERENCE&EXHIBITION》, pages 730 - 735 * |
余成宇等: ""一种高效的稀疏卷积神经网络加速器的设计与实现"", 智能系统学报, no. 02, pages 137 - 147 * |
Also Published As
Publication number | Publication date |
---|---|
CN115456152B (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210349692A1 (en) | Multiplier and multiplication method | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN109542393B (zh) | 一种近似4-2压缩器及近似乘法器 | |
CN105183425B (zh) | 一种具有高精度低复杂度特性的固定位宽乘法器 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111008003A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN107220025B (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
CN115982528A (zh) | 基于Booth算法的近似预编码卷积运算方法及系统 | |
CN110955403B (zh) | 近似基-8布斯编码器及混合布斯编码的近似二进制乘法器 | |
CN110673823B (zh) | 乘法器、数据处理方法及芯片 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110554854A (zh) | 数据处理器、方法、芯片及电子设备 | |
Wu et al. | Phoenix: A low-precision floating-point quantization oriented architecture for convolutional neural networks | |
CN111258633B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN101110016A (zh) | 子字并行整数乘法器 | |
CN115456152A (zh) | 基于权重预编码的稀疏卷积神经网络加速器和计算设备 | |
CN111258541A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN210109789U (zh) | 数据处理器 | |
CN209879493U (zh) | 乘法器 | |
CN111258545B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN210006029U (zh) | 数据处理器 | |
CN210006030U (zh) | 数据处理器 | |
CN111258542B (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 |