CN113986194A - 基于预处理的神经网络近似乘法器实现方法及装置 - Google Patents

基于预处理的神经网络近似乘法器实现方法及装置 Download PDF

Info

Publication number
CN113986194A
CN113986194A CN202111176418.4A CN202111176418A CN113986194A CN 113986194 A CN113986194 A CN 113986194A CN 202111176418 A CN202111176418 A CN 202111176418A CN 113986194 A CN113986194 A CN 113986194A
Authority
CN
China
Prior art keywords
operand
result
unknown
approximate
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.)
Pending
Application number
CN202111176418.4A
Other languages
English (en)
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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202111176418.4A priority Critical patent/CN113986194A/zh
Publication of CN113986194A publication Critical patent/CN113986194A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Abstract

本发明提供一种基于预处理的神经网络近似乘法器实现方法及装置,该方法包括:未知操作数输入前,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;对所述第一结果和所述第二结果进行乘法运算,得到部分积;根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果。该方法对已知的操作数提前进行预处理并进行储存,避免同时对多个操作数进行处理,从而可以降低乘法器单元在该处理步骤时的能耗,减小乘法器单元的设计面积,进而降低整个神经网络计算时所需要的能耗,同时减少神经网络输出结果的时间。

Description

基于预处理的神经网络近似乘法器实现方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种基于预处理的神经网络近似乘法器实现方法及装置。
背景技术
在神经网络中,卷积运算被广泛运用。因此,乘累加运算的数量极其庞大,乘累加单元是整个神经网络中最需要空间与功耗的计算单元,是计算资源需求的主要来源。因此,乘法器作为处理器中最重要的算数模块之一,对计算神经网络的硬件单元的性能和能源效率有着决定性的影响。虽然在本质意义上,误差是不可取的,但由于神经网络基于迭代的特征,其对于计算误差有一定的容忍性,而这种错误恢复能力可用于节省能耗。因此,人们着手于对全精度乘法器进行改进,设计精度在可容忍范围内的低功耗近似乘法器。
全精度乘法器的主要步骤可以分为三个部分:部分积生成、部分积压缩和部分积最终相加。其中,部分积生成阶段的工作为,将乘数和被乘数的每一位进行按位与,得到每一位部分积,得到部分积阵列;部分积压缩部分的一般的方法是:将全部部分积压缩为两行数进行最终的相加,其目的主要是减少关键路径的长度。完成部分积压缩后,使用一个多位加法器完成最终的相加,得到乘法器输出。
基于此,目前对于近似乘法器的研究可以根据乘法计算的阶段分为三类:近似乘数、部分积生成阶段的处理和部分积相加近似。近似乘数是指在生成部分积之前,就对于乘数进行处理得到近似乘数,之后直接使用近似乘数来生成部分积、进行后续步骤的近似方式;部分积生成近似是指在部分积生成阶段选择性地生成一部分较为重要的部分积或者采用一些近似方式减少生成部分积数量;部分积相加近似是指对已经生成的部分积进行压缩或最终相加时,使用诸如近似压缩机、近似树结构等方法进行的近似。
然而,目前基于这几种方向的设计只是从节约单一乘法器能耗的角度进行近似乘法器的设计。因此,目前的用于神经网络的近似乘法器能耗仍然较高且面积较大。
发明内容
针对现有技术存在的问题,本发明提供一种基于预处理的神经网络近似乘法器实现方法及装置。
本发明提供一种基于预处理的神经网络近似乘法器实现方法,包括:未知操作数输入前,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;对所述第一结果和所述第二结果进行乘法运算,得到部分积;根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
根据本发明一个实施例的基于预处理的神经网络近似乘法器实现方法,所述确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量之前,还包括获取已知操作数的第一符号位;所述确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量之前,还包括获取所述未知操作数的第二符号位;相应地,所述根据所述第一位移量和所述第二位移量对所述部分积进行位移之后,还包括根据所述第一符号位和所述第二符号位对部分积进行符号位添加。
根据本发明一个实施例的基于预处理的神经网络近似乘法器实现方法,所述确定已知操作数保留目标位数后截断的第一结果之前,以及确定所述未知操作数保留目标位数后截断的第二结果之前,分别包括:接收包含k位目标位数的控制信号,所述k位目标位数用于控制已知操作数或未知操作数保留的目标位数。
根据本发明一个实施例的基于预处理的神经网络近似乘法器实现方法,所述确定已知操作数保留目标位数后截断的第一结果,或者,所述确定所述未知操作数保留目标位数后截断的第二结果,包括:对已知操作数或未知操作数进行首1位的检测后,根据首1位的检测结果,进行相应位移以保留目标位数的已知操作数或未知操作数,并且得到对应的第一位移量和第二位移量。
根据本发明一个实施例的基于预处理的神经网络近似乘法器实现方法,所述根据首1位的检测结果,进行相应位移以保留目标位数的已知操作数或未知操作数,包括:对已知操作数或未知操作数进行首1位的检测后,进行相应位移的过程中,对已知操作数或未知操作数进行四舍五入的保留目标位数的截断。
根据本发明一个实施例的基于预处理的神经网络近似乘法器实现方法,所述对所述第一结果和所述第二结果进行乘法运算,得到部分积,包括:根据所述第一结果和所述第二结果,采用近似4-2压缩机的优化后近似树结构,计算部分积;其中,所述优化后近似树结构,为根据产生错误时各输入的取值,对近似树结构进行调整后得到。
根据本发明一个实施例的基于预处理的神经网络近似乘法器实现方法,所述优化后近似树结构为,将X4输入作为控制信号,根据X4的取值分别控制不同的carry和sum取值。
本发明还提供一种基于预处理的神经网络近似乘法器实现装置,包括:第一预处理模块,用于确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;第二预处理模块,用于未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;后处理模块,用于对所述第一结果和所述第二结果进行乘法运算,得到部分积;结果输出模块,用于根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于预处理的神经网络近似乘法器实现方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于预处理的神经网络近似乘法器实现方法的步骤。
本发明提供的基于预处理的神经网络近似乘法器实现方法及装置,考虑到神经网络中存在大量的固定操作数的特点,如权重等,对已知的操作数提前进行预处理并进行储存,避免同时对多个操作数进行处理,从而可以降低乘法器单元在该处理步骤时的能耗,减小乘法器单元的设计面积。该方法或装置可结合近似压缩机、近似树结构等近似乘法器设计方法,在对于神经网络整体精度影响不大的情况下,有效降低乘法器单元的能耗与面积,进一步降低整个神经网络计算时所需要的能耗,同时减少神经网络输出结果的时间。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于预处理的神经网络近似乘法器实现方法的流程示意图之一;
图2是本发明提供的基于预处理的神经网络近似乘法器实现方法的流程示意图之二;
图3是本发明提供的基于预处理的神经网络近似乘法器实现方法的整体结构流程图;
图4是本发明提供的操作数截断方法示意图;
图5是本发明提供的近似4-2压缩机电路图;
图6是本发明提供的2k位近似子乘法器的近似树结构示意图;
图7是本发明提供的仿真结果与目前已有近似乘法器的性能比较;
图8是本发明提供的基于预处理的神经网络近似乘法器实现装置的结构示意图;
图9是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种基于预处理的神经网络近似乘法器实现方法和装置,可应用于目前的乘法器中,解决了现有用于神经网络的近似乘法器设计技术中存在的精度与能耗的平衡问题,解决了目前尚不存在成熟高效的结合神经网络特征设计的近似乘法器的问题。
下面结合图1-图9描述本发明的基于预处理的神经网络近似乘法器实现方法及装置。图1是本发明提供的基于预处理的神经网络近似乘法器实现方法的流程示意图之一,如图1所示,本发明提供基于预处理的神经网络近似乘法器实现方法,包括:
101、确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量。其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
对于神经网络而言,由于存在大量的固定模型参数,如权重等,大部分的乘法运算的两个操作数A和B可以分别看作一个已确定的已知操作数和一个之后输入的未知操作数。本发明中,首先输入为已知操作数(比如神经网络中的固定权重),对于已知操作数A提前进行预处理,得到处理后的近似乘数与其对应的移位量并进行储存,待另一个未知操作数B输入后再进行进一步的近似乘法计算。由于对于已知操作数A的处理可以在计算之前提前进行并储存处理后的参数,其能耗可以忽略不计,因此整个近似乘法器的能耗能够得到有效的降低。
例如,对n位已知操作数A提前进行预处理,得到k位截断结果trun A与对应移位量shift A。
102、未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量。
未知操作数(比如神经网络中的图像等数据)B输入后,进行与已知操作数A的预处理相同的操作,得到k位的截断结果trun B和对应的移位量shift B,即对输入的n位未知操作数进行与101预处理相同的处理,得到k位截断结果与对应移位量。具体操作与预处理相似,不同点在于已知操作数预处理是在未知操作数输入之前提前进行预处理并存储,而未知作数处理是数据输入后实时进行。
103、对所述第一结果和所述第二结果进行乘法运算,得到部分积。
具体而言,102处理后的结果输入到近似计算的相应模块,与之前101得到的已知操作数A的处理结果共同进行下一步运算。近似计算模块对两个乘数截断后的k位近似乘数进行近似乘法计算。由预处理产生的k位截断结果trun A和trun B得到所有部分积。
104、根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果。
通过部分积相加,得到近似计算模块的输出结果。即将两个操作数处理得到的k位截断结果进行近似相乘,在经位移处理,得到2k位近似子乘法器结果。
在移位设立步骤中,对近似计算单元的输出结果进行符号位的添加(如果有符号)和移位操作,得到最终结果。其中,移位操作所需的移位量在对已知操作数A和未知操作数B处理后已经生成。
本发明提供的基于预处理的神经网络近似乘法器实现方法,考虑到神经网络中存在大量的固定操作数的特点,如权重等,对已知的操作数提前进行预处理并进行储存,避免同时对多个操作数进行处理,从而可以降低乘法器单元在该处理步骤时的能耗,减小乘法器单元的设计面积。该方法可结合近似压缩机、近似树结构等近似乘法器设计方法,在对于神经网络整体精度影响不大的情况下,有效降低乘法器单元的能耗与面积,进一步降低整个神经网络计算时所需要的能耗,同时减少神经网络输出结果的时间。
在一个实施例中,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量之前,还包括获取已知操作数的第一符号位;确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量之前,还包括获取所述未知操作数的第二符号位;相应地,根据所述第一位移量和所述第二位移量对所述部分积进行位移之后,还包括根据所述第一符号位和所述第二符号位对部分积进行符号位添加。具体方案如下:
首先,为了应对有符号数的近似乘,输入为已知操作数后(比如神经网络中的固定权重),输出为对应的符号位、处理后的近似乘数和对应的移位量。对于已知操作数,进行符号位检测后,可采用首1检测等方式,确定首1位置并对其进行截断,得到截断后的近似乘数与对应的移位量。
其次,输入未知操作数(比如神经网络中的图像等数据)后,输出为对应的符号位、处理后的近似乘数和对应的移位量。
再次,输入为已知操作数预处理模块和未知操作数处理模块得到的符号位、近似乘数和对应移位量,输出为两个近似乘数近似相乘后添加符号位并移位的结果。将两个近似乘数采用如近似压缩机、近似树结构等方式进行近似乘法计算后,对其结果添加符号位并移位,得到近似乘法器的最终结果并输出。
例如,对n位已知操作数提前进行预处理,得到符号位sign A、k位截断结果trun A与对应移位量shift A。未知操作数B输入后,进行与已知操作数A的预处理相同的操作,得到1位的符号位sign B、k位的截断结果trun B和对应的移位量shift B。
随后,对2k位近似子乘法器结果添加符号位,进行移位,得到最终近似乘法器输出结果。其中,符号位和移位操作所需的移位量在对已知操作数A和未知操作数B处理后已经生成。
本发明实施例的基于预处理的神经网络近似乘法器实现方法,针对有符号数,仍可以有效降低乘法器单元的能耗与面积,从而降低整个神经网络计算时所需要的能耗,同时减少神经网络输出结果的时间。
在一个实施例中,所述确定已知操作数保留目标位数后截断的第一结果之前,以及确定所述未知操作数保留目标位数后截断的第二结果之前,分别包括:接收包含k位目标位数的控制信号,所述k位目标位数用于控制已知操作数或未知操作数保留的目标位数。
具体而言,目保留的目标位数k根据外部输入的控制信号得到,以实现控制近似乘法器的精度,参见图2。通过控制信号,可根据神经网络的类型或应用的领域分别预设控制信号进行精度的调整,从而在计算量和精度之间作出自定义的选择。
本发明实施例的基于预处理的神经网络近似乘法器实现方法,可通过包含k位目标位数的控制信号进行精度的控制,从而满足不同神经网络对精度的要求。
在一个实施例中,所述确定已知操作数保留目标位数后截断的第一结果,或者,所述确定所述未知操作数保留目标位数后截断的第二结果,包括:对已知操作数或未知操作数进行首1位的检测后,根据首1位的检测结果,进行相应位移以保留目标位数的已知操作数或未知操作数,并且得到对应的第一位移量和第二位移量。
对于已经进行符号位检测的操作数A和B(对于无符号数可不进行符号检测),对其进行首1检测之后,从首1的位置开始保留目标位数,如k位进行截断。其中,k可根据外部输入的控制信号得到,用来控制近似乘法器的精度。由于只需要得到移位量和截断后的结果,首1的位置只是一个中间量并不是最终需要的。因此直接得到移位量后,可由移位量作为控制信号对操作数进行截断。结合上述实施例的步骤流程可参见图3,预处理模块用来实现101和102的步骤,后处理模块用来实现103的步骤。
编码和截断的步骤,可由卡诺图得到逻辑表达式,由控制信号k控制直接得到操作数首1检测后截断对应的移位量。以n=8的有符号数A[7:0],控制信号k=3为例。当k=3,意味着检测到首1后,从首1开始截断保留3位数据。由于最终是用3位数据代替7位(不需要考虑符号位)数据进行计算,因此实际上,首1的位置越靠前,最终结果所需移位量越大。此时由于移位量最多为3,因此shift A长度为2,表示为shift A[1:0]。当首1在A[6]处,移位量为3,shift A[1:0]=2’(2进制)b11;当首1在A[5]处,移位量为2,shift A[1:0]=2’b10;当首1在A[4]处,移位量为1,shift A[1:0]=2’b01;当首1在A[3]乃至更低的位数时,直接保留最低4位的数据,移位量为0,shift A[1:0]=2’b00。由这样的逻辑关系,可以通过卡诺图化简直接得到逻辑关系。
截断步骤实现为,由移位量作为控制信号,对操作数进行截断。
在一个实施例中,所述根据首1位的检测结果,进行相应位移以保留目标位数的已知操作数或未知操作数,包括:对已知操作数或未知操作数进行首1位的检测后,进行相应位移的过程中,对已知操作数或未知操作数进行四舍五入的保留目标位数的截断。
根据移位量对操作数进行截断的过程中,作近似的四舍五入保留k位的无符号截断结果,截断形式如图4所示。对于正常情况下直接截断到的最后一位数字,向后考虑一位,只要这两位数中有一个为1,则将截断结果的最后1位置为1,如图4中trun A[0]=x∨y。这样,如果从最后1位开始是如0111这样的结构,本发明能做到很好的近似,如果是例如1111这样的结构,误差依旧与直接截断持平,但这样的截断操作,为k位近似子乘法器模块中的误差补偿打下了基础。从电路实现上来看,这种截断方式只需要在原有截断的基础上加上一个或门,对于整体能耗只有很小的增加,结合后面提到的近似计算单元,却能够较为明显地提升精度。
在一个实施例中,所述对所述第一结果和所述第二结果进行乘法运算,得到部分积,包括:根据所述第一结果和所述第二结果,采用近似4-2压缩机的优化后近似树结构,计算部分积。其中,所述优化后近似树结构,为根据产生错误时各输入的取值,对近似树结构进行调整后得到。
具体地,所述优化后近似树结构为,将X4输入作为控制信号,根据X4的取值分别控制不同的carry和sum取值。
将截断产生的两个k位无符号截断结果进行近似的乘法计算,得到2k位的无符号乘法结果,本发明采用了一种基于近似4-2压缩机的近似树结构。
k位近似子乘法器模块所采用的近似4-2压缩机输入为X4,X3,X2,X1,输出为Sum’和Carry’,相较于传统的4-2压缩机忽略了输入Cin和输出Cout,其电路图如图5所示。通过一个全加器输入X3,X2,X1,输出S和C,再通过X4作为控制信号,结合S和C,使用两个二路选择器得到最终结果。当X4=0,输出为Sum’=S,Carry’=C;当X4=1,输出为Sum’=C,Carry’=1。其逻辑表达式为:
Figure BDA0003295806290000111
Figure BDA0003295806290000112
只有在X4X3X2X1=1000或X4X3X2X1=1111时,近似4-2压缩机的结果才会产生1位的错误,错误率为12.5%。由于只有在X4=1时才有概率发生错误,因此在近似树结构中,选取值为1概率较低的数据作为输入X4,从而进一步降低错误率。同时,根据其已知的错误情况,将近似4-2压缩机用于误差补偿,在降低能耗的同时修正误差。
k位近似子乘法器模块的近似树结构,采用上述近似4-2压缩机以及半加器、全加器、4-2压缩机等计算单元形成树结构,对两个操作数产生的部分积进行相加,得到近似乘法结果。以k=4为例,一种近似树结构如图6所示,其中框住两个、三个、四个、五个圈的分别为半加器、全加器、近似4-2压缩机和4-2压缩机。该近似树结构一共使用三个半加器,一个全加器,一个近似4-2压缩机和两个4-2压缩机。而精确树结构需要使用四个半加器,两个全加器和三个4-2压缩机。相比之下,近似树结构减少了一个半加器,一个全加器,并且将一个4-2压缩机替换为一个近似4-2压缩机,面积和能耗得到了较大优化。
同时,根据近似4-2压缩机发生错误的特征,控制其X4输入以及对树结构进行调整,能够有效降低错误率,修正一部分误差。以k=4时的如图所示的近似树结构为例,进行错误概率的推导。如果要产生错误,那么就要求第一个半加器的两个输入均为1,且近似4-2压缩机的其他输入全部为0或者全部为1。设近似乘法器模块输入的两个4位操作数(k=4)分别为a[3:0]和b[3:0],则产生错误首先需要:
a[0]b[1]=a[1]b[0]=1且a[2]b[0]=a[1]b[1]=a[0]b[2]
则必有:
a[0]=a[1]=a[2]=b[0]=b[1]=b[2]=1
对于a[1],a[2],b[1]和b[2],因为是直接进行截断,为1的概率是0.5;对于a[0]和b[0],由于是被截断的最后一位,当首1在第7/6/5/4位时,为1的概率是0.75,当首1在其他位时,为1的概率为0.5,因此其整体为1的概率为:
0.75×(1-0.54)+0.5×(0.54)=0.734375
近似4-2压缩机出错的概率为:
0.54×0.7343752≈3.37%
这个错误率完全可以接受。
通过输入的符号位和移位量,将k位近似子乘法器的2k位无符号乘法结果进行符号位添加和移位,得到近似乘法器的2n-1位近似乘法结果。
实验验证:为验证本发明的有效性,附本发明实的实验验证结果。对于8位有符号数乘法,对本发明的设计与已有近似乘法器进行了仿真、对比与分析。其性能对比如图7所示,其中MERD指平均相对误差,即近似乘法器结果与精确乘法器结果相对误差的平均值。
可以发现,本发明在精度相近的情况下,能够比其他近似乘法器设计节约10%-30%的能耗。为了综合评价能耗与精度,使用能耗×MRED来进行评估,本发明的该评估值均处于较低水准,反映出本发明的近似乘法器设计在能耗和精度方面完成了较好的平衡。
下面对本发明提供的基于预处理的神经网络近似乘法器实现装置进行描述,下文描述的基于预处理的神经网络近似乘法器实现装置与上文描述的基于预处理的神经网络近似乘法器实现方法可相互对应参照。
图8是本发明提供的基于预处理的神经网络近似乘法器实现装置的结构示意图,如图8所示,该基于预处理的神经网络近似乘法器实现装置包括:第一预处理模块801、第二预处理模块802、后处理模块803和结果输出模块804。其中,第一预处理模块801用于确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;第二预处理模块802用于未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;后处理模块803用于对所述第一结果和所述第二结果进行乘法运算,得到部分积;结果输出模块804用于根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
其中,第一预处理模块801输入为已知操作数(比如神经网络中的固定权重),输出为处理后的近似操作数。对于已知操作数,将操作数信息进行近似的预处理并提前进行存储,提取出关键信息,有效降低操作数的整体信息量。第二预处理模块802对未知操作数进行相同处理。
后处理模块803,输入为预处理得到的近似操作数和未知操作数(比如神经网络中的图像等数据),输出为近似乘法器的结果。已知操作数的预处理能够有效降低信息量,简化后处理模块的计算。将预处理得到的近似操作数与输入的未知操作数进行后处理,得到近似乘法器的最终结果并输出。最后通过结果输出模块804输出结果。
在一个装置实施例中,所述第一预处理模块801还用于获取已知操作数的第一符号位;所述第二预处理模块802还用获取所述未知操作数的第二符号位;所述结果输出模块804用于根据所述第一符号位和所述第二符号位对部分积进行符号位添加。
在一个装置实施例中,还包括控制信号接受模块,用于接收包含k位目标位数的控制信号,所述k位目标位数用于控制已知操作数或未知操作数保留的目标位数。
在一个装置实施例中,第一预处理模块801或者第二预处理模块802,用于对已知操作数或未知操作数进行首1位的检测后,根据首1位的检测结果,进行相应位移以保留k位已知操作数或未知操作数,并且得到对应的第一位移量和第二位移量。
在一个装置实施例中,第一预处理模块801或者第二预处理模块802,用于对已知操作数或未知操作数进行首1位的检测后,进行相应位移的过程中,对已知操作数或未知操作数进行四舍五入的保留k位截断。
在一个装置实施例中,后处理模块803,用于根据所述第一结果和所述第二结果,采用近似4-2压缩机的优化后近似树结构,计算部分积。其中,所述优化后近似树结构,为根据产生错误时各输入的取值,对近似树结构进行调整后得到。
在一个装置实施例中,所述优化后近似树结构为,将X4输入作为控制信号,根据X4的取值分别控制不同的carry和sum取值。
本发明实施例提供的装置实施例是为了实现上述各方法实施例的,具体流程和详细内容请参照上述方法实施例,此处不再赘述。
本发明实施例提供的基于预处理的神经网络近似乘法器实现装置,考虑到神经网络中存在大量的固定操作数的特点,如权重等,对已知的操作数提前进行预处理并进行储存,避免同时对多个操作数进行处理,从而可以降低乘法器单元在该处理步骤时的能耗,减小乘法器单元的设计面积。该装置可结合近似压缩机、近似树结构等近似乘法器设计方法,在对于神经网络整体精度影响不大的情况下,有效降低乘法器单元的能耗与面积,进一步降低整个神经网络计算时所需要的能耗,同时减少神经网络输出结果的时间。
图9是本发明提供的电子设备的结构示意图,如图9所示,该电子设备可以包括:处理器(processor)901、通信接口(Communications Interface)902、存储器(memory)903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信。处理器901可以调用存储器903中的逻辑指令,以执行基于预处理的神经网络近似乘法器实现方法,该方法包括:未知操作数输入前,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;对所述第一结果和所述第二结果进行乘法运算,得到部分积;根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
此外,上述的存储器903中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于预处理的神经网络近似乘法器实现方法,该方法包括:未知操作数输入前,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;对所述第一结果和所述第二结果进行乘法运算,得到部分积;根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于预处理的神经网络近似乘法器实现方法,该方法包括:未知操作数输入前,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;对所述第一结果和所述第二结果进行乘法运算,得到部分积;根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于预处理的神经网络近似乘法器实现方法,其特征在于,包括:
未知操作数输入前,确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;
未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;
对所述第一结果和所述第二结果进行乘法运算,得到部分积;
根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;
其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
2.根据权利要求1所述的基于预处理的神经网络近似乘法器实现方法,其特征在于,所述确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量之前,还包括获取已知操作数的第一符号位;
所述确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量之前,还包括获取所述未知操作数的第二符号位;
相应地,所述根据所述第一位移量和所述第二位移量对所述部分积进行位移之后,还包括根据所述第一符号位和所述第二符号位对部分积进行符号位添加。
3.根据权利要求1所述的基于预处理的神经网络近似乘法器实现方法,其特征在于,所述确定已知操作数保留目标位数后截断的第一结果之前,以及确定所述未知操作数保留目标位数后截断的第二结果之前,分别包括:
接收包含k位目标位数的控制信号,所述k位目标位数用于控制已知操作数或未知操作数保留的目标位数。
4.根据权利要求1所述的基于预处理的神经网络近似乘法器实现方法,其特征在于,所述确定已知操作数保留目标位数后截断的第一结果,或者,所述确定所述未知操作数保留目标位数后截断的第二结果,包括:
对已知操作数或未知操作数进行首1位的检测后,根据首1位的检测结果,进行相应位移以保留目标位数的已知操作数或未知操作数,并且得到对应的第一位移量和第二位移量。
5.根据权利要求4所述的基于预处理的神经网络近似乘法器实现方法,其特征在于,所述根据首1位的检测结果,进行相应位移以保留目标位数的已知操作数或未知操作数,包括:
对已知操作数或未知操作数进行首1位的检测后,进行相应位移的过程中,对已知操作数或未知操作数进行四舍五入的保留目标位数的截断。
6.根据权利要求1所述的基于预处理的神经网络近似乘法器实现方法,其特征在于,所述对所述第一结果和所述第二结果进行乘法运算,得到部分积,包括:
根据所述第一结果和所述第二结果,采用近似4-2压缩机的优化后近似树结构,计算部分积;
其中,所述优化后近似树结构,为根据产生错误时各输入的取值,对近似树结构进行调整后得到。
7.根据权利要求6所述的基于预处理的神经网络近似乘法器实现方法,其特征在于,所述优化后近似树结构为,将X4输入作为控制信号,根据X4的取值分别控制不同的carry和sum取值。
8.一种基于预处理的神经网络近似乘法器实现装置,其特征在于,包括:
第一预处理模块,用于确定已知操作数保留目标位数后截断的第一结果,以及截断对应的第一位移量;
第二预处理模块,用于未知操作数输入后,确定所述未知操作数保留目标位数后截断的第二结果,以及截断对应的第二位移量;
后处理模块,用于对所述第一结果和所述第二结果进行乘法运算,得到部分积;
结果输出模块,用于根据所述第一位移量和所述第二位移量对所述部分积进行位移,得到近似结果;
其中,所述已知操作数为神经网络的模型参数,所述未知操作数为模型处理对象的输入参数。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述基于预处理的神经网络近似乘法器实现方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于预处理的神经网络近似乘法器实现方法的步骤。
CN202111176418.4A 2021-10-09 2021-10-09 基于预处理的神经网络近似乘法器实现方法及装置 Pending CN113986194A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111176418.4A CN113986194A (zh) 2021-10-09 2021-10-09 基于预处理的神经网络近似乘法器实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111176418.4A CN113986194A (zh) 2021-10-09 2021-10-09 基于预处理的神经网络近似乘法器实现方法及装置

