一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

模型量化方法、装置、设备、计算机程序及存储介质与流程

2022-06-05 04:43:12 来源:中国专利 TAG:


1.本公开涉及人工智能领域,尤其涉及一种模型量化方法、装置、设备、计算机程序及存储介质。


背景技术:

2.目前,在神经网络模型如深度学习模型的部署应用过程中,通常会通过模型量化,来显著减小模型的体积大小,缩短模型的运行时间,提高算法效率。然而,模型在量化过程中会遇到许多挑战,首先,模型量化,如从浮点量化到8bit整型往往会带来精度上的损失,相关技术通常会通过混合精度的方法来减少精度的损失或降低,对精度的提升非常有限。其次,目前的模型量化工具是面向目标部署平台的软/硬件配置来进行模型量化的,从而降低了量化模型在其他平台上应用的广泛性。


技术实现要素:

3.本公开实施例期望提供一种模型量化方法、装置、设备、计算机程序及存储介质,能够提高模型量化的精度与量化模型部署的广泛性。
4.本公开的技术方案是这样实现的:
5.本公开实施例提供了一种模型量化方法,包括:
6.利用待量化的初始模型进行模型推理,得到初始数据集合;所述初始数据集合包含所述初始模型中每个网络层输出的激活值的截断值;
7.基于目标部署平台的量化模式,对所述初始模型进行模拟量化,得到量化数据集合;所述模拟量化用于对所述初始模型中每个网络层输出的激活值进行量化与还原后进入下一层网络层进行推理,所述量化数据集合包含所述每个网络层模拟量化后的激活值的截断值;
8.基于所述初始数据集合与所述量化数据集合,计算量化误差集合;并基于所述量化误差集合对所述初始模型进行调整,得到量化模型;
9.基于所述每个网络层模拟量化后的激活值的截断值,生成量化参数;所述量化参数用于将所述量化模型部署至所述目标部署平台。
10.本公开实施例提供了一种模型量化装置,包括:
11.推理模块,用于利用待量化的初始模型进行模型推理,得到初始数据集合;所述初始数据集合包含所述初始模型中每个网络层输出的激活值的截断值;
12.模拟量化模块,用于基于目标部署平台的量化模式,对所述初始模型进行模拟量化,得到量化数据集合;所述模拟量化用于对所述初始模型中每个网络层输出的激活值进行量化与还原后进入下一层网络层进行推理,所述量化数据集合包含所述每个网络层模拟量化后的激活值的截断值;
13.误差调整模块,用于基于所述初始数据集合与所述量化数据集合,计算量化误差集合;并基于所述量化误差集合对所述初始模型进行调整,得到量化模型;
14.参数生成模块,用于基于所述每个网络层模拟量化后的激活值的截断值,生成量化参数;所述量化参数用于将所述量化模型部署至所述目标部署平台。
15.上述装置中,所述推理模块,还用于获取量化校准数据;通过所述初始模型中的每个网络层,对所述量化校准数据进行模型推理,得到所述每个网络层输出的至少一个激活值;对于所述每个网络层的至少一个激活值,利用至少一种预设统计算法进行统计截断处理,得到所述每个网络层对应的激活值的截断值,作为所述初始数据集合。
16.上述装置中,所述每个网络层对应的激活值的截断值,包括以下任意一种:
17.所述至少一个激活值中的最大值、所述至少一个激活值中的最小值、或所述至少一个激活值的中位数的方差值。
18.上述装置中,所述模拟量化模块,还用于对于所述初始模型中的每个网络层,根据所述每个网络层对应的激活值的截断值,得到所述每个网络层对应的量化尺度;利用所述初始模型中的第i层网络,对第i-1层输出的第i-1个量化数据进行推理,得到第i个初始激活值;其中,i为大于或等于2的正整数;第1个量化数据为所述初始模型中的第一层网络对量化校准数据进行推理,并对推理得到的第一个初始激活值进行量化处理与尺度还原得到的;根据所述第i层网络对应的量化尺度,结合所述量化模式与预设量化精度,对所述第i个初始激活值进行量化处理与尺度还原,得到第i个量化数据,实现对所述第i层网络层的模拟量化,直至对所述初始模型中的各个网络层实现模拟量化,得到所述量化数据集合。
19.上述装置中,所述量化模式包括:零点系数,所述模拟量化模块,还用于对所述第i个初始激活值与所述量化尺度的比值进行取整,得到第i个初始量化值;利用零点系数,对所述第i个初始量化值进行调整,得到第i个中间量化值;利用所述预设量化精度,对所述第i个中间量化值进行截断,得到第i个量化值,完成量化处理过程;将所述第i个量化值与所述量化尺度的乘积,作为所述第i个量化数据,完成尺度还原过程。
20.上述装置中,所述误差调整模块,还用于计算所述初始数据集合中每个初始数据,与所述量化数据集合中每个量化数据之间的余弦距离,作为所述每个网络层对应的量化误差,从而得到所述量化误差集合。
21.上述装置中,所述误差调整模块,还用于在通过对所述量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,根据所述目标部署平台的平台类型,确定误差调整方式;采用所述误差调整方式,对所述初始模型的网络参数进行调整,得到所述量化模型。
22.上述装置中,所述误差调整模块,还用于在通过对所述量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,基于误差数值分析和/或误差分布的分析结果,对所述初始模型的网络参数进行调整,得到所述量化模型。
23.上述装置中,所述误差调整模块,还用于在通过对所述量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,通过对所述初始数据集合与所述量化数据集合进行张量对比,对所述初始模型的网络参数进行调整,得到所述量化模型。
24.上述装置中,所述误差调整模块,还用于通过对比所述初始数据集合与所述量化数据集合的张量数值分布,得到张量分布信息;以及/或者,通过对比所述初始数据集合与所述量化数据集合的张量尺度信息,得到量化分组信息;所述张量尺度表征用于进行量化
的分组形式;将所述张量分布信息和/或所述量化分组信息作为误差表现信息,并基于所述误差表现信息,或者基于所述误差表现信息与目标部署平台的平台类型的组合,确定误差调整方式;采用所述误差调整方式,对所述初始模型的网络参数进行调整,得到所述量化模型。
25.上述装置中,所述误差调整模块,还用于根据所述误差表现信息中的张量分布信息,得到所述初始数据集合与所述量化数据集合在各通道的张量数值的分布特征差异;在所述分布特征差异满足预设张量分布调整条件的情况下,确定模型跨层平均化算法作为所述误差调整方式;以及/或者,在所述误差表现信息中的量化分组信息表征存在至少两个量化分组的情况下,确定偏置修正算法作为所述误差调整方式;以及/或者,在所述分布特征差异满足预设张量分布调整条件,或者,量化分组信息表征存在至少两个量化分组的情况下,确定所述平台类型对应的预设量化精度;在所述预设量化精度高于预设精度阈值的情况下,确定自适应取整算法作为所述误差调整方式。
26.上述装置中,所述误差调整模块,还用于在所述量化误差集合中包含的量化误差的最大值大于第一预设误差阈值的情况下,确定达到预设调整条件;以及/或者,在所述量化误差集合中,大于第二预设误差阈值的量化误差的数量大于误差数量阈值的情况下,确定达到所述预设调整条件;所述第二预设误差阈值小于所述第一预设误差阈值。
27.上述装置中,所述参数生成模块,用于根据目标部署平台的预设量化指标,对所述每个网络层模拟量化后的激活值的截断值进行参数筛选、序列化、以及打包中的至少一种处理,生成所述量化参数。
28.本公开实施例提供一种电子设备,包括:
29.存储器,用于存储可执行指令;
30.处理器,用于执行所述存储器中存储的可执行指令时,实现本公开实施例提供的模型量化方法。
31.本公开实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本公开实施例提供的模型量化方法。
32.本公开实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时,实现本公开实施例提供的模型量化方法。
33.本公开实施例具有以下有益效果:
34.通过模拟量化得到量化数据集合,将初始数据集合与量化数据集合进行误差比较,得到量化误差集合;从而可以基于量化误差集合进行误差分析,并对初始模型进行调整,从而有效提高了量化模型的精度。并且,基于目标部署平台的量化模式,对初始模型进行模拟量化,生成用于部署在目标部署平台的量化参数,实现了对多平台部署的支持,可以根据目标部署平台的软硬件配置的不同,以不同的量化模式进行模型量化,生成不同的量化参数,进而可以利用与平台对应的量化参数,将量化模型部署在目标部署平台上,从而实现了高精度、多平台的模型量化,提高了量化模型应用的广泛性。
附图说明
35.图1是本公开实施例提供的模型量化方法的一种可选的流程示意图;
36.图2是本公开实施例提供的模型量化方法的一种可选的流程示意图;
37.图3是本公开实施例提供的模型量化方法的一种可选的流程示意图;
38.图4是本公开实施例提供的模型量化方法的一种可选的流程示意图;
39.图5是本公开实施例提供的模型量化方法的一种可选的流程示意图;
40.图6是本公开实施例提供的模型量化方法的一种可选的流程示意图;
41.图7是本公开实施例提供的模型量化方法应用于实际场景的一种可选的流程示意图;
42.图8是本公开实施例提供的模型量化装置的结构示意图;
43.图9是本公开实施例提供的电子设备的结构示意图。
具体实施方式
44.为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
45.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
46.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
47.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
48.除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
49.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
50.本公开实施例提供一种模型量化方法、装置、设备、计算机程序及存储介质,能够提高模型量化的精度与量化模型部署的广泛性。下面说明本公开实施例提供的电子设备的示例性应用,本公开实施例提供的电子设备可以实施为智能手机、智能手表、笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、智能语音交互设备、智能家电和车载终端等各种类型的终端或用户终端,也可以实施为服务器。作为本公开实施例的另一种可实施的方式,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器等,但并不局限于此。
51.下面,以电子设备为执行主体,介绍本公开实施例的模型量化方法。图1是本公开实施例提供的轨迹管理方法的一个可选的流程图,将结合图1示出的步骤进行说明。
52.s101、利用待量化的初始模型进行模型推理,得到初始数据集合;初始数据集合包含初始模型中每个网络层输出的激活值的截断值。
53.本公开实施例适用于对已完成训练的神经网络模型进行量化,得到模型体积减小的量化模型,以将量化模型部署到应用平台中,通过量化模型在应用平台上实现神经网络模型的相关功能的场景。
54.本公开实施例中,电子设备获取已经完成训练的原始精度的神经网络模型作为初始模型,以对初始模型进行量化。
55.本公开实施例中,电子设备利用初始模型进行模型推理,并以网络层为单位,统计初始模型中每个网络层输出的中间数据。电子设备利用每个网络层输出的中间数据进行激活值的截断值的计算,得到每个网络层输出的激活值的截断值。
56.在一些实施例中,初始模型可以是浮点型的网络模型,具体的根据实际情况进行选择,本公开实施例不作限定。
57.s102、基于目标部署平台的量化模式,对初始模型进行模拟量化,得到量化数据集合;模拟量化用于对初始模型中每个网络层输出的激活值进行量化与还原后进入下一层网络层进行推理,量化数据集合包含每个网络层模拟量化后的激活值的截断值。
58.本公开实施例中,电子设备可以基于目标部署平台的量化模式,对初始模型进行模拟量化,模拟出初始模型使用目标部署平台的量化模式进行量化后的表现,得到量化数据集合。
59.本公开实施例中,电子设备在进行模拟量化的过程中,会对初始模型每个网络层输出的激活值先进行量化,再对量化后的激活值进行还原或反量化,使用还原或反量化后的激活值作为下一层网络层的输入,从而对每个网络层进行量化后的数值精度的模拟。
60.本公开实施例中,电子设备基于每个网络层对应的模拟量化,也即量化并还原后的激活值进行激活值的截断值的计算,得到每个网络层模拟量化后的激活值的截断值,作为量化数据,并将电子设备中至少一个网络层的量化数据的集合作为量化数据集合。
61.在一些实施例中,电子设备可以将浮点型的激活值量化至8bit整型,再进行反量化恢复到浮点型,从而完成模拟量化的过程。
62.s103、基于初始数据集合与量化数据集合,计算量化误差集合;并基于量化误差集合对初始模型进行调整,得到量化模型。
63.本公开实施例中,电子设备将模拟量化得到的量化数据集合,与原始精度的初始模型推理得到的初始数据集合进行误差比较,得到量化误差集合。电子设备可以根据量化误差集合进行误差分布、误差大小等误差分析,从而基于量化误差集合定位出初始模型中量化后精度损失较大的网络层,或者误差在各个网络层的分布特征等,并基于误差分析的结果选取对应的误差调整方式,对初始模型的网络参数进行调整,得到量化模型。
64.可以理解,量化模型是经过误差调整得到的,因此,相较于直接量化后的模型或相关技术中混合精度的模型,量化模型可以达到更高的精度。
65.s104、基于每个网络层模拟量化后的激活值的截断值,生成量化参数;量化参数用于将量化模型部署至目标部署平台。
66.本公开实施例中,电子设备基于每个网络层模拟量化后的激活值的截断值,生成量化参数,以将量化参数与量化模型共同下发至目标部署平台,使得目标部署平台可以根据量化参数,对量化模型进行部署与应用。
67.在一些实施例中,电子设备可以根据目标部署平台的预设量化指标,对每个网络层模拟量化后的激活值的截断值进行参数筛选、序列化、以及打包中的至少一种处理,生成量化参数。
68.示例性地,电子设备可以根据目标部署平台对截断值的不同处理,对数据格式的要求、以及网络层数和的要求,对每个网络层模拟量化后的激活值的截断值进行参数筛选,将筛选后的激活值的截断值进行序列化或打包,生成文件形式的量化参数。这样,目标部署平台在进行量化模型的部署时,可以根据量化参数实施具体的部署过程,以完成量化模型在实际场景中的应用。
69.可以理解的是,本公开实施例中,通过模拟量化得到量化数据集合,将初始数据集合与量化数据集合进行误差比较,得到量化误差集合;从而可以基于量化误差集合进行误差分析,并对初始模型进行调整,从而有效提高了量化模型的精度。并且,基于目标部署平台的量化模式,对初始模型进行模拟量化,生成用于部署在目标部署平台的量化参数,实现了对多平台部署的支持,可以根据目标部署平台的软硬件配置的不同,以不同的量化模式进行模型量化,生成不同的量化参数,进而可以利用与平台对应的量化参数,将量化模型部署在目标部署平台上,从而实现了高精度、多平台的模型量化,提高了量化模型应用的广泛性。
70.在一些实施例中,基于图1,如图2所示,图1中的s101可以通过执行s1011-s1013的过程来实现,将结合各步骤进行说明。
71.s1011、获取量化校准数据。
72.本公开实施例中,量化校准数据为预设的样本数据集,用于对模型量化的推理结果进行验证或校准。示例性地,量化校准数据可以是包含大量图片样本的测试集或验证集等等,具体的根据实际情况进行选择,本公开实施例不作限定。
73.s1012、通过初始模型中的每个网络层,对量化校准数据进行模型推理,得到每个网络层输出的至少一个激活值。
74.本公开实施例中,电子设备获取量化校准数据,通过初始模型中的每个网络层,对量化校准数据进行前向传播的模型推理与预测,统计每个网络层输出的中间数据,作为至少一个激活值。
75.在一些实施例中,电子设备可以基于最大值最小值,kl(kullback leible r)散度量化、eq(easy quant)量化等任意一种量化算法对量化校准数据进行模型推理,得到不同算法对应的激活值。具体的根据实际情况进行选择,本公开实施例不作限定。
76.s1013、对于每个网络层的至少一个激活值,利用至少一种预设统计算法进行统计截断处理,得到每个网络层对应的激活值的截断值,作为初始数据集合。
77.本公开实施例中,电子设备上预先部署了至少一种预设统计算法,对于每个网络层,电子设备可以从至少一种预设统计算法中选择任意一种统计算法,对每个网络层的至少一个激活值进行统计截断处理,从而可以实现对于不同网络层利用不同的统计算法进行激活值的截断值的计算,得到每个网络层对应的激活值的截断值,作为初始数据集合。
78.在一些实施例中,s1013可以包括以下任意一种:
79.对于每个网络层,从至少一个激活值统计出最大值,作为激活值的截断值;或者,从至少一个激活值中统计出最小值,作为激活值的截断值;或者,计算至少一个激活值的中位数,并基于中位数进行方差计算,如进行数倍方差的计算,得到激活值的截断值。
80.可以理解的是,通过使用至少一种预设统计算法中的任一统计算法,对不同网络层进行激活值的截断值的计算,可以根据不同网络层输出的不同激活值,选择更适合的统计算法,得到更高精度的激活值的截断值,相较于现有技术中仅支持最大值/最小值的统计算法,可以大大提高模型量化的精度。
81.在一些实施例中,基于图1或图2,如图3所示,s102可以通过s1021-s1023来实现,将结合各步骤进行说明。
82.s1021、对于初始模型中的每个网络层,根据每个网络层对应的激活值的截断值,得到每个网络层对应的量化尺度。
83.本公开实施例中,电子设备在进行模拟量化的情况下,基于统计算法得到的每个网络层对应的激活值的截断值进行量化尺度,也即量化过程所使用的缩放因子的计算,得到每个网络层对应的量化尺度。
84.在一些实施例中,以量化目标为有符号的8bit整型为例,电子设备可以将每个网络层对应的激活值的截断值除以128,得到每个网络层对应的量化尺度。
85.s1022、利用初始模型中的第i层网络,对第i-1层输出的第i-1个量化数据进行推理,得到第i个初始激活值;其中,i为大于或等于2的正整数;第1个量化数据为初始模型中的第一层网络对量化校准数据进行推理,并对推理得到的第一个初始激活值进行量化处理与尺度还原得到的。
86.s1023、根据第i层网络对应的量化尺度,结合量化模式与预设量化精度,对第i个初始激活值进行量化处理与尺度还原,得到第i个量化数据,实现对第i层网络层的模拟量化,直至对初始模型中的各个网络层实现模拟量化,得到量化数据集合。
87.本公开实施例中,对于初始模型中第一个网络层,电子设备将量化校准数据作为第一个网络层的输入数据,利用第一个网络层对量化校准数据进行量化推理,得到第一个网络层输出的初始激活值。
88.本公开实施例中,电子设备根据第一个网络层对应的量化尺度,结合量化模式与预设量化精度,对第一个网络层输出的激活值进行量化处理与尺度还原,得到第一个量化数据。并将第一个量化数据作为第二个网络层的输入数据,继续进行之后的模拟量化过程。
89.本公开实施例中,对于第一个网络层之后的每个网络层,将上一个网络层模拟量化后的量化数据作为自身的输入数据,得到该网络层对应的初始激活值,再根据该网络层对应的量化尺度,结合量化模式与预设量化精度,对该网络层输出对应的初始激活值进行量化处理与尺度还原,得到该网络层对应的量化数据。电子设备以上述模拟量化过程进行处理,直至对初始模型中的每个网络层模拟量化完成,得到每个网络层对应的量化数据,作为量化数据集合。
90.在一些实施例中,量化模式包括:零点系数,基于图3,s1023可以通过s301-s304来实现,将结合各步骤进行说明。
91.s301、对第i个初始激活值与量化尺度的比值进行取整,得到第i个初始量化值。
92.s302、利用零点系数,对第i个初始量化值进行调整,得到第i个中间量化值。
93.s303、利用预设量化精度,对第i个中间量化值进行截断,得到第i个量化值,完成量化处理过程。
94.s304、将第i个量化值与量化尺度的乘积,作为第i个量化数据,完成尺度还原过程。
95.本公开实施例中,电子设备可以通过公式(1),计算每个网络层对应的量化数据,如下:
[0096][0097]
公式(1)中,dq为每个网络层对应的量化数据;fp32为每个网络层自身对应的输入数据,对于第一层网络层,fp32可以是量化校准数据,对于第一层网络层之后的每个网络层,fp32可以是上一层网络层对应的量化数据;scale为s1021中计算得到的量化尺度;round表示取整操作,如四舍五入;zero_ponit为零点系数,不同软硬件配置的目标部署平台的zero_ponit可以不同;min,max表示量化比特数,即量化精度,如8bit量化的min,max为-128,127;clip表示用最大值最小值去截断。电子设备通过公式(1)对于每个网络层进行模拟量化,得到每个网络层对应的量化数据,作为量化数据集合。
[0098]
可以理解的是,通过基于目标部署平台的零点系数进行模拟量化过程,电子设备不需要将初始模型实际量化,就可以得到初始模型在目标部署平台上的量化效果,从而可以针对不同目标部署平台进行不同的模拟量化过程,得到多平台对应的多个量化数据集合,实现通过一套模型量化工具对多平台模型量化进行模拟。
[0099]
在一些实施例中,基于图1或图3,如图4所示,s103可以通过执行s1031-s1033来实现,将结合各步骤进行说明。
[0100]
s1031、计算初始数据集合中每个初始数据,与量化数据集合中每个量化数据之间的余弦距离,作为每个网络层对应的量化误差,从而得到量化误差集合。
[0101]
本公开实施例中,电子设备可以计算初始数据集合中每个初始数据,与量化数据集合中每个量化数据之间的余弦距离,以余弦距离作为每个初始数据与每个量化数据之间的误差,从而得到量化误差集合。
[0102]
在一些实施例中,电子设备也可以通过其他误差计算方法来对初始数据与量化数据之间的误差进行计算与评估,具体的根据实际情况进行选择,本公开实施例不作限定。
[0103]
s1032、在通过对量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,根据目标部署平台的平台类型,确定误差调整方式。
[0104]
本公开实施例中,电子设备在得到量化误差集合的情况下,可以基于量化误差集合,进行误差数值与误差分布分析中的至少一种,以通过量化误差集合评估初始模型的量化精度,并定位出影响模型量化精度最大的网络层位置。示例性地,在量化误差集合中包含的数值较大的量化误差数量过多,和/或量化误差集合中包含数值过大的量化误差的情况下,说明模拟量化的精度不能满足实际部署与应用的需要,电子设备可以确定量化误差集合达到预设调整条件,进而根据目标部署平台的平台类型,确定误差调整方式,以对初始模型进行调整与精度提升。
[0105]
在一些实施例中,电子设备可以在量化误差集合确定量化误差的最大值,也即各
层网络层中包含的最大量化误差。在量化误差的最大值大于第一预设误差阈值的情况下,表征初始模型的最大误差过大,无法满足量化精度要求,电子设备确定达到预设调整条件。
[0106]
在一些实施中,电子设备可以在量化误差集合中,统计大于第二预设误差阈值的量化误差的数量;这里,第二预设误差阈值小于第一预设误差阈值。在大于第二预设误差阈值的量化误差的数量大于误差数量阈值的情况下,表征初始模型中较多网络层的量化精度效果都不理想,电子设备确定达到预设调整条件。
[0107]
在一些实施例中,误差调整方式至少包括:模型跨层平均化算法、偏置修正算法、以及自适应取整算法中的至少一种。
[0108]
这里,模型跨层平均化算法用于在部署后端为非逐通道量化模式的情况下,通过平均各通道的数值分布范围,达到与逐通道量化相近的精度,能够解决非逐通道量化硬件上由于各个通道数值分布范围相差太大导致的精度问题;偏置修正算法是一种轻量级、适用范围广的算法,能够用于缩小模型量化精度,速度较快;自适应取整算法能够最大程度地拟合量化模型和全精度模型的误差。
[0109]
在一些实施例中,电子设备可以通过上述的量化误差最大值,以及量化误差数量统计中的任意一种方法,来对初始模型的量化精度进行评估,确定是否达到预设调整条件,也可以通过两种方式的组合进行评估与判断,具体的根据实际情况进行选择,本公开实施例不作限定。
[0110]
在一些实施例中,电子设备在确定达到预设调整条件的情况下,可以根据目标部署平台的平台类型,得到平台支持的量化模式的类型,从而根据平台支持的量化模式的类型,从电子设备上预先集成的至少一种误差调整算法中选择并确定合适的误差调整算法,作为误差调整方式。
[0111]
s1033、采用误差调整方式,对初始模型的网络参数进行调整,得到量化模型。
[0112]
本公开实施例中,电子设备可以采用误差调整方式,对初始模型的网络参数,如网络权重进行调整,得到新的模型参数并保存,得到量化模型,从而显著地减小量化模型的精度误差。
[0113]
可以理解的是,本公开实施例可以通过提供多种误差调整方式的选择,来确定适合的误差调整方式,以缩小模型的量化误差。实际使用中,可以针对性地选择其中的一种或几种算法来使用,如精度损失大的模型可以使用层级更高的算法,精度损失较小的模型可以使用层级较低的算法,合理使用误差调整算法能够显著地提升模型量化后的精度。
[0114]
在一些实施例中,电子设备在通过对量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,可以基于误差数值分析和/或误差分布的分析结果,确定出量化误差分布较为集中,和/或量化误差数值对模型精度影响较大的目标网络层,进而可以选择针对上述目标网络层的误差调整算法,对初始模型的网络参数进行调整,得到量化模型。这样通过误差分析,定位出目标网络层再进行调整,可以减少对初始化网络整体进行调整的计算量,提高模型量化与调整的效率。
[0115]
在一些实施例中,s1031之后,如图5所示,电子设备还可以通过执行s1034,对初始模型的网络参数进行调整,得到量化模型,将结合各步骤进行说明。
[0116]
s1034、在通过对量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,通过对所述初始数据集合与所述量化数据集合进行张量对比,对
初始模型的网络参数进行调整,得到量化模型。
[0117]
本公开实施例中,电子设备确定量化误差集合达到预设调整条件与s1032中描述一致,此处不再赘述。在量化误差集合达到预设调整条件的情况下,电子设备还可以通过从张量维度,对初始数据集合与量化数据集合进行对比分析,进而对初始模型的网络参数进行调整,得到量化模型。
[0118]
本公开实施例中,张量表征网络模型所处理的数据,张量具有数值、维度和尺寸的属性,电子设备可以从张量的维度,将初始模型输出的张量与量化模型输出的张量之间进行差异对比,定位出影响模型量化精度的网络位置与原因,根据原因定位选择对应的误差调整算法对初始模型的网络参数进行调整。
[0119]
在一些实施例中,基于图5,如图6所示,s1034可以通过执行s401-s403来实现,将结合各步骤进行说明。
[0120]
s401、通过对比初始数据集合与量化数据集合的张量数值分布,得到张量分布信息;以及/或者,通过对比初始数据集合与量化数据集合的张量尺度信息,得到量化分组信息;张量尺度表征用于进行量化的分组形式。
[0121]
本公开实施例中,电子设备可以分别获取初始数据集合对应的张量的数值分布,以及,量化数据集合对应的张量的数值分布,通过从张量的数值分布的维度进行对比,可以得到初始模型与量化模型各自输出的张量的分布特征并进行对比,得到张量分布信息,进而基于张量分布信息定位出初始模型与量化模型输出张量的数值分布差距较大的网络层。
[0122]
本公开实施例中,电子设备也可以对比初始数据集合的张量尺度信息与量化数据集合的张量尺度信息,得到量化过程中对各个网络层进行量化的分组形式,作为量化分组信息,从而确定量化误差是否是由量化分组导致的,从而定位出误差原因。
[0123]
s402、将张量分布信息和/或量化分组信息作为误差表现信息,并基于误差表现信息,或者基于误差表现信息与目标部署平台的平台类型的组合,确定误差调整方式。
[0124]
本公开实施例中,电子设备将张量分布信息和/或量化分组信息作为误差表现信息,进而可以基于误差表现信息本身,或者,将误差表现信息与目标部署平台的平台类型相结合,进行误差定位和误差原因的综合分析,来确定出误差调整方式。
[0125]
在一些实施例中,s402中基于误差表现信息,或者基于误差表现信息与目标部署平台的平台类型的组合,确定误差调整方式可以包括:基于误差表现信息包含的量化误差的数值分布信息和/或量化分组信息,确定作用于量化误差分布维度和/或量化分组维度的误差调整算法,作为误差调整方式;或者,基于误差表现信息,结合平台类型表征的网络层级规模,确定误差调整算法,作为误差调整方式。
[0126]
在一些实施例中,s402中基于误差表现信息,或者基于误差表现信息与目标部署平台的平台类型的组合,确定误差调整方式可以通过s402-11至s402-12、s402-21、以及s402-31-s402-33中的至少一种方法实现,将结合各步骤进行说明。
[0127]
s402-11、根据误差表现信息中的张量分布信息,得到初始数据集合与量化数据集合在各通道的张量数值的分布特征差异。
[0128]
s402-12、在分布特征差异满足预设张量分布调整条件的情况下,确定模型跨层平均化算法作为误差调整方式。
[0129]
本公开实施例中,预设张量分布调整条件可以是初始数据集合与量化数据集合各
自输出的张量在数值分布维度的差异大于或等于预设张量分布差异。
[0130]
在一些实施例中,初始模型与量化模型中的每个网络层对应包含至少一个通道。电子设备可以根据张量分布信息,得到初始模型的每个网络层中各个通道输出的张量的数值分布范围,以及量化模型的每个网络层中各个通道输出的张量的数值分布范围,通过各个通道上的张量的数值分布范围的对比,得到张量的分布特征差异。在分布特征差异满足预设张量分布调整条件的情况下,确定模型跨层平均化算法作为误差调整方式,以利用模型跨层平均化算法,对初始模型各通道输出的张量的数值分布范围进行平均,减少各个通道数值分布范围相差太大导致的精度问题。
[0131]
s402-21、在误差表现信息中的量化分组信息表征存在至少两个量化分组的情况下,确定偏置修正算法作为误差调整方式。
[0132]
本公开实施例中,在误差表现信息中的量化分组信息表征存在至少两个量化分组的情况下,电子设备可以确定误差是由分组量化导致的,量化过程中对权重的分组粒度可能影响量化精度,电子设备将偏置修正算法作为误差调整方式,以通过偏置修正算法降低分组粒度对量化精度的影响,提高量化精度。
[0133]
s402-31、在分布特征差异满足预设张量分布调整条件,或者,量化分组信息表征存在至少两个量化分组的情况下,确定平台类型对应的预设量化精度。
[0134]
本公开实施例中,在分布特征差异满足预设张量分布调整条件,或者,量化分组信息表征存在至少两个量化分组的情况下,电子设备还可以根据目标部署平台的平台类型,确定目标部署平台对量化精度的要求,也即预设量化精度。
[0135]
s402-32、在预设量化精度高于预设精度阈值的情况下,确定自适应取整算法作为误差调整方式。
[0136]
本公开实施例中,在预设量化精度高于预设精度阈值的情况下,说明目标部署平台对精度要求较多,电子设备可以确定自适应取整算法作为误差调整方式,以利用自适应调整算法包含的训练调整过程,最大程度地拟合量化模型和初始模型的量化误差,以达到高精度目标部署平台的要求。
[0137]
s403、采用误差调整方式,对初始模型的网络参数进行调整,得到量化模型。
[0138]
这里,s403的过程与s1033描述一致,此处不再赘述。
[0139]
可以理解的是,通过对多网络层级规模、多种算法的支持,可以应对不同程度的模型量化精度损失情况,根据不同平台的特性来针对性地选取算法,提升模型量化精度。
[0140]
下面,结合图7,介绍本公开实施例在实际场景中的应用。本公开实施例中的模型量化方法可以应用在量化工具中,以通过量化工具,对训练后的原始全精度模型进行模型量化,同时生成部署到目标部署平台所需的量化参数。
[0141]
s501、选择激活值算法,进行激活值统计和激活值的计算值的计算。
[0142]
s501中,电子设备获取已经训练好的需要量化的初始模型和量化校准数据,然后根据不同的激活值校准算法(minmax/hist/kl)等进行若干次的模型推理,保存每个网络层输出的中间数据作为算法所需的统计量,在推理结束后,得到量化数据在该模型下每一层的总统计结果,进而会依据的激活值校准算法,生成每个网络层对应的激活值的截断值。
[0143]
s502、根据所要部署后端的量化模式进行模拟量化,生成模型量化模式下的误差分析,得到精度分析结果。
[0144]
s502中,所要部署后端即目标部署平台,电子设备在获得每个网络层的激活值的截断值的情况下,结合不同平台硬件和芯片本身决定的量化模式信息,如零点系数,对初始模型进行模拟量化。示例性地,模拟量化采用线性量化模式,通过公式(1)进行量化数据的计算。
[0145]
s502中,模拟量化过程能够给出网络模型在量化部署后的网络输出与训练时网络输出的误差比较,以衡量模型量化的精度损失。同时工具会给出模型逐层前向计算得到的量化后的输出张量,并和原始全精度模型,即初始模型的输出张量进行余弦误差分析的对比、张量的数值分布、张量的尺寸等维度的信息的对比,以快速地找到影响模型量化精度最大的位置和原因,作为精度分析结果。
[0146]
s503、根据精度分析结果,采用调整模型权重的误差调整算法。
[0147]
s503中,电子设备根据精度分析结果,在精度分析结果表征达到预设误差调整条件的情况下,从预先集成的多种误差调整算法中,选择合适的算法对初始模型进行权重参数的调整,得到量化模型。
[0148]
s504、根据目标部署平台的平台类型,生成该目标部署平台对应的量化参数。
[0149]
s504中,电子设备根据目标部署平台的平台类型,对量化模型的模型参数进行参数筛选、打包、序列化等操作,生成该目标部署平台对应的量化参数。
[0150]
可以理解的是,本公开实施例提供的量化工具能够支持多平台的部署,即对于同样的模型和数据,无需额外成本即可灵活地部署在多个平台之上。并且,本公开实施例支持多种量化校准算法,能够灵活地提供给用户进行实验和尝试,极大提升模型的精度,以及工具使用的鲁棒性和便利性。并且,本公开实施例支持模型量化精度的误差分析和数值分析功能,使得用户在遇到模型精度问题时,能够准确定位出误差较大的网络层,以针对性地进行进一步的精度调整来提高精度,从而实现了高精度、多平台、自动化离线量化模型生产工具。
[0151]
本公开还提供一种模型量化装置,图8为本公开实施例提供的模型量化装置的结构示意图;如图8所示,模型量化装置1包括:
[0152]
推理模块11,用于利用待量化的初始模型进行模型推理,得到初始数据集合;所述初始数据集合包含所述初始模型中每个网络层输出的激活值的截断值;
[0153]
模拟量化模块12,用于基于目标部署平台的量化模式,对所述初始模型进行模拟量化,得到量化数据集合;所述模拟量化用于对所述初始模型中每个网络层输出的激活值进行量化与还原后进入下一层网络层进行推理,所述量化数据集合包含所述每个网络层模拟量化后的激活值的截断值;
[0154]
误差调整模块13,用于基于所述初始数据集合与所述量化数据集合,计算量化误差集合;并基于所述量化误差集合对所述初始模型进行调整,得到量化模型;
[0155]
参数生成模块14,用于基于所述每个网络层模拟量化后的激活值的截断值,生成量化参数;所述量化参数用于将所述量化模型部署至所述目标部署平台。
[0156]
在一些实施例中,所述推理模块11,还用于获取量化校准数据;通过所述初始模型中的每个网络层,对所述量化校准数据进行模型推理,得到所述每个网络层输出的至少一个激活值;对于所述每个网络层的至少一个激活值,利用至少一种预设统计算法进行统计截断处理,得到所述每个网络层对应的激活值的截断值,作为所述初始数据集合。
[0157]
在一些实施例中,所述每个网络层对应的激活值的截断值,包括以下任意一种:
[0158]
所述至少一个激活值中的最大值、所述至少一个激活值中的最小值、或所述至少一个激活值的中位数的方差值。
[0159]
在一些实施例中,所述模拟量化模块12,还用于对于所述初始模型中的每个网络层,根据所述每个网络层对应的激活值的截断值,得到所述每个网络层对应的量化尺度;利用所述初始模型中的第i层网络,对第i-1层输出的第i-1个量化数据进行推理,得到第i个初始激活值;其中,i为大于或等于2的正整数;第1个量化数据为所述初始模型中的第一层网络对量化校准数据进行推理,并对推理得到的第一个初始激活值进行量化处理与尺度还原得到的;根据所述第i层网络对应的量化尺度,结合所述量化模式与预设量化精度,对所述第i个初始激活值进行量化处理与尺度还原,得到第i个量化数据,实现对所述第i层网络层的模拟量化,直至对所述初始模型中的各个网络层实现模拟量化,得到所述量化数据集合。
[0160]
在一些实施例中,所述量化模式包括:零点系数,所述模拟量化模块12,还用于对所述第i个初始激活值与所述量化尺度的比值进行取整,得到第i个初始量化值;利用零点系数,对所述第i个初始量化值进行调整,得到第i个中间量化值;利用所述预设量化精度,对所述第i个中间量化值进行截断,得到第i个量化值,完成量化处理过程;将所述第i个量化值与所述量化尺度的乘积,作为所述第i个量化数据,完成尺度还原过程。
[0161]
在一些实施例中,所述误差调整模块13,用于计算所述初始数据集合中每个初始数据,与所述量化数据集合中每个量化数据之间的余弦距离,作为所述每个网络层对应的量化误差,从而得到所述量化误差集合。
[0162]
在一些实施例中,所述误差调整模块13,还用于在通过对所述量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,根据所述目标部署平台的平台类型,确定误差调整方式;采用所述误差调整方式,对所述初始模型的网络参数进行调整,得到所述量化模型。
[0163]
在一些实施例中,所述误差调整模块13,还用于在通过对所述量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,基于误差数值分析和/或误差分布的分析结果,对所述初始模型的网络参数进行调整,得到所述量化模型。
[0164]
在一些实施例中,所述误差调整模块13,还用于在通过对所述量化误差集合进行误差数值分析和/或误差分布分析,确定达到预设调整条件的情况下,通过对所述初始数据集合与所述量化数据集合进行张量对比,对所述初始模型的网络参数进行调整,得到所述量化模型。
[0165]
在一些实施例中,所述误差调整模块13,还用于通过对比所述初始数据集合与所述量化数据集合的张量数值分布,得到张量分布信息;以及/或者,通过对比所述初始数据集合与所述量化数据集合的张量尺度信息,得到量化分组信息;所述张量尺度表征用于进行量化的分组形式;将所述张量分布信息和/或所述量化分组信息作为误差表现信息,并基于所述误差表现信息,或者基于所述误差表现信息与目标部署平台的平台类型的组合,确定误差调整方式;采用所述误差调整方式,对所述初始模型的网络参数进行调整,得到所述量化模型。
[0166]
在一些实施例中,所述误差调整模块13,还用于根据所述误差表现信息中的张量
分布信息,得到所述初始数据集合与所述量化数据集合在各通道的张量数值的分布特征差异;在所述分布特征差异满足预设张量分布调整条件的情况下,确定模型跨层平均化算法作为所述误差调整方式;以及/或者,在所述误差表现信息中的量化分组信息表征存在至少两个量化分组的情况下,确定偏置修正算法作为所述误差调整方式;以及/或者,在所述分布特征差异满足预设张量分布调整条件,或者,量化分组信息表征存在至少两个量化分组的情况下,确定所述平台类型对应的预设量化精度;在所述预设量化精度高于预设精度阈值的情况下,确定自适应取整算法作为所述误差调整方式
[0167]
在一些实施例中,所述误差调整模块13,还用于在所述量化误差集合中包含的量化误差的最大值大于第一预设误差阈值的情况下,确定达到预设调整条件;以及/或者,在所述量化误差集合中,大于第二预设误差阈值的量化误差的数量大于误差数量阈值的情况下,确定达到所述预设调整条件;所述第二预设误差阈值小于所述第一预设误差阈值。
[0168]
在一些实施例中,所述参数生成模块14,用于根据目标部署平台的预设量化指标,对所述每个网络层模拟量化后的激活值的截断值进行参数筛选、序列化、以及打包中的至少一种处理,生成所述量化参数。
[0169]
需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
[0170]
本公开实施例还提供一种电子设备,图9为本公开实施例提供的电子设备的结构示意图,如图9所示,电子设备2包括:存储器22和处理器23,其中,存储器22和处理器23通过通信总线24连接;存储器22,用于存储可执行指令;处理器23,用于执行存储器22中存储的可执行指令时,实现本公开实施例提供的方法,例如,本公开实施例提供的模型量化方法。
[0171]
本公开实施例提供一种计算机可读存储介质,存储有可执行模型量化指令,用于引起处理器23执行时,实现本公开实施例提供的方法,例如,本公开实施例提供的模型量化方法。
[0172]
在本公开的一些实施例中,存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0173]
在本公开的一些实施例中,可执行模型量化指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0174]
作为示例,可执行模型量化指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
[0175]
作为示例,可执行模型量化指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
[0176]
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0177]
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0178]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0179]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0180]
以上所述,仅为本公开的较佳实施例而已,并非用于限定本公开的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献