一种自动获得混合精度量化全局最优化策略的方法
文献发布时间:2023-06-19 18:37:28
技术领域
本发明涉及深度神经网络技术领域,尤其涉及一种自动获得混合精度量化全局最优化策略的方法。
背景技术
神经网络是一种运算模型,由大量的节点之间互相连接而成。每个连接需要大量的数据参与计算,经过训练的网络模型通常使用高精度数据类型,这就导致在实际应用中,需要耗费大量算力、内存和时间等。神经网络模型量化是使用低精度的数据类型替代高精度的数据类型,在尽量不损失模型精度的前提下缓解算力的压力、节约成本。针对可以量化的模型目前的量化方法只能保证其精度在一定的范围内,但这种方法不能保证是模型最佳量化方法。
中国专利申请CN112906883A提出了一种混合精度量化的方法。该方法依次对网络的每一层进行量化,找到一个合适的量化精度,直到整个网络完成。
该方法如假设神经网络有3层,量化精度只有两种,即对神经网络的某一层要么量化,要么不量化,带下划线的代表该层需要量化,没有下划线的则代表该层不做量化。
“对比文件1:CN112906883A”的方法是,先对第一层分别进行不量化和量化,其它层则保持不做量化,会有以下两种量化组合:
1.(L1,L2,L3)
2.(
假定上述两种量化组合中,组合2的推理精度或者时间不符合要求,那么“对比文件1:CN112906883A”的两个实施例在之后的第4步中(S4,将针对所有层筛选出的量化精度的多个不同组合中的一个确定为所述混合精度量化策略),最多只会考虑如下4种组合:
3.(L1,L2,L3)
4.(L1,
5.(L1,L2,
6.(L1,
很明显,这4个组合中都不包含对L1做量化的组合,而由于在实际的神经网络中,不同层之间的计算相互影响和关联,很有可能(
“对比文件1:CN112906883A”的方法对每一层依次进行量化,已完成量化的层就不会再发生改变,没有考虑多层量化组合后通过改变之前量化的层来提高性能,因此,此方法未必能找到模型的最佳量化方法。同时,出现多种量化选择时没有给用户提供选择量化方法的依据,而是让用户随便从多种量化方法中选择,这样会让用户选择时产生困难,而且用户未必能选择到真正需要的量化模型。
发明内容
基于现有技术中存在的不足之处,本发明提供了一种自动获得混合精度量化全局最优化策略的方法,具体技术方案如下:
一种自动获得混合精度量化全局最优化策略的方法,包括以下步骤:
准备将要进行量化的深度神经网络数据集;
从深度神经网络的所有混合量化组合中顺序选取一个组合进行推理,并记录实际的推理精度和实际的推理时间,重复直至遍历所有混合量化组合;
排除掉实际推理精度或实际推理时间不符合要求的混合量化组合,对剩余符合推理精度和推理时间要求的计算得分并按得分进行排序;
选择最高得分的混合量化组合作为混合精度量化全局最优化策略。
具体的,所述混合量化组合的数量为:
式中,n为深度神经网络层数,k为量化层数,0≤k≤n,剩余的n-k层不参与量化。
具体的,所述得分的计算式为:
其中,s代表得分,p(
具体的,所述的实际推理精度的计算式为:
其中,TP为在数据集中,推理预测正确的数量;FP为推理预测错误的数量;p为正确预测数量与总预测数量之比。
具体的,所述实际推理时间归一化后的值
其中,
具体的,所述实际推理时间的计算式为:
其中,N为数据集中样本的数量;
具体的,所述推理精度的权重
本发明通过对模型进行多次量化尝试,通过精度和时间的综合指标,找到模型的最佳量化方法。同时,用户可以根据实际应该场景的不同,可以通过精度优先、时间优先或者二者综合这三个方面得到不同的量化结果,满足了不同的应用需求。
本发明的有益效果:
(1)遍历了所有混合量化组合,可以自动找到全局最优化的混合量化组合。
(2) 用户可以通过修改推理精度权重和推理时间权重来调整混合量化组合的得分标准,这样可以更好地在不同场景或者不同模型的情况下找到全局最优化的组合。
附图说明
图1所示是本发明的流程示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。
如图1所示,本发明提出一种自动获得混合精度量化全局最优化策略的方法,包括
一种自动获得混合精度量化全局最优化策略的方法,包括以下步骤:
准备将要进行量化的深度神经网络数据集;
从深度神经网络的所有混合量化组合中顺序选取一个组合进行推理,并记录实际的推理精度和实际的推理时间,重复直至遍历所有混合量化组合;
排除掉实际推理精度或实际推理时间不符合要求的混合量化组合,对剩余符合推理精度和推理时间要求的计算得分并按得分进行排序;
选择最高得分的混合量化组合作为混合精度量化全局最优化策略。
具体的,所述混合量化组合的数量为:
式中,n为深度神经网络层数,k为量化层数,0≤k≤n,剩余的n-k层不参与量化。
具体的,所述得分的计算式为:
其中,s代表得分,p(
具体的,所述的实际推理精度的计算式为:
其中,TP为在数据集中,推理预测正确的数量;FP为推理预测错误的数量;p为正确预测数量与总预测数量之比。
具体的,所述实际推理时间归一化后的值
其中,
具体的,所述实际推理时间的计算式为:
其中,N为数据集中样本的数量;
具体的,所述推理精度的权重
对比例1:
中国专利申请CN112906883A提出了一种混合精度量化的方法。该方法依次对网络的每一层进行量化,找到一个合适的量化精度,直到整个网络完成。
该方法如假设神经网络有3层,量化精度只有两种,即对神经网络的某一层要么量化,要么不量化,带下划线的代表该层需要量化,没有下划线的则代表该层不做量化。
“对比文件1:CN112906883A”的方法是,先对第一层分别进行不量化和量化,其它层则保持不做量化,会有以下两种量化组合:
1.(L1,L2,L3)
2.(
假定上述两种量化组合中,组合2的推理精度或者时间不符合要求,那么“对比文件1:CN112906883A”的两个实施例在之后的第4步中(S4,将针对所有层筛选出的量化精度的多个不同组合中的一个确定为所述混合精度量化策略),最多只会考虑如下4种组合:
3.(L1,L2,L3)
4.(L1,
5.(L1,L2,
6.(L1,
很明显,这4个组合中都不包含对L1做量化的组合,而由于在实际的神经网络中,不同层之间的计算相互影响和关联,很有可能(
“对比文件1:CN112906883A”的方法对每一层依次进行量化,已完成量化的层就不会再发生改变,没有考虑多层量化组合后通过改变之前量化的层来提高性能,因此,此方法未必能找到模型的最佳量化方法。同时,出现多种量化选择时没有给用户提供选择量化方法的依据,而是让用户随便从多种量化方法中选择,这样会让用户选择时产生困难,而且用户未必能选择到真正需要的量化模型。
实施例1:
本发明的实现步骤如下:
1.从深度神经网络的所有混合量化组合中顺序选取一个组合。所有组合的数量可以通过以下公式计算:
2.对当前混合量化组合进行推理,记录实际的推理精度和实际的推理时间。重复步骤1和2直到遍历完所有混合量化组合。
3.排除掉那些实际推理精度或者实际推理时间不符合要求的混合量化组合,对剩 余符合要求的组合按照公式
4.选择得分最高的混合量化组合作为混合精度量化全局最优化策略。
实施例2:
假设有一个三层的深度神经网络(三层分别为L1, L2和L3),本发明的实施步骤如下:
计算所有混合量化组合的数量:
其中
其中
其中
其中
因此所有混合量化组合的数量一共为8个。
对于上述所有8个混合量化组合中的每一个组合都进行推理,并且记录该组合实际的推理精度和实际的推理时间,得到的结果如下:
1.(L1,L2,L3):96.5%,10ms
2.(
3.(L1,
4.(L1,L2,
5.(
6.(
7.(L1,
8.(
假设最低的推理精度要求为94%,最长的推理时间要求为8ms,首先把那些实际推理精度小于94%或者实际推理时间大于8ms的混合量化组合排除掉,从上面的结果列表中可以看到,剩余合格的组合有三个,分别是:
2.(
6.(
7.(L1,
对这三个组合使用公式(1):
进行计算得分。假设
2.(
6.(
7.(L1,
得分最高的组合为组合6,分数为0.4705,因此,我们将选择这个组合作为混合精度量化全局最优化策略。即对L1和L3进行量化,L2不进行量化的网络其推理精度和推理时间综合来说是最优的。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。