CN116108896B - 模型量化方法、装置、介质及电子设备 - Google Patents
模型量化方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN116108896B CN116108896B CN202310379833.2A CN202310379833A CN116108896B CN 116108896 B CN116108896 B CN 116108896B CN 202310379833 A CN202310379833 A CN 202310379833A CN 116108896 B CN116108896 B CN 116108896B
- Authority
- CN
- China
- Prior art keywords
- quantized
- model
- data
- quantization
- global
- 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/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)
- 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)
- Image Analysis (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种模型量化方法、装置、介质及电子设备,其中,模型量化方法包括:为模型运行过程中的待量化数据设置对应的量化统计算子;在样本集上两次整体运行模型,构建待量化数据的全局直方图;以及基于待量化数据的全局直方图执行模型量化,得到量化后的模型。本发明提高了模型量化的速度和效率。
Description
技术领域
本发明涉及模型量化技术领域,更具体地,涉及模型量化中的量化统计方法,基于该量化统计方法的模型量化方法,以及相应的装置、计算机可读介质和电子设备。
背景技术
神经网络模型,特别是卷积神经网络模型,已广泛应用于图像识别、图像分类等领域。模型量化指的是在神经网络模型的运行过程中,将参与计算(例如,卷积计算)的浮点形式(例如,FP32)的数据和权重映射到定点形式(例如,INT8)的数据,以达到减少存储空间、降低内存消耗并且加快模型运行速度的目的。
一种常见的模型量化方法是min-max模型量化方法,该方法包括首先获得量化前数据的最小值min和最大值max,然后将[min,max]内的值映射到量化后数据的范围内(例如,对于INT8形式的数据而言,其范围为[-127,127])。另一种常见的模型量化方法是采用KL散度(Kullback-Leibler divergence)的模型量化方法,该方法寻找一个阈值|T|,以将[-|T|,|T|]内的值映射到量化后数据的范围内(例如,[-127,127]),而将[-|T|,|T|]外的值分别映射到量化后数据的最大值或最小值,并且用KL散度来度量量化前后的数据分布之间的相似性,KL散度越小表示量化前与量化后的数据分布越相似,即模型量化对量化前数据造成的损失越小,则该KL散度所对应的阈值越准确。
采用KL散度的模型量化方法对于值分布不均匀的数据具有良好的量化效果,但在执行模型量化时内存消耗较大,导致模型量化的速度较慢、效率较低。
发明内容
为克服上述现有技术中存在的问题,根据本发明的一个实施例,提供一种模型量化方法,包括:为模型运行过程中的待量化数据设置对应的量化统计算子;在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,由量化统计算子统计对应的待量化数据的全局最大值和全局最小值;在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,由量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图;以及,基于待量化数据的全局直方图执行模型量化,得到量化后的模型。
在上述方法中,通过两次整体运行模型来统计待量化数据的全局直方图,与通过打散模型进行直方图统计的传统方法相比,其编译所占用的内存较小,即内存消耗较小。由于减少了内存消耗,因此可以提高量化统计的速度和效率,同时还能够稳定且准确地得到量化统计的结果。由于量化统计消耗的内存较小,并且量化统计的速度和效率较高,因此也提高了模型量化的速度和效率。上述模型量化方法适用于样本较多或模型较大的情况下的模型量化,并且适用于内循环较多的递归模型的模型量化。
另外,在上述方法中,引入了量化统计算子来对对应的待量化数据进行量化统计。通过引入这样的量化统计算子,实现了量化统计工作的模块化,对于已经训练好的模型而言,通过在该模型中的相应位置插入量化统计算子,即可以实现量化统计。并且,所引入的量化统计算子可以与现有的各种模型量化方法相结合,例如,在量化统计算子统计得到对应的待量化数据的全局直方图之后,可以与现有的采用KL散度的模型量化方法、min-max模型量化方法等结合,完成模型量化。上述模型量化方法适用于TVM、TensorRT等多种模型框架,因此本发明还提高了通用性。
在第一次整体运行模型的过程中,由量化统计算子统计对应的待量化数据的全局最大值和全局最小值,包括:由量化统计算子将对应的待量化数据的初始全局最大值和初始全局最小值设置为空;以及,将样本集中的每个样本依次输入模型,在针对每个样本运行模型时,由量化统计算子统计对应的待量化数据的局部最大值和局部最小值,并且根据局部最大值和局部最小值来更新对应的待量化数据的全局最大值和全局最小值。
在第二次整体运行模型的过程中,由量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图,包括:由量化统计算子基于对应的待量化数据的全局最大值和全局最小值,得到对应的待量化数据的全局直方图的范围;由量化统计算子在对应的待量化数据的全局直方图的范围内,构建对应的待量化数据的初始全局直方图;以及,将样本集中的每个样本依次输入模型,在针对每个样本运行模型时,由量化统计算子构建对应的待量化数据的局部直方图,并且将局部直方图与对应的待量化数据的全局直方图进行累加,以更新对应的待量化数据的全局直方图。
上述方法还可以包括:在模型中,将量化统计算子设置在获得对应的待量化数据的位置与使用对应的待量化数据进行计算的位置之间。
上述方法还可以包括:由量化统计算子存储对应的待量化数据的全局最大值和全局最小值;以及,由量化统计算子注册回调函数,以对量化统计算子内存储的信息进行跟踪查看。
由此可见,在第一次整体运行模型之后,量化统计算子仅存储对应的待量化数据的全局最大值和全局最小值,而无需保存所有的中间数据,因此与传统方法相比进一步减少了内存消耗。另外,注册回调函数使得对待量化数据的全局最大值和全局最小值的跟踪查看更加便利。
在上述方法中,待量化数据可以划分为动态待量化数据和静态待量化数据。其中,对于动态待量化数据和静态待量化数据可以使用不同的模型量化方法执行量化,具体地,使用采用KL散度的模型量化方法对动态待量化数据执行量化,以及使用min-max模型量化方法对静态待量化数据执行量化。
根据本发明的一个实施例,提供一种用于图像识别的模型量化方法,该方法包括:获取模型和样本集,该模型用于在支持第一数据形式的系统上运行以执行图像识别;为模型运行过程中的待量化数据设置对应的量化统计算子;在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,由量化统计算子统计对应的待量化数据的全局最大值和全局最小值;在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,由量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图;以及,基于待量化数据的全局直方图执行模型量化,得到量化后的模型,量化后的模型用于在支持第二数据形式的系统上运行以执行图像识别,其中第二数据形式的数据在长度上小于第一数据形式的数据。
根据本发明的一个实施例,提供一种模型量化装置,包括预设模块、统计模块和量化模块。其中,预设模块用于为模型运行过程中的待量化数据设置对应的量化统计算子。统计模块用于在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,设置量化统计算子统计对应的待量化数据的全局最大值和全局最小值;以及,在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,设置量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。量化模块用于基于待量化数据的全局直方图执行模型量化,得到量化后的模型。
根据本发明的一个实施例,提供一种用于图像识别的模型量化装置,包括预设模块、统计模块和量化模块。其中,预设模块用于获取模型和样本集,以及为模型运行过程中的待量化数据设置对应的量化统计算子;其中,该模型用于在支持第一数据形式的系统上运行以执行图像识别。统计模块用于在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,设置量化统计算子统计对应的待量化数据的全局最大值和全局最小值;以及,在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,设置量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。量化模块用于基于待量化数据的全局直方图执行模型量化,得到量化后的模型,该量化后的模型用于在支持第二数据形式的系统上运行以执行图像识别,其中第二数据形式的数据在长度上小于第一数据形式的数据。
根据本发明的一个实施例,提供一种计算机可读介质,其上存储有计算机程序,当计算机程序被处理器执行时实现上述模型量化方法。
根据本发明的一个实施例,提供一种电子设备,包括处理器和存储器。其中,存储器上存储有计算机程序并且耦合到处理器,当计算机程序被处理器执行时,使得电子设备实现上述模型量化方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示意性和解释性的,并不用于限制本发明。
附图说明
此处的附图被并入说明书中并构成说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理,其中:
图1示意性地示出了传统的采用KL散度的模型量化方法的示意图;
图2示意性地示出了根据本发明一个实施例的模型量化中的量化统计方法的流程图;
图3示意性地示出了在图1所示模型上应用根据本发明一个实施例的模型量化中的量化统计方法的示意图;
图4示意性地示出了根据本发明一个实施例的统计待量化数据的全局最大值和全局最小值的方法的流程图;
图5示意性地示出了根据本发明一个实施例的构建待量化数据的全局直方图的方法的流程图;
图6A-6B分别示意性地示出了采用python编程语言统计待量化数据的全局最大值和全局最小值,以及构建待量化数据的全局直方图的示意图;
图7示意性地示出了根据本发明一个实施例的模型量化方法的流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示出了传统的采用KL散度的模型量化方法的示意图。如图1所示,采用KL散度的模型量化方法包括:将神经网络模型打散以生成一个一个的节点(node),其中,每个节点具有输入数据和输出数据,以及对输入数据进行计算以得到输出数据的计算算子(例如,conv2d算子,其为一种卷积算子);对于样本集中的每个样本单独地运行每个节点,将每个节点在每次运行过程中的待量化数据(即量化前数据,图1中示为中间数据)保存到缓存(cache)中;待样本集中的所有样本都运行完毕之后,对缓存中保存的所有中间数据进行直方图统计;继而,在统计得到的直方图上基于KL散度来计算阈值。其中,在进行直方图统计时,首先根据缓存中保存的所有中间数据统计得到直方图的范围(range),随后在所得到的范围内根据中间数据求直方图。在样本较多或者模型较大的情况下,这种传统的采用KL散度的模型量化方法需要占用大量的内存来缓存中间数据,由此可能导致模型量化速度较慢、效率较低,甚至量化程序异常。特别地,如果在递归神经网络模型中应用这种传统的采用KL散度的模型量化方法,则每递归一次,都会产生大量的中间数据,可能导致内存消耗巨大、量化程序崩溃。
针对传统的采用KL散度的模型量化方法所存在的内存消耗较大、模型量化速度较慢并且效率较低的问题,本发明提供一种模型量化中的量化统计方法,以减少需要存储的中间数据,并且减少内存消耗。其中,用模型的整体运行来代替以节点为单位的运行,从而进一步减少内存消耗,通过提高量化统计的速度和效率来提高模型量化的速度和效率。
本发明的第一方面提供一种模型量化中的量化统计方法,用于为神经网络模型(下文通常简称为模型)运行过程中的待量化数据(量化前数据)统计全局直方图,以便进行高效的模型量化。该量化统计方法的执行主体可以是具有计算功能的电子设备,例如,终端设备、服务器等。
图2示意性地示出了根据本发明一个实施例的模型量化中的量化统计方法的流程图,其中包括步骤S11-S13,下面参照图2描述该方法的各个步骤。
步骤S11. 为模型运行过程中的待量化数据设置对应的量化统计算子(quantization statistic operator,后文简称为QS算子)。
模型运行过程中的待量化数据通常包括以下数据中的至少一种:计算算子的输入数据、输出数据、权重数据和偏置数据等。以图3示出的包括一个输入层、两个卷积算子(conv2d算子)和一个输出层的模型为例,该模型运行过程中的待量化数据包括进入卷积算子以进行卷积计算的输入数据和权重数据。应理解,图3仅出于示例的目的,以卷积计算的输入数据和权重数据作为待量化数据,而在其他模型的运行过程中,待量化数据可以仅是输入数据,也可以进一步包括输出数据、偏置数据等其他数据。待量化数据可以划分为:1)随着样本的不同发生变化的动态待量化数据,如图3中所示的卷积计算的输入数据;2)随着样本的不同不发生变化的静态待量化数据(已知的固定数据),如图3中所示的卷积计算的权重数据。
在模型中,动态待量化数据的对应的QS算子的位置可以设置在获得该动态待量化数据的位置与使用该动态待量化数据进行计算的位置之间;另外,由于静态待量化数据是已知的并且不变的,因此,静态待量化数据的对应的QS算子的位置可以设置在使用该静态待量化数据进行计算的位置之前。以图3所示的模型为例,进入第一卷积算子的输入数据的对应的QS算子位于输入层之后,并且位于第一卷积算子之前;进入第二卷积算子的输入数据的对应的QS算子位于第一卷积算子(其输出该输入数据)之后,并且位于第二卷积算子之前;另外,进入第一卷积算子的权重和进入第二卷积算子的权重的对应的QS算子分别位于第一卷积算子和第二卷积算子之前。
步骤S12. 在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,由QS算子统计对应的待量化数据的全局最大值和全局最小值。
在样本集上整体运行模型指的是将该样本集中的每个样本依次输入模型,该模型针对输入的每个样本都整体运行一遍,并且得到对应于每个样本的输出。
在第一次整体运行模型的过程中,采用不同的方式来统计动态待量化数据(例如,输入数据)的全局最大值和全局最小值,以及静态待量化数据(例如,权重数据)的全局最大值和全局最小值。
图4示意性地示出了一种在第一次整体运行模型的过程中,统计动态待量化数据的全局最大值和全局最小值的方法的流程图,如图4所示,该方法包括如下步骤:
S121. 由QS算子将对应的动态待量化数据的初始全局最大值和初始全局最小值设置为空。
S122. 将样本集中的每个样本依次输入模型,在针对每个样本运行所述模型时,由QS算子统计对应的动态待量化数据的局部最大值和局部最小值(该局部最大值和局部最小值与输入的样本相对应),并且根据该局部最大值和该局部最小值来更新对应的动态待量化数据的全局最大值和全局最小值。
其中,根据局部最大值和局部最小值来更新对应的动态待量化数据的全局最大值和全局最小值包括:
1)由QS算子比较对应的动态待量化数据的局部最大值与全局最大值,响应于局部最大值大于全局最大值或者全局最大值为空,将全局最大值设置为局部最大值。
2)由QS算子比较对应的动态待量化数据的局部最小值与全局最小值,响应于局部最小值小于全局最小值或者全局最小值为空,将全局最小值设置为局部最小值。
S123. 在模型针对样本集中的所有样本都整体运行一遍之后,由QS算子存储对应的动态待量化数据的全局最大值和全局最小值,并且注册回调函数(callback function)以便对QS算子内存储的信息进行跟踪查看。
图6A示意性地示出了采用python编程语言统计动态待量化数据的全局最大值和全局最小值的示意图。其中,data表示动态待量化数据,np.min()函数和np.max()函数分别对动态待量化数据求局部最小值min_val和局部最大值max_val,global_min和global_max分别表示动态待量化数据的全局最小值和全局最大值。
上文描述了统计动态待量化数据的全局最大值和全局最小值的方法。至于静态待量化数据(例如,权重数据),由于其随着样本的不同不发生变化,因此无需以上文描述的方法来统计其全局最大值和全局最小值。对于静态待量化数据,可以采用更简单的方法来统计其全局最大值和全局最小值,包括:由QS算子获取对应的静态待量化数据的值,并且统计得到其中的最大值和最小值,分别作为该静态待量化数据的全局最大值和全局最小值。
步骤S13. 在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,由QS算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。
在第二次整体运行模型的过程中,采用不同的方式来构建动态待量化数据(例如,输入数据)的全局直方图,以及静态待量化数据(例如,权重数据)的全局直方图。
图5示意性地示出了一种在第二次整体运行模型的过程中,构建动态待量化数据的全局直方图的方法的流程图,参照图5,该方法包括如下步骤:
S131. 由QS算子基于对应的动态待量化数据的全局最大值和全局最小值,得到对应的动态待量化数据的全局直方图的范围(range)。
其中,QS算子获取其在第一次整体运行模型的过程中所存储的对应的动态待量化数据的全局最大值和全局最小值,将该全局最大值和该全局最小值分别作为对应的动态待量化数据的全局直方图的范围的最大值和最小值。
S132. 由QS算子在对应的动态待量化数据的全局直方图的范围内,构建对应的动态待量化数据的初始全局直方图。其中,以相同步长来划分动态待量化数据的全局直方图的范围,得到预定数量的箱(bin),将初始全局直方图中的每个bin的值设置为零。
S133. 将样本集中的每个样本依次输入模型,在针对每个样本运行所述模型时,由QS算子构建对应的动态待量化数据的局部直方图,并且将该局部直方图与对应的动态待量化数据的全局直方图进行累加,以更新对应的动态待量化数据的全局直方图。其中,这里的样本集与步骤S12中采用的样本集相同。
动态待量化数据的局部直方图表示在针对每个样本运行所述模型时,该动态待量化数据在其全局直方图的范围内的分布,其中,该局部直方图的bin的数量与全局直方图一致。由于动态待量化数据的局部直方图与全局直方图的范围相同,bin的数量也相同,因此在累加局部直方图与全局直方图时,实际上是将全局直方图的范围内的每个bin在局部直方图与全局直方图中的值进行累加。
S134. 在模型针对样本集中的所有样本都整体运行一遍之后,由QS算子得到对应的动态待量化数据的全局直方图。
图6B示意性地示出了采用python编程语言构建动态待量化数据的全局直方图的示意图。其中,range()函数根据动态待量化数据的全局最小值global_min和全局最大值global_max,得到该动态待量化数据的全局直方图的范围range,np.histogram()函数由于生成在全局直方图的范围range内并且bin数为2048的局部直方图hist,并且该动态待量化数据的全局直方图global_hist通过global_hist += hist进行更新。
上文描述了构建动态待量化数据的全局直方图的方法。对于静态待量化数据(例如,权重数据),构建其全局直方图的方法可以包括:由QS算子基于对应的静态待量化数据的全局最大值和全局最小值,得到对应的静态待量化数据的全局直方图的范围;由QS算子获取对应的静态待量化数据的值;在对应的静态待量化数据的全局直方图的范围内,根据所获取的值构建该静态待量化数据的全局直方图。
在上述实施例提供的量化统计方法中,通过两次整体运行模型来统计待量化数据的全局直方图,与通过打散模型进行直方图统计的传统方法相比,其编译所占用的内存较小,即内存消耗较小。其中,在第一次整体运行模型之后,QS算子仅存储对应的待量化数据的全局最大值和全局最小值,而无需保存所有的中间数据,因此与传统方法相比进一步减少了内存消耗。由于减少了内存消耗,因此可以提高量化统计的速度和效率,并且经实验表明,还能够稳定且准确地得到量化统计的结果。
上述实施例提供的量化统计方法适用于样本较多或模型较大的情况下的量化统计,并且适用于内循环较多的递归模型的量化统计。
另外,在上述实施例提供的量化统计方法中,引入了QS算子来对对应的待量化数据进行量化统计,其中,QS算子存储对应的待量化数据的全局最大值和全局最小值,并且注册回调函数以随时查看存储的信息进行相应处理。通过引入这样的QS算子,实现了量化统计工作的模块化,对于已经训练好的模型而言,通过在该模型中的相应位置插入QS算子,即可以实现量化统计。并且,所引入的QS算子可以与现有的各种模型量化方法相结合,例如,在QS算子统计得到对应的待量化数据的全局直方图之后,可以与现有的采用KL散度的模型量化方法、min-max模型量化方法等结合,完成模型量化。上述实施例提供的量化统计方法适用于TVM、TensorRT等多种模型框架,因此还提高了通用性。
本发明的第二方面提供一种模型量化方法,该方法包括通过执行上述实施例中的量化统计方法,为模型运行过程中的待量化数据统计全局直方图,并且基于待量化数据的全局直方图对待量化数据执行量化。该模型量化方法的执行主体可以是具有计算功能的电子设备,例如终端设备、服务器等。
图7示意性地示出了根据本发明一个实施例的模型量化方法的流程图,包括步骤S21-S24,下面参照图7描述该模型量化方法的各个步骤。
步骤S21. 为模型运行过程中的待量化数据设置对应的QS算子。
步骤S22. 在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,由QS算子统计对应的待量化数据的全局最大值和全局最小值。
步骤S23. 在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,由QS算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。
步骤S21-S23的细节可以参考上文描述的步骤S11-S13,此处不再赘述。
步骤S24. 基于待量化数据的全局直方图,执行模型量化。
在步骤S24中,使用采用KL散度的模型量化方法对动态待量化数据进行量化,并且使用min-max模型量化方法对静态待量化数据进行量化。
一方面,使用采用KL散度的模型量化方法对动态待量化数据进行量化包括:
S2411. 确定量化后数据的范围。例如,假设量化后数据采用INT8的定点形式,则量化后数据的范围为[-127,127]。
S2412. 取多个阈值|T|1-|T|n,n为阈值的数量。其中,每个阈值|T|i(1≤i≤n)的值在量化后数据的范围外,并且在动态待量化数据的全局直方图的范围(range)内。
S2413. 针对多个阈值中的每个阈值|T|i(1≤i≤n),执行下面的A)-C),以得到该阈值对应的KL散度:
A)将动态待量化数据在该阈值范围[-|T|i,|T|i]内的值映射到量化后数据的范围内,其中,动态待量化数据的值可以从该动态待量化数据的全局直方图中得到;而对于小于-|T|i或者大于|T|i的值,则将其分别映射到量化后数据的范围的最小值或最大值,从而得到在量化后数据的范围内的量化后数据。例如,假设量化后数据的范围为[-127,127],则对于小于-|T|i或者大于|T|i的值,将其分别映射到-127或127。
B)构建量化后数据的全局直方图,即量化后数据在量化后数据的范围内的全局直方图。
C)计算动态待量化数据的全局直方图与量化后数据的全局直方图之间的KL散度,即,与该阈值|T|i对应的KL散度,其表示量化前后的数据分布的相似性。
S2414. 选择与最小的KL散度对应的阈值作为最终阈值,并且确定缩放因子(scale)。其中,缩放因子用于表示量化前后的比例关系。
另一方面,使用min-max模型量化方法对静态待量化数据进行量化包括:
S2421. 确定量化后数据的范围。
S2422. 将静态待量化数据在其全局直方图的范围内的所有值映射到量化后数据的范围内,从而得到在量化后数据的范围内的量化后数据。其中,静态待量化数据的值可以从该静态待量化数据的全局直方图中得到。
S2423. 确定缩放因子(scale)。其中,缩放因子用于表示量化前后的比例关系。
在上述实施例提供的模型量化方法中,由于其中量化统计消耗的内存较小,并且量化统计的速度和效率较高,因此也提高了模型量化的速度和效率。上述实施例提供的模型量化方法适用于样本较多或模型较大的情况下的模型量化,并且适用于内循环较多的递归模型的模型量化。
上述实施例提供的模型量化方法适用于多种神经网络模型,其中以图像识别模型(或称用于图像识别的模型,简称模型)为例,用于图像识别的模型量化方法可以包括如下步骤:
步骤S31. 获取图像识别模型和样本集。其中,样本集可以来自于训练所述图像识别模型的训练图像集,图像识别模型能够在支持第一数据形式(例如,FP32)的系统上运行,以执行图像识别,即,从输入图像中识别出目标(例如,人、动物、静物等)。
步骤S32. 为图像识别模型运行过程中的待量化数据设置对应的QS算子。
步骤S33. 在样本集上第一次整体运行图像识别模型,在第一次整体运行图像识别模型的过程中,由QS算子统计对应的待量化数据的全局最大值和全局最小值。
步骤S34. 在样本集上第二次整体运行图像识别模型,在第二次整体运行图像识别模型的过程中,由QS算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。
步骤S35. 基于待量化数据的全局直方图执行模型量化,得到量化后的图像识别模型。量化后的图像识别模型能够在支持第二数据形式(例如,INT8)的系统上运行以执行图像识别,其中第二数据形式的数据长度(例如,8位)小于第一数据形式的数据长度(例如,32位)。
步骤S32-S35的细节可以参考上文描述的步骤S21-S24,此处不再赘述。
应注意,除了图像识别模型,上述实施例提供的模型量化方法也适用于其他的神经网络模型。
还应注意,一些示例性方法被描绘为流程图。虽然流程图将操作表述为顺序执行,但可以理解的是,其中的许多操作可以并行、同时或者同步地执行,另外,还可以重新排列操作的顺序。处理可以在操作完成时终止,也可以具有未包括在附图中或者实施例中的附加步骤。
本发明的第三方面提供一种量化统计装置。根据本发明的一个实施例,该量化统计装置包括:预设模块,其用于为模型运行过程中的待量化数据设置对应的QS算子;统计模块,其用于在样本集上第一次整体运行模型,在第一次整体运行模型的过程中,设置QS算子统计对应的待量化数据的全局最大值和全局最小值,以及在样本集上第二次整体运行模型,在第二次整体运行模型的过程中,设置QS算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。
量化统计装置的各个模块可以与上文描述的模型量化中的量化统计方法中的各个步骤相对应,因此,对于本装置实施例中未披露的细节,请参照上文描述的模型量化中的量化统计方法的实施例。
本发明的第四方面提供一种模型量化装置。根据本发明的一个实施例,该模型量化装置包括:上述实施例中的量化统计装置;量化模块,其用于基于从量化统计装置得到的待量化数据的全局直方图,执行模型量化。
模型量化装置的各个模块可以与上文描述的模型量化方法中的各个步骤相对应,因此,对于本装置实施例中未披露的细节,请参照上文描述的模型量化方法的实施例。
上述实施例提供的模型量化装置适用于多种神经网络模型,以图像识别模型(或称用于图像识别的模型,简称模型)为例,预设模块用于获取图像识别模型和样本集,并且为图像识别模型运行过程中的待量化数据设置对应的QS算子,该图像识别模型能够在支持第一数据形式(例如,FP32)的系统上运行,以执行图像识别,即,从输入图像中识别出目标(例如,人、动物、静物等)。统计模块用于在样本集上第一次整体运行图像识别模型,在第一次整体运行图像识别模型的过程中,设置QS算子统计对应的待量化数据的全局最大值和全局最小值;以及,用于在样本集上第二次整体运行图像识别模型,在第二次整体运行图像识别模型的过程中,设置QS算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图。量化模块用于基于待量化数据的全局直方图执行模型量化,得到量化后的图像识别模型。该量化后的图像识别模型能够在支持第二数据形式(例如,INT8)的系统上运行以执行图像识别,其中第二数据形式的数据长度(例如,8位)小于第一数据形式的数据长度(例如,32位)。
应理解,尽管在上文中描述了系统的若干模块或者单元,但是模块和单元的划分方式不限于此。事实上,上文描述的两个或更多模块或单元的特征和功能也可以在一个模块或单元中实现,反过来,上文描述的一个模块或单元的特征和功能也可以进一步划分为由多个模块或者单元来实现。
本发明的第五方面提供一种计算机可读介质,该计算机可读介质包括但不限于:软盘、硬盘、磁带、其它磁介质、CDROM、CDRW、DVD、其它光介质、穿孔卡片、其它物理介质、ROM、PROM、EEPROM、RAM、SRAM、或计算机可读取的其它介质,以及传输介质(诸如同轴电缆、光纤电缆、载波等)。计算机可读介质可以包括在计算机系统中,也可以是未安装的单独的介质。计算机可读介质用于承载计算机指令或程序,包括用于实现上文描述的模型量化中的量化统计方法或者模型量化方法的计算机指令或程序,当计算机可读介质中的计算机指令或程序被处理器(例如,计算机系统中的处理器)读取并执行时,可以实现(例如,使得计算机系统实现)上文描述的模型量化中的量化统计方法或者模型量化方法的实施例,包括图2、4-5、7中所示的步骤。
本发明的第六方面提供一种用于实现本发明实施例的电子设备的计算机系统,该计算机系统可以包括总线,以及耦合到总线的处理器、存储器、输入装置(诸如键盘、鼠标、传感器等)、输出装置(诸如显示器、打印机、扬声器等)、通信接口(诸如并行端口、串行端口、调制解调器、网卡等)以及其他装置(诸如可拆卸装置、驱动装置等)。
其中,存储器(诸如ROM、PROM、EEPROM、RAM、SRAM等)用于存储数据以及计算机指令或程序,包括用于实现上文描述的模型量化中的量化统计方法或者模型量化方法的计算机指令或程序。处理器用于执行计算机指令或程序所指定的一系列动作,例如执行存储器中存储的计算机指令或程序,当处理器执行存储器中存储的计算机指令或程序时,使得计算机系统能够实现上文描述的模型量化中的量化统计方法或者模型量化方法的实施例,包括图2、4-5、7中所示的步骤。
尽管本发明已经通过优选实施例进行了描述,但应理解的是,本发明并不局限于上文描述的并且在附图中示出的实施例,本领域技术人员可以在不脱离本发明范围的情况下进行各种更改和变型。
Claims (9)
1.一种用于图像识别的模型量化方法,其特征在于,所述方法包括:
获取模型和样本集,所述模型用于在支持第一数据形式的系统上运行以执行图像识别;
为模型运行过程中的待量化数据设置对应的量化统计算子,所述待量化数据分为:1)随着样本的不同发生变化的动态待量化数据;2)随着样本的不同不发生变化的静态待量化数据;
在样本集上第一次整体运行所述模型,在第一次整体运行所述模型的过程中,由所述量化统计算子统计对应的待量化数据的全局最大值和全局最小值;
在所述样本集上第二次整体运行所述模型,在第二次整体运行所述模型的过程中,由所述量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图;以及
基于对应的待量化数据的全局直方图对该待量化数据执行模型量化,得到量化后的模型,所述量化后的模型用于在支持第二数据形式的系统上运行以执行图像识别,其中所述第二数据形式的数据在长度上小于所述第一数据形式的数据;
其中,在样本集上整体运行所述模型是指将样本集中每个样本依次输入模型,该模型针对输入的每个样本都整体运行一遍,得到对应于每个样本的输出。
2.根据权利要求1所述的方法,其特征在于,当对应的待量化数据为动态待量化数据时,在第一次整体运行所述模型的过程中,由所述量化统计算子统计对应的待量化数据的全局最大值和全局最小值,包括:
由所述量化统计算子将对应的待量化数据的初始全局最大值和初始全局最小值设置为空;以及
将所述样本集中的每个样本依次输入所述模型,在针对每个样本运行所述模型时,由所述量化统计算子统计对应的待量化数据的局部最大值和局部最小值,并且根据所述局部最大值和所述局部最小值来更新对应的待量化数据的全局最大值和全局最小值。
3.根据权利要求1或2所述的方法,其特征在于,当对应的待量化数据为动态待量化数据时,在第二次整体运行所述模型的过程中,由所述量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图,包括:
由所述量化统计算子基于对应的待量化数据的全局最大值和全局最小值,得到对应的待量化数据的全局直方图的范围;
由所述量化统计算子在对应的待量化数据的全局直方图的范围内,构建对应的待量化数据的初始全局直方图;以及
将所述样本集中的每个样本依次输入所述模型,在针对每个样本运行所述模型时,由所述量化统计算子构建对应的待量化数据的局部直方图,并且将所述局部直方图与对应的待量化数据的全局直方图进行累加,以更新对应的待量化数据的全局直方图。
4.根据权利要求1或2所述的方法,其特征在于,当对应的待量化数据为动态待量化数据时,所述方法还包括:
在所述模型中,将所述量化统计算子设置在获得对应的待量化数据的位置与使用对应的待量化数据进行计算的位置之间。
5. 根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
由所述量化统计算子存储对应的待量化数据的全局最大值和全局最小值;以及
由所述量化统计算子注册回调函数,以对所述量化统计算子内存储的信息进行跟踪查看。
6.根据权利要求1或2所述的方法,其特征在于,基于对应的待量化数据的全局直方图对该待量化数据执行模型量化的过程中,对于动态待量化数据和静态待量化数据使用不同的模型量化方法执行量化。
7.一种用于图像识别的模型量化装置,其特征在于,所述装置包括:
预设模块,用于获取模型和样本集,以及为模型运行过程中的待量化数据设置对应的量化统计算子;其中,所述模型用于在支持第一数据形式的系统上运行以执行图像识别,所述待量化数据分为:1)随着样本的不同发生变化的动态待量化数据;2)随着样本的不同不发生变化的静态待量化数据;
统计模块,用于在所述样本集上第一次整体运行所述模型,在第一次整体运行所述模型的过程中,设置所述量化统计算子统计对应的待量化数据的全局最大值和全局最小值;以及,在所述样本集上第二次整体运行所述模型,在第二次整体运行所述模型的过程中,设置所述量化统计算子基于对应的待量化数据的全局最大值和全局最小值,构建对应的待量化数据的全局直方图;以及
量化模块,用于基于对应的待量化数据的全局直方图对该待量化数据执行模型量化,得到量化后的模型,所述量化后的模型用于在支持第二数据形式的系统上运行以执行图像识别,其中所述第二数据形式的数据在长度上小于所述第一数据形式的数据;
其中,在样本集上整体运行所述模型是指将样本集中每个样本依次输入模型,该模型针对输入的每个样本都整体运行一遍,得到对应于每个样本的输出。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,当所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,其上存储有计算机程序并且耦合到所述处理器,当所述计算机程序被所述处理器执行时,使得所述电子设备实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310379833.2A CN116108896B (zh) | 2023-04-11 | 2023-04-11 | 模型量化方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310379833.2A CN116108896B (zh) | 2023-04-11 | 2023-04-11 | 模型量化方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116108896A CN116108896A (zh) | 2023-05-12 |
CN116108896B true CN116108896B (zh) | 2023-07-07 |
Family
ID=86262007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310379833.2A Active CN116108896B (zh) | 2023-04-11 | 2023-04-11 | 模型量化方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116108896B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012004616A (ja) * | 2010-06-14 | 2012-01-05 | Nippon Telegr & Teleph Corp <Ntt> | 適応量子化方法,適応量子化装置および適応量子化プログラム |
JP2017123614A (ja) * | 2016-01-08 | 2017-07-13 | 日本電信電話株式会社 | 量子化方法、量子化装置及び量子化プログラム |
CN110674924A (zh) * | 2019-08-22 | 2020-01-10 | 苏州浪潮智能科技有限公司 | 一种深度学习推理自动量化方法和装置 |
JPWO2020049681A1 (ja) * | 2018-09-06 | 2021-04-30 | 株式会社Pfu | 情報処理装置、方法及びプログラム |
CN112990440A (zh) * | 2021-04-02 | 2021-06-18 | 安谋科技(中国)有限公司 | 用于神经网络模型的数据量化方法、可读介质和电子设备 |
CN113469324A (zh) * | 2021-03-23 | 2021-10-01 | 中科创达软件股份有限公司 | 模型动态量化方法、装置、电子设备和计算机可读介质 |
CN113947177A (zh) * | 2020-07-15 | 2022-01-18 | 安徽寒武纪信息科技有限公司 | 一种量化校准方法、计算装置和计算机可读存储介质 |
CN114201869A (zh) * | 2021-12-08 | 2022-03-18 | 北京奕斯伟计算技术有限公司 | 模型量化方法、装置及存储介质 |
CN114372553A (zh) * | 2021-11-25 | 2022-04-19 | 北京清微智能信息技术有限公司 | 一种神经网络的量化方法及装置 |
CN114565080A (zh) * | 2022-02-28 | 2022-05-31 | Oppo广东移动通信有限公司 | 神经网络压缩方法及装置、计算机可读介质、电子设备 |
CN114611697A (zh) * | 2022-05-11 | 2022-06-10 | 上海登临科技有限公司 | 神经网络量化及部署方法、系统、电子设备及存储介质 |
CN114626516A (zh) * | 2022-03-24 | 2022-06-14 | 南京大学 | 一种基于对数块浮点量化的神经网络加速系统 |
CN115018715A (zh) * | 2021-03-05 | 2022-09-06 | 上海肇观电子科技有限公司 | 图像处理方法、电子设备及计算机可读存储介质 |
US11568251B1 (en) * | 2020-06-05 | 2023-01-31 | Ambarella International Lp | Dynamic quantization for models run on edge devices |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5150433A (en) * | 1989-12-01 | 1992-09-22 | Eastman Kodak Company | Histogram/variance mechanism for detecting presence of an edge within block of image data |
JP5263681B2 (ja) * | 2009-07-15 | 2013-08-14 | 富士ゼロックス株式会社 | 画像符号化装置およびそのプログラム |
US9467681B2 (en) * | 2013-03-25 | 2016-10-11 | Microsoft Technology Licensing, Llc | Representation and compression of depth data |
US10878273B2 (en) * | 2017-07-06 | 2020-12-29 | Texas Instruments Incorporated | Dynamic quantization for deep neural network inference system and method |
US20190392312A1 (en) * | 2018-06-21 | 2019-12-26 | Deep Force Ltd. | Method for quantizing a histogram of an image, method for training a neural network and neural network training system |
GB2581546B (en) * | 2019-08-22 | 2021-03-31 | Imagination Tech Ltd | Methods and systems for converting weights of a deep neural network from a first number format to a second number format |
US11245903B2 (en) * | 2019-11-22 | 2022-02-08 | Tencent America LLC | Method and apparatus for quantization, adaptive block partitioning and codebook coding for neural network model compression |
US20210224658A1 (en) * | 2019-12-12 | 2021-07-22 | Texas Instruments Incorporated | Parametric Power-Of-2 Clipping Activations for Quantization for Convolutional Neural Networks |
CN111738966B (zh) * | 2020-05-29 | 2022-08-09 | 展讯通信(上海)有限公司 | 图像处理方法及装置、存储介质、终端 |
CN111985495B (zh) * | 2020-07-09 | 2024-02-02 | 珠海亿智电子科技有限公司 | 模型部署方法、装置、系统及存储介质 |
CN114065904A (zh) * | 2020-08-07 | 2022-02-18 | 嘉楠明芯(北京)科技有限公司 | 神经网络模型量化方法以及装置 |
CN112712168A (zh) * | 2020-12-31 | 2021-04-27 | 北京清微智能科技有限公司 | 一种实现神经网络高效计算的方法及系统 |
CN112668658A (zh) * | 2020-12-31 | 2021-04-16 | 广东省大湾区集成电路与系统应用研究院 | 应用于FPGA的Yolov3量化方法、装置、设备及介质 |
KR20230015186A (ko) * | 2021-07-22 | 2023-01-31 | 주식회사 사피온코리아 | 신경망의 양자화를 위한 포화 비율 기반 양자화 범위의 결정 방법 및 장치 |
-
2023
- 2023-04-11 CN CN202310379833.2A patent/CN116108896B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012004616A (ja) * | 2010-06-14 | 2012-01-05 | Nippon Telegr & Teleph Corp <Ntt> | 適応量子化方法,適応量子化装置および適応量子化プログラム |
JP2017123614A (ja) * | 2016-01-08 | 2017-07-13 | 日本電信電話株式会社 | 量子化方法、量子化装置及び量子化プログラム |
JPWO2020049681A1 (ja) * | 2018-09-06 | 2021-04-30 | 株式会社Pfu | 情報処理装置、方法及びプログラム |
CN110674924A (zh) * | 2019-08-22 | 2020-01-10 | 苏州浪潮智能科技有限公司 | 一种深度学习推理自动量化方法和装置 |
US11568251B1 (en) * | 2020-06-05 | 2023-01-31 | Ambarella International Lp | Dynamic quantization for models run on edge devices |
CN113947177A (zh) * | 2020-07-15 | 2022-01-18 | 安徽寒武纪信息科技有限公司 | 一种量化校准方法、计算装置和计算机可读存储介质 |
CN115018715A (zh) * | 2021-03-05 | 2022-09-06 | 上海肇观电子科技有限公司 | 图像处理方法、电子设备及计算机可读存储介质 |
CN113469324A (zh) * | 2021-03-23 | 2021-10-01 | 中科创达软件股份有限公司 | 模型动态量化方法、装置、电子设备和计算机可读介质 |
CN112990440A (zh) * | 2021-04-02 | 2021-06-18 | 安谋科技(中国)有限公司 | 用于神经网络模型的数据量化方法、可读介质和电子设备 |
CN114372553A (zh) * | 2021-11-25 | 2022-04-19 | 北京清微智能信息技术有限公司 | 一种神经网络的量化方法及装置 |
CN114201869A (zh) * | 2021-12-08 | 2022-03-18 | 北京奕斯伟计算技术有限公司 | 模型量化方法、装置及存储介质 |
CN114565080A (zh) * | 2022-02-28 | 2022-05-31 | Oppo广东移动通信有限公司 | 神经网络压缩方法及装置、计算机可读介质、电子设备 |
CN114626516A (zh) * | 2022-03-24 | 2022-06-14 | 南京大学 | 一种基于对数块浮点量化的神经网络加速系统 |
CN114611697A (zh) * | 2022-05-11 | 2022-06-10 | 上海登临科技有限公司 | 神经网络量化及部署方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116108896A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180158449A1 (en) | Method and device for waking up via speech based on artificial intelligence | |
US20240163551A1 (en) | Method and system for tuning a camera image signal processor for computer vision tasks | |
CN113742387A (zh) | 数据处理方法、设备及计算机可读存储介质 | |
CN111078639B (zh) | 数据标准化方法、装置以及电子设备 | |
US20200034716A1 (en) | Global optimal particle filtering method and global optimal particle filter | |
CN110728313A (zh) | 一种用于意图分类识别的分类模型训练方法及装置 | |
CN111950840A (zh) | 一种计量检定装置智能运维知识检索方法及系统 | |
CN111738319A (zh) | 一种基于大规模样本的聚类结果评价方法及装置 | |
CN111144462A (zh) | 一种雷达信号的未知个体识别方法及装置 | |
CN112163132B (zh) | 一种数据标注方法、装置、存储介质及电子设备 | |
CN114444668A (zh) | 网络量化方法及系统及装置及介质及图像处理方法 | |
CN116108896B (zh) | 模型量化方法、装置、介质及电子设备 | |
CN115932913B (zh) | 一种卫星定位伪距修正方法及装置 | |
CN116861373A (zh) | 一种查询选择率估算方法、系统、终端设备及存储介质 | |
CN116467141A (zh) | 日志识别模型训练、日志聚类方法和相关系统、设备 | |
CN115952724A (zh) | 航空发动机剩余寿命预测方法、系统、设备及介质 | |
CN111026879B (zh) | 多维度价值导向的针对意图的面向对象数值计算方法 | |
US20190196971A1 (en) | Method for improving the execution time of a computer application | |
CN110852418A (zh) | 神经网络模型的数据处理方法及装置、存储介质、终端 | |
CN112257215A (zh) | 一种产品寿命分布参数的极大似然估计求解方法及系统 | |
CN111681673B (zh) | 庭审过程中敲法槌的识别方法及系统 | |
CN112668702B (zh) | 定点化参数优化方法、系统、及终端、存储介质 | |
CN113793604B (zh) | 语音识别系统优化方法和装置 | |
US11882175B2 (en) | Correlations between workload characteristics and elapsed times | |
CN115146596B (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 |