跨平台深度学习模型运行检测方法、装置、设备及介质与流程

未命名 08-05 阅读:139 评论:0


1.本发明涉及人工智能技术领域,尤其涉及一种跨平台深度学习模型运行检测方法、装置、设备及介质。


背景技术:

2.随着人工智能技术的发展,深度学习模型在实际应用中愈来愈普及。深度学习模型在不同平台中运行可能具有不同的表现,致使深度学习模型执行存在瓶颈。
3.现有技术中,可以通过获取深度学习模型中间层的输出值进行监控,确定执行问题,以改进深度学习模型。但是,在对比不同平台之间的运行结果时,有一个重要前提是需要保持不同平台的输入一致。否则,由于平台本身的软件或硬件差异,导致多平台运行结果比对时存在累计误差,致使比对结果不可靠,无法准确对深度学习模型运行进行检测。


技术实现要素:

4.本发明提供了一种跨平台深度学习模型运行检测方法、装置、设备及介质,以保证多平台运行深度学习模型的一致性,避免累积误差,从而准确检测深度学习模型运行。
5.根据本发明的一方面,提供了一种跨平台深度学习模型运行检测方法,该方法包括:在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;
6.在所述第一检测平台对所述深度学习模型算法中的各网络层计算前,将各所述网络层的网络结构信息以及输入信息深拷贝至第二检测平台;
7.获取所述第一检测平台执行各网络层计算,得到的第一运行结果;
8.获取所述第二检测平台根据所述网络结构信息以及输入信息执行各所述网络层的计算,得到第二运行结果;
9.将所述第一运行结果与所述第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。
10.根据本发明的另一方面,提供了一种跨平台深度学习模型运行检测装置,该装置包括:
11.第一检测平台确定模块,用于在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;
12.信息深拷贝模块,用于在所述第一检测平台对所述深度学习模型算法中的各网络层计算前,将各所述网络层的网络结构信息以及输入信息深拷贝至第二检测平台;
13.第一运行结果获取模块,用于获取所述第一检测平台执行各网络层计算,得到的第一运行结果;
14.第二运行结果获取模块,用于获取所述第二检测平台根据所述网络结构信息以及输入信息执行各所述网络层的计算,得到第二运行结果;
15.精度检测结果确定模块,用于将所述第一运行结果与所述第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。
16.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
17.至少一个处理器;以及
18.与所述至少一个处理器通信连接的存储器;其中,
19.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的跨平台深度学习模型运行检测方法。
20.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的跨平台深度学习模型运行检测方法。
21.本发明实施例的技术方案,通过在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台;获取第一检测平台执行各网络层计算,得到的第一运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果;将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果,解决了深度学习模型跨平台运行的检测问题,可以保证多平台运行深度学习模型的一致性,避免累积误差,从而准确检测深度学习模型运行,以对深度学习模型进行可靠改进。
22.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
23.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是一种深度学习模型中累计误差的示意图;
25.图2是根据本发明实施例一提供的一种跨平台深度学习模型运行检测方法的流程图;
26.图3是根据本发明实施例一提供的一种跨平台深度学习模型运行检测中的精度检测结果确定流程图;
27.图4是根据本发明实施例二提供的一种跨平台深度学习模型运行检测方法的流程图;
28.图5是根据本发明实施例三提供的一种跨平台深度学习模型运行检测装置的结构示意图;
29.图6是实现本发明实施例的跨平台深度学习模型运行检测方法的电子设备的结构示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的
附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
31.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
32.在对本发明实施例的技术方案进行详细介绍之前,通过下述内容,先对本发明实施例的应用场景进行介绍。在深度学习框架中可以采用动态图机制。所谓动态图机制可以是在运行时动态构建计算图,而不需要预先定义和编译计算图。相比于静态图机制,动态图机制更加灵活,能够方便地处理不同形状和大小的数据,以及支持动态的控制流程。在动态图机制中,计算图是在每个批次或每个迭代中动态构建的,因此可以根据不同的输入数据动态调整计算图。采用动态图机制可以使开发人员可以更加灵活地处理各种不同的计算场景,例如根据输入数据调整网络结构、改变损失函数、增加或删除某些计算节点等。动态图机制还能够支持动态的控制流程,例如循环结构和条件语句。这些控制流程通常在静态图机制中比较复杂,需要使用循环操作和条件节点来实现,而在动态图机制中则可以更加自然地表示这些控制流程。
33.为了便于开发人员对动态计算图进行修改,可以在计算图中注册回调函数,用于在计算图中的某些节点执行一些自定义的操作。在深度学习模型的训练过程中,通过使用回调函数可以监视和修改计算图中的梯度信息、中间特征值等等,从而方便地进行调试和优化。
34.但是,在对深度学习模型中的中间层输出值进行监控时,无法保证在不同平台的输入是一致的。换言之,通常在深度学习模型的迭代训练中,仅能控制每次迭代的模型输入一致,而无法控制模型中每层的输入均一致。具体的,即便在控制模型第一层输入一致的情况下,也无法使后续各层运算的结果一致。这是因为后续结果存在累计误差。其中,累计误差是指连续进行多次操作或计算时,由于每次操作或计算的误差累积导致最终结果与真实结果之间的误差。
35.示例性的,图1是一种深度学习模型中累计误差的示意图。图1中以由卷积+批规范化网络(batchnorm,bn)的深度学习模型为例。图1分为两个部分:一部分是设备1上的计算,一部分是设备2上的计算。假设此时在两个设备上有相同的输入,卷积和bn模块的权重与参数也完全一致,在两个设备上分别完成卷积计算,得到两个输出:设备1的第一层输出,设备2的第一层输出。由于不同设备间固有的软件或者硬件差异,这两个输出是存在差异的。当依据这两个输出,再往下执行bn计算时,由于计算的输入已经不同,计算结果必然也存在差异。即设备1的第二层输出,设备2的第二层输出之间存在累计误差,结果必然不同。综上,仅通过抓取计算中间值进行模型运行检测,由于存在严重的累计误差问题,将导致无法准确
判断深度学习模型中精度误差来源,致使深度学习模型运行检测不可靠。
36.实施例一:
37.图2是根据本发明实施例一提供的一种跨平台深度学习模型运行检测方法的流程图,本实施例可适用于在深度学习模型训练中,对多平台运行深度学习模型进行检测,以改进深度学习模型的情况,该方法可以由跨平台深度学习模型运行检测装置来执行,该跨平台深度学习模型运行检测装置可以采用硬件和/或软件的形式实现,该跨平台深度学习模型运行检测装置可配置于电子设备中如计算机。如图2所示,该方法包括:
38.步骤110、在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台。
39.其中,深度学习模型的训练过程可以分为:模型初始化、输入数据处理、模型训练、优化器更新权重,之后在模型训练和优化器更新之间循环,直到达到目标指标为止。模型训练可以包括前向传播以及反向传播。以一次迭代为例,产生计算的步骤主要为前向传播,反向传播与优化器更新。本发明实施例的技术方案可以应用于前向传播和/或反向传播中,以实现对模型的调整。
40.第一检测平台可以是执行深度学习模型算法的计算设备,或者可以具体为计算设备的处理器等。
41.步骤120、在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台。
42.其中,第二检测平台可以是与第一检测平台相对应的,可以重现第一检测平台中执行的深度学习模型算法,以检测同一深度学习模型在多平台中的运行结果。
43.具体的,可以在网络层计算前,保存网络层的网络结构信息(module)和输入信息(input)至内存。module是当前即将发生计算的层,input是该层的输入。由于此时尚未发生计算,module并不属于任何计算图,将module深拷贝一份存放至内存。将input移出计算图,并深拷贝一份保存到内存中,防止其被后续计算影响,以避免累计误差对计算结果的影响。之后,可以将网络结构信息以及输入信息发送至第二检测平台,进行对应的网络层计算复现。
44.具体的,在本发明实施例的一个可选实施方式中,在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台,包括:在第一检测平台对深度学习模型算法中的各网络层计算前,在第一检测平台中对深度学习模型的各网络层注册第一回调函数;其中,第一回调函数,用于将网络结构信息以及输入信息深拷贝至第二检测平台。
45.其中,回调函数可以是钩子函数(hook)。以pytorch框架为例,可以注册作用在前向传播前的forward_pre_hook函数,作为第一回调函数。在forward_pre_hook函数中,可以将网络结构信息以及输入信息深拷贝至第二检测平台。
46.步骤130、获取第一检测平台执行各网络层计算,得到的第一运行结果。
47.其中,第一运行结果中包括与各网络层分别对应的各层运行结果。
48.在本发明实施例的一个可选实施方式中,在在第一检测平台中对深度学习模型的各网络层注册第一回调函数之后,还包括:在第一检测平台中对深度学习模型的各网络层注册第二回调函数。
49.具体的,可以注册作用在前向传播计算执行后的forward_hook函数,作为第二回调函数。在第二回调函数中可以获取第一检测平台执行各网络层的前向传播计算,得到的第一前向运行结果。第一前向运行结果中可以包括与各网络层分别对应的各层前向运行结果。第一前向运行结果可以用于对前向计算进行前向传播检测。
50.在本发明实施例的又一可选实施方式中,在在第一检测平台中对深度学习模型的各网络层注册第二回调函数之后,还包括:在第一检测平台中对深度学习模型的各网络层注册第三回调函数。
51.具体的,可以注册作用在反向传播计算执行后的full_backward_hook函数,作为第三回调函数。在第三回调函数中,可以在至少一次前向传播计算之后,获取第一检测平台执行各网络层反向传播计算,得到的第一反向运行结果。第一反向运行结果中可以包括与各网络层分别对应的各层反向运行结果。第一反向运行结果可以用于对反向计算进行反向传播检测。
52.需要说明的是,反向传播的计算与前向传播相反,反向传播计算需要依赖于计算图。因此,反向传播的计算需要在至少一次前向传播计算之后,以根据前向传播计算生成的特征图进行计算。
53.步骤140、获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果。
54.其中,第二运行结果中包括与各网络层分别对应的各层运行结果。第二检测平台根据网络结构信息以及输入信息执行各网络层的计算时,其网络结构信息以及输入信息均与第一检测平台中的信息相同。在本发明实施例中,由于每层都获取第一检测平台的网络结构信息以及输入信息,在第二检测平台进行计算复现,可以排除累计误差的影响,因此可以保证第二检测平台上运行结果的有效性。
55.具体的,在第二回调函数中可以获取第二检测平台根据网络结构信息以及输入信息执行各网络层的前向传播计算,得到第二前向运行结果。在第三回调函数中可以获取第二检测平台根据网络结构信息以及输入信息执行各网络层的反向传播计算,得到第二反向运行结果。其中,在第二检测平台中反向传播计算的复现,需要在至少一次前向传播计算之后。
56.步骤150、将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。
57.其中,第一运行结果与第二运行结果的比对,可以是确定两者的结果误差是否在预设误差范围内。如果结果误差在预设误差范围内,则确定跨平台深度学习模型运行检测中的精度检测结果为符合预设要求;否则,确定精度检测结果为不符合预设要求。在上述实施方式的基础上,还可以将精度检测结果进行展示,以便于开发者可以根据结果比对情况,确定深度学习模型的各网络层是否存在问题,一堆深度学习模型进行调整。
58.具体的,精度检测结果包括前向传播检测结果和反向传播检测结果。其中,前向传播检测结果可以是在第二回调函数中,通过将第一前向运行结果与第二前向运行结果进行比对确定的。反向传播检测结果可以是在第三回调函数中,通过将第一反向运行结果与第二反向运行结果进行比对确定的。
59.本实施例的技术方案,通过在深度学习模型初始化后,确定执行深度学习模型算
法的第一检测平台;在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台;获取第一检测平台执行各网络层计算,得到的第一运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果;将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果,解决了深度学习模型跨平台运行的检测问题,可以保证多平台运行深度学习模型的一致性,避免累积误差,从而准确检测深度学习模型运行,以对深度学习模型进行可靠改进。
60.图3是根据本发明实施例一提供的一种跨平台深度学习模型运行检测中的精度检测结果确定流程图。如图3所示,本发明实施例的一个使用流程可以如下:
61.在深度学习模型的训练过程中,可以进行模型初始化,将模型部署在第一检测平台中,并对深度学习模型中各网络层分别注册第一回调函数、第二回调函数以及第三回调函数。在深度学习模型训练环节,可以在前向传播计算前,通过第一回调函数对各网络层的网络结构信息以及输入信息进行深拷贝保存至内存中。第一检测平台可以对深度学习模型进行前向传播计算,得到第一前向运行结果。在第二回调函数中,可以将网络结构信息以及输入信息深拷贝至第二检测平台,进行各网络层前向传播计算的重现,得到第二前向运行结果。在第二回调函数中,可以获取第一前向运行结果与第二前向运算结果,并进行比对,确定前向传播检测结果。其中,在进行前向传播计算重现时,第一检测平台与第二检测平台针对各网络层的输入信息完全一致,可以排除累计误差影响,保证前向传播检测结果的可靠性。
62.如图3所示,在至少一次前向传播计算之后,可以在第三回调函数中重现第二检测平台上的前向传播计算以构建特征图,为反向传播计算的检测对比做准备。第三回调函数的默认参数列表可以与第二回调函数类似,分别可以为输入的梯度(grad_input)、当前发生计算的层(module)、以及计算结果的梯度(grad_out)。反向传播计算与前向传播计算相反,所以grad_out是反向传播计算的输入,而grad_input是反向传输计算的结果。
63.具体的,在第三回调函数中可以获取计算图与grad_out。在第三回调函数中可以获取第一检测平台反向传输计算得到的第一反向运行结果;并在第二检测平台重现反向传输计算,得到第二反向运行结果。在第三回调函数中可以将第一反向运行结果与第二反向运行结果进行比对,确定精度检测结果中的反向传播检测结果。第一检测平台与第二检测平台针对各网络层的输入信息完全一致,可以排除累计误差影响,保证反向传播检测结果的可靠性。
64.本发明实施例提供的跨平台深度学习模型运行检测方法,可以在排除累计误差影响的情况下,使精度对比结果更具有参考价值;可以实现在深度学习模型训练中,在线实时的精度对比,而无需分别在不同设备上迭代多次周再根据运行完成后的结果进行精度对比;并且本发明实施例的技术方案仅需要在模型迭代开始前注册回调函数即可,而无需后续操作,可以使模型训练自动化迭代推进,改善用户使用体验。
65.实施例二:
66.图4是根据本发明实施例二提供的一种跨平台深度学习模型运行检测方法的流程图,本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。如图4所示,该方法包括:
67.步骤210、在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台。
68.在本发明实施例的一个可选实施方式中,在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台,包括:在第一检测平台对深度学习模型算法中的各网络层计算前,在第一检测平台中对深度学习模型的各网络层注册第一回调函数;其中,第一回调函数,用于将网络结构信息以及输入信息深拷贝至第二检测平台。
69.步骤220、在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台。
70.步骤230、获取第一检测平台执行各网络层计算,得到的第一运行结果。
71.步骤240、获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果。
72.步骤250、将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。
73.在上述实施方式的基础上,可选的,在在第一检测平台中对深度学习模型的各网络层注册第一回调函数之后,还包括:在第一检测平台中对深度学习模型的各网络层注册第二回调函数;其中,第二回调函数,用于获取第一检测平台执行各网络层的前向传播计算,得到的第一前向运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的前向传播计算,得到第二前向运行结果;将第一前向运行结果与第二前向运行结果进行比对,确定精度检测结果中的前向传播检测结果。
74.在上述实施方式的基础上,可选的,在在第一检测平台中对深度学习模型的各网络层注册第二回调函数之后,还包括:在第一检测平台中对深度学习模型的各网络层注册第三回调函数;其中,第三回调函数,用于在至少一次前向传播计算之后,获取第一检测平台执行各网络层反向传播计算,得到的第一反向运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的反向传播计算,得到第二反向运行结果;将第一反向运行结果与第二反向运行结果进行比对,确定精度检测结果中的反向传播检测结果。
75.步骤260、采用同步模式在第一检测平台和第二检测平台中,执行各网络层的计算,分别得到第一运行事件和第二运行事件。
76.其中,对于跨平台深度学习模型运行检测中的性能检测,需要提供跨软硬件平台的对比功能,可以帮助开发者识别和解决深度学习模型的性能瓶颈。提供跨软硬件平台的对比功能,需要给出每一个事件的时间基线;否则,无法确定该操作在运行时是否比预期更慢或更快,从而无法确定哪些操作是引起性能问题的根本原因。
77.例如,pytorch profiler(一种开源性能分析工具)可以显示单一软硬件平台在单次运行时每个操作的时间、内存使用情况和其他性能指标,但它没有提供对比功能。从而,不同软硬件平台或者同一软硬件平台不同运行之间的缺乏每个操作的时间对比,无法将某次运行的每个操作时间作为基线。这意味着开发者很难确定一个操作是否正常运行,因为他们无法确定该操作在运行时是否比预期更慢或更快。没有时间基线也意味着开发者无法确定哪些操作需要优化,因为他们无法确定哪些操作是引起性能问题的根本原因。
78.在本发明实施例中,可以对多平台运行的深度学习模型进行以时间基线为准的性
能比对。具体的,第一检测平台与第二检测平台运行深度学习模型时,可以保持两平台的所用数据和参数设置一致。可以采用同步模式在多平台中运行深度学习模型。其中,同步模式可以是在当前网络层通过阻塞代码执行,直至当前网络层的运行事件全部收集完毕,再将运行事件与代码执行时间对齐之后,再开始下一网络层的执行。收集运行事件可以是通过性能分析工具,例如,pytorch profiler工具。在深度学习模型执行中,可以通过开启数据保存通道,收集运行事件。例如,可以设置参数record_shapes为ture,对运行事件相关的信息进行保存。
79.步骤270、根据各第一运行事件和各第二运行事件分别对应的事件执行时间,确定各网络层中算子间的父子关系。
80.其中,事件执行时间可以包括算子开始时间、持续时间以及结束时间等。根据时间执行时间可以确定算子之间的执行前后顺序,以根据该执行前后顺序,确定算子间的父子关系。在确定父子关系时,可以先将各运行事件按照事件开始时间进行排序,生成事件算子列表,再确定算子间的父子关系。
81.具体的,在本发明实施例的一个可选实施方式中,根据各第一运行事件和各第二运行事件分别对应的事件执行时间,确定各网络层中算子间的父子关系,包括:根据事件执行时间,确定各算子的开始时间、结束时间以及持续时间;当第一算子的开始时间小于等于第二算子的开始时间、第一算子的结束时间大于等于第二算子的结束时间时,确定第一算子与第二算子满足父子条件;在满足父子条件的多个第一算子中,确定执行时间持续最短的第一算子作为第二算子的父算子,生成父子关系。
82.其中,父子关系可以是根据开始时间和持续时间确定的算子时间的最小包含关系。
83.步骤280、根据父子关系,生成分别与第一检测平台、第二检测平台对应的第一事件算子调用关系树、第二事件算子调用关系树。
84.其中,事件算子调用关系树可以是以字典结构存储的。
85.步骤290、对第一事件算子调用关系树和第二事件算子调用关系树,进行匹配合并,得到合并结果和差异结果。
86.其中,匹配合并可以是指将第一事件算子调用关系树和第二事件算子调用关系树中的算子进行匹配,确定相同算子,并将相同算子所对应的信息进行合并,得到合并结果。在匹配合并中,对于匹配不上的算子,可以直接生成差异结果进行输出。
87.具体的,在本发明实施例的一个可选实施方式中,对第一事件算子调用关系树和第二事件算子调用关系树,进行匹配合并,得到合并结果和差异结果,包括:根据第一事件算子调用关系树和第二事件算子调用关系树中的算子信息,确定匹配成功的第一目标算子;并对第一目标算子进行算子信息合并,得到合并结果;根据第一事件算子调用关系树和第二事件算子调用关系树中的算子信息,确定未匹配成功第二目标算子;并根据第二目标算子的算子信息,得到差异结果;其中,算子信息包括下述至少一项:算子名称、接口信息、数据形状、数据类型、事件时间、驱动时间、算子库计算时间、以及事件内算子调用树。
88.其中,在匹配合并中,可以通过判断算子名称是否一致、算子数据形状是否一致、以及算子数据类型是否一致中的一项或者多项,确定算子匹配结果。例如,当根据第一事件算子调用关系树的第一算子,可以在第二事件算子调用关系树中找到第二算子满足算子名
称一致、算子数据形状一致、以及算子数据类型一致时,可以确定第一算子和第二算子匹配成功,将第一算子和第二算子作为第一目标算子。否则,可以将第一算子作为第二目标算子。或者,可以按照相同或相似的方式,在第二事件算子调用关系树中确定算子与第一事件算子调用关系树中的算子进行匹配。
89.对于第一目标算子可以进行算子信息合并,得到合并结果。具体的,可以将算子名称、接口信息、数据形状、数据类型、事件时间、驱动时间、算子库计算时间、以及事件内算子调用树分别合并,得到合并结果。
90.差别结果可以包括未匹配成功的第二目标算子数量、以及第二目标算子名称。
91.步骤2100、根据合并结果进行运行性能比对,得到性能比对结果;并根据差异结果和性能比对结果,确定跨平台深度学习模型运行检测中的性能检测结果。
92.在本步骤中,可以以第一检测平台或者第二检测平台的执行结果为预期结果,进行运行性能比对。例如,可以指定第一检测平台对应的结果为预期结果,其具有预期事件时间,第二检测平台对应的结果为检测结果,其具有检测检测时间。可以确定预期时间与检测时间之间的差距时间,以及差距倍数。合并后的算子信息、差距时间、以及差距倍数可以作为单次调用信息。单次调用信息可以作为性能比对结果。
93.可选的,还可以根据算子信息进行事件次数统计,确定平均事件时间、平均驱动时间、平均算子库计算时间、平均差距时间以及平均差距倍数,作为细粒度统计信息。还可以根据算子信息进行事件次数统计,确定总事件时间、总驱动时间、总算子库计算时间、总差距时间以及总差距倍数,作为粗粒度统计信息。单次调用信息、细粒度统计信息以及粗粒度统计信息,均可以作为性能比对结果。
94.在本发明实施例中,可以将差异结果和性能比对结果以列表或者表格等形式进行展示,作为跨平台深度学习模型运行检测中的性能检测结果。
95.需要说明的是,步骤260至步骤2100可以是在步骤250之后执行,对跨平台深度学习模型运行进行性能检测。或者,步骤260至步骤2100,与步骤210至步骤250可以是并行执行,对跨平台深度学习模型运行进行性能检测。又或者,步骤260至步骤2100可以是在步骤210之前执行,对跨平台深度学习模型运行进行性能检测。本发明实施例对此不做具体限定。
96.本发明实施例的技术方案,通过在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台;获取第一检测平台执行各网络层计算,得到的第一运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果;将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果,解决了深度学习模型跨平台运行中的精度检测问题,可以保证多平台运行深度学习模型的一致性,避免累积误差,从而准确检测深度学习模型运行,以对深度学习模型进行可靠改进;此外,通过采用同步模式在第一检测平台和第二检测平台中,执行各网络层的计算,分别得到第一运行事件和第二运行事件;根据各第一运行事件和各第二运行事件分别对应的事件执行时间,确定各网络层中算子间的父子关系;根据父子关系,生成分别与第一检测平台、第二检测平台对应的第一事件算子调用关系树、第二事件算子调用关系树;对第一事件算子调用关系树和第二事件算子调用关系树,进
行匹配合并,得到合并结果和差异结果;根据合并结果进行运行性能比对,得到性能比对结果;并根据差异结果和性能比对结果,确定跨平台深度学习模型运行检测中的性能检测结果,解决了深度学习模型跨平台运行中的性能检测问题,可以对多平台中的运行结果进行比对,提供时间基线,以暴露模型的性能瓶颈;还可用于对比不同平台的优劣势,便于开发者快速定位性能瓶颈确定存在的问题,并根据算子信息确定引起性能问题的根本原因并制定优化方案。
97.实施例三:
98.图5是根据本发明实施例三提供的一种跨平台深度学习模型运行检测装置的结构示意图。如图5所示,该装置包括:第一检测平台确定模块510,信息深拷贝模块520,第一运行结果获取模块530,第二运行结果获取模块540,和精度检测结果确定模块550。其中:
99.第一检测平台确定模块510,用于在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;
100.信息深拷贝模块520,用于在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台;
101.第一运行结果获取模块530,用于获取第一检测平台执行各网络层计算,得到的第一运行结果;
102.第二运行结果获取模块540,用于获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果;
103.精度检测结果确定模块550,用于将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。
104.可选的,信息深拷贝模块520,包括:
105.第一回调函数注册单元,用于在第一检测平台对深度学习模型算法中的各网络层计算前,在第一检测平台中对深度学习模型的各网络层注册第一回调函数;
106.其中,第一回调函数,用于将网络结构信息以及输入信息深拷贝至第二检测平台。
107.可选的,该装置,还包括:
108.第二回调函数注册模块,用于在在第一检测平台中对深度学习模型的各网络层注册第一回调函数之后,在第一检测平台中对深度学习模型的各网络层注册第二回调函数;
109.其中,第二回调函数,用于获取第一检测平台执行各网络层的前向传播计算,得到的第一前向运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的前向传播计算,得到第二前向运行结果;将第一前向运行结果与第二前向运行结果进行比对,确定精度检测结果中的前向传播检测结果。
110.可选的,该装置,还包括:
111.第三回调函数注册模块,用于在在第一检测平台中对深度学习模型的各网络层注册第二回调函数之后,在第一检测平台中对深度学习模型的各网络层注册第三回调函数;
112.其中,第三回调函数,用于在至少一次前向传播计算之后,获取第一检测平台执行各网络层反向传播计算,得到的第一反向运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的反向传播计算,得到第二反向运行结果;将第一反向运行结果与第二反向运行结果进行比对,确定精度检测结果中的反向传播检测结果。
113.可选的,该装置,还包括:
114.运行事件确定模块,用于采用同步模式在第一检测平台和第二检测平台中,执行各网络层的计算,分别得到第一运行事件和第二运行事件;
115.父子关系确定模块,用于根据各第一运行事件和各第二运行事件分别对应的事件执行时间,确定各网络层中算子间的父子关系;
116.事件算子调用关系树生成模块,用于根据父子关系,生成分别与第一检测平台、第二检测平台对应的第一事件算子调用关系树、第二事件算子调用关系树;
117.匹配合并模块,用于对第一事件算子调用关系树和第二事件算子调用关系树,进行匹配合并,得到合并结果和差异结果;
118.性能检测结果确定模块,用于根据合并结果进行运行性能比对,得到性能比对结果;并根据差异结果和性能比对结果,确定跨平台深度学习模型运行检测中的性能检测结果。
119.可选的,父子关系确定模块,包括:
120.算子时间确定单元,用于根据事件执行时间,确定各算子的开始时间、结束时间以及持续时间;
121.父子条件确定单元,用于当第一算子的开始时间小于等于第二算子的开始时间、第一算子的结束时间大于等于第二算子的结束时间时,确定第一算子与第二算子满足父子条件;
122.父子关系确定单元,用于在满足父子条件的多个第一算子中,确定执行时间持续最短的第一算子作为第二算子的父算子,生成父子关系。
123.可选的,匹配合并模块,包括:
124.合并结果确定单元,用于根据第一事件算子调用关系树和第二事件算子调用关系树中的算子信息,确定匹配成功的第一目标算子;并对第一目标算子进行算子信息合并,得到合并结果;
125.差异结果确定单元,用于根据第一事件算子调用关系树和第二事件算子调用关系树中的算子信息,确定未匹配成功第二目标算子;并根据第二目标算子的算子信息,得到差异结果;
126.其中,算子信息包括下述至少一项:算子名称、接口信息、数据形状、数据类型、事件时间、驱动时间、算子库计算时间、以及事件内算子调用树。
127.本发明实施例所提供的跨平台深度学习模型运行检测装置可执行本发明任意实施例所提供的跨平台深度学习模型运行检测方法,具备执行方法相应的功能模块和有益效果。
128.实施例四:
129.图6示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
130.如图6所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连
接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
131.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
132.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如跨平台深度学习模型运行检测方法。
133.在一些实施例中,跨平台深度学习模型运行检测方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由rom 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的跨平台深度学习模型运行检测方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行跨平台深度学习模型运行检测方法。
134.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
135.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
136.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只
读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
137.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
138.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
139.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
140.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
141.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术特征:
1.一种跨平台深度学习模型运行检测方法,其特征在于,包括:在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;在所述第一检测平台对所述深度学习模型算法中的各网络层计算前,将各所述网络层的网络结构信息以及输入信息深拷贝至第二检测平台;获取所述第一检测平台执行各网络层计算,得到的第一运行结果;获取所述第二检测平台根据所述网络结构信息以及输入信息执行各所述网络层的计算,得到第二运行结果;将所述第一运行结果与所述第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。2.根据权利要求1所述的方法,其特征在于,在所述第一检测平台对所述深度学习模型算法中的各网络层计算前,将各所述网络层的网络结构信息以及输入信息深拷贝至第二检测平台,包括:在所述第一检测平台对所述深度学习模型算法中的各网络层计算前,在所述第一检测平台中对所述深度学习模型的各网络层注册第一回调函数;其中,所述第一回调函数,用于将网络结构信息以及输入信息深拷贝至第二检测平台。3.根据权利要求2所述的方法,其特征在于,在在所述第一检测平台中对所述深度学习模型的各网络层注册第一回调函数之后,还包括:在所述第一检测平台中对所述深度学习模型的各网络层注册第二回调函数;其中,所述第二回调函数,用于获取所述第一检测平台执行各网络层的前向传播计算,得到的第一前向运行结果;获取所述第二检测平台根据所述网络结构信息以及输入信息执行各所述网络层的前向传播计算,得到第二前向运行结果;将所述第一前向运行结果与所述第二前向运行结果进行比对,确定所述精度检测结果中的前向传播检测结果。4.根据权利要求3所述的方法,其特征在于,在在所述第一检测平台中对所述深度学习模型的各网络层注册第二回调函数之后,还包括:在所述第一检测平台中对所述深度学习模型的各网络层注册第三回调函数;其中,所述第三回调函数,用于在至少一次前向传播计算之后,获取所述第一检测平台执行各网络层反向传播计算,得到的第一反向运行结果;获取所述第二检测平台根据所述网络结构信息以及输入信息执行各所述网络层的反向传播计算,得到第二反向运行结果;将所述第一反向运行结果与所述第二反向运行结果进行比对,确定所述精度检测结果中的反向传播检测结果。5.根据权利要求1所述的方法,其特征在于,还包括:采用同步模式在所述第一检测平台和所述第二检测平台中,执行各所述网络层的计算,分别得到第一运行事件和第二运行事件;根据各所述第一运行事件和各所述第二运行事件分别对应的事件执行时间,确定各网络层中算子间的父子关系;根据所述父子关系,生成分别与所述第一检测平台、所述第二检测平台对应的第一事件算子调用关系树、第二事件算子调用关系树;对所述第一事件算子调用关系树和所述第二事件算子调用关系树,进行匹配合并,得到合并结果和差异结果;
根据所述合并结果进行运行性能比对,得到性能比对结果;并根据所述差异结果和所述性能比对结果,确定跨平台深度学习模型运行检测中的性能检测结果。6.根据权利要求5所述的方法,其特征在于,根据各所述第一运行事件和各所述第二运行事件分别对应的事件执行时间,确定各网络层中算子间的父子关系,包括:根据所述事件执行时间,确定各算子的开始时间、结束时间以及持续时间;当第一算子的开始时间小于等于第二算子的开始时间、所述第一算子的结束时间大于等于所述第二算子的结束时间时,确定所述第一算子与所述第二算子满足父子条件;在满足所述父子条件的多个第一算子中,确定执行时间持续最短的第一算子作为所述第二算子的父算子,生成父子关系。7.根据权利要求5所述的方法,其特征在于,对所述第一事件算子调用关系树和所述第二事件算子调用关系树,进行匹配合并,得到合并结果和差异结果,包括:根据所述第一事件算子调用关系树和所述第二事件算子调用关系树中的算子信息,确定匹配成功的第一目标算子;并对所述第一目标算子进行算子信息合并,得到合并结果;根据所述第一事件算子调用关系树和所述第二事件算子调用关系树中的算子信息,确定未匹配成功第二目标算子;并根据所述第二目标算子的算子信息,得到差异结果;其中,所述算子信息包括下述至少一项:算子名称、接口信息、数据形状、数据类型、事件时间、驱动时间、算子库计算时间、以及事件内算子调用树。8.一种跨平台深度学习模型运行检测装置,其特征在于,包括:第一检测平台确定模块,用于在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;信息深拷贝模块,用于在所述第一检测平台对所述深度学习模型算法中的各网络层计算前,将各所述网络层的网络结构信息以及输入信息深拷贝至第二检测平台;第一运行结果获取模块,用于获取所述第一检测平台执行各网络层计算,得到的第一运行结果;第二运行结果获取模块,用于获取所述第二检测平台根据所述网络结构信息以及输入信息执行各所述网络层的计算,得到第二运行结果;精度检测结果确定模块,用于将所述第一运行结果与所述第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。9.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的跨平台深度学习模型运行检测方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的跨平台深度学习模型运行检测方法。

技术总结
本发明实施例公开了一种跨平台深度学习模型运行检测方法、装置、设备及介质,涉及人工智能技术领域。该方法包括:在深度学习模型初始化后,确定执行深度学习模型算法的第一检测平台;在第一检测平台对深度学习模型算法中的各网络层计算前,将各网络层的网络结构信息以及输入信息深拷贝至第二检测平台;获取第一检测平台执行各网络层计算,得到的第一运行结果;获取第二检测平台根据网络结构信息以及输入信息执行各网络层的计算,得到第二运行结果;将第一运行结果与第二运行结果进行比对,确定跨平台深度学习模型运行检测中的精度检测结果。该方法可以保证多平台运行深度学习模型的一致性,避免累积误差,从而准确检测深度学习模型运行。学习模型运行。学习模型运行。


技术研发人员:席威 王黎明 陆炜
受保护的技术使用者:太初(无锡)电子科技有限公司
技术研发日:2023.06.06
技术公布日:2023/8/3
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