量化和计算加速方法和装置

文档序号:762301 发布日期:2021-04-06 浏览:36次 >En<

阅读说明:本技术 量化和计算加速方法和装置 (Quantization and computation acceleration method and apparatus ) 是由 陈福松 蒋泳森 于 2020-12-28 设计创作,主要内容包括:本发明公开量化和计算加速方法和装置,其中,一种量化和计算加速方法,包括:对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。Bias的引入,一方面让我们省去在移位运算时的符号问题,另一方面使得我们的参数区间不再局限在(-1,1)之间,可以是一个非0为中心的区间中,去除这个假设,给了模型训练更大的自由,可以训出性能更好的模型。交叉存储的数据,空间上节省了内存,data cache上也有优势,一次性load。(The invention discloses a quantization and calculation acceleration method and a device, wherein the quantization and calculation acceleration method comprises the following steps: carrying out 4-bit quantization on the data, and offsetting the quantized numerical value to eliminate the negative number generated by the 4-bit quantization; and when the quantized data is stored, performing cross storage according to the maximum parallel number of the SIMD. The introduction of Bias, on one hand, enables us to omit the sign problem during shift operation, on the other hand, enables the parameter interval of us not to be limited between (-1,1), but to be an interval with non-0 as the center, and removes the assumption, thereby giving greater freedom to model training and being capable of training a model with better performance. The data stored in a cross way saves the internal memory in space, has the advantage on the data cache and is loaded at one time.)

量化和计算加速方法和装置

技术领域

本发明属于存储技术领域,尤其涉及量化和计算加速方法和装置。

背景技术

相关技术中,目前各家芯片都在做计算和内存的优化,以求提升自研芯片的性能,降低功耗,节约成本,从而提升自研芯片相对于通用芯片的竞争力。

目前主流采用8bit进行量化或者采用binary量化。

其中,8bit量化,可搭载的声学模型相对较小。

Binary量化,还不是很成熟,存在性能下降或者性能不稳定的问题。

发明人在实现本申请的过程中发现,相关技术中存在的这些问题是因为以下原因导致的:为了加速计算,在芯片化系统中,我们通常采用将模型放到SRAM,避免flash到内存的性能损耗。自研芯片因为成本问题,片载内存通常比较小,现在主流的语音芯片的内存都在3M以下,有限的空间导致留给声学神经网络的空间更小,例如有1M空间可以用于神经网络,当weight采用8bit进行量化时,只能够有1M参数,但是如果用4bit进行量化时,参数量可以达到2M。

发明内容

本发明实施例提供一种量化和计算加速方法和装置,用于至少解决上述技术问题之一。

第一方面,本发明实施例提供一种量化和计算加速方法,包括:对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。

第二方面,本发明实施例提供一种量化和计算加速装置,包括:量化模块,配置为对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;以及存储模块,配置为存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。

第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的量化和计算加速方法的步骤。

第四方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行本发明任一实施例的量化和计算加速方法的步骤。

本申请的方法和装置通过偏移(例如后续实施例中的Bias)的引入,一方面让我们省去在移位运算时的符号问题,另一方面使得我们的参数区间不再局限在(-1,1)之间,可以是一个非0为中心的区间中,去除这个假设,给了模型训练更大的自由,可以训出性能更好的模型。进一步的,交叉存储的数据,空间上节省了内存,data cache上也有优势,一次性load。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的一种量化和计算加速方法的流程图;

图2为本发明一实施例提供的一种量化和计算加速装置的框图;

图3是本发明一实施例提供的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,其示出了一种量化和计算加速方法的流程图,该方法主要应用于芯片中。

如图1所示,在步骤101中,对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;

之后,在步骤102中,存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。

对于步骤101,采用4bit量化,并对量化后的数值进行偏移可以有效地消除4bit量化产生的负数,从而在做计算时,移位不需要考虑正负数的移位问题,不会导致一次计算需要更多的指令去处理正负数,也不会导致计算效率非常低下。

在步骤102中,存储量化后的数据时,依据SIMD的最大并行数进行交叉存储,而不是顺序存储,参数load时,可以直接利用SIMD进行并行计算,有效地提升计算效率。

本申请的方法和装置通过偏移(例如后续实施例中的Bias)的引入,一方面让我们省去在移位运算时的符号问题,另一方面使得我们的参数区间不再局限在(-1,1)之间,可以是一个非0为中心的区间中,去除这个假设,给了模型训练更大的自由,可以训出性能更好的模型。进一步的,交叉存储的数据,空间上节省了内存,data cache上也有优势,一次性load。

在进一步的实施例中,上述方法还包括:在计算两个向量的乘法时,仅进行一次加载,增加一次右移和两次&运算。从而相对于8bit,16个值计算,需要两次加载(load)数据,节省了一次load操作。

在进一步的实施例中,上述方法还包括:在计算的最后,再减去一个定值。从而可以抵消在步骤101中产生的偏移。

在进一步的实施例中,上述方法,其中,对于:

SIMD支持SIMD支持8路并行时,向量a1(a11,a12,a13,...,a115,a116)按照如下格式进行交叉存储:

(a11<<4)|a119,(a12<<4)|a110,(a13<<4)|a111,...,(a18<<4)|a116,...。

从而采用交叉存储之后能够利用SIMD进行并行计算。

在进一步的实施例中,所述定值的公式表示如下:

从而可以通过上述公式消除步骤101偏移的影响.

