基于异构平台的模型测试方法、异构芯片、设备及介质转让专利

申请号 : CN202311071431.2

文献号 : CN116841911B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 霍磊袁福生郑哲王连忠何凡付英春刘彬李明月贾建磊田志仲石丽月

申请人 : 北京智芯微电子科技有限公司

摘要 :

本说明书公开了一种基于异构平台的模型测试方法、异构芯片、设备及介质。其中,方法包括:响应于目标平台的选择操作,在至少一个端侧设备中确定与目标平台类型匹配的目标测试设备;目标测试设备上部署有目标模型测试程序,且提供有调用目标模型测试程序的测试接口;调用目标测试设备的目标测试接口以通过目标模型测试程序控制在目标测试设备上运行待测模型,得到端侧记录数据;控制在服务侧设备上运行初始模型,得到服务侧记录数据;根据端侧记录数据以及服务侧记录数据输出待测模型的测试结果。本说明书的实施例无需相关人员来编写测试所需的操作程序,直接调用预先封装好的标准化测试接口,便可实现对待测模型的测试过程,减少了测试时间。

权利要求 :

1.一种基于异构平台的模型测试方法,其特征在于,所述异构平台包括服务侧设备以及与所述服务侧设备通信连接的至少一个端侧设备;其中,所述服务侧设备的算力优于所述端侧设备的算力;所述方法包括:响应于目标平台的选择操作,在所述至少一个端侧设备中确定与所述目标平台类型匹配的目标测试设备;其中,所述目标测试设备上部署有目标模型测试程序,且提供有调用所述目标模型测试程序的测试接口;

调用所述目标测试设备的目标测试接口,以通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,得到端侧记录数据;

控制在所述服务侧设备上运行初始模型,得到服务侧记录数据;其中,所述待测模型为对所述初始模型进行压缩处理后得到的;

根据所述端侧记录数据以及所述服务侧记录数据输出所述待测模型的测试结果。

2.根据权利要求1所述的方法,其特征在于,在所述控制在所述服务侧设备上运行初始模型之前,所述方法还包括:从测试配置文件中读取所述初始模型的存储路径;

所述控制在所述服务侧设备上运行初始模型,包括:

基于所述初始模型的存储路径,控制在所述服务侧设备上运行所述初始模型。

3.根据权利要求1所述的方法,其特征在于,所述通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,包括:通过所述目标模型测试程序读取测试配置文件,从所述测试配置文件中读取所述待测模型的存储路径,并基于所述待测模型的存储路径,控制在所述目标测试设备上运行所述待测模型。

4.根据权利要求3所述的方法,其特征在于,所述测试配置文件包括预处理配置属性和后处理配置属性;所述待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元;所述控制在所述目标测试设备上运行所述待测模型,得到端侧记录数据,包括:控制所述端侧预处理单元基于所述预处理配置属性对预处理数据进行预处理,得到所述端侧推理单元的端侧输入数据;

控制所述端侧后处理单元基于所述后处理配置属性对所述端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果;其中,所述端侧记录数据包括所述端侧输入数据、所述端侧输出结果。

5.根据权利要求1所述的方法,其特征在于,所述端侧记录数据中的数据项包括端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个;所述服务侧记录数据中的数据项包括服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个;所述根据所述端侧记录数据以及所述服务侧记录数据输出所述待测模型的测试结果,包括:控制在服务侧设备上将所述端侧记录数据以及所述服务侧记录数据进行相应数据项的比对;

基于比对的结果生成所述待测模型的测试报告。

6.根据权利要求1所述的方法,其特征在于,所述目标测试设备挂载所述服务侧设备的共享数据目录;所述共享数据目录中存储有预处理数据;所述待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元;所述通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,得到端侧记录数据,至少包括以下任一:通过所述目标模型测试程序控制所述目标测试设备从所述共享数据目录中获取所述预处理数据;

控制所述端侧预处理单元对所述预处理数据进行预处理,得到端侧输入数据;

控制所述端侧推理单元基于所述端侧输入数据进行推理,得到端侧推理结果;

控制所述端侧后处理单元对所述端侧推理结果进行后处理,得到端侧输出结果;

其中,所述端侧记录数据包括所述端侧输入数据、所述端侧推理结果以及所述端侧输出结果中任一个。

7.根据权利要求6所述的方法,其特征在于,所述初始模型包括服务侧预处理单元、服务侧推理单元、服务侧后处理单元;所述控制在所述服务侧设备上运行初始模型,得到服务侧记录数据,至少包括以下任一:控制所述服务侧预处理单元对所述预处理数据进行预处理,得到服务侧输入数据;

控制所述服务侧推理单元基于所述服务侧输入数据进行推理,得到服务侧推理结果;

控制所述服务侧后处理单元对所述服务侧推理结果进行后处理,得到服务侧输出结果;

其中,所述服务侧记录数据包括所述服务侧输入数据、所述服务侧推理结果以及所述服务侧输出结果中任一个。

8.根据权利要求1至7任一项所述的方法,其特征在于,所述服务侧设备的处理器为图形处理器GPU,所述端侧设备的处理器为嵌入式神经网络处理器NPU。

9.一种基于异构平台的模型测试装置,其特征在于,所述异构平台包括服务侧设备以及与所述服务侧设备通信连接的至少一个端侧设备;其中,所述服务侧设备的算力优于所述端侧设备的算力;所述装置包括:选择模块,用于响应于目标平台的选择操作,在所述至少一个端侧设备中确定与所述目标平台类型匹配的目标测试设备;其中,所述目标测试设备上部署有目标模型测试程序,且提供有调用所述目标模型测试程序的测试接口;

端侧运行模块,用于调用所述目标测试设备的目标测试接口,以通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,得到端侧记录数据;

服务侧运行模块,用于控制在所述服务侧设备上运行初始模型,得到服务侧记录数据;

其中,所述待测模型为对所述初始模型进行压缩处理后得到的;

测试结果输出模块,用于根据所述端侧记录数据以及所述服务侧记录数据输出所述待测模型的测试结果。

10.根据权利要求9所述的装置,其特征在于,所述模型测试装置还包括:路径读取模块,用于从测试配置文件中读取所述初始模型的存储路径;

所述服务侧运行模块还用于基于所述初始模型的存储路径,控制在所述服务侧设备上运行所述初始模型。

11.根据权利要求9所述的装置,其特征在于,所述端侧运行模块还用于:通过所述目标模型测试程序读取测试配置文件,从所述测试配置文件中读取所述待测模型的存储路径,并基于所述待测模型的存储路径,控制在所述目标测试设备上运行所述待测模型。

12.根据权利要求11所述的装置,其特征在于,所述测试配置文件包括预处理配置属性和后处理配置属性;所述待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元;

所述端侧运行模块还用于:

控制所述端侧预处理单元基于所述预处理配置属性对预处理数据进行预处理,得到所述端侧推理单元的端侧输入数据;

控制所述端侧后处理单元基于所述后处理配置属性对所述端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果;其中,所述端侧记录数据包括所述端侧输入数据、所述端侧输出结果。

13.根据权利要求9所述的装置,其特征在于,所述端侧记录数据中的数据项包括端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个;所述服务侧记录数据中的数据项包括服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个;所述测试结果输出模块还用于:控制在服务侧设备上将所述端侧记录数据以及所述服务侧记录数据进行相应数据项的比对;