Publications (1)

Publication Number Publication Date
CN113986194A true CN113986194A (zh) 2022-01-28

Family

ID=79737879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111176418.4A Pending CN113986194A (zh) 2021-10-09 2021-10-09 基于预处理的神经网络近似乘法器实现方法及装置

Country Status (1)

Country Link
CN (1) CN113986194A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024032027A1 (zh) * 2022-08-11 2024-02-15 Oppo广东移动通信有限公司 降低功耗的方法、处理器、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024032027A1 (zh) * 2022-08-11 2024-02-15 Oppo广东移动通信有限公司 降低功耗的方法、处理器、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
CN109543830B (zh) 一种用于卷积神经网络加速器的拆分累加器
CN107340993B (zh) 运算装置和方法
CN110221808B (zh) 向量乘加运算的预处理方法、乘加器及计算机可读介质
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
CN113076083B (zh) 数据乘加运算电路
CN113986194A (zh) 基于预处理的神经网络近似乘法器实现方法及装置
CN111325332A (zh) 卷积神经网络的处理方法和装置
CN112835551B (zh) 用于处理单元的数据处理方法、电子设备和计算机可读存储介质
CN112712172B (zh) 用于神经网络运算的计算装置、方法、集成电路和设备
Fan et al. High-performance acceleration of 2-D and 3-D CNNs on FPGAs using static block floating point
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化
Tatsumi et al. Mixing low-precision formats in multiply-accumulate units for DNN training
CN114115803B (zh) 一种基于部分积概率分析的近似浮点乘法器
CN115827555A (zh) 数据处理方法、计算机设备、存储介质和乘法器结构
CN111930674B (zh) 乘累加运算装置及方法、异构智能处理器及电子设备
KR20230076641A (ko) 부동-소수점 연산을 위한 장치 및 방법
CN114329330A (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
CN113313253A (zh) 神经网络压缩方法、数据处理方法、装置及计算机设备
Madadum et al. A resource-efficient convolutional neural network accelerator using fine-grained logarithmic quantization
US20210241080A1 (en) Artificial intelligence accelerator and operation thereof
WO2023078364A1 (zh) 矩阵乘法的运算方法及装置
US11394396B2 (en) Lossless machine learning activation value compression
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry

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