量化神经网络模型的片内执行方法、装置、设备及介质与流程

文档序号:32388501发布日期:2022-11-30 07:15阅读:73来源:国知局
量化神经网络模型的片内执行方法、装置、设备及介质与流程

1.本发明涉及神经网络模型的片内执行领域,尤其涉及量化神经网络模型的片内执行方法、装置、设备及介质。


背景技术:

2.随着神经网络模型技术领域的逐渐发展,对神经网络模型的压缩部署及计算加速度有着更高的要求。
3.现有技术中,为了有效减少ai(人工智能,artificial intelligence)加速芯片的存储数据量,提升ai加速芯片的运行性能,通常采用低比特模型量化的方式对神经网络模型进行压缩后,再部署在ai加速芯片上。然而,采用低比特量化模型的方式会在模型实际部署的过程中带来精度下降的问题,同时,现有的量化部署方式一般均采用静态的量化部署方式,没有实际考虑ai加速芯片的实际的硬件特点。因此,如何有效地解决低比特量化模型部署的神经网络模型精度下降的问题,以及如何在神经网络模型量化部署后,充分发挥ai加速芯片的计算性能,是目前亟待解决的问题。


技术实现要素:

4.本发明实施例提供了一种量化神经网络模型的片内执行方法、装置、设备及介质,以实现在提高量化神经网络模型精度的同时,实现量化神经网络模型与所部署ai加速芯片间的精准适配。
5.根据本发明的一方面,提供了一种量化神经网络模型的片内执行方法,包括:
6.获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图,其中,量化神经网络模型通过对目标神经网络模型进行后训练量化得到;
7.根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始计算算子图进行一次重构,得到第一算子图;
8.在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;其中,第一量化敏感节点的量化敏感度高于第二量化敏感节点;
9.在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换,其中,分支网络中包括与所替换节点结构相同的多个分支节点,用于加权拟合所替换节点的计算结果;
10.根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;
11.对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行。
12.根据本发明的另一方面,提供了一种量化神经网络模型的片内执行装置,该装置包括:
13.原始算子图获取模块,用于获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图,其中,量化神经网络模型通过对目标神经网络模型进行后训练量化得到;
14.第一算子图重构模块,用于根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始算子图进行一次重构,得到第一算子图;
15.敏感节点识别模块,用于在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;其中,第一量化敏感节点的量化敏感度高于第二量化敏感节点;
16.节点处理模块,用于在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换,其中,分支网络中包括与所替换节点结构相同的多个分支节点,用于加权拟合所替换节点的计算结果;
17.第二算子图重构模块,用于根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;
18.重构模型获取模块,用于对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行。
19.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
20.至少一个处理器;以及
21.与所述至少一个处理器通信连接的存储器;其中,
22.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的量化神经网络模型的片内执行方法。
23.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的量化神经网络模型的片内执行方法。
24.本发明实施例的技术方案,通过根据目标ai加速芯片中的计算单元特征和/或指令集特征,对与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图进行一次重构,得到第一算子图;进而,在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;进一步的,在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换;最终,根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行,解决了低比特量化模型部署的神经网络模型精度下降的问题,能够抑制量化神经网络模型的特征表征丢失,提高了量化神经网络模型的精度,同时,还可以在提高量化神经网络模型精度的基础上,实现量化神经网络模型在硬件上的最优适配,将ai加速芯片的计算性能发挥到最优。
25.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
26.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1是根据本发明实施例一提供的一种量化神经网络模型的片内执行方法的流程图;
28.图2a是根据本发明实施例二提供的一种量化神经网络模型的片内执行方法的流程图;
29.图2b是根据本发明实施例二提供的一种分支网络替换流程的示意图;
30.图2c是根据本发明实施例二提供的一种原始量化重构模型参数调整的流程示意图;
31.图2d是根据本发明实施例二提供的一种优选的量化神经网络模型的片内执行方法的流程示意图;
32.图3是根据本发明实施例三提供的一种量化神经网络模型的片内执行装置的结构示意图;
33.图4是实现本发明实施例的量化神经网络模型的片内执行方法的电子设备的结构示意图。
具体实施方式
34.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
35.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“目标”“原始”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
36.实施例一
37.图1为本发明实施例一提供了一种量化神经网络模型的片内执行方法的流程图,本实施例可适用于对神经网络模型进行低比特量化的情况,该方法可以由量化神经网络模型的片内执行装置来执行,该量化神经网络模型的片内执行装置可以采用硬件和/或软件的形式实现,该量化神经网络模型的片内执行装置可配置于电子设备中。如图1所示,该方法包括:
38.s110、获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子
图,其中,量化神经网络模型通过对目标神经网络模型进行后训练量化得到。
39.其中,目标人工智能加速芯片可以指承载量化神经网络模型的人工智能加速芯片。原始算子图可以指与量化神经网络模型对应的算子图,可以包含量化神经网络模型的各个算子及各个算子间的连接关系。每个算子用于执行设定的运算逻辑,例如,加法、减法或者卷积等。
40.其中,量化可以指将原始数据近似为精度变化后的数据的过程,示例性的,某量化标准为将0.3-0.4之间的数据均量化为0.3,则若数据为0.351,对应的量化后的数据为0.3。后训练量化可以指对神经网络模型进行量化训练。目标神经网络模型可以指需要进行后训练量化的神经网络模型,例如密集型神经网络模型(dense模型)。
41.s120、根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始算子图进行一次重构,得到第一算子图。
42.其中,计算单元特征可以指目标ai加速芯片中各计算单元的特征,其中,上述计算单元可以理解为目标ai加速芯片中的算术逻辑单元(arithmetic and logic unit,alu),该算术逻辑单元为目标ai加速芯片中用于实现逻辑运算的最小单位的计算单元。其中,目标ai加速芯片中可以包括一个或者多个计算核,每个计算核中包含有一个或者多个alu。
43.在本实施例中,所述计算单元特征可以包括计算单元数量,每个计算单元所能计算的数据位宽(例如,float32或者是int16等),各计算单元所属的计算核、各计算单元间的并行度以及与每个计算单元分别对应的高效运行算子等。其中,高效运行算子可以理解为将一个算子配置在一个计算单元后,可以被该计算单元高效运行的算子。
44.指令集,是指用于指示目标ai加速芯片中的硬件执行设定运算或者处理功能的命令集合。其中,指令集可以为risc指令集、risc-v指令集或者arm指令集等,本实施例对此并不进行限制。
45.指令集特征可以理解为在将目标ai加速芯片中加载指令集后,通过运行测试后确定得到的指令集中各指令的运算性能参数。例如,计算速度,内存占用率等参数。
46.可以理解的是,通过分析各指令在目标ai加速芯片中的运算性能参数,可以在全部指令集中筛选出与该目标ai加速芯片匹配的芯片友好指令集。通过在目标ai加速芯片中运行芯片友好指令集中的各指令,可以使得目标ai加速芯片发挥出更好的硬件计算性能。
47.第一算子图可以指根据目标ai加速芯片中的计算单元特征和/或指令集特征对原始算子图中的算子进行重新构建后生成的算子图。
48.在本实施例的一个可选的实施方式中,根据目标ai加速芯片中的计算单元特征,对原始算子图进行一次重构的方式可以为:根据每个计算单元的高效运行算子,以及预先构建的算子重构策略,对原始算子图进行一次重构,以使得第一算子图中尽可能多的包含有高效运行算子。
49.其中,算子重构策略中包括多条算子重构规则,每个算子重构规则中定义由从一个或者多个原始算子重构为一个或者多个重构算子的实现方式。
50.在本实施例的一个可选的实施方式中,根据目标ai加速芯片中的指令集特征,对原始算子图进行一次重构的方式可以为:根据芯片友好指令集,以及预先构建的算子重构策略,对原始算子图进行一次重构,以使得第一算子图中尽可能多的包含有用于执行芯片友好指令的算子。
51.s130、在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;其中,第一量化敏感节点的量化敏感度高于第二量化敏感节点。
52.其中,量化敏感节点可以指对目标神经网络模型的损失函数影响度高的计算节点,即导致目标神经网络模型的损失函数损失严重的计算节点。第一量化敏感节点可以指对敏感度较高的量化敏感节点;第二量化敏感节点可以指敏感度一般的量化敏感节点。量化敏感节点集合可以指由量化敏感节点组成的集合。第一量化敏感节点集合可以指由各第一量化敏感节点组成的集合;第二量化敏感节点集合可以指由各第二量化敏感节点组成的集合。目标节点可以指选定进行后续操作的量化敏感节点,目标节点的数量可以根据实际应用进行选定,示例性的,若第二量化敏感节点集合中包含十个量化敏感节点,则可以首先选择三个量化敏感节点作为目标节点以避免较多目标节点引起的计算资源浪费,若后续操作中需要更多数量的目标节点,可以对目标节点的数量进行增加。
53.可选的,在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,可以包括:分别计算第一算子图中的各计算节点对目标神经网络模型的损失函数影响度;识别损失函数影响度超过第一影响度阈值的第一量化敏感节点,形成第一量化敏感节点集合;识别损失函数影响度大于或者等于第二影响度阈值,且小于第一影响度阈值的第二量化敏感节点,形成第二量化敏感节点集合,其中,第一影响度阈值大于第二影响度阈值。其中,第一影响度阈值可以指对第一量化敏感节点进行评估的数值。第二影响度阈值可以指对第二量化敏感节点进行评估的数值。示例性的,可以通过引入测试输入数据的方式进行校准,分别计算第一算子图中各计算节点对目标神经网络模型的损失函数影响度,并筛选出损失函数影响度超过第一影响度阈值的第一量化敏感节点,组成第一量化敏感节点集合,以及,筛选出损失函数影响度大于或者等于第二影响度阈值,且小于第一影响度阈值的第二量化敏感节点,组成第二量化敏感节点集合。由此,可以实现对目标神经网络模型的损失函数影响度高的量化敏感节点进行识别。
54.s140、在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换,其中,分支网络中包括与所替换节点结构相同的多个分支节点,用于加权拟合所替换节点的计算结果。
55.其中,非量化节点可以指目标神经网络模型对应的算子图中包含的各个节点。分支网络可以指根据目标节点量化前后处理差异建立的包含多个分支节点的网络,分支网络的数目与在第二量化敏感节点集合中选择的目标节点的数目相同,每个分支网络中包括多个分支节点,每个分支节点与所在分支网络所替换的目标节点的结构相同。
56.也即,在本实施例中,考虑不再将算子图中对量化异常敏感的算子进行量化处理,而是使用量化前的目标神经网络模型中的对应算子进行替换,以优化量化神经网络模型的计算精度。
57.其中,各分支可以初始化为相同的权重,示例性的,可以初始化为量化神经网络模型中目标节点对应的权重。
58.由此,通过将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将目标节点替换为与目标节点对应的分支网络,可以抑制量化神经网络模型的特征表征丢失,从而可以有效地解决低比特量化模型部署的神经网络模型精度下降的问题。
59.需要再次强调的是,本技术的实质在于:将神经网络模型中对量化敏感的计算节点即目标节点,使用由相同结构的多个计算节点进行替换,进而,可以通过多节点计算结果加权拟合的方式,修正单一计算节点的计算精度,以提高量化后的神经网络模型的模型精度。
60.s150、根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图。
61.其中,所述存储层级特征可以包括:所述目标ai加速芯片是否为多级存储;当目标ai加速芯片为多级存储时的存储层级数量以及每个存储层级的存储器类型(例如,flash、dram或者cache)等。
62.在本实施例中,可以预先设定与不同存储层级特征分别对应的二次重构策略,例如,当存储层级为1,存储器类型为flash时,将算子图中的量化算子-非量化算子-量化算子的组合,统一重构为一个量化算子。进而,在获取目标ai加速芯片的存储层级特征后,可以根据该存储层级特征所满足的二次重构策略,对第一算子图进行二次重构,得到第二算子图。
63.通过上述设置,可以结合目标ai加速芯片的存储层级特征,对量化神经网络模型的算子图进行进一步优化,以使得目标ai加速芯片的计算性能发挥至最优。
64.s160、对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行。
65.其中,原始量化重构模型可以指与第二算子图对应的量化重构模型。目标量化重构模型可以指经过再训练后,满足设定精度要求的原始量化重构模型。再训练可以指利用目标神经网络模型对原始量化重构模型的损失函数进行重训练,以获得与量化神经网络模型匹配的目标量化重构模型。
66.本发明实施例的技术方案,通过根据目标ai加速芯片中的计算单元特征和/或指令集特征,对与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图进行一次重构,得到第一算子图;进而,在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;进一步的,在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换;最终,根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行,解决了低比特量化模型部署的神经网络模型精度下降的问题,能够抑制量化神经网络模型的特征表征丢失,提高了量化神经网络模型的精度,同时,还可以在提高量化神经网络模型精度的基础上,实现量化神经网络模型在硬件上的最优适配,将ai加速芯片的计算性能发挥到最优。。
67.实施例二
68.图2a为本发明实施例二提供的一种量化神经网络模型的片内执行方法的流程图,本实施例以上述实施例为基础进行追加,在本实施例中具体是对将各目标节点使用分支网络进行替换之前的操作进行追加,具体可以包括:根据各目标节点的量化前后处理差异,确定与各所述目标节点分别对应的分支数量范围;根据各所述目标节点的分支数量范围,以
及目标ai加速芯片中的计算单元总数量,确定与各所述目标节点分别对应的分支数量,并按照各所述分支数量构建与各所述目标节点分别对应的分支网络。
69.如图2a所示,该方法包括:
70.s210、识别与所述量化神经网络模型匹配的模型计算场景。
71.其中,模型计算场景可以指量化神经网络模型实际应用的计算场景。示例性的,可以根据计算场景的精确度要求,将模型计算场景分为对计算精度存在较高要求的高精需求计算场景;以及,对计算精度存在较低要求的低精需求计算场景。
72.s220、如果确定所述模型计算场景属于高精需求计算场景,则获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图。
73.其中,高精需求计算场景可以包括:自动驾驶过程中的机器视觉图像分类场景,或者智能问答过程中的自然语音处理场景。
74.s230、根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始算子图进行一次重构,得到第一算子图。
75.s240、分别计算第一算子图中的各计算节点对目标神经网络模型的损失函数影响度。
76.在一个可选的实施方式中,分别计算第一算子图中的各计算节点对目标神经网络模型的损失函数影响度,可以包括:将测试输入数据分别输入至所述目标神经网络模型以及所述量化神经网络模型中;获取各计算节点在所述目标神经网络模型以及所述量化神经网络模型中的原始输出特征图以及量化输出特征图;根据各所述原始输出特征图以及量化输出特征图,计算每个计算节点在量化前后的特征图差异值作为损失函数影响度。
77.其中,测试输入数据可以指用于对量化神经网络模型进行测试的开源标准数据。原始输出特征图可以指测试输入数据输入至目标神经网络模型时,各计算节点对应的输出特征图。量化输出特征图可以指测试输入数据输入至量化神经网络模型时,各计算节点对应的输出特征图。由此,通过对计算节点在量化前后的特征图之间的差异值进行评估,可以计算得到各个计算节点对目标神经网络模型的损失函数影响度,为后续操作提供有效的基础。
78.在另一个可选的实施方式中,分别计算第一算子图中的各计算节点对目标神经网络模型的损失函数影响度,可以包括:在各所述计算节点中,依次获取当前处理节点;将测试输入数据输入至所述目标神经网络模型中,并计算得到所述目标神经网络模型针对所述测试输入数据的第一损失函数值;将所述目标神经网络模型中,与所述当前处理节点对应的原始权重矩阵,替换为所述量化神经网络模型中,与所述当前处理节点对应的量化权重矩阵;重新将所述测试输入数据输入至所述目标神经网络模型中,并计算得到所述目标神经网络模型针对所述测试输入数据的第二损失函数值;计算所述第一损失函数值与所述第二损失函数值之间的损失差异值,并在确定所述损失差异值满足损失差异门限条件时,将所述当前处理节点确定为量化敏感节点;返回执行在各所述计算节点中,依次获取当前处理节点的操作,直至完成对全部计算节点的处理。
79.其中,第一损失函数值可以指目标神经网络模型针对测试输入数据输出的损失函数值。第二损失函数值可以指量化神经网络模型针对测试输入数据输出的损失函数值。损失差异门限条件可以指对损失差异值进行评估的数值,示例性的,可以为设定范围内的数
值。由此,通过对当前处理节点量化处理前后的损失差异值进行评估,可以将损失差异值满足损失差异门限条件的当前处理节点作为量化敏感节点。
80.值得注意的是,还可以利用hessian轨迹计算的方式计算各计算节点量化处理前后的损失函数增长量,得到量化敏感节点,以减少计算量。
81.s250、识别损失函数影响度超过第一影响度阈值的第一量化敏感节点,形成第一量化敏感节点集合。
82.s260、识别损失函数影响度大于或者等于第二影响度阈值,且小于第一影响度阈值的第二量化敏感节点,形成第二量化敏感节点集合,其中,第一影响度阈值大于第二影响度阈值。
83.s270、在第二量化敏感节点集合中确定设定数量的目标节点;其中,第一量化敏感节点的量化敏感度高于第二量化敏感节点。
84.s280、在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换,其中,分支网络中包括与所替换节点结构相同的多个分支节点,用于加权拟合所替换节点的计算结果。
85.如图2b所示为分支网络替换流程的示意图。具体的,若根据目标节点的分支数量范围选定四个分支,则各分支节点可以为分支a、分支b、分支c及分支d;若根据目标节点的分支数量范围选定五个分支,则各分支节点可以为分支a、分支b、分支c、分支d及分支e。在一个具体的例子中,由分支a、分支b、分支c、分支d以及其他分支组成的网络即为目标节点对应的分支网络,该分支网络的激活函数表达式为:
[0086][0087]
其中,表示各分支当前l层的特征值输出,其中l表示分支网络所替换的目标节点所在的神经网络层;αb表示各分支的权重,通常各分支的权重初始化为统一权重;b表示分支的个数。
[0088]
在一个可选的实施方式中,在将各目标节点使用分支网络进行替换之前,还可以包括:根据各目标节点的量化前后处理差异,确定与各所述目标节点分别对应的分支数量范围;根据各所述目标节点的分支数量范围,以及目标ai加速芯片中的计算单元总数量,确定与各所述目标节点分别对应的分支数量,并按照各所述分支数量构建与各所述目标节点分别对应的分支网络。
[0089]
其中,量化前后处理差异可以指各目标节点在量化前后的特征图差异值。分支数量范围可以指各目标节点对应的分支数量的范围。示例性的,若目标节点的量化前后处理差异较小,则目标节点对应的分支数量范围即较小;若目标节点的量化前后处理差异较大,则目标节点对应的分支数量范围即较大,由此,可以保证后续构建的分支网络的计算结果可以更接近于量化前目标节点的计算结果,提高了原始量化重构模型的精确度。
[0090]
其中,分支数量可以指分支数量范围内目标节点对应的分支的数量,分支数量可以根据实际应用需求进行设定,示例性的,若目标节点的分支数量范围为6-10,则可以将分支数量选定为6-10内的任意数字。计算单元总数量可以指目标ai加速芯片所包含的计算单元的个数。
[0091]
在一个可选的实施方式中,根据各目标节点的量化前后处理差异,确定与各所述目标节点分别对应的分支数量范围,可以包括:将测试输入数据分别输入至所述目标神经网络模型以及所述量化神经网络模型中;获取各目标节点在所述目标神经网络模型以及所述量化神经网络模型中的原始输出特征图以及量化输出特征图;根据各所述原始输出特征图以及量化输出特征图,计算每个目标节点在量化前后的特征图差异值;根据各所述目标节点的特征图差异值,确定与各所述目标节点分别对应的分支数量范围。
[0092]
由此,通过计算目标节点在目标神经网络模型以及所述量化神经网络模型中的原始输出特征图以及量化输出特征图之间的特征图差异值,可以为各目标节点对应的分支数量范围,为后续的分支网络构建提供了有效的基础。
[0093]
在另一个可选的实施方式中,根据各所述目标节点的分支数量范围,以及目标ai加速芯片中的计算单元总数量,确定与各所述目标节点分别对应的分支数量,包括:在各所述目标节点的分支数量范围中,选取数值为计算单元总数量的整数倍的分支数量,确定与各所述目标节点分别对应的分支数量。具体的,若计算单元总数量为2,分支数量范围为5-10,则可以在计算单元总数量的整数倍2、4、6、8及10中选取符合分支数量范围5-10中的任意一个数字,示例性的,可以为6或8中的任一个作为与目标节点分别对应的分支数量,本实施例对此并不进行限制。
[0094]
当然,除了可以选取数值为计算单元总数量的整数倍的分支数量,作为与各所述目标节点分别对应的分支数量之外,还可以选取数值为计算单元总数量的约数的分支数量,作为与各所述目标节点分别对应的分支数量等。
[0095]
通过上述设置,设置计算单元与分支数量之间的整比例关系,可以使得各计算单元在运行该目标量化重构模型时,可以发挥最佳的计算性能。
[0096]
s290、根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图。
[0097]
s2100、对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行。
[0098]
值得注意的是,在本发明实施例中,对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,具体可以为:获取所述目标神经网络模型作为教师模型,并依次获取一个当前训练样本输入至所述原始量化重构模型以及所述教师模型中。获取所述原始量化重构模型中各分支网络针对所述当前训练样本输出的量化模型输出结果,以及所述教师模型中各目标节点针对所述当前训练样本输出的教师模型输出结果;根据所述量化模型输出结果和匹配的各所述教师模型输出结果之间的差异性,对所述原始量化重构模型进行参数调整后,返回执行依次获取一个当前训练样本输入至所述原始量化重构以及所述教师模型中的操作,直至满足结束迭代条件,以得到所述目标量化重构模型。
[0099]
其中,教师模型可以指用于对原始量化重构模型进行调整的对照模型,在本发明实施例中,可以将目标神经网络模型作为教师模型。结束迭代条件可以指目标量化重构模型再训练结束的条件,示例性的,可以为目标量化重构模型满足设定的精度条件,或者,迭代次数满足设定迭代阈值等。
[0100]
在一个可选的实施方式中,根据所述量化模型输出结果和匹配的各所述教师模型输出结果之间的差异性,对所述原始量化重构模型进行参数调整,可以包括:根据各所述量
化模型输出结果和匹配的各所述教师模型输出结果之间的差异性,计算得到第一类损失函数;根据所述原始量化重构模型针对所述当前训练样本的最终输出结果与所述当前训练样本的标注结果之间的差异性,计算得到第二类损失函数;根据所述第一类损失函数、所述第二类损失函数,以及损失函数权重分配方式,计算得到目标损失函数,并使用所述目标损失函数,对所述原始量化重构模型进行参数调整。
[0101]
如图2c所示为原始量化重构模型参数调整的流程示意图,其中,第一类损失函数可以指根据原始量化重构模型中各分支网络针对当前训练样本输出的量化模型输出结果,以及所述教师模型中各目标节点针对当前训练样本输出的教师模型输出结果之间的差异性计算所得的损失函数。
[0102]
第二类损失函数可以指根据原始量化重构模型针对当前训练样本的最终输出结果与当前训练样本的标注结果之间的差异性计算所得的损失函数。
[0103]
第一类损失函数以及第二类损失函数的具体计算公式可以根据不同的方法采取对应的计算公式,示例性的:若采用交叉熵(crossentropy,ce)方法,损失函数的表达式可以为:
[0104][0105]
若采用用均方差(mean squared error,mse)方法,损失函数的表达式可以为:
[0106][0107]
若采用kl(kullback-leibler)方法,损失函数的表达式可以为:
[0108][0109]
其中,目标损失函数可以指根据第一类损失函数以及第二类损失函数以及损失函数权重分配方式获得的最终损失函数,示例性的,目标损失函数的计算公式可以为:
[0110][0111]
其中,l表示第一类损失函数的数量,也即原始量化重构模型中分支网络的数量。
[0112]
loss
org
表示第二类损失函数,表示第一类损失函数,β表示第二类损失函数的权重,γ表示第一类损失函数的权重。其中,损失函数权重分配方式可以指第一类损失函数以及第二类损失函数权重分配方式,示例性的,损失函数权重分配方式可以为第一类损失函数权重γ为0.4,第二类损失函数权重β为0.6;也可以为第一类损失函数权重γ为0.5,第二类损失函数权重β为0.5。本发明实施例对此不进行限制。
[0113]
在另一个可选的实施方式中,在对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型之后,还可以包括:检测所述目标量化重构模型是否满足预设的计算精度条件;若否,则对所述目标量化重构模型的至少一个超参数进行重新调整后,重新训练得到新的目标量化重构模型;其中,所述超参数包括下述至少一项:在量化敏感节点
集合中确定的目标节点的数量值、与各目标节点分别对应的分支数量以及损失函数权重分配方式。
[0114]
具体的,由于目标节点的数量值越多、与各目标节点分别对应的分支数量越靠近分支数量范围的最大值最终得到的目标量化重构模型精度将会越准确,但考虑对硬件设备计算量的负担,通常在首次确定目标节点的数量值以及与各目标节点分别对应的分支数量时,不会选择较大的数量,因此,当目标量化重构模型未满足预设的计算精度条件时,则可以再次适当的扩大目标节点的数量值以及与各目标节点分别对应的分支数量,并进行新一轮的再训练,直至目标量化重构模型满足预设的计算精度条件。此外,损失函数权重分配方式也会对目标量化重构模型的精度造成影响,因此,当目标量化重构模型未满足预设的计算精度条件时,也可以对损失函数权重分配方式进行适应性的调整,直至目标量化重构模型满足预设的计算精度条件。
[0115]
本发明实施例的技术方案,通过对与量化神经网络模型匹配的模型计算场景进行判别,在确定模型计算场景属于高精需求计算场景时,则获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图,之后,根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始算子图进行一次重构,得到第一算子图,进一步的,分别计算第一算子图中的各计算节点对目标神经网络模型的损失函数影响度,并识别损失函数影响度超过第一影响度阈值的第一量化敏感节点,形成第一量化敏感节点集合,以及,识别损失函数影响度大于或者等于第二影响度阈值,且小于第一影响度阈值的第二量化敏感节点,形成第二量化敏感节点集合;之后,在第二量化敏感节点集合中确定设定数量的目标节点,在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换;进一步的,根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;最终,对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行,解决了低比特量化模型部署的神经网络模型精度下降的问题,能够抑制量化神经网络模型的特征表征丢失,提高了量化神经网络模型的精度,同时,还可以在提高量化神经网络模型精度的基础上,实现量化神经网络模型在硬件上的最优适配,将ai加速芯片的计算性能发挥到最优。。
[0116]
如图2d所示为本发明实施例提供的一种优选的量化神经网络模型的片内执行方法的流程示意图。
[0117]
具体的,首先,对目标神经网络模型进行后训练量化,得到量化神经网络模型;进而,获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图;并根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始算子图进行一次重构,得到第一算子图;进而,对第一算子图中的各计算节点进行敏感度分析,识别对目标神经网络模型的损失函数影响度高的第一量化敏感节点集合及第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;进一步的,根据各目标节点的量化前后处理差异,确定与各目标节点分别对应的分支数量范围,并根据各目标节点的分支数量范围,以及目标ai加速芯片中的计算单元总数量,确定与各目标节点分别对应的分支数量,以按照各分支数量构建与各目标节点分别对应的分支网络,并将各目标节点,使用匹配的分支网络进行替换,将第一量化敏感节点集合中的各计算节点替换为非量化节点,之后,根据目标ai加速
芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;进一步的,获取目标神经网络模型作为教师模型,依次获取一个当前训练样本输入至与第二算子图对应的原始量化重构模型以及所述教师模型中,并获取原始量化重构模型中各分支网络针对当前训练样本输出的量化模型输出结果,以及教师模型中各目标节点针对当前训练样本输出的教师模型输出结果,根据量化模型输出结果和匹配的各教师模型输出结果之间的差异性,对所述原始量化重构模型进行参数调整得到目标量化重构模型;最后,对目标量化重构模型的计算精度进行判断,若目标量化重构模型不满足预设的计算精度条件,则返回执行构建与各目标节点分别对应的分支网络;若目标量化重构模型满足预设的计算精度条件则输出该目标量化重构模型并进行相应的模型优化部署。由此,可以得到满足预设的计算精度条件的目标量化重构模型。
[0118]
实施例三
[0119]
图3为本发明实施例三提供的一种量化神经网络模型的片内执行装置的结构示意图。如图3所示,该装置包括:原始算子图获取模块310、第一算子图重构模块320、敏感节点识别模块330、节点处理模块340、第二算子图重构模块350以及重构模型获取模块360;
[0120]
其中,原始算子图获取模块310,用于获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图,其中,量化神经网络模型通过对目标神经网络模型进行后训练量化得到;
[0121]
第一算子图重构模块320,用于根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始算子图进行一次重构,得到第一算子图;
[0122]
敏感节点识别模块330,用于在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;其中,第一量化敏感节点的量化敏感度高于第二量化敏感节点;
[0123]
节点处理模块340,用于在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换,其中,分支网络中包括与所替换节点结构相同的多个分支节点,用于加权拟合所替换节点的计算结果;
[0124]
第二算子图重构模块350,用于根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;
[0125]
重构模型获取模块360,用于对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行。
[0126]
本发明实施例的技术方案,通过根据目标ai加速芯片中的计算单元特征和/或指令集特征,对与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图进行一次重构,得到第一算子图;进而,在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;进一步的,在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,并将各目标节点使用分支网络进行替换;最终,根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行,解决了低比特量化模型部署的神经网络模型精度下降的问题,能够抑制量化神经网络模型的特征表征丢失,提高了量化神经网络模型的精度,同时,还可以在提高量化神经网络
模型精度的基础上,实现量化神经网络模型在硬件上的最优适配,将ai加速芯片的计算性能发挥到最优。。
[0127]
可选的,敏感节点识别模块330,具体可以包括:损失函数影响度计算单元、第一量化敏感节点集合生成单元及第二量化敏感节点集合生成单元;
[0128]
其中,损失函数影响度计算单元,用于分别计算第一算子图中的各计算节点对目标神经网络模型的损失函数影响度;
[0129]
第一量化敏感节点集合生成单元,用于识别损失函数影响度超过第一影响度阈值的第一量化敏感节点,形成第一量化敏感节点集合;
[0130]
第二量化敏感节点集合生成单元,用于识别损失函数影响度大于或者等于第二影响度阈值,且小于第一影响度阈值的第二量化敏感节点,形成第二量化敏感节点集合,其中,第一影响度阈值大于第二影响度阈值。
[0131]
可选的,损失函数影响度计算单元,具体可以用于:将测试输入数据分别输入至所述目标神经网络模型以及所述量化神经网络模型中;获取各计算节点在所述目标神经网络模型以及所述量化神经网络模型中的原始输出特征图以及量化输出特征图;根据各所述原始输出特征图以及量化输出特征图,计算每个计算节点在量化前后的特征图差异值作为损失函数影响度。
[0132]
可选的,损失函数影响度计算单元,具体可以用于:在各所述计算节点中,依次获取当前处理节点;将测试输入数据输入至所述目标神经网络模型中,并计算得到所述目标神经网络模型针对所述测试输入数据的第一损失函数值;将所述目标神经网络模型中,与所述当前处理节点对应的原始权重矩阵,替换为所述量化神经网络模型中,与所述当前处理节点对应的量化权重矩阵;重新将所述测试输入数据输入至所述目标神经网络模型中,并计算得到所述目标神经网络模型针对所述测试输入数据的第二损失函数值;计算所述第一损失函数值与所述第二损失函数值之间的损失差异值,并在确定所述损失差异值满足损失差异门限条件时,将所述当前处理节点确定为量化敏感节点;返回执行在各所述计算节点中,依次获取当前处理节点的操作,直至完成对全部计算节点的处理。
[0133]
可选的,量化神经网络模型的片内执行装置,还可以包括:分支网络构建模块,用于在将各目标节点使用分支网络进行替换之前,根据各目标节点的量化前后处理差异,确定与各所述目标节点分别对应的分支数量范围;根据各所述目标节点的分支数量范围,以及目标ai加速芯片中的计算单元总数量,确定与各所述目标节点分别对应的分支数量,并按照各所述分支数量构建与各所述目标节点分别对应的分支网络。
[0134]
可选的,分支网络构建模块,具体可以用于:将测试输入数据分别输入至所述目标神经网络模型以及所述量化神经网络模型中;获取各目标节点在所述目标神经网络模型以及所述量化神经网络模型中的原始输出特征图以及量化输出特征图;根据各所述原始输出特征图以及量化输出特征图,计算每个目标节点在量化前后的特征图差异值;根据各所述目标节点的特征图差异值,确定与各所述目标节点分别对应的分支数量范围。
[0135]
可选的,分支网络构建模块,具体可以用于:在各所述目标节点的分支数量范围中,选取数值为计算单元总数量的整数倍的分支数量,确定与各所述目标节点分别对应的分支数量。
[0136]
可选的,原始算子图获取模块310,具体可以用于:识别与所述量化神经网络模型
匹配的模型计算场景;如果确定所述模型计算场景属于高精需求计算场景,则获取与待加载至目标ai加速芯片中的量化神经网络模型匹配的原始算子图;其中,所述高精需求计算场景包括:自动驾驶过程中的机器视觉图像分类场景,或者智能问答过程中的自然语音处理场景。
[0137]
本发明实施例所提供的量化神经网络模型的片内执行装置可执行本发明任意实施例所提供的量化神经网络模型的片内执行方法,具备执行方法相应的功能模块和有益效果。
[0138]
实施例四
[0139]
图4示出了可以用来实施本发明的实施例的电子设备410的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0140]
如图4所示,电子设备410包括至少一个处理器420,以及与至少一个处理器420通信连接的存储器,如只读存储器(rom)430、随机访问存储器(ram)440等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器420可以根据存储在只读存储器(rom)430中的计算机程序或者从存储单元490加载到随机访问存储器(ram)440中的计算机程序,来执行各种适当的动作和处理。在ram440中,还可存储电子设备410操作所需的各种程序和数据。处理器420、rom430以及ram440通过总线450彼此相连。输入/输出(i/o)接口460也连接至总线450。
[0141]
电子设备410中的多个部件连接至i/o接口460,包括:输入单元470,例如键盘、鼠标等;输出单元480,例如各种类型的显示器、扬声器等;存储单元490,例如磁盘、光盘等;以及通信单元4100,例如网卡、调制解调器、无线通信收发机等。通信单元4100允许电子设备410通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0142]
处理器420可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器420的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器420执行上文所描述的各个方法和处理,例如量量化神经网络模型的片内执行方法。
[0143]
该方法包括:
[0144]
获取与待加载至目标人工智能ai加速芯片中的量化神经网络模型匹配的原始算子图,其中,量化神经网络模型通过对目标神经网络模型进行后训练量化得到;
[0145]
根据目标ai加速芯片中的计算单元特征和/或指令集特征,对原始计算算子图进行一次重构,得到第一算子图;
[0146]
在第一算子图中的各计算节点中,识别第一量化敏感节点集合和第二量化敏感节点集合,并在第二量化敏感节点集合中确定设定数量的目标节点;其中,第一量化敏感节点的量化敏感度高于第二量化敏感节点;
[0147]
在第一算子图中,将第一量化敏感节点集合中的各计算节点替换为非量化节点,
并将各目标节点使用分支网络进行替换,其中,分支网络中包括与所替换节点结构相同的多个分支节点,用于加权拟合所替换节点的计算结果;
[0148]
根据目标ai加速芯片的存储层级特征,对第一算子图进行二次重构,得到第二算子图;
[0149]
对与第二算子图对应的原始量化重构模型进行再训练,得到目标量化重构模型,并将目标量化重构模型加载至目标ai加速芯片内进行执行。
[0150]
在一些实施例中,量化神经网络模型的片内执行方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元490。在一些实施例中,计算机程序的部分或者全部可以经由rom430和/或通信单元4100而被载入和/或安装到电子设备410上。当计算机程序加载到ram440并由处理器420执行时,可以执行上文描述的量化神经网络模型的片内执行方法的一个或多个步骤。备选地,在其他实施例中,处理器420可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行量化神经网络模型的片内执行方法。
[0151]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0152]
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0153]
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0154]
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0155]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
[0156]
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
[0157]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0158]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1