基于比对的结果生成所述待测模型的测试报告。

14.一种异构芯片,其特征在于,包括图形处理器GPU、嵌入式神经网络处理器NPU、存储器以及存储在所述存储器中且被配置为由所述图形处理器GPU和所述嵌入式神经网络处理器NPU执行的基于异构平台的模型测试程序,所述图形处理器GPU和所述嵌入式神经网络处理器NPU执行所述基于异构平台的模型测试程序时实现如权利要求1至8中任意一项所述的基于异构平台的模型测试方法。

15.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的基于异构平台的模型测试程序,所述处理器执行所述基于异构平台的模型测试程序时实现如权利要求1至8中任意一项所述的基于异构平台的模型测试方法。

16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的基于异构平台的模型测试程序,其中,在所述基于异构平台的模型测试程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至8中任意一项所述的基于异构平台的模型测试方法。

说明书 :

基于异构平台的模型测试方法、异构芯片、设备及介质

技术领域

[0001] 本说明书涉及人工智能技术领域,尤其涉及一种基于异构平台的模型测试方法、异构芯片、设备及介质。

背景技术

[0002] 近年来,随着计算机性能的快速提升和深度学习方法的不断完善,人工智能领域取得了重大的突破。人们通过深度学习方法在很多任务上都取得了十分优秀的效果,但是深度学习模型普遍存在着计算量大的问题。模型在训练时,可以借助算力强大的设备来实现数值运算能力的加速。但在很多使用场景中,模型的实际部署只能在嵌入式平台中。受限于嵌入式平台性能和成本等原因,需要对模型进行压缩等处理才能部署到嵌入式平台进行使用。
[0003] 压缩处理的过程会给模型带来一定的精度损失。人们往往需要详细了解这种损失来评估嵌入式平台中模型的能力是否满足预期。然而,由于嵌入式平台芯片架构的限制,很多深度学习算子无法在嵌入式平台中直接执行。在这种情况下,相关技术中通常是由相关人员来编写对应的操作程序。耗费大量时间且存在一定的学习成本。

发明内容

[0004] 本说明书旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本说明书的第一个目的在于提出一种基于异构平台的模型测试方法。
[0005] 本说明书第二个目的在于提出一种基于异构平台的模型测试装置。
[0006] 本说明书第三个目的在于提出一种异构芯片。
[0007] 本说明书第四个目的在于提出一种电子设备。
[0008] 本说明书第五个目的在于提出一种计算机可读存储介质。
[0009] 为达上述目的,本说明书第一方面实施例提出了一种基于异构平台的模型测试方法。所述异构平台包括服务侧设备以及与所述服务侧设备通信连接的至少一个端侧设备;其中,所述服务侧设备的算力优于所述端侧设备的算力;所述方法包括:响应于目标平台的选择操作,在所述至少一个端侧设备中确定与所述目标平台类型匹配的目标测试设备;其中,所述目标测试设备上部署有目标模型测试程序,且提供有调用所述目标模型测试程序的测试接口;调用所述目标测试设备的目标测试接口,以通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,得到端侧记录数据;控制在所述服务侧设备上运行初始模型,得到服务侧记录数据;其中,所述待测模型为对所述初始模型进行压缩处理后得到的;根据所述端侧记录数据以及所述服务侧记录数据输出所述待测模型的测试结果。
[0010] 在本说明书的一些实施例中,在所述控制在所述服务侧设备上运行初始模型之前,所述方法还包括:从测试配置文件中读取所述初始模型的存储路径;所述控制在所述服务侧设备上运行初始模型,包括:基于所述初始模型的存储路径,控制在所述服务侧设备上运行所述初始模型。
[0011] 在本说明书的一些实施例中,所述通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,包括:通过所述目标模型测试程序读取测试配置文件,从所述测试配置文件中读取所述待测模型的存储路径,并基于所述待测模型的存储路径,控制在所述目标测试设备上运行所述待测模型。
[0012] 在本说明书的一些实施例中,所述测试配置文件包括预处理配置属性和后处理配置属性;所述待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元;所述控制在所述目标测试设备上运行所述待测模型,得到端侧记录数据,包括:控制所述端侧预处理单元基于所述预处理配置属性对预处理数据进行预处理,得到所述端侧推理单元的端侧输入数据;控制所述端侧后处理单元基于所述后处理配置属性对所述端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果;其中,所述端侧记录数据包括所述端侧输入数据、所述端侧输出结果。
[0013] 在本说明书的一些实施例中,所述端侧记录数据中的数据项包括端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个;所述服务侧记录数据中的数据项包括服务侧预处理结果、服务侧推理耗时、服务侧推理结果、服务侧预处理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个;所述根据所述端侧记录数据以及所述服务侧记录数据输出所述待测模型的测试结果,包括:控制在服务侧设备上将所述端侧记录数据以及所述服务侧记录数据进行相应数据项的比对;基于比对的结果生成所述待测模型的测试报告。
[0014] 在本说明书的一些实施例中,所述目标测试设备挂载所述服务侧设备的共享数据目录;所述共享数据目录中存储有预处理数据;所述待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元;所述通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,得到端侧记录数据,至少包括以下任一:通过所述目标模型测试程序控制所述目标测试设备从所述共享数据目录中获取所述预处理数据;控制所述端侧预处理单元对所述预处理数据进行预处理,得到端侧输入数据;控制所述端侧推理单元基于所述端侧输入数据进行推理,得到端侧推理结果;控制所述端侧后处理单元对所述端侧推理结果进行后处理,得到端侧输出结果;其中,所述端侧记录数据包括所述端侧输入数据、所述端侧推理结果以及所述端侧输出结果中任一个。
[0015] 在本说明书的一些实施例中,所述初始模型包括服务侧预处理单元、服务侧推理单元、服务侧后处理单元;所述控制在所述服务侧设备上运行初始模型,得到服务侧记录数据,至少包括以下任一:控制所述服务侧预处理单元对所述预处理数据进行预处理,得到服务侧输入数据;控制所述服务侧推理单元基于所述服务侧输入数据进行推理,得到服务侧推理结果;控制所述服务侧后处理单元对所述服务侧推理结果进行后处理,得到服务侧输出结果;其中,所述服务侧记录数据包括所述服务侧输入数据、所述服务侧推理结果以及所述服务侧输出结果中任一个。
[0016] 在本说明书的一些实施例中,所述服务侧设备的处理器为图形处理器GPU,所述端侧设备的处理器为嵌入式神经网络处理器NPU。
[0017] 为达上述目的,本说明书第二方面实施例提出了一种基于异构平台的模型测试装置。所述异构平台包括服务侧设备以及与所述服务侧设备通信连接的至少一个端侧设备;其中,所述服务侧设备的算力优于所述端侧设备的算力;所述装置包括:选择模块,用于响应于目标平台的选择操作,在所述至少一个端侧设备中确定与所述目标平台类型匹配的目标测试设备;其中,所述目标测试设备上部署有目标模型测试程序,且提供有调用所述目标模型测试程序的测试接口;端侧运行模块,用于调用所述目标测试设备的目标测试接口,以通过所述目标模型测试程序控制在所述目标测试设备上运行待测模型,得到端侧记录数据;服务侧运行模块,用于控制在所述服务侧设备上运行初始模型,得到服务侧记录数据;
其中,所述待测模型为对所述初始模型进行压缩处理后得到的;测试结果输出模块,用于根据所述端侧记录数据以及所述服务侧记录数据输出所述待测模型的测试结果。
[0018] 在本说明书的一些实施例中,所述模型测试装置还包括:路径读取模块,用于从测试配置文件中读取所述初始模型的存储路径;所述服务侧运行模块还用于基于所述初始模型的存储路径,控制在所述服务侧设备上运行所述初始模型。
[0019] 在本说明书的一些实施例中,所述端侧运行模块还用于:通过所述目标模型测试程序读取测试配置文件,从所述测试配置文件中读取所述待测模型的存储路径,并基于所述待测模型的存储路径,控制在所述目标测试设备上运行所述待测模型。
[0020] 在本说明书的一些实施例中,所述测试配置文件包括预处理配置属性和后处理配置属性;所述待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元;所述端侧运行模块还用于:控制所述端侧预处理单元基于所述预处理配置属性对预处理数据进行预处理,得到所述端侧推理单元的端侧输入数据;控制所述端侧后处理单元基于所述后处理配置属性对所述端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果;其中,所述端侧记录数据包括所述端侧输入数据、所述端侧输出结果。
[0021] 在本说明书的一些实施例中,所述端侧记录数据中的数据项包括端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个;所述服务侧记录数据中的数据项包括服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个;所述测试结果输出模块还用于:控制在服务侧设备上将所述端侧记录数据以及所述服务侧记录数据进行相应数据项的比对;基于比对的结果生成所述待测模型的测试报告。
[0022] 为达上述目的,本说明书第三方面实施例提出了一种异构芯片,该异构芯片包括图形处理器GPU、嵌入式神经网络处理器NPU、存储器以及存储在所述存储器中且被配置为由所述图形处理器GPU和所述嵌入式神经网络处理器NPU执行的基于异构平台的模型测试程序,所述图形处理器GPU和所述嵌入式神经网络处理器NPU执行所述基于异构平台的模型测试程序时实现如第一方面中任意一项所述的基于异构平台的模型测试方法。
[0023] 为达上述目的,本说明书第四方面实施例提出了一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的基于异构平台的模型测试程序,所述处理器执行所述基于异构平台的模型测试程序时实现如第一方面中任意一项所述的基于异构平台的模型测试方法。
[0024] 为达上述目的,本说明书第五方面实施例提出了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的基于异构平台的模型测试程序,其中,在所述基于异构平台的模型测试程序运行时控制所述计算机可读存储介质所在设备执行如第一方面中任意一项所述的基于异构平台的模型测试方法。
[0025] 通过上述实施例,端侧设备预先部署有对应的模型测试程序,并对外提供了标准化的测试接口。在进行模型测试时,相关测试人员仅需提供初始模型和压缩处理后的待测模型即可。通过目标测试设备的目标测试接口向目标模型测试程序发送启动指令,以控制目标测试设备执行目标模型测试程序来完成目标测试设备中待测模型的测试过程,获取端侧记录数据。通过控制服务侧设备直接执行初始模型来获取服务侧记录数据。继而,根据端侧记录数据和服务侧记录数据便可确定待测模型的测试结果。本说明书的实施例在对模型进行测试时,无需相关人员来编写测试所需的操作程序,直接调用预先封装好的标准化测试接口,便可实现对待测模型的测试过程,减少了测试时间。
[0026] 本说明书附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本说明书的实践了解到。

