CN112906863B - 一种神经元加速处理方法、装置、设备及可读存储介质 - Google Patents
一种神经元加速处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112906863B CN112906863B CN202110189202.5A CN202110189202A CN112906863B CN 112906863 B CN112906863 B CN 112906863B CN 202110189202 A CN202110189202 A CN 202110189202A CN 112906863 B CN112906863 B CN 112906863B
- Authority
- CN
- China
- Prior art keywords
- weight
- data
- bit
- multiplier
- calculation
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种神经元加速处理方法,该方法获取到两组N位的特征图数据以及对应的权重后,使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,避免了专用低比特乘法器的设计与使用,降低了实现成本;同时,该方法中中使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,这样调用一个乘法器的时间可以同时完成两个乘法运算,可以有效提升计算速度,实现神经元的加速处理;而且低比特数据与整型数据可复用同一组乘法器以实现同一个加速器的可变数据精度计算,提升了高位乘法器的适用场景,避免乘法器专用的局限性。本发明还公开了一种神经元加速处理装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及深度学习技术领域,特别是涉及一种神经元加速处理方法、装置、设备及可读存储介质。
背景技术
深度神经网络(Deep Neural Network,DNN)是人工神经网络的一种,广泛应用于图像分类、目标识别、行为识别、语音识别、自然语言处理与文档分类等领域。近几年,随着计算机计算能力的增长与DNN结构的发展,DNN网络的识别准确度有了很大提高,但与此同时,DNN的深度也不断加深,计算量也越来越大,因此需要GPU、FPGA、ASIC等异构计算设备来加速计算。
神经元计算为特征图数据与权重因子进行乘加运算并与偏置相加,最终经一个非线性传递函数得到输出结果的过程,它是深度神经网络的核心计算过程,也是资源消耗和耗时较大的计算过程,因此目前DNN加速主要是针对神经元进行。
传统的DNN推理加速器在神经元计算的过程中,一般直接采用浮点数据格式进行浮点数据乘法运算,或者是采用将数据量化为一般整型数据进行整型数据乘法运算的方法,或者将数据量化为低比特整型数据进行乘法运算的方法
采用浮点数据进行乘法运算的方案未采用模型压缩的方法,浮点运算的计算效率低;而采用先将数据量化为整型数据然后进行乘法运算的方案,计算效率有所提高,但整型乘法运算仍为DNN推理的加速器计算过程中资源消耗最大、计算速度最慢的过程,容易成为DNN推理加速器的性能瓶颈;基于低比特量化的DNN推理加速器是一种较新的技术,虽然计算速度有所提升,在实现上存在一定困难,通常需要使用定制化的低比特乘法器以及低比特数据编码实现,提高了相关软硬件设计的难度。
综上所述,如何在提升神经元计算速度的同时降低实现的软硬件成本,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种神经元加速处理方法、装置、设备及可读存储介质,可以在提升神经元计算速度的同时降低实现的软硬件成本。
为解决上述技术问题,本发明提供如下技术方案:
一种神经元加速处理方法,包括:
获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图;
从所述输入特征图中获取两个N位特征图数据,作为第一数据以及第二数据;其中,N为正整数;
获取所述当前神经网络层对应的两个N位权重,作为第一权重以及第二权重;
将所述第一数据添加至4N位乘法器的乘数中0至N-1位,将第二数据添加至乘数中2N至3N-1位,所述乘数中其它位置零;
将第一权重添加至所述4N位乘法器的被乘数中0至N-1位,将第二权重添加至所述被乘数中2N至3N-1位,所述被乘数中其它位置零;
获取所述4N位乘法器的输出数据,并将所述输出数据中0至2N-1位作为所述第一数据与所述第一权重生成的第一乘积值,4N至6N-1位作为所述第二数据与所述第二权重生成的第二乘积值;
根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加,得到累加值;
对所述累加值进行Batch Norm计算以及量化计算,得到输出结果,并将所述输出结果作为所述当前神经网络层的输出特征图。
可选地,所述获取所述当前神经网络层对应的两个N位权重,作为第一权重以及第二权重,包括:
获取PACT算法模型输出的所述当前神经网络层对应的权重值;
对所述权重值进行权重编码,得到若干N位编码权重;
从所述编码权重中获取两个权重,作为所述第一权重以及所述第二权重;
则相应地,根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加,包括:
根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行并行加和计算,作为部分和;
对所述部分和进行权重编码还原,得到部分和还原结果;
根据所述部分和还原结果进行迭代累加计算,得到所述累加值。
可选地,对所述权重值进行权重编码,包括:
对所述权重值进行2N+1到N的权重编码。
可选地,对所述累加值进行Batch Norm计算以及量化计算,得到输出结果,包括:
确定所述Batch Norm计算以及量化计算的融合乘数以及融合加数;
计算所述累加值与所述融合乘数以及融合加数的乘加值,作为所述输出结果。
一种神经元加速处理装置,包括:
输入获取单元,用于获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图;
数据提取单元,用于从所述输入特征图中获取两个N位特征图数据,作为第一数据以及第二数据;其中,N为正整数;
权重获取单元,用于获取所述当前神经网络层对应的两个N位权重,作为第一权重以及第二权重;
特征图添加单元,用于将所述第一数据添加至4N位乘法器的乘数中0至N-1位,将第二数据添加至乘数中2N至3N-1位,所述乘数中其它位置零;
权重添加单元,用于将第一权重添加至所述4N位乘法器的被乘数中0至N-1位,将第二权重添加至所述被乘数中2N至3N-1位,所述被乘数中其它位置零;
结果获取单元,用于获取所述4N位乘法器的输出数据,并将所述输出数据中0至2N-1位作为所述第一数据与所述第一权重生成的第一乘积值,4N至6N-1位作为所述第二数据与所述第二权重生成的第二乘积值;
累加处理单元,用于根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加,得到累加值;
结果输出单元,用于对所述累加值进行Batch Norm计算以及量化计算,得到输出结果,并将所述输出结果作为所述当前神经网络层的输出特征图。
可选地,所述权重获取单元,包括:
模型输出子单元,用于获取PACT算法模型输出的所述当前神经网络层对应的权重值;
权重编码子单元,用于对所述权重值进行权重编码,得到若干N位编码权重;
编码提取子单元,用于从所述编码权重中获取两个权重,作为所述第一权重以及所述第二权重;
则相应地,则相应地,所述累加处理单元包括:
并行加和子单元,用于根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行并行加和计算,作为部分和;
部分和还原子单元,用于对所述部分和进行权重编码还原,得到部分和还原结果;
还原迭代累加计算子单元,用于根据所述部分和还原结果进行迭代累加计算,得到所述累加值。
可选地,所述权重编码子单元具体为:第一编码子单元,用于:对所述权重值进行2N+1到N的权重编码。
可选地,所述结果输出单元,包括:
融合子单元,用于确定所述Batch Norm计算以及量化计算的融合乘数以及融合加数;
计算子单元,用于计算所述累加值与所述融合乘数以及融合加数的乘加值,作为所述输出结果。
一种计算机设备,包括:
存储器,用于存储计算机程序与数据;
处理器,用于根据所述数据执行所述计算机程序时实现上述神经元加速处理方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述神经元加速处理方法的步骤。
本发明实施例所提供的方法,获取到两组N位的特征图数据以及对应的权重后,使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,避免了专用低比特乘法器的设计与使用,降低了实现成本;同时,该方法中中使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,这样调用一个乘法器的时间可以同时完成两个乘法运算,可以有效提升计算速度,实现神经元的加速处理;而且低比特数据与整型数据可复用同一组乘法器以实现同一个加速器的可变数据精度计算,提升了高位乘法器的适用场景,避免乘法器专用的局限性。
相应地,本发明实施例还提供了与上述神经元加速处理方法相对应的神经元加速处理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种神经元加速处理方法的实施流程图;
图2为本发明实施例中一种乘加计算示意图;
图3为本发明实施例中一种神经元加速处理装置的结构示意图;
图4为本发明实施例中一种计算机设备的结构示意图。
具体实施方式
本发明的核心是提供一种神经元加速处理方法,可以在提升神经元计算速度的同时降低实现的软硬件成本。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例中一种神经元加速处理方法的流程图,该方法包括以下步骤:
S101、获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图;
本实施例提供的神经元处理方法应用于神经网络中,设置于神经网络层中,对于设置的神经网络层(即本步骤中“当前神经网络层”)的层类型不做限定,可以为卷积层或全连接层等含有特征图数据与权重数据进行乘加计算的层,本实施例提供的神经元加速处理方法可以针对不同类型的层进行加速处理。在一个神经网络中包括若干层,本步骤中“当前神经网络层”指应用本实施例提供的神经元加速处理方法的神经网络层,可以为其中的一层或若干层,即针对其中的一层或若干层应用本实施例提供的神经元处理方法,也可以针对每一层都应用本实施例提供的神经元处理方法,以提升整体神经网络的处理速度,本实施例中对此也不做限定,可以根据实际神经网络的运行加速需要确定“当前神经网络层”。
需要说明的是,本实施例中“当前神经网络层”非首层,也就是说存在连接的上一个神经网络层,获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图。
S102、从输入特征图中获取两个N位特征图数据,作为第一数据以及第二数据;
当前神经网络层的输入特征图的位数较长,目前常常将其划分为若干个低位的数据进行乘法运算,本实施例中也需将高位的特征图数据划分为低位的数据来进行计算,本步骤中的N位特征图数据指从输入特征图中划分得到的低位(N位)的特征图数据,其中N为正整数,本实施例中对于N的取值不做限定,比如N可以取1、2或者4等,可以根据实际计算以及数据划分的需要进行相应设定。另外,本步骤中从输入特征图划分得到两个低位(N位)特征图数据的实现方式不做限定,可以参照相关技术的介绍,在此不再赘述。
S103、获取当前神经网络层对应的两个N位权重,作为第一权重以及第二权重;
当前神经网络层对应的权重值类似于当前神经网络层的输入特征图,也属于高位数据,则需要将高位的权重数据进行数据转化,获取其中的两个N位权重,本步骤中对于权重数据的处理方式不做限定,可以参照上述步骤S102对于特征图数据的划分,也可以根据实际使用的权重类型进行低位转化。
需要说明的是,本步骤与步骤S101的执行先后顺序不做限定,两者可以顺序执行,比如先执行步骤S101,再执行步骤S103;也可以如图1所示同时执行,具体可以根据实际处理的需要进行相应设定,在此不再赘述。
S104、将第一数据添加至4N位乘法器(数字电路的一种元件,可以将两个二进制数相乘)的乘数中0至N-1位,将第二数据添加至乘数中2N至3N-1位,乘数中其它位置零;
目前针对低比特(低位)的乘法通常应用低比特的乘法器分别对各个低位的特征图数据与对应的权重进行乘积运算,而基于低比特量化算法的DNN推理加速器通常需要重新设计低比特的乘法器才能充分利用计算资源,低比特乘法器的通用性不高,多数硬件平台并不支持,通常需要重新单独设计,设计难度大,而且针对不同位数的特征图需要调用不同位数的乘法器进行运算,这会大大提升乘法器的使用成本。
针对于此,本实施例使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,可以利用GPU、FPGA或ASIC中的现有乘法器模块或IP,避免了专用低比特乘法器的设计与使用,降低了实现成本;同时,本实施例中使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,这样调用一个乘法器的时间可以同时完成两个乘法运算,可以有效提升计算速度,实现神经元的加速处理;而且低比特数据与整型数据可复用同一组乘法器以实现同一个加速器的可变数据精度计算,提升了高位乘法器的适用场景,避免乘法器专用的局限性。
具体地,本实施例中将乘法器的乘数中的0到N-1与2N到3N-1位分别放入N位特征图数据,第一数据以及第二数据,其它位置零,以使用一个16(4N)位的乘法器实现两个4(N)位乘法为例。将乘法器的乘数中的0-3位与8-11位分别放入4-bit的第一数据(比如1101)与第二数据(比如1001),4至7位和12至15位填0,则一种乘法器的乘数如下表1所示:
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
表1
S105、将第一权重添加至4N位乘法器的被乘数中0至N-1位,将第二权重添加至被乘数中2N至3N-1位,被乘数中其它位置零;
将乘法器的被乘数中的0到N-1与2N到3N-1位分别放入N位权重数据,第一权重以及第二权重,其它位置零,具体地,本实施例中将乘法器的被乘数中的0到N-1与2N到3N-1位分别放入N位权重数据,第一权重以及第二权重,其它位置零,以使用一个16(4N)位的乘法器实现两个4(N)位乘法为例。将乘法器的被乘数中的0-3位与8-11位分别放入4-bit的第一权重(比如0001)与第二权重(比如0011,4至7位和12至15位填0,则一种乘法器的乘数如下表2所示:
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
表2
需要说明的是,本实施例中在乘法器中将特征图数据填充至乘数中,权重数据填充至被乘数中,两者可以互换,在乘法器中将权重数据填充至乘数中,特征图数据填充至被乘数中,对于后者的执行方式可以参照本实施例的介绍,在此不再赘述。另外,本实施例中对于步骤S104与步骤S105的执行先后顺序不做限定,两者可以顺序执行,比如先执行步骤S104,再执行步骤S105;也可以如图1所示同时执行,具体可以根据实际处理的需要进行相应设定,在此不再赘述。
S106、获取乘法器的输出数据,并将输出数据中0至2N-1位作为第一数据与第一权重生成的第一乘积值,4N至6N-1位作为第二数据与第二权重生成的第二乘积值;
应用上述乘法器的填充规则启动乘法器的乘法运算后,获取乘法器的输出数据,由于本实施例中将一个乘法器应用于两组乘法计算,输出数据中应分别获取两组乘法的乘积值,具体地,将输出数据中0至2N-1位作为第一数据与第一权重生成的第一乘积值,4N至6N-1位作为第二数据与第二权重生成的第二乘积值。
为加深对本实施例提供的上述步骤的执行的理解,在此以使用一个16(4N)位的乘法器实现两个4(N)位乘法为例,如图2所示为一种乘加计算示意图。将乘法器的被乘数中的0-3位与8-11位分别放入4-bit权重数据1(weight1)与4-bit权重数据2(weight2),将乘法器的乘数中的0-3位与8-11位分别放入4-bit特征图数据1(feature1)与4-bit特征图数据2(feature2),乘法器的被乘数与乘数的其他位置零。16位乘法器的32位输出中,0-7位为权重数据1与特征图数据1的乘积(useless data),16-23位为权重数据2与特征图数据2的乘积(useless data)。
S107、根据第一乘积值、第二乘积值以及其它乘法器的输出结果进行迭代累加,得到累加值;
在得到两组乘积值后,根据该组乘积值,结合针对当前神经网络层中用于计算特征图数据与权重的其他乘法器的输出的乘积值,获取当前神经网络层中所有乘积值,并据此按照传统神经元计算中的累加规则进行累加计算,需要说明的是,本步骤中根据乘法器得到的乘积值进行累加计算的实现过程可以参照相关技术中的实现方式,本实施例中对此不做限定,在此不再赘述。
S108、对累加值进行Batch Norm(Batch Normalization,深度网络中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法)计算以及量化计算,得到输出结果,并将输出结果作为当前神经网络层的输出特征图。
除了上述步骤的累加计算外,Batch Norm计算以及量化计算都属于神经元计算中的必要步骤,具体的根据累加值进行Batch Norm计算以及量化计算的具体计算规则可以按照相关实现方式,本实施例中对此不做限定。
经过Batch Norm计算以及量化计算后,将输出结果作为当前神经网络层的输出特征图,输入至下一个神经网络层进行计算。
需要说明的是,本实施例中所有N位数据在计算前需转换为无符号数据,通过单独判断乘法器乘数与被乘数的符号位来确定输出数据的符号位。
基于上述介绍,本实施例所提供的技术方案,获取到两组N位的特征图数据以及对应的权重后,使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,避免了专用低比特乘法器的设计与使用,降低了实现成本;同时,该方法中中使用一个4N位乘法器实现两个N位低比特量化数据的乘法计算,这样调用一个乘法器的时间可以同时完成两个乘法运算,可以有效提升计算速度,实现神经元的加速处理;而且低比特数据与整型数据可复用同一组乘法器以实现同一个加速器的可变数据精度计算,提升了高位乘法器的适用场景,避免乘法器专用的局限性。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
上述实施例中对于获取当前神经网络层对应的两个N位权重,作为第一权重以及第二权重的具体实现方式不做限定,本实施例中介绍一种适用于常见的权重获取方法的低位权重转化方式,如下所示:
(1)获取PACT算法(PArameterized Clipping Activation for QuantizedNeural Networks,一种低比特量化算法)模型输出的当前神经网络层对应的权重值;其中,权重值符合2N+1数据表达形式;
(2)对权重值进行权重编码,得到若干N位编码权重;
(3)从编码权重中获取两个权重,作为第一权重以及第二权重;
对权重值进行权重编码可以实现权重表达范围的扩大,从而实现大权重向低编码值的转化,从而可以利用低位编码值直接实现权重的表达,避免权重的拆分带来的额外的工作量。
本实施例中对于权重编码的具体实现方式不做限定,目前,神经网络层的权重一般都是通过PACT量化算法模型训练过程得到,本实施例中延续该权重生成过程,以实现对于传统神经元计算过程的复用。由于PACT量化算法模型训练过程得到的权重数据并非连续的自然数,如下所示为PACT算法训练得到的4-bit权重格式:-15,-13,-11,-9,-7,-5,-3,-1,1,3,5,7,9,11,13,15,申请人发现权重数据均为2x+1(x为任意正整数)形式,为避免拆分数据导致计算量的增加,本实施例中提出在基于PACT算法的神经元加速处理方法中对权重数据进行编码。本发明使用编码N代表数值为2N+1的权重,编码后的权重数据为:-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7(N),直接使用编码进行乘加计算(Σweight*feature),以保证乘加计算中的权重数据为4-bit数据,另外通过量化计算保证乘加计算中的特征图数据为4-bit数据,从而最终保证神经元计算中的乘加计算为4-bit乘加计算,则经过编码后的乘法器的计算过程为:Σ(2*code+1)*feature=Σ2*code*feature+Σfeature。
则相应地,根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加的过程具体包括以下步骤:
(1)根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行并行加和计算,作为部分和;
(2)对所述部分和进行权重编码还原,得到部分和还原结果;
(2)根据所述部分和还原结果进行迭代累加计算,得到所述累加值在根据第一乘积值、第二乘积值以及其它乘法器的输出结果进行本次并行加和计算之后,下一次累加计算迭代之前,需要对本次迭代的并行加和的结果,即部分和,进行权重编码还原,得到部分和的还原结果;在多次迭代中根据部分和还原结果进行累加计算,得到累加值。该方法可以避免编码还原的重复实现。
乘加计算的结果经过权重编码还原计算后得到最终的计算结果,要进行量化计算与Batch Norm计算,才能得到最终的输出特征图数据。
本实施例中特征值与权重数据以编码方式进行乘法计算,并对计算结果进行反演计算得到特征值与权重数据的最终正确计算结果,可以保证计算效率的同时保证数据的有效计算。
上述实施例中对于对累加值进行Batch Norm计算以及量化计算的具体实现过程不做限定,其中,量化计算的目的是使特征图数据以较为合适的动态范围存储,使得4-bit特征图数据损失精度较小。量化计算为浮点除法与浮点乘法计算,Batch Norm计算为浮点乘法与浮点加法计算,为减少深度神经网络推理计算量,从而进一步提升神经元处理速度,Batch Norm计算以及量化计算可以融合为一次乘法与一次加法计算过程,具体地,可以确定Batch Norm计算以及量化计算的融合乘数以及融合加数,然后计算累加值与融合乘数以及融合加数的乘加值,作为输出结果。
对累加值进行Batch Norm计算以及量化计算的过程具体需要执行一次量化计算,根据量化计算的结果进行Batch Norm计算,再根据Batch Norm计算结果进行第二次量化计算。其中,执行第一次量化计算时需要将累加值除以量化因子1(乘以量化因子1的相反数),进行Batch Norm计算时需要将(累加值/量化因子1)×α+β,其中,α为Batch Norm中指定的乘数,β为Batch Norm指定的加数,再对计算结果进行第二次量化计算,[(累加值/量化因子1)×α+β]×因子2。
本实施例中将两种算法(Batch Norm计算以及量化计算)、三次计算过程(先执行一次量化计算,根据量化计算的结果进行Batch Norm计算,再根据Batch Norm计算结果进行第二次量化计算)融合为一次乘加计算,将其中除了累加值外的值进行融合,将(α×因子2/因子1)的结果作为融合乘数,将β×因子2的结果作为融合加数,则对累加值进行BatchNorm计算以及量化计算的过程可以转化为一次乘加计算,即累加值×(α×因子2/因子1)+(β×因子2),将三次计算过程融合为一次乘加计算,简化了计算步骤,有利于进一步提升计算效率。
需要说明的是,上述实施例中仅显示了加速器计算过程中核心的神经元计算过程,主要包含乘加计算、反演计算、BatchNorm与量化计算以及其他深度学习推理计算步骤,其它计算过程均可参照相关技术的介绍,在此不再赘述。
相应于上面的方法实施例,本发明实施例还提供了一种神经元加速处理装置,下文描述的神经元加速处理装置与上文描述的神经元加速处理方法可相互对应参照。
参见图3所示,该装置包括以下模块:
输入获取单元110主要用于获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图;
数据提取单元120主要用于从输入特征图中获取两个N位特征图数据,作为第一数据以及第二数据;其中,N为正整数;
权重获取单元130主要用于获取当前神经网络层对应的两个N位权重,作为第一权重以及第二权重;
特征图添加单元140主要用于将第一数据添加至4N位乘法器的乘数中0至N-1位,将第二数据添加至乘数中2N至3N-1位,乘数中其它位置零;
权重添加单元150主要用于将第一权重添加至4N位乘法器的被乘数中0至N-1位,将第二权重添加至被乘数中2N至3N-1位,被乘数中其它位置零;
结果获取单元160主要用于获取乘法器的输出数据,并将输出数据中0至2N-1位作为第一数据与第一权重生成的第一乘积值,4N至6N-1位作为第二数据与第二权重生成的第二乘积值;
累加处理单元170主要用于根据第一乘积值、第二乘积值以及其它乘法器的输出结果进行迭代累加,得到累加值;
结果输出单元180主要用于对累加值进行Batch Norm计算以及量化计算,得到输出结果,并将输出结果作为当前神经网络层的输出特征图。
在本发明的一种具体实施方式中,权重获取单元,包括:
模型输出子单元,用于获取PACT算法模型输出的当前神经网络层对应的权重值;
权重编码子单元,用于对权重值进行权重编码,得到若干N位编码权重;
编码提取子单元,用于从编码权重中获取两个权重,作为第一权重以及第二权重;
则相应地,所述累加处理单元包括:
并行加和子单元,用于根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行并行加和计算,作为部分和;
部分和还原子单元,用于对所述部分和进行权重编码还原,得到部分和还原结果;
还原迭代累加计算子单元,用于根据所述部分和还原结果进行迭代累加计算,得到所述累加值。
在本发明的一种具体实施方式中,权重编码子单元具体为:第一编码子单元,用于:对权重值进行2N+1到N的权重编码。
在本发明的一种具体实施方式中,结果输出单元,包括:
融合子单元,用于确定Batch Norm计算以及量化计算的融合乘数以及融合加数;
计算子单元,用于计算累加值与融合乘数以及融合加数的乘加值,作为输出结果。
相应于上面的方法实施例,本发明实施例还提供了一种计算机设备,下文描述的一种计算机设备与上文描述的一种神经元加速处理方法可相互对应参照。
该计算机设备包括:
存储器,用于存储计算机程序与数据;
处理器,用于根据数据执行计算机程序时实现上述方法实施例的神经元加速处理方法的步骤。
具体的,请参考图4,为本实施例提供的一种计算机设备的具体结构示意图,该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在计算机设备301上执行存储器332中的一系列指令操作。
计算机设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的神经元加速处理方法中的步骤可以由计算机设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种神经元加速处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的神经元加速处理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (10)
1.一种神经元加速处理方法,其特征在于,包括:
获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图;
从所述输入特征图中获取两个N位特征图数据,作为第一数据以及第二数据;其中,N为正整数;
获取所述当前神经网络层对应的两个N位权重,作为第一权重以及第二权重;
将所述第一数据添加至4N位乘法器的乘数中0至N-1位,将第二数据添加至乘数中2N至3N-1位,所述乘数中其它位置零;
将第一权重添加至所述4N位乘法器的被乘数中0至N-1位,将第二权重添加至所述被乘数中2N至3N-1位,所述被乘数中其它位置零;
获取所述4N位乘法器的输出数据,并将所述输出数据中0至2N-1位作为所述第一数据与所述第一权重生成的第一乘积值,4N至6N-1位作为所述第二数据与所述第二权重生成的第二乘积值;
根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加,得到累加值;
对所述累加值进行Batch Norm计算以及量化计算,得到输出结果,并将所述输出结果作为所述当前神经网络层的输出特征图;
其中,所述其他乘法器为所述当前神经网络层中的各个位数对应的所述4N位乘法器。
2.根据权利要求1所述的神经元加速处理方法,其特征在于,所述获取所述当前神经网络层对应的两个N位权重,作为第一权重以及第二权重,包括:
获取PACT算法模型输出的所述当前神经网络层对应的权重值;
对所述权重值进行权重编码,得到若干N位编码权重;
从所述编码权重中获取两个权重,作为所述第一权重以及所述第二权重;
则相应地,根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加,包括:
根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行并行加和计算,作为部分和;
对所述部分和进行权重编码还原,得到部分和还原结果;
根据所述部分和还原结果进行迭代累加计算,得到所述累加值。
3.根据权利要求2所述的神经元加速处理方法,其特征在于,对所述权重值进行权重编码,包括:
对所述权重值进行2N+1到N的权重编码。
4.根据权利要求1所述的神经元加速处理方法,其特征在于,对所述累加值进行BatchNorm计算以及量化计算,得到输出结果,包括:
确定所述Batch Norm计算以及量化计算的融合乘数以及融合加数;
计算所述累加值与所述融合乘数以及融合加数的乘加值,作为所述输出结果。
5.一种神经元加速处理装置,其特征在于,包括:
输入获取单元,用于获取连接的上一神经网络层输出的特征图,作为当前神经网络层的输入特征图;
数据提取单元,用于从所述输入特征图中获取两个N位特征图数据,作为第一数据以及第二数据;其中,N为正整数;
权重获取单元,用于获取所述当前神经网络层对应的两个N位权重,作为第一权重以及第二权重;
特征图添加单元,用于将所述第一数据添加至4N位乘法器的乘数中0至N-1位,将第二数据添加至乘数中2N至3N-1位,所述乘数中其它位置零;
权重添加单元,用于将第一权重添加至所述4N位乘法器的被乘数中0至N-1位,将第二权重添加至所述被乘数中2N至3N-1位,所述被乘数中其它位置零;
结果获取单元,用于获取所述4N位乘法器的输出数据,并将所述输出数据中0至2N-1位作为所述第一数据与所述第一权重生成的第一乘积值,4N至6N-1位作为所述第二数据与所述第二权重生成的第二乘积值;
累加处理单元,用于根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行迭代累加,得到累加值;
结果输出单元,用于对所述累加值进行Batch Norm计算以及量化计算,得到输出结果,并将所述输出结果作为所述当前神经网络层的输出特征图;
其中,所述其他乘法器为所述当前神经网络层中的各个位数对应的所述4N位乘法器。
6.根据权利要求5所述的神经元加速处理装置,其特征在于,所述权重获取单元,包括:
模型输出子单元,用于获取PACT算法模型输出的所述当前神经网络层对应的权重值;
权重编码子单元,用于对所述权重值进行权重编码,得到若干N位编码权重;
编码提取子单元,用于从所述编码权重中获取两个权重,作为所述第一权重以及所述第二权重;
则相应地,所述累加处理单元包括:
并行加和子单元,用于根据所述第一乘积值、所述第二乘积值以及其它乘法器的输出结果进行并行加和计算,作为部分和;
部分和还原子单元,用于对所述部分和进行权重编码还原,得到部分和还原结果;
还原迭代累加计算子单元,用于根据所述部分和还原结果进行迭代累加计算,得到所述累加值。
7.根据权利要求6所述的神经元加速处理装置,其特征在于,所述权重编码子单元具体为:第一编码子单元,用于:对所述权重值进行2N+1到N的权重编码。
8.根据权利要求5所述的神经元加速处理装置,其特征在于,所述结果输出单元,包括:
融合子单元,用于确定所述Batch Norm计算以及量化计算的融合乘数以及融合加数;
计算子单元,用于计算所述累加值与所述融合乘数以及融合加数的乘加值,作为所述输出结果。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序与数据;
处理器,用于根据所述数据执行所述计算机程序时实现如权利要求1至4任一项所述神经元加速处理方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述神经元加速处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110189202.5A CN112906863B (zh) | 2021-02-19 | 2021-02-19 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
PCT/CN2022/074429 WO2022174733A1 (zh) | 2021-02-19 | 2022-01-27 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110189202.5A CN112906863B (zh) | 2021-02-19 | 2021-02-19 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112906863A CN112906863A (zh) | 2021-06-04 |
CN112906863B true CN112906863B (zh) | 2023-04-07 |
Family
ID=76123804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110189202.5A Active CN112906863B (zh) | 2021-02-19 | 2021-02-19 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112906863B (zh) |
WO (1) | WO2022174733A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112906863B (zh) * | 2021-02-19 | 2023-04-07 | 山东英信计算机技术有限公司 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108921292A (zh) * | 2018-05-02 | 2018-11-30 | 东南大学 | 面向深度神经网络加速器应用的近似计算系统 |
CN111475135A (zh) * | 2019-01-23 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 一种乘法器 |
CN111966327A (zh) * | 2020-08-07 | 2020-11-20 | 南方科技大学 | 基于nas搜索的混合精度时空复用乘法器及其控制方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909970B (zh) * | 2017-01-12 | 2020-04-21 | 南京风兴科技有限公司 | 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置 |
CN107273090B (zh) * | 2017-05-05 | 2020-07-31 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
WO2018214913A1 (zh) * | 2017-05-23 | 2018-11-29 | 上海寒武纪信息科技有限公司 | 处理方法及加速装置 |
US10459876B2 (en) * | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
US10621489B2 (en) * | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
US11687759B2 (en) * | 2018-05-01 | 2023-06-27 | Semiconductor Components Industries, Llc | Neural network accelerator |
CN110659014B (zh) * | 2018-06-29 | 2022-01-14 | 赛灵思公司 | 乘法器及神经网络计算平台 |
CN110796244B (zh) * | 2018-08-01 | 2022-11-08 | 上海天数智芯半导体有限公司 | 用于人工智能设备的核心计算单元处理器及加速处理方法 |
CN111199275B (zh) * | 2018-11-20 | 2023-04-28 | 上海登临科技有限公司 | 用于神经网络的片上系统 |
US20200226444A1 (en) * | 2019-01-15 | 2020-07-16 | BigStream Solutions, Inc. | Systems, apparatus, methods, and architecture for precision heterogeneity in accelerating neural networks for inference and training |
CN110766155A (zh) * | 2019-09-27 | 2020-02-07 | 东南大学 | 一种基于混合精度存储的深度神经网络加速器 |
CN112906863B (zh) * | 2021-02-19 | 2023-04-07 | 山东英信计算机技术有限公司 | 一种神经元加速处理方法、装置、设备及可读存储介质 |
-
2021
- 2021-02-19 CN CN202110189202.5A patent/CN112906863B/zh active Active
-
2022
- 2022-01-27 WO PCT/CN2022/074429 patent/WO2022174733A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108921292A (zh) * | 2018-05-02 | 2018-11-30 | 东南大学 | 面向深度神经网络加速器应用的近似计算系统 |
CN111475135A (zh) * | 2019-01-23 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 一种乘法器 |
CN111966327A (zh) * | 2020-08-07 | 2020-11-20 | 南方科技大学 | 基于nas搜索的混合精度时空复用乘法器及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022174733A1 (zh) | 2022-08-25 |
CN112906863A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451658B (zh) | 浮点运算定点化方法及系统 | |
WO2020057161A1 (zh) | 一种用于卷积神经网络加速器的拆分累加器 | |
CN107340993B (zh) | 运算装置和方法 | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN110852434B (zh) | 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置 | |
Langroudi et al. | Cheetah: Mixed low-precision hardware & software co-design framework for DNNs on the edge | |
CN112906863B (zh) | 一种神经元加速处理方法、装置、设备及可读存储介质 | |
CN117908835B (zh) | 一种基于浮点数计算能力加速sm2国密算法的方法 | |
CN115145536A (zh) | 一种低位宽输入-低位宽输出的加法器树单元及近似乘加方法 | |
CN114341796A (zh) | 带符号多字乘法器 | |
CN113608718B (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
Jiang et al. | A low-latency LSTM accelerator using balanced sparsity based on FPGA | |
CN111428863A (zh) | 一种基于近似乘法器的低功耗卷积运算电路 | |
CN113902109A (zh) | 一种神经网络规则化位串行计算的压缩方法及装置 | |
CN118014030A (zh) | 一种神经网络加速器及系统 | |
CN117808101A (zh) | 一种基于fpga的神经网络推理方法、系统及存储介质 | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN116720554B (zh) | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 | |
CN116205244B (zh) | 一种数字信号处理结构 | |
CN111652359B (zh) | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 | |
WO2023078364A1 (zh) | 矩阵乘法的运算方法及装置 | |
CN113610222A (zh) | 计算神经网络卷积运算的方法及系统、硬件装置 | |
CN113313253A (zh) | 神经网络压缩方法、数据处理方法、装置及计算机设备 | |
CN114154631A (zh) | 一种基于fpga的卷积神经网络量化实现方法以及装置 | |
CN112783473A (zh) | 一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法 |
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 |