本发明涉及神经网络,具体是涉及一种神经网络模型部署方法、装置、设备及存储介质。
背景技术:
1、神经网络技术广泛应用于各行各业,因此产生了采用特定的形式将神经网络部署至不同应用平台或硬件设备上的需求。这些设备主要包括云端设备、边缘侧主机、端侧设备三类。云端设备主要以gpu服务器为主,搭载nvidia gpu;边缘侧则以x86架构工控机为主,通常不搭载或仅搭载一张nvidia gpu显卡;端侧设备主要为低功耗的arm架构设备,如手机、传感器、智能摄像头等。云端设备、边缘侧主机、端侧设备这三类的算力依次递减。其中,端侧设备对系统资源消耗敏感,部分设备具有神经网络专用加速器npu。
2、各个应用平台或硬件设备之间是有一定差异性的,将神经网络模型部署至应用平台的同时会导致神经网络难以与各个应用平台或硬件设备兼容。
3、综上所述,现有的神经网络模型部署方法与应用平台的兼容性较差。
4、因此,现有技术还有待改进和提高。
技术实现思路
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、有益效果:本申请首先从算子库中提取应用平台运行神经网络模型所需要的算子,继而使用提取的算子构建初始计算图,之后根据应用平台所使用的设备硬件的信息,确定能够实现算子且与应用平台相兼容的算法以及应用平台运行算子所需要的运行参数,然后将上述实现算法和运行参数融合至初始计算图,以得到最终的计算图,最后将最终计算图编译成能够在应用平台运行的机器指令,以完成将神经网络模型部署至应用平台上的操作。从上述分析可知,本申请结合应用平台的设备硬件信息将计算图转换成机器指令,从而使得转换得到的机器指令能够兼容于应用平台。
1.一种神经网络模型部署方法,其特征在于,包括:
2.如权利要求1所述的神经网络模型部署方法,其特征在于,所述构建神经网络模型所对应的初始计算图,所述初始计算图上的算子仅包括应用平台运行所述神经网络模型所需的算子,包括:
3.如权利要求2所述的神经网络模型部署方法,其特征在于,所述依据所述应用平台所在的设备硬件信息,确定所述算子的实现算法和运行所述算子所需的运行参数,所述实现算法为在所述应用平台实现所述算子所需要的算法,包括:
4.如权利要求3所述的神经网络模型部署方法,其特征在于,所述依据各个所述运行预选参数所对应的各个所述运行时间,从各个所述运行预选参数中筛选出运行参数,包括:
5.如权利要求2所述的神经网络模型部署方法,其特征在于,所述将所述实现算法和所述运行参数融合至所述初始计算图,得到最终计算图,包括:
6.如权利要求1所述的神经网络模型部署方法,其特征在于,所述将所述最终计算图编译成与所述应用平台相匹配的机器指令,以完成将所述神经网络模型部署至所述应用平台,包括:
7.如权利要求1-6所述的神经网络模型部署方法,其特征在于,所述神经网络模型为量化或稀疏优化之后的神经网络模型。
8.一种神经网络模型部署装置,其特征在于,所述装置包括如下组成部分:
9.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的神经网络模型部署程序,所述处理器执行所述神经网络模型部署程序时,实现如权利要求1-7任一项所述的神经网络模型部署方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有神经网络模型部署程序,所述神经网络模型部署程序被处理器执行时,实现如权利要求1-7任一项所述的神经网络模型部署方法的步骤。