附图说明

[0027] 图1为本说明书实施方式提供的异构平台的示意图;
[0028] 图2为根据本说明书实施例的基于异构平台的模型测试方法的流程图;
[0029] 图3a为根据本说明书一个实施例的服务侧侧设备运行初始模型的示意图;
[0030] 图3b为根据本说明书一个实施例的端侧设备运行待测模型的示意图;
[0031] 图4为根据本说明书一个实施例的模型测试方法的流程图;
[0032] 图5为根据本说明书一个实施例的GPU处理器对于浮点推理和定点推理的算力示意图;
[0033] 图6为根据本说明书实施例的基于异构平台的模型测试装置的结构示意图;
[0034] 图7为本说明书实施方式提供一种电子设备的结构示意图。

具体实施方式

[0035] 下面详细描述本说明书的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本说明书,而不能理解为对本说明书的限制。
[0036] 近年来,随着计算机性能的快速提升和深度学习方法的不断完善,人工智能领域取得了重大的突破。人们通过深度学习方法在很多任务上都取得了十分优秀的效果。但是深度学习模型普遍存在着计算量大的问题,模型在训练时,可以借助算力强大的平台来实现数值运算能力的加速。但在很多使用场景中,模型的实际部署只能在嵌入式平台中。
[0037] 受限于嵌入式平台的性能、成本等原因,模型在部署前需要进行压缩,将轻量级的模型部署在嵌入式平台中。然而,压缩过程可能会给模型带来一定的精度损失。工作人员需要详细了解这种损失来评估模型能力。
[0038] 然而,由于嵌入式平台芯片架构的限制,很多深度学习算子无法在嵌入式平台中直接执行。在这种情况下,相关技术中通常是由相关人员来编写对应的操作程序。耗费大量时间且存在一定的学习成本。并且,目前较多的嵌入式平台仅支持固定的编程语言,且各个嵌入式平台的接口差别较大,这就使得对嵌入式平台中模型的精度、速度等的评估更加耗费时间。
[0039] 本说明书实施方式提出了一种基于异构平台的模型测试方法的场景示例。基于异构平台的模型测试方法应用于图1所示的异构平台中。请参阅图1,异构平台包括服务器110和若干嵌入式平台120。其中,服务器110为服务侧设备,嵌入式平台120作为端侧设备。服务器110的处理器的算力优于嵌入式平台120的处理器的算力。示例性地,服务器110的处理器可以为图形处理器GPU,嵌入式平台的处理器为嵌入式神经网络处理器NPU。
[0040] 基于业务实际需求,需要在嵌入式平台部署初始模型所具备的功能。而由于嵌入式平台的算力较低,无法直接运行初始模型。因此,可对初始模型进行压缩处理得到轻量化的模型,以在嵌入式平台运行轻量化的模型来实现初始模型的同等功能。然而,由于对初始模型进行压缩处理会对模型带来一定的精度损失。因此,在真正在嵌入式平台部署并运行压缩后的轻量化模型之前,需要对压缩后的轻量化的模型进行性能测试,以确定其精度损失是否在容许范围内。
[0041] 因此,在进行测试之前,需要先准备好初始模型和待测模型。待测模型便是对初始模型进行压缩处理后得到的。初始模型部署在服务侧设备中。待测模型可预先部署在端侧设备中,也可先部署在服务侧设备中,然后将服务侧设备中存储该待测模型的程序的文件夹挂载到端侧设备的指定目录下。
[0042] 由于服务器110的算力较优,因此,可直接将服务器110作为测试平台来控制模型测试流程。也即服务器110同时作为测试平台与服务侧设备。
[0043] 示例性地,用户可根据业务测试需求,在测试平台选择要进行模型测试的目标平台。目标平台为图1中若干嵌入式平台的任一个。测试平台响应于目标平台的选择操作,在至少一个端侧设备中确定与目标平台类型匹配的目标测试设备。目标平台类型可以为目标平台的名称标识等。其中,目标测试设备上部署有目标模型测试程序,且提供有调用目标模型测试程序的测试接口。目标模型测试程序为测试人员针对目标测试设备的硬件架构,预先编写的用于控制目标测试设备测试待测模型的测试流程的测试程序。在进行测试之前,已预先部署在目标测试设备中,并将目标测试设备的测试过程所需的操作和功能接口封装为一个对外的测试接口,即目标测试设备的目标测试接口。
[0044] 测试平台调用目标测试设备的目标测试接口,以控制目标测试设备执行目标模型测试程序来控制在目标测试设备上运行待测模型,得到端侧记录数据。测试平台直接控制服务侧设备运行初始模型,得到服务侧记录数据。
[0045] 测试平台根据端侧记录数据和服务侧记录数据的比对情况输出待测模型的测试结果,以确定待测模型是否符合预期标准。
[0046] 图2为本说明书实施例提供的基于异构平台的模型测试方法的流程图。异构平台包括服务侧设备以及与服务侧设备通信连接的至少一个端侧设备。其中,服务侧设备的算力优于端侧设备的算力。请参阅图2,该模型测试方法包括:
[0047] S210,响应于目标平台的选择操作,在至少一个端侧设备中确定与目标平台类型匹配的目标测试设备。
[0048] 其中,目标测试设备上部署有目标模型测试程序,且提供有调用目标模型测试程序的测试接口。
[0049] S220,调用目标测试设备的目标测试接口,以通过目标模型测试程序控制在目标测试设备上运行待测模型,得到端侧记录数据。
[0050] S230,控制在服务侧设备上运行初始模型,得到服务侧记录数据。
[0051] 其中,待测模型为对初始模型进行压缩处理后得到的。
[0052] S240,根据端侧记录数据以及服务侧记录数据输出待测模型的测试结果。
[0053] 在本说明书的实施例中,异构平台包括服务侧设备以及与服务侧设备通信连接的至少一个端侧设备。其中,服务侧设备的算力优于端侧设备的算力。优于服务侧设备的算力较优,因此,可以直接将服务侧设备作为测试平台,以控制服务侧设备执行初始模型和控制端侧设备执行待测模型。
[0054] 端侧设备中已预先部署有对应的模型测试程序,且对外提供有调用模型测试程序的测试接口。模型测试程序是基于端侧设备的硬件架构,将端侧设备的测试过程所需的操作和功能接口封装为一个对外的测试接口。在本说明书的实施例中,若干端侧设备都部署有对应的模型测试程序,并均对外提供有测试接口,且所有端侧设备的测试接口均为标准化接口。在进行测试时,测试平台通过测试接口便可与端侧设备实现传递数据、命令或请求。
[0055] 在进行模型测试之前,仅需相关人员准备初始模型和待测模型。其中,待测模型是对初始模型进行压缩处理后得到的。示例性地,可以使用各种技术来减少初始模型的参数数量,如参数剪枝、低秩分解和稀疏矩阵等。这些压缩方法可以减少初始模型的存储空间,并降低计算需求,得到端侧设备能够支持运行的待测模型。压缩处理方法的选择取决于具体的应用场景和资源限制。在进行压缩处理时,需要权衡模型的准确性和轻量化的效果,并根据实际需求选择合适的方法和策略。
[0056] 具体地,测试平台响应于目标平台的选择操作,在至少一个端侧设备中确定与目标平台类型匹配的目标测试设备。示例性地,端侧设备可以为嵌入式平台。假若多个端侧设备包括A嵌入式平台、B嵌入式平台和C嵌入式平台。针对三个嵌入式平台均已预先部署有对应的模型测试程序。且在测试平台配置有对应的连接配置文件。连接配置文件中配置有每个端侧设备对应的的平台类型和对应的接口连接信息。
[0057] 在进行测试时,可将三个嵌入式平台在测试平台进行展示,以供相关人员选择要对哪个平台进行测试。响应于目标平台的选择操作,确定目标平台对应的类型。例如,相关人员选择了A嵌入式平台,A嵌入式平台对应的类型为A类型。则测试平台可在连接配置文件中确定对应A类型的端侧设备为目标测试设备。需要说明的是,可以确定嵌入式平台的名称作为其对应的平台类型,也可确定指定标识作为平台类型。平台类型是嵌入式平台的唯一标识。
[0058] 测试平台基于连接配置文件中的目标测试设备对应的接口连接信息调用目标测试设备的目标测试接口,以通过目标测试接口与端侧设备交互传递数据、命令或请求。继而,测试平台可通过目标测试接口向目标测试设备中的目标模型测试程序发送启动命令,以控制目标测试设备执行目标模型测试程序,从而是目标模型测试程序控制在目标测试设备上运行待测模型,得到待测模型执行过程中和/或执行结束后的各种记录数据作为端侧记录数据,例如端侧运行耗时、端侧运行结果数据等。
[0059] 测试平台控制服务侧设备运行初始模型,得到服务侧记录数据,例如服务侧运行耗时、服务侧运行结果数据等。在本说明书的实施例中,服务侧设备即可作为测试平台,即测试平台控制自身运行初始模型。
[0060] 继而,根据获取到的端侧记录数据和服务侧记录数据进行比对,确定待测模型在处理速度、处理精度等方面是否在预期标准内。
[0061] 通过上述实施例,端侧设备预先部署有对应的模型测试程序,并对外提供了标准化的测试接口。在进行模型测试时,相关测试人员仅需提供初始模型和压缩处理后的待测模型即可。通过目标测试设备的目标测试接口向目标模型测试程序发送启动指令,以控制目标测试设备执行目标模型测试程序来完成目标测试设备中待测模型的测试过程,获取端侧记录数据。通过控制服务侧设备直接执行初始模型来获取服务侧记录数据。继而,根据端侧记录数据和服务侧记录数据便可确定待测模型的测试结果。本说明书的实施例在对模型进行测试时,无需再需要相关人员来编写测试所需的操作程序,直接调用预先封装好的标准化测试接口,便可实现对待测模型的测试过程,减少了测试时间。
[0062] 在本说明书的一些实施例中,在控制在服务侧设备上运行初始模型之前,模型测试方法还包括:从测试配置文件中读取初始模型的存储路径。控制在服务侧设备上运行初始模型,包括:基于初始模型的存储路径,控制在服务侧设备上运行初始模型。
[0063] 在本说明书的实施例中,相关人员除提供初始模型和待测模型之外,还需要基于模型的实际情况填写对应的测试配置文件。测试配置文件中至少要包括初始模型的名称和初始模型的存储路径。初始模型一般情况部署在服务侧设备,初始模型的存储路径为服务侧设备中存储初始模型的文件路径。
[0064] 在控制在服务侧设备上运行初始模型前,先读取测试配置文件以读取初始模型的存储路径,基于存储路径,控制服务侧设备运行初始模型。
[0065] 在本说明书的一些实施例中,通过目标模型测试程序控制在目标测试设备上运行待测模型,包括:通过目标模型测试程序读取测试配置文件,从测试配置文件中读取待测模型的存储路径,并基于待测模型的存储路径,控制在目标测试设备上运行待测模型。
[0066] 测试配置文件一般是存储在测试平台的,在本说明书的实施例中,测试配置文件可以直接存储在服务侧设备中。在控制目标测试设备运行待测模型之前,服务侧设备通过目标测试接口将测试配置文件和待测模型传送给端侧设备。端侧设备基于测试配置文件中配置的存储路径将待测模型存储在目标测试设备的对应目录中。
[0067] 在目标测试设备执行目标模型测试程序后,目标模型测试程序首先会读取测试配置文件,从测试配置文件中读取待测模型的存储路径。然后,基于待测模型的存储路径控制在目标测试设备上运行待测模型。
[0068] 在另一个实施方式中,服务侧设备也可通过远程网络连接协议,例如安全外壳协议(Secure Shell)或Telnet网络协议来与端侧设备进行远程连接。其中,Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。然后配置端侧设备挂载服务侧设备中存储测试配置文件的文件夹和存储待测模型的文件夹到指定目录上。端侧设备便可直接访问测试配置文件所在的文件夹和待测模型所在的文件夹,以获取测试配置文件和待测模型。
[0069] 在本说明书的一些实施例中,测试配置文件包括预处理配置属性和后处理配置属性。待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元。控制在目标测试设备上运行待测模型,得到端侧记录数据,包括:控制端侧预处理单元基于预处理配置属性对预处理数据进行预处理,得到端侧推理单元的端侧输入数据。控制端侧后处理单元基于后处理配置属性对端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果。其中,端侧记录数据包括端侧输入数据、端侧输出结果。
[0070] 在一些情况中,有些模型除了对输入数据进行推理分析外,还可能会需要预先对输入数据进行一定的预处理,在模型对数据推理分析后,在对推理结果进行一定的后处理。示例性地,如专门用于处理具有网格结构数据(如图像和视频)的任务的卷积神经网络(Convolutional Neural Network,CNN),主要被用于图像分类、物体检测、语义分割等任务。请参阅图3a,在应用CNN类初始模型时,通常需要对初始数据中的图像进行等比缩放、归一化等预处理。然后,该模型对预处理后的数据进行浮点推理得到张量(Tensor)数据。基于浮点推理后得到的张量(Tensor)数据还需要做后处理,例如基于张量(Tensor)数据确定图像或视频中是否存在指定对象,或图像中是否存在危险物品等等。请查阅图3b,对应为CNN类待测模型的处理过程,首先也是对初始数据中的图像进行等比缩放、归一化等预处理。然后,对预处理后的数据进行量化处理,再利用压缩处理后的模型对预处理后的数据进行定点推理得到张量(Tensor)数据。继而,对张量(Tensor)数据进行反量化处理。然后,对反量化处理后的数据进行后处理,例如确定图像或视频中是否存在指定对象,或图像中是否存在危险物品等等。
[0071] 需要说明的是,进行测试时,初始模型和待测模型所使用的初始数据是相同的。两个模型的预处理过程和后处理过程也是相同的。初始模型在服务侧设备运行时,由于计算资源和功耗方面不受限,一般采用浮点推理的方式。而端侧设备在计算资源和功耗方面能力较低,因此,待测模型在端侧设备运行时通常采用定点推理的方式。
[0072] 因此,针对上述模型,可将待测模型分为三个处理单元,分别为端侧预处理单元、端侧推理单元、端侧后处理单元。
[0073] 在进行模型测试之前,相关人员还需要根据模型的特性和需求来填写测试配置文件。在测试配置文件中配置初始模型和待测模型的预处理阶段的属性信息和后处理阶段的属性信息,及预处理配置属性和后处理配置属性。由于待测模型本质功能属性是与初始模型相同的,因此待测模型和初始模型是共用测试配置文件中的预处理配置属性和后处理配置属性的。
[0074] 控制在目标测试设备上运行待测模型,得到端侧记录数据包括:首先目标模型测试程序读取测试配置文件中的预处理配置属性和后处理配置属性,并将预处理配置属性和后处理配置属性发送给待测模型。待测模型运行过程中,控制端侧预处理单元基于预处理配置属性对预处理数据进行预处理,得到端侧推理单元的端侧输入数据。控制端侧后处理单元基于后处理配置属性对端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果。
[0075] 可以理解的是,预处理数据即前述初始数据。端侧输入数据即对初始数据进行预处理后的数据。端侧推理单元一般是采用定点推理的方式对端侧输入数据进行推理得到端侧推理结果。端侧推理结果包括张量(Tensor)数据。
[0076] 其中,端侧记录数据包括端侧输入数据、端侧输出结果。在一些实施例中,端侧记录数据也可包括端侧推理结果。
[0077] 在本说明书的一些实施例中,端侧记录数据中的数据项包括端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个。服务侧记录数据中的数据项包括服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个。根据端侧记录数据以及服务侧记录数据输出待测模型的测试结果,包括:控制在服务侧设备上将端侧记录数据以及服务侧记录数据进行相应数据项的比对。基于比对的结果生成待测模型的测试报告。
[0078] 在一些情况中,对待测模型的测试考察主要体现在处理速度和处理精度上。处理速度可以通过待测模型和初始模型在各阶段的处理耗时上的比较来体现,处理精度可以通过待测模型和初始模型在各阶段处理结果上的差异情况来体现。
[0079] 在本说明书的实施例中,初始模型和待测模型均包括预处理阶段、预测阶段和后处理阶段。因此,在目标测试设备执行待测模型的过程中,可记录端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个作为端侧记录数据。在服务测设备执行初始模型的过程,可记录服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个作为服务测记录数据。
[0080] 控制在服务测设备上将端侧记录数据和服务侧记录数据进行相应数据项的比对可以包括:将端侧预处理数据与服务侧预处理数据进行比对、将端侧预处理耗时与服务侧预处理耗时进行比对、将端侧推理结果和服务侧推理结果进行比对、将端侧推理耗时和服务侧推理耗时进行比对、将端侧后处理结果与服务侧后处理结果进行比对、将端侧后处理耗时与服务侧后处理耗时进行比对。
[0081] 继而,基于端侧预处理数据与服务侧预处理数据的比对结果确定待测模型的端侧预处理单元的处理精度;基于端侧预处理耗时与服务侧预处理耗时比对结果确定端侧预处理单元的处理速度;基于端侧推理结果和服务侧推理结果的比对结果确定端侧推理单元的处理精度;基于端侧推理耗时和服务侧推理耗时的比对结果确定端侧推理单元的处理速度;基于端侧后处理结果与服务侧后处理结果的比对结果确定端侧后处理单元的处理精度;基于端侧后处理耗时与服务侧后处理耗时的比对结果确定端侧后处理单元的处理速度。基于上述比对结果便可生成待测模型的测试报告。
[0082] 需要说明的是,端侧后处理结果和服务侧后处理结果的比对指标是根据初始模型的模型类别来进行确定的。示例性地,检测类模型、分割类模型一般将平均精度(mAP)作为比对指标;分类模型一般采用准确率、召回率等作为比对指标。
[0083] 在本说明书的实施例中,可在测试配置文件中来配置模型类型,用于表示测试的初始模型和待测模型的类型,例如检测模型、分类模型、分割模型、时序模型等等。对应不同的模型类型配置有不同的评估指标。在服务侧设备基于端侧记录数据和服务侧记录数据进行比对时,可基于测试配置文件中的模型类型来选择比对时采用的评估指标。
[0084] 在本说明书的一些实施例中,目标测试设备挂载服务侧设备的共享数据目录。共享数据目录中存储有预处理数据;待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元。通过目标模型测试程序控制在目标测试设备上运行待测模型,得到端侧记录数据,至少包括以下任一:通过目标模型测试程序控制目标测试设备从共享数据目录中获取预处理数据。控制端侧预处理单元对预处理数据进行预处理,得到端侧输入数据。控制端侧推理单元基于端侧输入数据进行推理,得到端侧推理结果。控制端侧后处理单元对端侧推理结果进行后处理,得到端侧输出结果。其中,端侧记录数据包括端侧输入数据、端侧推理结果以及端侧输出结果中任一个。
[0085] 在本说明书的实施例中,待测模型和初始模型使用相同的预处理数据,比对结果才有参考价值。而为了减少预处理数据的存储和移植所占用的测试时间和存储空间,可将预处理数据存储在服务侧设备的共享数据目录中。目标测试设备通过挂载服务侧设备的共享数据目录,便可在测试过程中直接读取共享数据目录中的预处理数据。
[0086] 具体地,可基于测试配置文件中预处理数据对应的存储地址,通过目标模型测试程序控制目标测试设备从共享数据目录获取预处理数据。控制端侧预处理单元对预处理数据进行预处理,得到端侧推理单元的端侧输入数据。继而,通过目标模型测试程序控制端侧推理单元基于端侧输入数据进行定点推理,得到端侧推理结果。控制端侧后处理单元对端侧推理结果进行后处理,得到端侧输出结果。在上述过程中,可将端侧输入数据作为端侧预处理结果,并作为端侧记录数据进行记录。端侧记录数据还可以包括端侧推理结果以及端侧输出结果。其中,端侧输出结果即端侧后处理结果。
[0087] 在本说明书的一些实施例中,初始模型包括服务侧预处理单元、服务侧推理单元、服务侧后处理单元。控制在服务侧设备上运行初始模型,得到服务侧记录数据,至少包括以下任一:控制服务侧预处理单元对预处理数据进行预处理,得到服务侧输入数据。控制服务侧推理单元基于服务侧输入数据进行推理,得到服务侧推理结果。控制服务侧后处理单元对服务侧推理结果进行后处理,得到服务侧输出结果。其中,服务侧记录数据包括服务侧输入数据、服务侧推理结果以及服务侧输出结果中任一个。
[0088] 在本说明书的实施例中,对应待测模型的三个功能单元,初始模型包括服务侧预处理单元、服务侧推理单元和服务侧后处理单元。
[0089] 具体地,在服务侧设备运行初始模型后,首先读取测试配置文件,获取预处理数据的存储地址。基于存储地址在共享数据目录中获取预处理数据。控制服务侧预处理单元对预处理数据进行预处理,得到服务侧推理单元的服务侧输入数据。控制服务侧推理单元基于服务侧输入数据进行推理,得到服务侧推理结果。控制服务侧后处理单元对服务侧推理结果进行后处理,得到服务侧输出结果。其中,服务侧输入数据作为服务侧预处理结果,服务侧后处理结果作为服务侧输出结果。在上述过程中,服务侧输入数据、服务侧推理结果和服务侧输出结果均可记录作为服务侧记录数据。基于测试需求,也可其中一者或两者作为服务侧记录数据。
[0090] 在本说明书的一些实施例中,服务侧设备的处理器为图形处理器GPU,端侧设备的处理器为嵌入式神经网络处理器NPU。
[0091] 在本说明书的实施例中,服务侧设备的算力优于端侧设备的算力。在部署初始模型的服务侧设备通常可以为PC端,利用图形处理器GPU强大的数值运算能力来对初始模型的推理过程进行加速。GPU处理器是专门用于图形处理和通用并行计算的硬件加速器。它具有大规模的并行处理单元,可以同时执行大量的计算任务。GPU广泛应用于图形渲染、游戏开发、科学计算和其他需要大规模并行计算的领域。GPU在机器学习和深度学习中也有广泛的应用,尤其在训练大规模神经网络模型时可以提供强大的计算能力。
[0092] 而模型在实际使用场景中,通常部署在嵌入式平台中进行使用。而嵌入式平台一般为ARM架构的ARM平台,而由于ARM平台的处理效率较低,因此,为了能够满足深度学习模型在嵌入式平台中的运行,开发了NPU处理器。NPU处理器中的NPU代表神经网络处理单元,是一种专门设计用来加速神经网络计算的处理器。
[0093] 在嵌入式平台(ARM平台)的芯片中集成专用的NPU处理器。这些NPU处理器专门设计用于处理神经网络计算,例如深度学习任务。NPU处理器通常采用高度并行的架构,优化用于神经网络计算的矩阵运算和其他数学操作。通过使用NPU来加速AI和机器学习(Machine Learning)任务,ARM平台的性能得到了显著提升,同时能够更节能地执行这些任务。
[0094] 在一个具体地实施例中,请参阅图4,利用PC端作为服务侧设备,PC端采用GPU处理器。端侧设备为业务需求所需部署模型功能的嵌入式平台。嵌入式平台采用ARM架构+NPU处理器的系统架构。在进行测试之前,测试相关人员仅需准备部署在服务侧设备的初始模型、对初始模型进行压缩处理后的待测模型、模型测试所需的预处理数据以及测试配置文件。其中,测试配置文件仅需测试人员按照业务测试需求和模型要求来配置对应部分内容即可。其中,NPU处理器的算力低于GPU处理器的算力。NPU处理器更专注于神经网络计算,特别是深度学习任务,而GPU具有更广泛的应用领域,算力更优,且在某些神经网络任务中也能提供良好的性能。
[0095] 在一个示例中,需测试目标模型YoloV5的性能,需要提供运行在PC端上的初始模型(Pytorch或者ONNX模型文件,如yolov5s.onnx),运行在嵌入式平台中的待测模型(如yolov5s.npubin)。测试配置文件中可以包括进行测试的模型的名称、模型类型、初始模型的存储地址、待测模型的存储地址、预处理数据的存储地址、业务需求所选择的目标平台类型(Type)、模型的预处理配置属性和后处理配置属性等。示例性地,以下是为模型测试所配置的一个测试配置文件:
[0096] {
[0097] "ModelName": "Resnet50",//测试的模型名称
[0098] "InputNum": 3,//输入tensor数量
[0099] "Inputs": [//输入tensor配置,json object数组,数组中每一个元素代表一个输入tensor
[0100] {//image示例
[0101] "InputName": "image0",//输入tensor名称
[0102] "PreProcess": [//预处理操作数组,json object数组,每一个元素代表一个子操作,输入数据按顺序经过所有子操作之后送入网络进行推理,例如"Resize"\"Crop"\"Affine"\"CSC"
[0103] {
[0104] "Type":"Resize",//Resize操作
[0105] "WithRoi": "false",//是否需要Crop之后再Resize
[0106] "Roi": [50,50, 599, 549],//裁剪的Roi,格式为[x1,y1,x2,y2]
[0107] "OutSize":[640, 640],//Resize输出尺寸,[w,h]
[0108] "KeepRatio":"false",//是否进行等比Resize
[0109] "PadColor": [0,0,0],//等比resize时填充的颜色,格式为[r,g,b]
[0110] "Method": "Linear"//resize方法,支持配置Linear或者Area
[0111] },
[0112] {
[0113] "Type": "Crop",//Crop操作
[0114] "Roi":[100,100,500,500]//Crop的ROi,格式为[x1,y1,x2,y2]
[0115] },
[0116] {
[0117] "Type":"Affine",//透视变换
[0118] "Matrix":[[1,0,0],[0,1,0],[0,0,1]], //透视变换矩阵
[0119] "OutSize":[1920,1080]//输出图像大小
[0120] },
[0121] {
[0122] "Type": "CSC",//颜色空间变换
[0123] "Space": "MODE_VIDEO_BT601_YUV2RGB" //变换模式
[0124] }
[0125] ]
[0126] }
[0127] ],
[0128] "OutputTensorNum": 3,//输出tensor数目
[0129] "PostProcess": {//后处理配置
[0130] "Name": "Yolov5",//后处理类型,支持None,Classify,Yolov5
[0131] "SaveResult":"true",//是否保存后处理之后的结果
[0132] },
[0133] "VerifyJson": "verifylists.json",//精度测试数据json文件,后文有解释[0134] "SaveFolder": "result/"//板端输出tensor保存位置,相对于工作目录的路径[0135] }
[0136] 其中VerifyJson为测试数据配置文件,例如:
[0137] {
[0138] "VerifyData":[//验证数据,输入及PC端输出
[0139] {
[0140] "Input": [//输入数据,图像或tensor,1个输入对应一个文件
[0141] "image/image0_0.jpg",
[0142] "image/image0_1.jpg"
[0143] ]
[0144] },
[0145] {
[0146] "Input": [
[0147] "image/image1_0.jpg",
[0148] "image/image1_1.jpg"
[0149] ]
[0150] },
[0151] ]
[0152] }
[0153] 其中,预处理数据一般部署在PC端的共享数据目录中,可预先将共享数据目录挂载在嵌入式平台上。且由于PC端的算力较优,可直接将PC端作为测试平台来控制测试过程。并且,初始模型包括服务侧预处理单元、服务侧推理单元、服务侧后处理单元。待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元。
[0154] 具体地,请参阅图4,模型测试过程包括以下:
[0155] 测试平台根据提供的初始模型、预处理数据以及测试配置文件中的预处理配置属性,利用服务侧预处理单元对预处理数据进行预处理,得到服务侧输入数据。记录服务侧输入数据(服务侧预处理结果)和服务侧预处理耗时。例如,对预处理数据中的图像进行等比缩放和归一化等操作。
[0156] 测试平台控制服务侧推理单元基于服务侧输入数据进行浮点推理,得到服务侧推理结果。同时,记录服务侧推理结果和服务侧推理耗时。
[0157] 测试平台基于测试配置文件中的后处理配置属性,控制服务侧后处理单元对服务侧推理结果进行后处理,得到服务侧输出结果。其中,服务侧后处理结果即服务侧输出结果。记录服务侧后处理结果和服务侧后处理耗时。
[0158] 测试平台响应于目标平台的选择操作,在至少一个端侧设备中确定与目标平台类型匹配的目标测试设备。其中,目标平台的选择操作可以通过测试配置文件中平台类型(Type)这个字段来确定。
[0159] 测试平台调用目标测试设备的目标测试接口,并将待测模型和测试配置文件发送给目标测试设备。或者,测试平台通过远程网络连接协议与目标测试设备远程连接,并将PC端存储测试配置文件的文件夹和存储待测模型的文件夹挂载到目标测试设备的指定目录上,以供目标测试设备能够直接访问测试配置文件夹和执行待测模型。
[0160] 通过目标模型测试程序读取测试配置文件,从测试配置文件中读取待测模型的存储路径,并基于待测模型的存储路径,控制在目标测试设备上运行待测模型。
[0161] 通过目标模型测试程序控制目标测试设备从共享数据目录中获取预处理数据。
[0162] 测试平台控制端侧预处理单元基于预处理配置属性对预处理数据进行预处理,得到端侧推理单元的端侧输入数据。端侧输入数据即端侧预处理结果。记录端侧预处理结果和端侧预处理耗时。
[0163] 目标模型测试程序控制端侧推理单元基于端侧输入数据进行定点推理,得到端侧推理结果,并记录端侧推理结果和端侧推理耗时。
[0164] 控制端侧后处理单元基于后处理配置属性对端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果。端侧后处理结果即端侧输出结果。记录端侧后处理结果和端侧后处理耗时。
[0165] 上述过程记录的服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时可作为服务侧记录数据;端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时可作为端侧记录数据。
[0166] 请继续参阅图4,可将服务侧推理数据和端侧推理数据进行比对得到推理结果比对情况;将服务侧后处理数据和端侧后处理数据进行比对得到后处理结果比对情况;基于推理结果比对情况、后处理结果比对情况、端侧预处理耗时、端侧推理耗时、端侧后处理耗时等来生成待测模型的评估报告。在上述过程中,可通过余弦相似度,最大绝对值误差,均方根误差,均方误差等指标来进行数据间相似性的比对。后处理结果比对情况可根据模型类型来确定所采用的评估指标(例如:准确率、召回率等等)。可以理解的是,结果比对和耗时比对的过程以及生产评估报告的过程是在测试平台完成的,也即在PC端完成的。
[0167] 在上述测试过程中,测试平台可自动控制PC端(服务侧设备)和目标测试设备(嵌入式平台)的测试流程,并收集端侧记录数据和服务侧记录数据来生成评估报告。整个过程仅需测试人员提供初始模型、待测模型、预处理数据以及测试配置文件即可,测试人员无需再接触目标测试设备。并且,目标测试设备对外提供有标准化测试接口,以供PC端连接。
[0168] 需要说明的是,在上述测试过程中,PC端(服务侧设备)采用GPU处理器,嵌入式平台(端侧设备)采用ARM架构+NPU处理器的系统架构。由于两者处理器的不同,在性能、处理效率方面存在不同。在本说明书的实施例中,不同之处主要体现在推理过程。请参阅图3b,端侧设备的推理过程主要通过NPC处理器完成,为了在性能,功耗和面积和通用性之间取得平衡,主流NPU处理器采用了加速器架构,将算子固化在硬件中,并辅以可编程单元执行一些自定义算子/长尾算子兼顾灵活性。在计算方面,为了提高存储使用效率和加速计算,在满足计算精度的前提下,NPU处理器普遍采用定点计算单元实现核心算子,以较低的带宽需求和较快的计算速度达到推理精度的要求,这样就需要在数据的预处理阶段和后处理阶段分别对数据做量化和反量化操作,以满足NPU处理器计算单元对定点数据计算的需要。
[0169] 而GPU处理器则不同,GPU处理器的计算单元天然支持浮点计算,不需要执行量化和反量化的操作,模型推理更直接。请参阅图5,以某显卡为例,从图5可以看出,GPU处理器的浮点算力远远高于定点算力。其浮点算力中单精度浮点(single‑precision Float)为1185.28Gflop/s;双精度浮点(double‑precision Float)为21.3571 Gflop/s。定点算力中
64位整数(64‑bit Integer)算力为22.4394Giop/s;32位整数(32‑bit Integer)算力为
398.244 Giop/s;24位整数(24‑bit Integer)算力为288.652Giop/s。
[0170] 需要说明的是,将GPU上的代码移植到NPU(神经处理单元)上可能需要进行一些调整和优化,因为GPU和NPU在体系结构和功能上有所不同。下面是一些常见的步骤和注意事项:
[0171] 1.确定任务需求:首先需要确定需要移植的任务是什么,例如某个机器学习算法或图像处理任务。分析这个任务的特点,例如数据集大小、计算需求等。
[0172] 2.理解NPU的体系结构,确认NPU支持的框架和API接口:不同的NPU平台可能支持不同的框架和API接口,例如TensorFlow或Caffe等。针对任务需求,选择最合适的框架和API接口,并熟悉其相关接口。
[0173] 3. 代码移植:根据所选框架和API,将GPU代码进行修改和移植。在这个过程中,需要特别关注以下几点:数据类型:GPU和NPU支持的数据类型可能不同,需要根据NPU的特性进行调整。算法实现:GPU和NPU的硬件架构不同,可能需要重新实现算法的某些部分;并行计算:GPU和NPU的并行计算模型也不同,需要使用NPU的并行计算优势进行优化。
[0174] 4.性能调优和测试:在进行移植后,进行性能调优和测试是非常重要的。根据实际情况,可能需要调整参数、调整代码结构或进行其他优化措施。使用合适的基准测试和工具来评估性能,并进行必要的调整和改进。可以使用工具来监测性能,例如NVprofiler和PyTorch Profiler。
[0175] 总体而言,GPU向NPU的移植需要深入理解NPU的特性和优势,并进行适当的算法和代码修改。通过不断的调整和优化,最终可以在NPU平台上实现高效的并行计算。
[0176] 对应上述实施例,本说明书实施例还提出了一种基于异构平台的模型测试装置。异构平台包括服务侧设备以及与服务侧设备通信连接的至少一个端侧设备;其中,服务侧设备的算力优于端侧设备的算力。请参阅图6,模型测试装置包括:
[0177] 选择模块610,用于响应于目标平台的选择操作,在至少一个端侧设备中确定与目标平台类型匹配的目标测试设备。
[0178] 其中,目标测试设备上部署有目标模型测试程序,且提供有调用目标模型测试程序的测试接口。
[0179] 端侧运行模块620,用于调用目标测试设备的目标测试接口,以通过目标模型测试程序控制在目标测试设备上运行待测模型,得到端侧记录数据。
[0180] 服务侧运行模块630,用于控制在服务侧设备上运行初始模型,得到服务侧记录数据。其中,待测模型为对初始模型进行压缩处理后得到的。
[0181] 测试结果输出模块640,用于根据端侧记录数据以及服务侧记录数据输出待测模型的测试结果。
[0182] 根据本说明书实施例的模型测试装置,端侧设备预先部署有对应的模型测试程序,并对外提供了标准化的测试接口。在进行模型测试时,相关测试人员仅需提供初始模型和压缩处理后的待测模型即可。通过目标测试设备的目标测试接口向目标模型测试程序发送启动指令,以控制目标测试设备执行目标模型测试程序来完成目标测试设备中待测模型的测试过程,获取端侧记录数据。通过控制服务侧设备直接执行初始模型来获取服务侧记录数据。继而,根据端侧记录数据和服务侧记录数据便可确定待测模型的测试结果。本说明书的实施例在对模型进行测试时,无需再需要相关人员来编写测试所需的操作程序,直接调用预先封装好的标准化测试接口,便可实现对待测模型的测试过程,减少了测试时间。
[0183] 在本说明书的一些实施例中,模型测试装置还包括:路径读取模块,用于从测试配置文件中读取初始模型的存储路径。服务侧运行模块还用于基于初始模型的存储路径,控制在服务侧设备上运行所述初始模型。
[0184] 在本说明书的一些实施例中,端侧运行模块还用于:通过目标模型测试程序读取测试配置文件,从测试配置文件中读取待测模型的存储路径,并基于待测模型的存储路径,控制在目标测试设备上运行待测模型。
[0185] 在本说明书的一些实施例中,测试配置文件包括预处理配置属性和后处理配置属性;待测模型包括端侧预处理单元、端侧推理单元、端侧后处理单元。端侧运行模块还用于:控制端侧预处理单元基于预处理配置属性对预处理数据进行预处理,得到端侧推理单元的端侧输入数据。控制端侧后处理单元基于后处理配置属性对端侧推理单元输出的端侧推理结果进行后处理,得到端侧输出结果。其中,端侧记录数据包括端侧输入数据、端侧输出结果。
[0186] 在本说明书的一些实施例中,端侧记录数据中的数据项包括端侧预处理结果、端侧预处理耗时、端侧推理结果、端侧推理耗时、端侧后处理结果、端侧后处理耗时中的至少一个。服务侧记录数据中的数据项包括服务侧预处理结果、服务侧预处理耗时、服务侧推理结果、服务侧推理耗时、服务侧后处理结果、服务侧后处理耗时中的至少一个。测试结果输出模块还用于:控制在服务侧设备上将端侧记录数据以及服务侧记录数据进行相应数据项的比对。基于比对的结果生成待测模型的测试报告。
[0187] 关于基于异构平台的模型测试装置的具体限定可以参见上文中对于基于异构平台的模型测试方法的限定,在此不再赘述。上述基于异构平台的模型测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0188] 对应上述实施例,本说明书实施例还提供了一种异构芯片。该异构芯片包括图形处理器GPU、嵌入式神经网络处理器NPU、存储器以及存储在存储器中且被配置为由图形处理器GPU和嵌入式神经网络处理器NPU执行的基于异构平台的模型测试程序,图形处理器GPU和嵌入式神经网络处理器NPU执行基于异构平台的模型测试程序时实现如上述中任意一项实施例的基于异构平台的模型测试方法。
[0189] 对应上述实施例,本说明书的实施例还提供了一种电子设备。
[0190] 图7是根据本说明书一个实施例的电子设备的结构框图。如图7所示,该电子设备700包括存储器704、处理器702及存储在存储器704上并可在处理器702上运行的基于异构平台的模型测试程序706,处理器702执行基于异构平台的模型测试程序706时,实现上述任一项实施例的基于异构平台的模型测试方法。
[0191] 根据本说明书实施例的电子设备,在处理器702执行基于异构平台的模型测试程序706时,无需再需要相关人员来编写测试所需的操作程序,直接调用预先封装好的标准化测试接口,便可实现对待测模型的测试过程,减少了测试时间。
[0192] 对应上述实施例,本说明书的实施例还提供了一种计算机可读存储介质。计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任一项实施例的基于异构平台的模型测试方法。
[0193] 根据本说明书实施例的计算机可读存储介质,在基于异构平台的模型测试程序运行时,无需再需要相关人员来编写测试所需的操作程序,直接调用预先封装好的标准化测试接口,便可实现对待测模型的测试过程,减少了测试时间。
[0194] 需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0195] 应当理解,本说明书的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0196] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0197] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0198] 在本说明书中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本说明书中的具体含义。
[0199] 尽管上面已经示出和描述了本说明书的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本说明书的限制,本领域的普通技术人员在本说明书的范围内可以对上述实施例进行变化、修改、替换和变型。