本技术涉及计算机领域的信息处理技术,尤其涉及一种信息处理方法、装置、设备、计算机存储介质和计算机程序产品。
背景技术:
1、对神经网络模型进行压缩的一种方式为模型量化,即将原网络中的参数降低为低精度表示,以使量化后的低精度网络模型占用的空间减少、系统吞吐量提升。但是,模型量化会降低模型的准确性,一旦训练后量化的低精度深度学习网络模型的准确性降低超过阈值时,可以通过重训练的方案提升量化模型的准确性。基于此,相关技术中出现了面向通用浮点程序领域,基于浮点程序精度损失检测来确定训练后量化的低精度深度学习网络模型中产生精度损失的源码位置。但是,相关技术中面向通用程序领域的浮点程序精度损失检测方法没有考虑低精度导致的分支误差,只能进行误差定位,不能对问题代码进行自动修复。
技术实现思路
1、为解决上述技术问题,本技术实施例提供一种信息处理方法、装置、设备、计算机存储介质和计算机程序产品,解决了相关技术中的精度损失检测方法没有考虑低精度导致的分支误差,以及只能进行误差定位的问题,且能够实现对问题的自动修复。
2、为达到上述目的,本技术实施例的技术方案是这样实现的:
3、一种信息处理方法,所述方法包括:
4、获取第一神经网络模型的第一代码;
5、对所述第一代码进行处理得到第二神经网络模型的第二代码;其中,所述第一神经网络模型的精度高于所述第二神经网络模型;所述第一代码中包括标记的结果变量;
6、若所述第一代码的结果变量的值与所述第二代码的结果变量的值的误差不满足第一目标阈值,基于所述第二代码对应的控制流图和目标动态依赖图确定所述第二代码中的目标代码,并采用目标修复算法对所述第二代码中的目标代码进行修复得到修复后的第二代码;其中,目标动态依赖图与所述第二代码相关;所述目标修复算法为与所述目标代码匹配的修复算法。
7、上述方案中,所述对所述第一代码进行处理得到第二神经网络模型的第二代码,包括:
8、确定所述第一代码中的与指令相关的第一种代码和与函数相关的第二种代码;
9、将所述第一种代码和所述第二种代码进行修改,得到所述第二代码。
10、上述方案中,所述基于所述第二代码对应的控制流图和目标动态依赖图确定所述第二代码中的目标代码,并采用目标修复算法对所述第二代码中的目标代码进行修复得到修复后的第二代码,包括:
11、基于所述控制流图和所述目标动态依赖图对所述第二代码进行处理得到第一目标变量,并基于所述第一目标变量确定所述第一目标代码;
12、采用与所述第一目标代码匹配的第一目标修复算法对所述第二代码中的所述第一目标代码进行修复,得到第一修复后的代码;其中,所述目标修复算法包括所述第一目标修复算法;所述目标代码包括所述第一目标代码;
13、若所述第一修复后的代码的结果变量的值与所述第一代码的结果变量的值的误差满足所述第一目标阈值,确定所述第一修复后的代码为所述修复后的第二代码。
14、上述方案中,所述方法还包括:
15、若所述第一修复后的代码的结果变量的值与所述第一代码的结果变量的值的误差不满足所述第一目标阈值,基于所述第一修复后的代码对应的控制流图和目标动态依赖图对所述第一修复后的代码进行处理得到第二目标变量,并基于所述第二目标变量确定所述第二目标代码;
16、采用与所述第二目标代码匹配的第二目标修复算法对所述第二代码中的所述第二目标代码进行修复,得到第二修复后的代码;其中,所述目标修复算法还包括所述第二目标修复算法;所述目标代码还包括所述第二目标代码;
17、若所述第二修复后的代码的结果变量的值与所述第一代码的结果变量的值的误差满足所述第一目标阈值,确定所述第二修复后的代码为所述修复后的第二代码;
18、若所述第二修复后的代码的结果变量的值与所述第一代码的结果变量的值的误差不满足所述第一目标阈值,基于所述第二修复后的代码对应的控制流图和目标动态依赖图对所述第二修复后的代码进行处理,直到确定的所述修复后的第二代码的结果变量的值与所述第一代码的结果变量的值的误差满足所述第一目标阈值。
19、上述方案中,所述基于所述控制流图和所述目标动态依赖图对所述第二代码进行处理得到第一目标变量,包括:
20、将所述第二代码转换为与目标架构编译系统的语言对应的待处理代码;
21、基于所述待处理代码的控制流图,从所述待处理代码中确定第一变量;
22、基于所述第一变量所对应的待确定代码的所述目标动态依赖图,确定所述第一目标变量。
23、上述方案中,所述基于所述待处理代码的控制流图,从所述待处理代码中确定第一变量,包括:
24、采用后向切片技术对所述待处理代码进行分析,得到所述待处理代码中与所述第二代码的结果变量相关的子代码;
25、对所述子代码进行分析,确定所述子代码中的所述第一变量。
26、上述方案中,所述基于所述第一变量所对应的待确定代码的所述目标动态依赖图,确定所述第一目标变量,包括:
27、构建针对所述待确定代码的所述目标动态依赖图;
28、对所述目标动态依赖图进行分析得到多个第二变量;
29、从所述多个第二变量中,确定变量的值小于第二目标阈值的变量为所述第一目标变量。
30、一种信息处理装置,所述装置包括:
31、获取单元,用于获取第一神经网络模型的第一代码;
32、确定单元,用于对所述第一代码进行处理得到第二神经网络模型的第二代码;其中,所述第一神经网络模型的精度高于所述第二神经网络模型;所述第一代码中包括标记的结果变量;
33、处理单元,用于若所述第一代码的结果变量的值与所述第二代码的结果变量的值的误差不满足第一目标阈值,基于所述第二代码对应的控制流图和目标动态依赖图确定所述第二代码中的目标代码,并采用目标修复算法对所述第二代码中的目标代码进行修复得到修复后的第二代码;其中,目标动态依赖图与所述第二代码相关;所述目标修复算法为与所述目标代码匹配的修复算法。
34、一种信息处理设备,所述设备包括:处理器、存储器和通信总线;
35、所述通信总线用于实现处理器和存储器之间的通信连接;
36、所述处理器用于执行存储器中的信息处理程序,以实现上述的信息处理方法的步骤。
37、一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的信息处理方法的步骤。
38、一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现上述的方法。
39、本技术的实施例所提供的信息处理方法、装置、设备、计算机可读存储介质和计算机程序产品,可以获取第一神经网络模型的包括标记的结果变量的第一代码,并对第一代码进行处理得到第二神经网络模型的第二代码,第一神经网络模型的精度高于第二神经网络模型,若第一代码的结果变量的值与第二代码的结果变量的值的误差不满足第一目标阈值,基于第二代码对应的控制流图和目标动态依赖图确定第二代码中的目标代码,并采用与目标代码匹配的目标修复算法对第二代码中的目标代码进行修复得到修复后的第二代码,目标动态依赖图与第二代码相关;这样,可以通过对低精度神经网络模型的代码的结果变量的值与高精度神经网络模型的代码的结果变量的值进行比较,就可以确定出低精度神经网络模型的代码中需要修复的目标代码,且可以自动采用与目标代码匹配的修复算法对目标代码进行修复;而不需要就有很强的算力,且考虑了低精度导致的分支误差;同时,在实现了自动定位导致误差的需要修复的代码的基础上,还可以实现对需要修复的代码的自动修复。
1.一种信息处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述第一代码进行处理得到第二神经网络模型的第二代码,包括:
3.根据权利要求1所述的方法,其特征在于,所述基于所述第二代码对应的控制流图和目标动态依赖图确定所述第二代码中的目标代码,并采用目标修复算法对所述第二代码中的目标代码进行修复得到修复后的第二代码,包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述基于所述控制流图和所述目标动态依赖图对所述第二代码进行处理得到第一目标变量,包括:
6.根据权利要求5所述的方法,其特征在于,所述基于所述待处理代码的控制流图,从所述待处理代码中确定第一变量,包括:
7.根据权利要求5所述的方法,其特征在于,所述基于所述第一变量所对应的待确定代码的所述目标动态依赖图,确定所述第一目标变量,包括:
8.一种信息处理装置,其特征在于,所述装置包括:
9.一种信息处理设备,其特征在于,所述设备包括:处理器、存储器和通信总线;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1~7中任一项所述的信息处理方法的步骤。
11.一种计算机程序产品,所述计算机程序产品包括计算机程序,其特征在于,所述计算机程序在被处理器执行时实现根据权利要求1~7中任一项所述的方法。