在进一步的实施例中,所述在计算两个向量的乘法时,仅进行一次加载,增加一次右移和两次&运算包括:

在计算两个向量的乘法时,一次load一个int64的值a,包括一次性load了a11,a19,a12,a110,a13,a111,...,a18,a116,(a>>4)&0x0F0F0F0F0F0F0F0F load到SIMD寄存器中reg_a,(a&0x0F0F0F0F0F0F0F0F)load到SIMD另一个寄存器reg_b中,reg_a,reg_b,计算时利用8bit SIMD进行计算。

从而本申请实施例的方案相对于8bit,16个值计算,需要两次load数据,节省一次load操作。

在进一步的实施例中,4bit量化范围为(-8~7),所述并对量化后的数值进行偏移包括:对量化后的值增加bias(+8),偏移后的量化为(0,15)。

从而在做计算时,移位不需要考虑正负数的移位问题,不会导致一次计算需要更多的指令去处理正负数,也不会导致计算效率非常低下。

需要说明的是,上述方法步骤并不用于限制各步骤的执行顺序,实际上,某些步骤可能会同时执行或者以与步骤限定的相反的顺序执行,本申请在此没有限制。

下面对通过描述发明人在实现本发明的过程中遇到的一些问题和对最终确定的方案的一个具体实施例进行说明,以使本领域技术人员更好地理解本申请的方案。

发明人在实现本申请的过程中发现,通常dsp(dsp芯片)没有4bit加速单元,为了避免算力的增加,所以本领域技术人员大部分采用8bit进行量化,兼顾算力和内存,为了避免算力增加,主要考虑采用binary的量化方式。

本申请实施例通过优化存储顺序及计算方法来提升data cache(数据缓存)的命中率,从而降低4bit计算的算力占用。

4bit量化范围(-8~7)

*首先对量化后的值增加bias(+8),偏移后的量化为(0,15)

*存储时依据SIMD(Single Instruction Multiple Data,单指令流多数据流)的最大并行数进行交叉存储

例如:

SIMD支持8路并行时,向量a1(a11,a12,a13,...,a115,a116)按照如下格式进行交叉存储:

(a11<<4)|a19,(a12<<4)|a110,(a13<<4)|a111,...,(a18<<4)|a116,...。

*在计算两个向量的乘法时,一次load一个int64的值a,等同于一次性load了a11,a19,a12,a110,a13,a111,...,a18,a116,(a>>4)&0x0F0F0F0F0F0F0F0F load到SIMD寄存器中reg_a,(a&0x0F0F0F0F0F0F0F0F)load到SIMD另一个寄存器reg_b中,reg_a,reg_b,计算时利用8bit SIMD进行计算即可。

从上面可以看出,16个值的计算只需要一次load,增加一次右移及两次&运算。

相对于8bit,16个值计算,需要两次load数据,节省一次load操作。

*最后减去一个定值∑bias*bi

发明人在实现本发明人的过程中,还采用过以下技术方案:

a.顺序存储,参数load时,不能够直接利用simd进行并行计算;

b.不做bias,在做计算时,移位需要考虑正负数的移位问题,导致一次计算需要更多的指令去处理正负数,导致计算效率非常低下。

本申请实施例的方案可以实现以下技术效果:Bias的引入,一方面让我们省去在移位运算时的符号问题,另一方面使得我们的参数区间不再局限在(-1,1)之间,可以是一个非0为中心的区间中,去除这个假设,给了模型训练更大的自由,可以训出性能更好的模型。交叉存储的数据,空间上节省了内存,data cache上也有优势,一次性load。

请参考图2,其示出了本发明一实施例提供的量化和计算加速装置的框图。

如图2所示,量化和计算加速装置200,包括:量化模块210和存储模块220。

其中,量化模块210,配置为对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;以及存储模块220,配置为存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。

应当理解,图2中记载的诸模块与参考图1中描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征以及相应的技术效果同样适用于图2中的诸模块,在此不再赘述。

值得注意的是,本公开的实施例中的模块并不用于限制本公开的方案,例如量化模块可以描述为对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数的模块。另外,还可以通过硬件处理器来实现相关功能模块,例如量化模块也可以用处理器实现,在此不再赘述。

在另一些实施例中,本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的量化和计算加速方法;

作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,计算机可执行指令设置为:

对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;

存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。

非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据量化和计算加速装置的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至量化和计算加速装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本发明实施例还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行上述任一项量化和计算加速方法。

图3是本发明实施例提供的电子设备的结构示意图,如图3所示,该设备包括:一个或多个处理器310以及存储器320,图3中以一个处理器310为例。量化和计算加速方法的设备还可以包括:输入装置330和输出装置340。处理器310、存储器320、输入装置330和输出装置340可以通过总线或者其他方式连接,图3中以通过总线连接为例。存储器320为上述的非易失性计算机可读存储介质。处理器310通过运行存储在存储器320中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例量化和计算加速方法。输入装置330可接收输入的数字或字符信息,以及产生与通讯补偿装置的用户设置以及功能控制有关的键信号输入。输出装置340可包括显示屏等显示设备。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

作为一种实施方式,上述电子设备应用于量化和计算加速装置中,用于客户端,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:

对数据进行4bit量化,并对量化后的数值进行偏移以消除4bit量化产生的负数;

存储量化后的数据时,依据SIMD的最大并行数进行交叉存储。

本申请实施例的电子设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的电子装置。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种嵌入式设备驱动系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!