CN114091655A - 神经网络量化方法、装置、存储介质以及终端 - Google Patents
神经网络量化方法、装置、存储介质以及终端 Download PDFInfo
- Publication number
- CN114091655A CN114091655A CN202111365962.3A CN202111365962A CN114091655A CN 114091655 A CN114091655 A CN 114091655A CN 202111365962 A CN202111365962 A CN 202111365962A CN 114091655 A CN114091655 A CN 114091655A
- Authority
- CN
- China
- Prior art keywords
- quantization
- node
- layer
- training
- 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
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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本申请公开了一种神经网络量化方法、装置、存储介质以及终端,涉及信息处理技术领域。首先获取神经网络中目标卷积层,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;然后对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的浮点量化模型;最后根据输出训练后的浮点量化模型输出对应的定点量化模型。由于采用在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点训练方法,可以能够实现训练时权值参数量化,而且消除了量化训练与量化推理技术之间的兼容性差问题,还可以减少神经网络中量化过程中出现失真。
Description
技术领域
本申请涉及信息处理技术领域,尤其涉及一种神经网络量化方法、装置、存储介质以及终端。
背景技术
神经网络在系统辨识、模式识别、智能控制等领域有着广泛而吸引人的前景,特别在智能控制中,人们对神经网络的自学习功能尤其感兴趣,并且把神经网络这一重要特点看作是解决自动控制中控制器适应能力这个难题的关键钥匙之一。
发明内容
本申请提供一种神经网络量化方法、装置、存储介质以及终端,可以解决相关技术中神经网络中量化过程中出现失真的技术问题。
第一方面,本申请实施例提供一种神经网络量化方法,其特征在于,所述方法包括:
获取神经网络中目标卷积层,在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;
对所述神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的所述浮点量化模型;
根据输出训练后的所述浮点量化模型输出对应的定点量化模型。
可选地,所述在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点,包括:判断所述目标卷积层之后是否存在批量归一化操作;若不存在,则在所述目标卷积层之后的计算位置中插入所述层融合式参数伪量化节点中的批量归一化节点,以及在所述批量归一化节点之后插入伪量化节点;若存在,则在所述目标卷积层之后的计算位置中插入所述层融合式参数伪量化节点中的伪量化节点。
可选地,所述对所述神经网络对应的浮点量化模型进行层融合训练,包括:通过所述批量归一化节点约束输出激活层的取值范围;在所述神经网络的前向计算过程中将所述目标卷积层和所述批量归一化节点融合后的权值参数进行伪量化。
可选地,所述在所述目标卷积层之后的计算位置中插入特征截断式节点,包括:判断目标卷积层之后是否存在修正线性单元;若存在,则删除所述修正线性单元,并插入特征截断式节点;若不存在,则插入特征截断式节点。
可选地,所述对所述神经网络对应的浮点量化模型进行截断式量化训练,包括:基于所述批量归一化节点输出激活层的取值范围进行阈值判定,得到截断阈值;通过所述特征截断式节点插入截断函数,以使得所述截断函数对所述批量归一化节点输出激活层进行处理。
可选地,所述根据输出训练后的所述浮点量化模型输出对应的定点量化模型,包括:将输出训练后的所述浮点量化模型进行定点化处理,输出定点量化模型。
可选地,所述通过校准算法模块输出训练后的所述浮点量化模型对应的定点量化模型,还包括:将截断阈值作为激活值取值范围,并计算量化尺度因子。
可选地,当所述目标卷积层为分组卷积层时,按照所述目标卷积层对应的分组,分别进行在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点,以及对所述神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练。
第二方面,本申请实施例提供一种神经网络量化装置,所述装置包括:
插入模块,用于获取神经网络中目标卷积层,在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;
量化训练模块,用于对所述神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的所述浮点量化模型;
定点模块,用于根据输出训练后的所述浮点量化模型输出对应的定点量化模型。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法的步骤。
第四方面,本申请实施例提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
本申请提供一种神经网络量化方法,首先获取神经网络中目标卷积层,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;然后对神经网络中对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的浮点量化模型;最后根据输出训练后的浮点量化模型输出对应的定点量化模型。由于采用在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点训练方法,可以能够实现训练时权值参数量化,而且消除了量化训练与量化推理技术之间的兼容性差问题,还可以减少神经网络中量化过程中出现失真。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的神经网络量化方法的示例性系统架构图;
图2为本申请实施例提供的一种神经网络的网络构架示意图;
图3为本申请实施例提供的一种神经网络量化方法的流程示意图;
图4为本申请实施例提供的神经网络量化方法的一种训练流程示意图;
图5为本申请实施例提供的神经网络量化方法的另一种训练流程示意图;
图6为本申请实施例提供的神经网络量化方法的截断节点中截断函数的示意图;
图7为本申请实施例提供的一种神经网络量化装置的结构示意图;
图8为本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使得本申请的特征和优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1为本申请实施例提供的神经网络量化方法的示例性系统架构图。
如图1所示,系统架构可以包括至少一个终端110、服务器120以及网络130,网络130用于在终端110和服务器120之间提供通信链路的介质。网络130可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真(Wireless-Fidelity,Wi-Fi)通信链路或微波通信链路等。
终端110可以是硬件,也可以是软件。当终端110为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等。当终端110为软件时,可以是安装在上述所列举的电子设备中,其可以实现成多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
服务器120可以是提供各种服务的业务服务器。需要说明的是,服务器120可以是硬件,也可以是软件。当服务器120为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器120为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。
应理解,图1中的终端、网络和服务器的数目仅是示意性的。根据实现需要,可以是任意数量的终端、网络和服务器。本申请实施例中的神经网络量化方法可以在上述服务器中执行,也可以在上述终端中执行,本申请中,并不限定神经网络量化方法的执行主体。
请参阅图2,图2为本申请实施例提供的一种神经网络的网络构架示意图,如图2所示,神经网络构架可以包括多层结构,该多层结构如图2所示,可以包括:输入层、卷积层1、批量归一化层(BatchNorm层)、卷积层2、中间层(依据不同功能的神经网络构架具有不同的中间层,该中间层可以为至少一层)、卷积层n、全连接层、激活层(例如激活函数:softmax)。另外,本申请提供的图2中的神经网络构架仅仅是为了举例说明,本申请中的神经网络并不局限如图2所示的构架。
请参阅图3,图3为本申请实施例提供的一种神经网络量化方法的流程示意图。
如图3所示,该方法包括:
S301、获取神经网络中目标卷积层,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点。
可选地,本申请实施例中的目标卷积层可以是图2中任一一个卷积层,本申请对具体卷积层不做限定。
在本申请实施例中,层融合是指在神经网络的模型推理过程中,对某些特殊的层进行参数融合,完成计算量优化,例如对卷积层和批量归一化层对应结构进行进行参数融合。那么层融合式参数伪量化节点是指,在神经网络中对某些层进行参数融合时加入的节点。
进一步地,特征截断是指在神经网络中,使用转换工具输出的量化模型在推理过程中会产生随机截断,那么特征截断式节点是指,在使用转换工具输出的量化模型输加入的节点。
可选地,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点,包括:判断目标卷积层之后是否存在批量归一化操作;若不存在,则在目标卷积层之后的计算位置中插入层融合式参数伪量化节点中的批量归一化节点,以及在批量归一化节点之后插入伪量化节点;若存在,则在目标卷积层之后的计算位置中插入层融合式参数伪量化节点中的伪量化节点。
可选地,在目标卷积层之后的计算位置中插入特征截断式节点,包括:判断目标卷积层之后是否存在修正线性单元;若存在,则删除修正线性单元,并插入特征截断式节点;若不存在,则插入特征截断式节点。
S302、对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的浮点量化模型。
可选地,对神经网络对应的浮点量化模型进行层融合训练,包括:通过批量归一化节点约束输出激活层的取值范围;在神经网络的前向计算过程中将目标卷积层和批量归一化节点融合后的权值参数进行伪量化。
可选地,对神经网络对应的浮点量化模型进行截断式量化训练,包括:基于批量归一化节点输出激活层的取值范围进行阈值判定,得到截断阈值;通过特征截断式节点插入截断函数,以使得截断函数对批量归一化节点输出激活层进行处理。
为了方便描述,下面将结合具体例子解释步骤S301以及步骤S302,其中主要通过目标卷积层为标准卷积层以及分组卷积层进行解释,其区别主要为当目标卷积层为分组卷积层时,按照目标卷积层对应的分组,分别进行在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点,以及分组进行训练以及。
请参阅图4,图4为本申请实施例提供的神经网络量化方法的一种训练流程示意图。
如图4所示,当目标卷积层为标准卷积层时,针对标准卷积结构,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点过程中,融合式参数伪量化节点可以至少包括批量归一化节点(BatchNorm Node)和伪量化节点(FakeQuantNode)。
其中,首先是批量归一化节点的实施方式,该节点首先判断标准卷积层后是否有批量归一化操作(BatchNorm),如果没有则不进行该节点插入,如果没有则插入该节点,该节点负责约束输出激活层的取值范围,有利于后续节点的截断阈值控制。
然后是伪量化节点的实施方式,该节点在批量归一化节点后插入,负责在量化训练前向计算过程中将标准卷积层和批量归一化层(BatchNorm层)融合后的权值参数进行伪量化。标准卷积层的权重参数Wfloat,偏置参数Bfloat,输入Cfloat,input;紧随其后的批量归一化层参数:尺度参数γ、偏移参数β、样本均值标准差则批量归一化层输出表示为:
W’float和B’float代表融合后的权重和偏置参数,伪量化节点针对W’float进行伪量化获得W’float,quant,利用伪量化权重参数进行训练过程中的前向推理并获得网络损失函数。而在反向传播过程中,需要计算计算的是损失函数在原始参数(Wfloat、Bfloat、γ、β)上的梯度,然后更新参数,输出浮点量化模型。这样能够保证浮点量化模型参数经过转换工具层融合后,输出的定点量化模型参数WintN不产生直接量化损失。
然后是特征截断式节点(Truncation Node)定值的实施方式,特征截断式节点负责确定截断阈值,通过统计批量归一化层输出的激活值范围进行阈值判定,本申请实施例中列举了至少两种两种阈值范围,分别是{-N,N}、{-2N,2N}。如果批量归一化层输出激活值90%分部在{-N,N}内,则选择{-N,N}作为截断阈值;否则,选择{-2N,2N}作为截断阈值。
最后是特征截断式节点(Truncation Node)的训练实施过程,该节点在确定阈值范围后,首先判断后续是否存在修正线性单元(ReLU),如果存在则删除修正线性单元,并调整截断阈值的最小值为0,如果不存在,则保持截断阈值;然后插入截断函数,批量归一化层的激活层经过截断函数处理后,其取值范围被截断函数约束。对于浮点量化模型,转换工具根据截断节点的阈值进行尺度因子求解并输出定点量化模型,定点量化模型推理时发生与浮点量化模型相同截断,保证了训练时的模型精度能够完全反映量化推理时模型精度。
上述四步描述了标准卷积层中的融合联合截断式量化训练实施过程,通过批量归一化节点、量化节点以及特征截断式节点,保证了训练输出的浮点量化模型与转换后的定点量化模型之间保持相同精度。
请参阅图5,图5为本申请实施例提供的神经网络量化方法的另一种训练流程示意图。
如图5所示,当目标卷积层为分组卷积层时,与标准卷积层类似,本申请中的量化训练过程也是首先分析网络中分组卷积层及其后续层的属性,决定待插入节点的类型以及插入位置,是否执行非线性激活层删除操作。
具体的,首先是批量归一化节点的实施方式,该节点实施方式与标准卷积层中量化训练的批量归一化节点实时过程一致。
然后是伪量化节点的实施方式,该节点实施方式与标准卷积层中量化训练中伪量化节点的实施过程基本一致,唯一区别是分组插入伪量化节点,按组进行分组卷积层和批量归一化层融合并进行参数伪量化。
然后是特征截断式节点(Truncation Node)定值的实施方式,该特征截断式节点(Truncation Node)定值的实施方式,与标准卷积层中量化训练中特征截断式节点(Truncation Node)定值的实施过程基本一致,但有两点差异:第一是,分组进行截断阈值的选取;第二是,截断阈值的选项可以至少扩展到5个,分别是{-N/8,N/8}、{-N4,N/4}、{-N/2,N/2}、{-N,N}、{-2N,2N}。截断阈值选取策略与标准卷积层一致,对每组批量归一化层输出激活值分布进行分析,如果90%激活值集中在{-N/8,N/8}范围内,则确定截断阈值为{-N/8,N/8},否则判断90%激活值是否集中在{-N4,N/4},并以此类推。
最后是特征截断式节点(Truncation Node)的训练实施过程,该节点实施方式与标准卷积层中量化训练中伪量化节点的实施过程基本一致,唯一区别是分组插入该节点,不同阈值的截断函数按组进行激活值截断处理。
请参阅图6,图6为本申请实施例提供的神经网络量化方法的截断节点中截断函数的示意图。
如图6所示,截断式节点首先统计非量化训练卷积输出特征值分布,根据分布范围选择不同截断阈值,本申请实施例中,针对普通卷积层提供两种截断范围,分别是N和2N。对于标准卷积层,截断式节点判断是否存在修正线性单元,如果存在则删除修正线性单元并替换为截断节点(对应图6中(1)(2)阶段函数),如果不存在则插入截断节点(对应图6中(3)(4)阶段函数)。截断节点针对分组卷积提供五种截断范围,分别是N/8、N/4、N/2、N以及2N,截断判断和后续操作保持与常卷积一致。针对插入截断节点训练的浮点量化网络,利用转换工具的校准算法直接输出定点量化网络,且保证了浮点量化模型与定点量化模型精度一致。
本申请实施例中,提出了层融合式量化训练,在层融合式量化训练过程中涉及批量归一化节点(BatchNorm Node)和伪量化节点(FakeQuant Node),其中批量归一化节点(BatchNorm Node)负责归一化输出激活值及提高模型泛化能力,伪量化节点(FakeQuantNode)负责将卷积权值参数和批量归一化层参数合并,对合并后参数进行伪量化,利用伪量化参数进行前向推理并计算损失函数,而反向传播过程中,分别计算损失函数对于层融合前的卷积层参数和批量归一化层参数的梯度,并根据学习率来更新参数。按照此层融合式量化训练输出的浮点量化模型在经过转换工具校准机定点转换后输出定点量化模型,定点量化模型存储层融合后的定点权值参数以及对应比例因子(输入输出比例因子、权值比例因子、临时缓冲比例因子),由于量化训练过程中插入了层融合量化模块,因此定点量化模型的权值参数分布与浮点量化模型权值参数分布一致,解决了参数在定点量化后分布规律波动导致的失真问题。
进一步地,为了解决后续转换工具输出的定点量化模型在推理过程中产生的随机截断问题,本申请实施例中在浮点量化模型训练部分提出了截断式量化训练模块,其中的特征截断式节点(Truncation Node)的定值过程中,首先统计原始浮点非量化模型输出激活值的分布特征,然后输出该层的截断阈值。特征截断式节点(Truncation Node)根据后续是否存在修正线性单元(ReLU)调节截断阈值下限,特征截断式节点(Truncation Node)的截断函数根据截断阈值对批量归一化层输出的激活值进行截断处理。利用截断训练可输出浮点量化模型,该截断训练过程中的截断阈值可以直接输入转换工具的校准算法中,进而求解得到定点量化模型的尺度因子。定点量化模型推理时发生与浮点量化模型相同截断,保证了量化训练时的模型精度能够完全反映量化推理时模型精度,解决了量化推理的随机截断失真问题。
S303、根据输出训练后的浮点量化模型输出对应的定点量化模型。
可选地,根据输出训练后的浮点量化模型输出对应的定点量化模型,包括:将输出训练后的浮点量化模型进行定点化处理,输出定点量化模型。
可选地,通过校准算法模块输出训练后的浮点量化模型对应的定点量化模型,还包括:将截断阈值作为激活值取值范围,并计算量化尺度因子。
在本申请实施例中,通过转换工具负责将浮点量化模型进行定点化处理,输出定点量化模型。因此除了进行层融合等优化操作外,主要还包括直接校准过程,在校准过程中,转换工具中的校准算法的将截断阈值作为激活值取值范围,然后直接计算量化尺度因子。量化尺度因子包括权值尺度因子、输入与输出尺度因子、临时缓存尺度因子。
其中,对于权值量化尺度因子,假设转换工具对卷积层和BN层合并后的参数表示为W’float,则权值参数尺度因子可表示为sw=max(|W’float|)/((1<<(N-1))-1),则定点量化模型最后存储的权重参数可表示为W’intN=W’float/sw。
对于输入与输出尺度因子,上述提到转换工具将浮点量化训练的截断阈值作为激活值的取值范围,这样转换工具中的校准算法不需要校准集,可直接进行输入与输出尺度因子计算。如果假设输入层截断阈值为{threinput,min,threinput,max},输出层截断阈值为{threoutput,min,threoutput,max},则输入层激活值的最大绝对值max(|Cfloat,input|)=max{-threinput,min,threinput,max},输出激活值的最大绝对值max(|Cfloat,output|)=max{-threoutput,min,threoutput,max},则按照前面公式可得到定点量化模型的输入比例因子sc,input和输出比例因子sc,output。
对于,临时缓存尺度因子,校准算法还需为定点量化模型计算32位临时缓存至N位输出的比例因子,该比例因子用于定点推理过程中的计算。校准算法使用max(|Cfloat,output|)=max{-threoutput,min,threoutput,max}得到浮点量化模型输出激活值的最大值绝对值,定点量化模型存储的临时缓存比例因子可表示为sc,output_temp=(1<<(N-1)-1)/(sc,inputswmax(|Cfloat,output|))。
特别的,对于上述目标卷积层为分组卷积层而言,每组计算单独的权值尺度因子、输入与输出比例因子、临时缓存比例因子。此外,还需计算不同组之间输出比例因子之间的关系,选取最大max(|Cfloat,output|)的组作为标准组,并以对应的输出尺度sc,output作为标准尺度,用于推理过程中的尺度统一。
进一步地,转换工具负责将浮点量化模型进行定点化处理,输出定点量化模型之后,还可以进行量化推理,在量化推理计算实施方式中,转换工具输出的定点量化模型进行常卷积量化计算。而对于上述目标卷积层为分组卷积层而言,量化计算同样需要进行分组量化计算,然后进行组间尺度变换操作,利用组间转换关系获得标准尺度下的N位量化表达。假设组卷积分为四组,每组输出尺度因子分别为:sc,output,g1、sc,output,,g2、sc,output,,g3、sc,output,g4,每组量化推理输出分别为:CintN,output,g1、CintN,output,g2、CintN,output,g3、CintN,output,g4,选取四组中最大的尺度因子作为标准尺度因子sc,output,st=max{sc,output,g1,sc,output,g2,sc,output,g3,sc,output,g4},则进行尺度统一后的每组量化推理输出分别为:
在本申请实施例中量化训练方法与现有的量化训练方法有明显不同:
首先,现有的量化训练方法仅针对卷积层本身的权值参数进行伪量化,然后进行前向推理并计算损失函数,反向传播的参数更新发生在卷积权值参数上,输出的浮点量化模型在经过转换工具的层融合和定点量化操作后,会产生分布波动,从而引起推理失真。而本申请实施例中提出的融合式量化训练方法解决了浮点量化训练端和定点量化推理端之间的权值分布波动问题,在以前的量化训练方案中是未所见的。
其次,现有的量化训练方法输出浮点量化模型,转换工具的校准算法统计校准集在浮点量化模型上的激活值分布,然后计算转换因子并输出定点量化模型,这会导致定点量化模型在实际推理过程中产生随机截断失真,无法保持与浮点量化模型相同精度。而本申请实施例中提出的截断式量化训练方法通过加入截断函数控制量化训练的过程,限制激活值分布在合适范围,并且输出定点量化模型在推理过程中也发生相同截断,这样保证移动端部署的定点量化模型保持与服务端训练的浮点量化模型相同的精度,这在以前的量化训练方案中是未所见的。
本本申请实施例中提出的转换工具校准方法与现有的校准方法也有明显的不同,现有的转换工具在对浮点量化模型进行层融合及权值定点量化后,会在校准数据集上进行一遍浮点量化模型前向推理,然后调用校准算法(例如KL散度)计算每层激活值的合适范围,然后输出尺度因子,由于依赖于校准集,因此输出的定点量化模型同样会产生推理失真。而本申请实施例中采用了直接校准方法,该方法得益于训练过程中的截断函数,利用截断函数的阈值作为激活值的分布,不需要校准集,直接输出尺度因子,这在现有方案中是所未见的。
进一步地,本申请实施例中,层融合联合截断式量化训练中的即插即用的新型量化训练方法,不仅能够实现训练时权值参数量化,而且消除了量化训练与移动端量化推理技术之间的兼容性差问题。
请参阅图7,图7为本申请实施例提供的一种神经网络量化装置的结构示意图。
如图7所示,该神经网络量化装置700包括:
插入模块710,用于获取神经网络中目标卷积层,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点。
量化训练模块720,用于对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的浮点量化模型。
可选地,当目标卷积层为分组卷积层时,插入模块710,用于按照目标卷积层对应的分组,分别进行在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点,以及量化训练模块720,用于对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练。
其中,插入模块710,还用于判断目标卷积层之后是否存在批量归一化操作;若不存在,则在目标卷积层之后的计算位置中插入层融合式参数伪量化节点中的批量归一化节点,以及在批量归一化节点之后插入伪量化节点;若存在,则在目标卷积层之后的计算位置中插入层融合式参数伪量化节点中的伪量化节点。
量化训练模块720,还用于通过批量归一化节点约束输出激活层的取值范围;在神经网络的前向计算过程中将目标卷积层和批量归一化节点融合后的权值参数进行伪量化。
可选地,插入模块710,还用于判断目标卷积层之后是否存在修正线性单元;若存在,则删除修正线性单元,并插入特征截断式节点;若不存在,则插入特征截断式节点。
量化训练模块720,还用于基于批量归一化节点输出激活层的取值范围进行阈值判定,得到截断阈值;通过特征截断式节点插入截断函数,以使得截断函数对批量归一化节点输出激活层进行处理。
定点模块730,用于根据输出训练后的浮点量化模型输出对应的定点量化模型。
定点模块730,还用于将输出训练后的浮点量化模型进行定点化处理,输出定点量化模型。
定点模块730,还用于将截断阈值作为激活值取值范围,并计算量化尺度因子。
在本申请实施例中,神经网络量化装置包括:插入模块,用于获取神经网络中目标卷积层,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;量化训练模块,用于对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的浮点量化模型;定点模块,用于根据输出训练后的浮点量化模型输出对应的定点量化模型。由于采用在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点训练方法,可以能够实现训练时权值参数量化,而且消除了量化训练与量化推理技术之间的兼容性差问题,还可以减少神经网络中量化过程中出现失真。
本申请实施例还提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行如上述实施例中的任一项的方法的步骤。
请参见图8,图8为本申请实施例提供的一种终端的结构示意图。如图8所示,终端800可以包括:至少一个处理器801,至少一个网络接口804,用户接口803,存储器805,至少一个通信总线802。
其中,通信总线802用于实现这些组件之间的连接通信。
其中,用户接口803可以包括显示屏(Display)、摄像头(Camera),可选用户接口803还可以包括标准的有线接口、无线接口。
其中,网络接口804可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器801可以包括一个或者多个处理核心。处理器801利用各种接口和线路连接整个终端800内的各个部分,通过运行或执行存储在存储器805内的指令、程序、代码集或指令集,以及调用存储在存储器805内的数据,执行终端800的各种功能和处理数据。可选的,处理器801可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器801可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器801中,单独通过一块芯片进行实现。
其中,存储器805可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选的,该存储器805包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器805可用于存储指令、程序、代码、代码集或指令集。存储器805可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器805可选的还可以是至少一个位于远离前述处理器801的存储装置。如图8所示,作为一种计算机存储介质的存储器805中可以包括操作系统、网络通信模块、用户接口模块以及神经网络量化程序。
在图8所示的终端800中,用户接口803主要用于为用户提供输入的接口,获取用户输入的数据;而处理器801可以用于调用存储器805中存储的神经网络量化程序,并具体执行以下操作:
获取神经网络中目标卷积层,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;
对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的浮点量化模型;
根据输出训练后的浮点量化模型输出对应的定点量化模型。
可选地,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点,包括:判断目标卷积层之后是否存在批量归一化操作;若不存在,则在目标卷积层之后的计算位置中插入层融合式参数伪量化节点中的批量归一化节点,以及在批量归一化节点之后插入伪量化节点;若存在,则在目标卷积层之后的计算位置中插入层融合式参数伪量化节点中的伪量化节点。
可选地,对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,包括:通过批量归一化节点约束输出激活层的取值范围;在神经网络的前向计算过程中将目标卷积层和批量归一化节点融合后的权值参数进行伪量化。
可选地,在目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点,还包括:判断目标卷积层之后是否存在修正线性单元;若存在,则删除修正线性单元,并插入特征截断式节点;若不存在,则插入特征截断式节点。
可选地,对神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,还包括:基于批量归一化节点输出激活层的取值范围进行阈值判定,得到截断阈值;通过特征截断式节点插入截断函数,以使得截断函数对批量归一化节点输出激活层进行处理。
可选地,根据输出训练后的浮点量化模型输出对应的定点量化模型,包括:将输出训练后的浮点量化模型进行定点化处理,输出定点量化模型。
可选地,通过校准算法模块输出训练后的浮点量化模型对应的定点量化模型,还包括:将截断阈值作为激活值取值范围,并计算量化尺度因子。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本申请所提供的一种神经网络量化方法、装置、存储介质以及终端的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种神经网络量化方法,其特征在于,所述方法包括:
获取神经网络中目标卷积层,在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;
对所述神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的所述浮点量化模型;
根据输出训练后的所述浮点量化模型输出对应的定点量化模型。
2.根据权利要求1所述的方法,其特征在于,所述在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点,包括:
判断所述目标卷积层之后是否存在批量归一化操作;
若不存在,则在所述目标卷积层之后的计算位置中插入所述层融合式参数伪量化节点中的批量归一化节点,以及在所述批量归一化节点之后插入伪量化节点;
若存在,则在所述目标卷积层之后的计算位置中插入所述层融合式参数伪量化节点中的伪量化节点。
3.根据权利要求1所述的方法,其特征在于,所述在所述目标卷积层之后的计算位置中插入特征截断式节点,包括:
判断目标卷积层之后是否存在修正线性单元;
若存在,则删除所述修正线性单元,并插入特征截断式节点;
若不存在,则插入特征截断式节点。
4.根据权利要求2所述的方法,其特征在于,所述对所述神经网络对应的浮点量化模型进行层融合训练,包括:
通过所述批量归一化节点约束输出激活层的取值范围;
在所述神经网络的前向计算过程中将所述目标卷积层和所述批量归一化节点融合后的权值参数进行伪量化。
5.根据权利要求3所述的方法,其特征在于,所述对所述神经网络对应的浮点量化模型进行截断式量化训练,包括:
基于所述批量归一化节点输出激活层的取值范围进行阈值判定,得到截断阈值;
通过所述特征截断式节点插入截断函数,以使得所述截断函数对所述批量归一化节点输出激活层进行处理。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述根据输出训练后的所述浮点量化模型输出对应的定点量化模型,包括:
将输出训练后的所述浮点量化模型进行定点化处理,输出定点量化模型。
7.根据权利要求6所述的方法,其特征在于,所述通过校准算法模块输出训练后的所述浮点量化模型对应的定点量化模型,还包括:
将截断阈值作为激活值取值范围,并计算量化尺度因子。
8.根据权利要求1至5任一项所述的方法,其特征在于,当所述目标卷积层为分组卷积层时,按照所述目标卷积层对应的分组,分别进行在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点,以及对所述神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练。
9.一种神经网络量化装置,其特征在于,所述装置包括:
插入模块,用于获取神经网络中目标卷积层,在所述目标卷积层之后的计算位置中插入层融合式参数伪量化节点以及特征截断式节点;
量化训练模块,用于对所述神经网络对应的浮点量化模型进行层融合训练以及截断式量化训练,并输出训练后的所述浮点量化模型;
定点模块,用于根据输出训练后的所述浮点量化模型输出对应的定点量化模型。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~8任意一项的所述方法的步骤。
11.一种终端,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1~8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111365962.3A CN114091655A (zh) | 2021-11-17 | 2021-11-17 | 神经网络量化方法、装置、存储介质以及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111365962.3A CN114091655A (zh) | 2021-11-17 | 2021-11-17 | 神经网络量化方法、装置、存储介质以及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114091655A true CN114091655A (zh) | 2022-02-25 |
Family
ID=80301832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111365962.3A Pending CN114091655A (zh) | 2021-11-17 | 2021-11-17 | 神经网络量化方法、装置、存储介质以及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114091655A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114841325A (zh) * | 2022-05-20 | 2022-08-02 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质及电子设备 |
CN115759209A (zh) * | 2022-11-18 | 2023-03-07 | 北京百度网讯科技有限公司 | 神经网络模型的量化方法、装置、电子设备及介质 |
CN116720563A (zh) * | 2022-09-19 | 2023-09-08 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
-
2021
- 2021-11-17 CN CN202111365962.3A patent/CN114091655A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114841325A (zh) * | 2022-05-20 | 2022-08-02 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质及电子设备 |
CN116720563A (zh) * | 2022-09-19 | 2023-09-08 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
CN116720563B (zh) * | 2022-09-19 | 2024-03-29 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
CN115759209A (zh) * | 2022-11-18 | 2023-03-07 | 北京百度网讯科技有限公司 | 神经网络模型的量化方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114091655A (zh) | 神经网络量化方法、装置、存储介质以及终端 | |
WO2021098615A1 (zh) | 基因型数据缺失的填充方法、装置及服务器 | |
CN113570030A (zh) | 数据处理方法、装置、设备以及存储介质 | |
WO2022111002A1 (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
CN114065863A (zh) | 联邦学习的方法、装置、系统、电子设备及存储介质 | |
CN112686031A (zh) | 文本特征提取模型的量化方法、装置、设备及存储介质 | |
CN113419849A (zh) | 边缘计算节点选择方法及终端设备 | |
CN112884146A (zh) | 一种训练基于数据量化与硬件加速的模型的方法及系统 | |
CN114297934A (zh) | 一种基于代理模型的模型参数并行仿真优化方法及装置 | |
CN113850890A (zh) | 动物形象的生成方法、装置、设备及存储介质 | |
WO2021057926A1 (zh) | 一种神经网络模型训练方法及装置 | |
CN110046670B (zh) | 特征向量降维方法和装置 | |
JP2021033994A (ja) | テキスト処理方法、装置、デバイス及びコンピュータ読み取り可能な記憶媒体 | |
CN115936092A (zh) | 神经网络模型量化方法及装置、存储介质及电子设备 | |
CN113408970B (zh) | 用户信息生成方法、装置、电子设备和计算机可读介质 | |
WO2021232907A1 (zh) | 一种神经网络模型的训练装置、方法及相关设备 | |
CN111582456B (zh) | 用于生成网络模型信息的方法、装置、设备和介质 | |
CN115293324A (zh) | 量化感知训练方法及相关装置 | |
KR20220061835A (ko) | 하드웨어 가속 장치 및 방법 | |
CN114707638A (zh) | 模型训练、对象识别方法及装置、设备、介质和产品 | |
CN114116740A (zh) | 用于联合学习中确定参与方贡献度的方法及装置 | |
CN113408725A (zh) | 基于复合熵的遗传算法参数优化方法、系统、设备及介质 | |
CN111489203A (zh) | 理财产品推荐方法及系统 | |
CN111768220A (zh) | 生成车辆定价模型的方法和装置 | |
CN114745310B (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 |