本发明涉及量化损失评估、模型量化、神经网络、深度学习领域,尤其涉及一种神经网络模型量化损失评估方法。
背景技术:
1、近年来,深度学习神经网络模型被广泛应用在许多领域,并取得了非常好的效果。同时,神经网络模型参数量和计算量较大,需要较强的计算和存储资源。在模型推理阶段,往往需要对神经网络模型进行剪枝、量化等操作,以便减小资源占用的压力。另外,神经网络模型对模型量化不敏感,模型量化导致的损失在许多情况下较小,因此模型量化得到广泛的使用。虽然,神经网络模型对模型量化不敏感,但不合理的量化方法仍会导致较大的模型量化损失,而有些模型和任务量化难度较大,容易出现大的量化损失。因此,分析量化损失是模型量化的必备操作。目前,对于模型量化损失评估方法研究较少,大多数是比较量化前后模型在测试集上的准确率等指标。在某些没有测试集的场景,或者测试集不方便获取的场景下,难以评判量化损失。另外,缺少对量化损失的度量方法和评估指标,以便客观衡量模型量化损失。
技术实现思路
1、为了解决以上技术问题,本发明提供一种神经网络模型量化损失评估方法。
2、本发明的技术方案是:
3、一种神经网络模型量化损失评估方法,包括:
4、准备并预处理评估数据;
5、量化神经网络模型;
6、构建量化损失评估指标;
7、评估模型单层量化损失;
8、评估模型整体量化损失;
9、量化损失统计和可视化;
10、量化损失分析。
11、进一步的,
12、基于数据类型,准备样本数据,并按照模型训练时数据预处理方式进行数据预处理;
13、在模型量化时,样本数据作为校准数据集,校准激活值阈值;
14、在量化损失评估时,样本数据作为评估数据集,用于评估量化损失。
15、进一步的,
16、训练神经网络模型,并选择合适的量化方法和量化数据类型,对神经网络模型进行量化。
17、进一步的,
18、量化损失评估是评估两个张量的差异,用t1和t2分别表示这两个张量;评估指标选择余弦相似度,要先将张量t1和t2转换为向量v1和v2;另外,为了避免除0的情况出现,设置∈变量,并取值为0.0001;量化损失loss如下:
19、loss=1-similarity(v1-v2) (1)
20、
21、进一步的,
22、评估模型单层量化损失,针对神经网络中的每一层,进行模拟量化,模拟量化就是对权重和激活值进行量化和反量化,模拟量化公式如下:
23、
24、其中x表示权重或激活值,x_new为模拟量化的权重或激活值,scale表示量化因子,round()表示取整函数,clamp()表示裁剪函数,用于将量化后数据裁剪到目标量化范围;使用模拟量化的权重和激活值进行推理,得到该层的模拟量化输出t1;同时,使用正常的权重和激活值进行推理,得到该层输出为t2;对所有评估样本数据推理,并将所有样本的t1合并为t1_all,所有样本的t2合并为t2_all,将t1_all和t2_all转化成向量,并使用公式(1)计算两者的评估损失lossi,i表示模型第i层。对模型需要量化的每一层重复上述步骤,统计得到各层的量化损失losslayer,n表示模型中需要量化的层数;
25、losslayer={loss1,loss2,…lossn}。
26、进一步的,
27、评估模型整体量化损失,选择评估数据中的一个样本,使用浮点数模型进行推理,得到模型输出t1;然后,使用量化后的模型进行推理,得到模型输出t2,将t1和t2转化成向量,并使用公式(1)计算两者的评估损失lossi,i表示第i个样本;对评估数据中的每个样本重复上述步骤,统计得到各样本的模型整体量化损失lossmodel,m表示评估样本数量;
28、lossmodel={loss1,loss2,…lossm}。
29、进一步的,
30、量化损失统计和可视化,将各层的量化损失losslayer画成直方图,并计算各样本的模型整体量化损失lossmodel的均值、方差和上下四分位数。
31、进一步的,
32、量化损失分析,通过分析各层的量化损失直方图,可以定位到量化损失较高的层,进而进行针对性优化。
33、本发明的有益效果是
34、本发明分别对每层的量化损失和整个模型量化损失进行衡量。基于量化损失结果,通过可视化和统计分析的方式,衡量量化损失对模型性能影响。通过上述方式,可以有效衡量量化对模型性能影响,适用于神经网络模型量化场景。
1.一种神经网络模型量化损失评估方法,其特征在于,
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求1所述的方法,其特征在于,
4.根据权利要求1所述的方法,其特征在于,
5.根据权利要求1所述的方法,其特征在于,
6.根据权利要求1所述的方法,其特征在于,
7.根据权利要求1所述的方法,其特征在于,
8.根据权利要求1所述的方法,其特征在于,