神经网络模型部署方法、装置、电子设备及存储介质

文档序号:31624251发布日期:2022-09-24 00:09阅读:170来源:国知局
神经网络模型部署方法、装置、电子设备及存储介质

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.图1示出根据本公开实施例的神经网络模型部署方法的流程图。
35.图2示出根据本公开实施例的一种计算图的示意图。
36.图3示出根据本公开实施例的一种神经网络模型部署方法的示意图。
37.图4示出根据本公开实施例的一种原始计算图转换为中间计算图的示意图。
38.图5示出根据本公开实施例的一种原始计算图转换为中间计算图的示意图。
39.图6示出根据本公开实施例的一种转换数据重排操作的示意图。
40.图7示出根据本公开实施例的一种转换中间计算图的示意图。
41.图8示出根据本公开实施例的神经网络模型部署装置的框图。
42.图9示出根据本公开实施例的一种电子设备1900的框图。
具体实施方式
43.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
44.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
45.另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
46.随着人工智能算法和非冯诺依曼硬件架构研究深入,学术领域及产业中出现了诸多新型的硬件设备,例如多核芯片、众核芯片、深度学习加速器、神经形态芯片、类脑计算芯片等,这些新型硬件设备的产生对配套的软件工具链也提出了新的要求。配套的软件工具链是发挥硬件设备可用性和易用性的重要保障,其目的是完成深度学习、类脑计算等新型算法到部署执行的全过程。由于现阶段的深度学习和类脑计算的算法一般可以表示成神经网络计算图的形式,所以相应的软件工具链也一般以基于计算图的编译器为核心。由于目前存在着多种多样的深度学习和类脑计算的算法框架,编译器的主要任务一般是实现从不同的深度学习和类脑计算的算法框架描述的原始计算图转换到统一的、符合硬件约束的目标计算图,即完成从一种原始算子集所定义的计算图到另一种目标算子集所定义的计算图
的转换。
47.为了使编译器实现高效统一地转换计算图,即使目标计算图能够更好地满足硬件设备给定的约束,例如,硬件算子集的约束、数据精度的约束、硬件资源的约束等,本公开提出了一种神经网络模型部署方法,能够实现将各种基于计算图表示的原始神经网络模型,高效统一地转换成能部署到硬件设备上的硬件可执行文件,该硬件可执行文件可以理解为能在硬件设备执行的文件,本公开实施例对于硬件可执行文件的类型不作限制。
48.图1示出根据本公开实施例的神经网络模型部署方法的流程图。所述神经网络模型部署方法可以由终端设备或服务器等电子设备执行,所述方法可以通过终端设备的处理器调用存储器中存储的计算机可读指令的方式来实现,或者,可通过服务器执行所述方法。
49.如图1所示,该神经网络模型部署方法,包括:
50.在步骤s11中,获取待部署到硬件设备上的原始神经网络模型所对应的原始计算图。
51.其中,硬件设备可以包括但不限于:众核神经网络加速芯片、神经形态芯片、类脑众核芯片、众核图形处理芯片、带有向量或矩阵加速单元的众核芯片、深度学习加速器等。原始神经网络模型例如可以包括但不限于人工神经网络(artificial neural network,ann)、脉冲神经网络(artificial neural network,snn)、混合神经网络(hybrid neural network,hnn)、动态神经网络及多神经网络模型等。应理解的是,本公开实施例对应硬件设备的类型以及原始神经网络模型的类型等不作限制。
52.可知晓的是,神经网络模型的计算图是一种包含神经网络结构和功能的中间表示(intermediate representation,ir),被广泛的应用于神经网络编程、编译、执行等系统中。计算图是由节点和连接节点的有向边组成,在一种可能的实现方式中,节点包括计算节点和存储节点,计算节点表示神经网络模型要执行的算子,存储节点表示计算节点所需要的输入数据或计算结点计算得到的输出数据,计算节点和存储节点通过有向边进行连接,有向边表示各个节点之间的数据依赖关系。图2示出根据本公开实施例的一种计算图的示意图,如图2所示,计算图中包括计算节点和存储节点,以及各个节点之间通过箭头表征的有向边。
53.应理解的是,本领域技术人员可以采用本领域已知的计算图生成方式,确定原始神经网络模型对应的原始计算图,对此本公开实施例不作限制。
54.在步骤s12中,将原始计算图转换为基于目标算子集构成的中间计算图,目标算子集为硬件设备支持的算子集。
55.其中,算子集也即算子构成的集合,目标算子集也即硬件设备支持的算子所构成的集合,硬件设备支持的算子可以理解为能在硬件设备执行计算的算子,不同算法框架下的算子集是不同的,构成原始计算图的源算子集通常与目标算子集不同,因此可以将基于源算子集构成的原始计算图转换为基于目标算子集构成的中间计算图。
56.其中,将原始计算图转换为基于目标算子集构成的中间计算图,可以理解为将原始计算图等价转换为中间计算图,等价转换指不改变计算图的语义的转换操作,即针对同一输入,等价转换前后的计算图应得到相同的输出,或者说,利用中间计算图与原始计算图,分别对同一输入数据进行运算,会得到相同的输出数据。
57.图3示出根据本公开实施例的一种神经网络模型部署方法的示意图,如图3所示,
在一种可能的实现方式中,将原始计算图转换为基于目标算子集构成的中间计算图,可以理解为将原始计算图等价转换为中间计算图,其中,等价转换可以包括算子转换和图转换,算子转换用于将原始计算图中的算子等价转换成目标算子集中的目标算子,也即可以将原始计算图中的至少一个算子等价替换为目标算子集中的至少一个目标算子,这相当于生成中间计算图中的各个节点;图转换用于将转换后的目标算子连接成计算图以及对连接成的计算图的结构进行优化,这相当于生成中间计算图中各个节点之间的有向边。
58.在步骤s13中,根据硬件设备对应的硬件约束条件,将中间计算图转换为适配硬件设备的目标计算图。
59.其中,硬件约束条件是基于硬件设备对应的数据精度、硬件资源以及目标算子集中的至少一种所确定的。其中,数据精度可以理解为硬件设备执行计算或存储所需的数据精度,硬件资源可以包括计算资源和存储资源,应理解的是,硬件设备能够提供的硬件资源是有限的,神经网络模型所需的硬件资源应小于硬件设备本身能提供的硬件资源;如上,硬件设备支持的目标算子集与原始计算图对应的源算子集是不同的,那么可能存在目标算子无法完全等价替换原始计算图中算子的情况,可以基于硬件设备支持的目标算子集来近似转换中间计算图,得到能被硬件设备完全支持的目标计算图。
60.其中,根据硬件设备对应的硬件约束条件,将中间计算图转换为适配硬件设备的目标计算图,可以理解为,根据硬件设备对应的硬件约束条件,将中间计算图近似转换成适配硬件设备的目标计算图;近似转换指进行可能会一定程度上改变原始计算图的语义的转换操作,即针对同一输入,转换前后的计算图可能有不同的输出,但转换前的中间计算图和转换后的目标计算图近似等价,或者说,针对具体的网络处理任务(如目标检测、图像识别等),中间计算图和目标计算图的准确率(或其它描述神经网络完成效果的指标)之间的差异仍在允许范围内。
61.如图3所示,基于上述硬件约束条件,近似转换中间计算图,可以包括精度转换、资源转换、结构转换以及完备性转换中的至少一种处理,当硬件设备支持的精度与中间计算图的计算或存储精度不同时,则需对中间计算图进行精度转换;其中,精度转换指对中间计算图进行数据精度的转换,例如可以包括改变存储节点中存储数据的精度、输入计算节点的输入数据的精度和计算节点得到的输出数据的精度,从而满足硬件设备对目标计算图的精度约束,或者说可以通过降低精度来节省计算资源和存储资源,或者通过提高精度来提高目标计算图在所实现的网络处理任务上的表现;资源转换指对中间计算图进行增减有向边和/或增减节点的操作,从而使得目标计算图所需要消耗的硬件资源相小于中间计算图所需消耗的硬件资源,也即使目标计算图能够更加节省硬件资源;结构转换指改变中间计算图的部分结构得到目标计算图,使目标计算图对应的网络结构能够更适合硬件设备的执行计算,同时也可以节省目标计算图所需消耗的硬件资源;
62.完备性转换是指基于神经网络本身所具有的近似逼近的能力,在无法直接通过目标算子集中的目标算子对原始计算图中的算子进行替换时,可以利用目标算子集中的一个算子或多个算子对原始计算图中的一个算子或多个算子进行近似逼近,同时完备性转换前后得到的目标计算图与中间计算图仍能够保持近似等价;在一些可能的实现方式中,例如可以通过基于目标算子集构成的完整目标计算图,对中间计算图进行近似逼近,这种实现方式中,可以不限制目标计算图与中间计算图之间的相似度,即两者的数据精度、所需要的
硬件资源和网络结构等可以不同;在目标算子集的完备性不足以完全替换原始计算图中的算子的情况下,完备性转换相当于起到了扩展目标算子集的完备性的作用,从而使得通过完备性转换后的目标算子集具有支持完全替换原始计算图的能力。
63.在步骤s14中,基于目标计算图,确定硬件可执行文件,硬件可执行文件用于部署到硬件设备上。
64.如上所述,神经网络模型的计算图是一种包含神经网络结构和功能的中间表示,计算图通常无法直接在硬件设备上执行,为了能在硬件设备上部署目标计算图所表征的神经网络模型,在得到目标计算图后,可以将目标计算图转换为硬件可执行文件,如上所述,硬件可执行文件可以理解为能在硬件设备执行的文件,例如可以是配置文件、二进制文件等,本公开实施例对于硬件可执行文件的文件类型不作限制。
65.应理解的是,本领域技术人员可以采用本领域已知的编译技术,实现将目标计算图转换为硬件可执行文件,对此本公开实施例不作限制。
66.在上述原始神经网络模型的部署过程中,能够结合等价转换与近似转换,等价转换得到的中间计算图可以保留原始计算图的全部语义,且满足目标算子集的算法约束,近似转换能够使目标计算图满足其他一系列硬件约束,同时可起到扩展目标算子集的作用。
67.本公开实施例的神经网络模型部署方法可以应用于神经网络计算图(也即原始计算图)到硬件原语图(也即目标计算图)的转换,其中,等价转换能够使中间计算图符合给定的目标算子集和硬件存储,近似转换可以起到满足硬件约束、优化硬件资源利用率、降低硬件资源需求、扩展硬件算子集的完备性等作用。
68.本公开实施例的神经网络模型部署方法可以应用于神经网络或类脑算法的编程系统、编译系统和相关的硬件执行系统中,从而使得神经网络模型或类脑算法可以高效部署在上述硬件设备上,还可以扩展上述系统的完备性,降低了对硬件设备的完备性要求;还可以应用于类神经网络任务,例如多智能体仿真、芯片仿真、脑仿真、图形学、科学计算、并行搜索算法等,对此本公开实施例不作限制。
69.根据本公开的实施例,通过获取待部署到硬件设备上的原始神经网络模型所对应的原始计算图,将原始计算图转换为基于硬件设备支持的目标算子集构成的中间计算图,这相当于从一种原始的算子集所定义的原始计算图转换成硬件设备支持的另一种算子集所定义的中间计算图,再根据硬件设备对应的硬件约束条件,将中间计算图转换为适配硬件设备的目标计算图,能够使基于目标计算图所确定的硬件可执行文件不仅符合硬件设备支持的目标算子集,还可以满足硬件设备在数据精度、存储规则、硬件资源以及目标算子集上的约束条件,从而实现将各种原始神经网络模型高效统一地转换成能部署到硬件设备上的硬件可执行文件。
70.如上所述,将原始计算图转换为基于目标算子集构成的中间计算图,可以包括算子转换和图转换等步骤,图4示出根据本公开实施例的一种原始计算图转换为中间计算图的示意图,如图4所示,算子转换可以包括根据目标算子集生成中间计算节点,以及根据数据存储规则生成中间存储节点;图转换可以包括生成中间计算节点与中间存储节点之间的有向边。
71.基于上述图4示出的等价转换过程,在一种可能的实现方式中,在步骤s12中,将原始计算图转换为基于目标算子集构成的中间计算图,包括:
72.步骤s121:利用目标算子集中的目标算子,替换原始计算图中的原始计算节点,得到与原始计算节点等价的中间计算节点。(相当于上述根据目标算子集生成计算节点)
73.其中,可以基于等价替换的原则,也即针对同一输入,等价替换前后的两个计算图的输出相同,针对原始计算图中的每个原始计算节点,确定出与该原始计算节点等价的目标算子,并利用与该原始计算节点等价的目标算子,替换原始计算图中的该原始计算节点,得到中间计算节点。
74.其中,可能发生的等价替换可以包括以下至少一种:通过单个目标算子替换原始计算图中的单个原始计算节点、通过多个目标算子组成的算子组合替换原始计算图中的单个原始计算节点、通过单个目标算子替换原始计算图中的多个原始计算节点、通过多个目标算子替换原始计算图中的多个原始计算节点。
75.步骤s122:根据硬件设备对应的数据存储规则,生成与中间计算节点关联的中间存储节点,数据存储规则用于指示硬件设备支持的数据存储方式。(相当于上述根据数据存储规则生成存储节点)
76.应理解的是,不同硬件设备的数据存储方式可以是不同且已知的,本公开实施例对于数据存储规则的具体内容不作限制。可以根据所要部署的硬件设备所对应的数据存储规则,生成与各个中间计算节点关联的中间存储节点,也即生成各个中间计算节点所需的输入存储节点以及各个中间计算节点所需的输出存储节点,如果某个中间存储节点既为某个中间计算节点的输出又为另一个中间计算节点的输入,则可以在中间计算图中表示一次,如图2示出的计算图中的存储节点3既为计算节点1的输出存储节点,又为计算节点2的输入存储节点。
77.步骤s123:根据原始计算图中各个节点之间的数据依赖关系,建立中间计算节点与中间存储节点之间的有向边,得到中间计算图,其中,数据依赖关系表征原始计算图中各个节点之间的关联关系。(相当于上述生成计算节点与存储节点之间的有向边)
78.应理解的是,原始计算图中各个节点之间有向边可以指示各个节点之间的数据依赖关系,可根据该数据依赖关系建立中间计算节点与中间存储节点之间的有向边,有向边可以指示中间计算图中各个节点之间的数据依赖关系。应理解的是,本公开实施例对于有向边的建立方式不作出限制。
79.在本公开实施例中,能够基于硬件设备支持的目标算子集以及数据存储规则,将原始计算图有效地转换成中间计算图。
80.如上所述,可能存在目标算子集不能完全等价替换原始计算图中的算子(也即原始计算节点)的情况,该情况可以理解为目标算子集和源算子集的完备性不同,在该情况下可能无法完成计算图转换,进而会导致整个编译流程失败,因此可以对中间计算图进行近似转换,减少编译流程失败的情况,为了便于之后在步骤s13中近似转换该情况下的中间计算图,在一种可能的实现方式中,在步骤s121中,利用目标算子集中的目标算子,替换原始计算图中的原始计算节点,得到与原始计算节点等价的中间计算节点,包括:
81.确定原始计算图中能被目标算子集中的目标算子等价替换的第一原始计算节点,以及确定原始计算图中不能被目标算子集中的目标算子等价替换的第二原始计算节点;将能等价替换第一原始计算节点的目标算子,作为与第一原始计算节点等价的计算节点;将不能被等价替换的第二原始计算节点转换成占位节点,并记录占位节点对应的第二原始计
算节点的算子信息;其中,中间计算节点包括:与第一原始计算节点等价的计算节点以及第二原始计算节点转换成的占位节点。
82.其中,例如可以基于上述本公开实施例中提及的等价替换的原则,先确定出原始计算图中能被目标算子集中的目标算子等价替换的第一原始计算节点,那么原始计算图中除了第一原始计算节点以外的原始计算节点,可以是不能被目标算子集中的目标算子等价替换的第二原始计算节点。
83.其中,第二原始计算节点的算子信息例如至少包括:算子的类型、精度、形状、参数、输入数据、输出数据等描述第二原始计算节点中算子的信息。算子信息可以记录于占位节点中,当然也可以记录于其它存储空间中,对此本公开实施例不作限制。占位节点用于表征所占的节点是不能被等价替换的原始计算节点,通过占位节点以及算子信息可以便于之后近似转换中间计算图。
84.应理解的是,若目标算子集能完全等价替换原始计算图中的算子(也即原始计算节点),也即原始计算图中全部原始计算节点均能被目标算子集中的目标算子等价替换,那么可以在确定出原始计算图中能被目标算子集中的目标算子等价替换的第一原始计算节点后,直接将能等价替换第一原始计算节点的目标算子,作为与第一原始计算节点等价的计算节点。
85.在本公开实施例中,能够针对目标算子集不能完全等价替换原始计算图中的算子的情况,有效地利用占位节点生成待进行近似转换处理的中间计算图,有利于减少编译失败的情况。
86.图5示出根据本公开实施例的一种原始计算图转换为中间计算图的示意图,如图5所示,算子转换还可以包括根据目标算子的计算效率差异,替换已生成的计算节点;具体来说,针对原始计算图上的某些原始计算节点,若目标算子集中存在多个目标算子能够等价替换某原始计算节点,但该多个目标算子的计算效率不同,那么可以选择多个目标算子中计算效率最高的目标算子,替换与该原始计算节点等价的计算节点,也即选择计算效率更好的目标算子,替换通过上述步骤s121生成的计算节点。
87.在一种可能的实现方式中,原始计算图中包括多个第一原始计算节点,在步骤s12中,将能等价替换第一原始计算节点的目标算子,作为与第一原始计算节点等价的计算节点,包括:
88.步骤s124:针对原始计算图中的任一个第一原始计算节点,在目标算子集中存在至少两个目标算子能等价替换第一原始计算节点的情况下,根据至少两个目标算子各自的计算效率和/或存储效率,确定与第一原始计算节点等价的计算节点。通过该方式,可以使转换得到的中间计算图中的算子满足计算效率和/或存储效率的需求。
89.其中,目标算子对应的计算效率以及存储效率可以预先通过实验确定,目标算子对应的存储效率可以理解为目标算子的输入数据与输出数据所对应的存储效率;不同算子对应的计算效率以及存储效率可能不同也可能相同。应理解的是,若能等价替换第一原始计算节点的至少两个目标算子的计算效率不同且存储效率也不同,可以选择至少两个目标算子中计算效率最高的目标算子,作为与第一原始计算节点等价的计算节点;或者还可以选择存储效率最高的目标算子,作为与第一原始计算节点等价的计算节点;或者,还可以选择计算效率与存储效率综合最高的目标算子,作为与第一原始计算节点等价的计算节点,
对此本公开实施例不作限制。
90.若能等价替换第一原始计算节点的至少两个目标算子的计算效率相同,可以随机选取其中的一个目标算子,也可以仍选择默认设置的目标算子,作为与第一原始计算节点等价的计算节点;或者还可以进一步根据至少两个目标算子的存储效率,来选择存储效率最高的目标算子作为与第一原始计算节点等价的计算节点,若至少两个目标算子对应的存储效率也相同,那么仍可以随机选取其中的一个目标算子,或选择默认设置的目标算子,对此本公开实施例不作限制。
91.在一种可能的实现方式中,在目标算子集中存在至少两个目标算子能等价替换第一原始计算节点的情况下,上述步骤s121可以直接采用默认的与原始计算节点等价的目标算子,步骤s124可以作为独立的步骤,对步骤s121中采用的默认目标算子进行替换,也即可以通过步骤s124选择比步骤s121中采用的默认目标算子的计算效率更高的目标算子,替换步骤s121中生成的计算节点;当然,步骤s124也可以作为步骤s121的子步骤,这样可以直接在步骤s121中根据计算效率选择与第一原始计算节点等价的目标算子,对此本公开实施例不作限制。
92.应理解的是,针对原始计算图中的任一个第一原始计算节点,若目标算子集中存在一个目标算子能等价替换该第一原始计算节点,则可以直接将该目标算子作为与该第一原始计算节点等价的计算节点;步骤s124可以是步骤s12中的可选步骤。
93.如图5所示,图转换中还可以包括转换数据重排操作;其中,数据重排操作包括用于改变数据排布且不产生计算的操作,例如,转置、改变数据类型等操作,由于该些数据重排操作实际上不会在硬件设备上发生计算,因此可以将该些数据重排操作可以直接转换成数据重排信息,数据重排信息用于指示数据重排操作,或者说数据重排信息用于描述数据重排算子,也即,转换数据重排操作可以理解为将原始计算图中用于执行数据重排操作的原始计算节点转换成数据重排信息。
94.在一种可能的实现方式中,在建立中间计算节点与中间存储节点之间的有向边之后,在步骤s12中,将原始计算图转换为基于目标算子集构成的中间计算图,还包括:
95.步骤s125:在原始计算图中包括用于执行数据重排操作的第三原始计算节点的情况下,根据第三原始计算节点在原始计算图中的节点位置,将第三原始计算节点转换成数据重排信息,并将数据重排信息记录于与节点位置对应的有向边上。通过该方式,可以使中间计算图更加适配硬件设备的执行运算。
96.其中,节点位置可以表征第三原始计算节点在原始计算图中的位置,基于节点位置可以将数据重排信息记录于与节点位置对应的有向边上。图6示出根据本公开实施例的一种转换数据重排操作的示意图,如图6所示,可以将原始计算图中节点a1与节点a3之间的用于执行转置操作的节点a2,转换成中间计算图的记录于节点b1与节点b2之间的有向边上的数据重排信息,其中,节点b1可以是与节点a1等价的节点,节点b2可以是与节点a3等价的节点,节点b1与节点b2之间的有向边可以是与节点a2的节点位置对应的有向边。
97.考虑到有些数据重排信息对于硬件设备的数据存储规则来说,可能是冗余无用的,例如,数据存储规则中指示硬件设备数据存储形式为一维数据,那么若数据重排信息指示高维数据展开成一维数据,这对于硬件设备来说是冗余的数据重排信息;再例如若由多个数据重排信息指示多次数据形状的变化,如有两个数据重排信息分别指示“由a形状变化
为b形状、再由b形状变化为c形状”,那么可以将多个数据重排信息融合为一个数据重排信息来指示一次数据形状的变化,例如融合后的一个数据重排信息可以直接指示由a形状变化为c形状。如图5所示,图转换中还可以包括优化数据重排信息,用于根据硬件设备对应的数据存储规则,消除或融合某些冗余无用的数据重排信息。
98.在一种可能的实现方式中,在得到数据重排信息之后,在步骤s12中,将原始计算图转换为基于目标算子集构成的中间计算图,还包括:
99.步骤s126:根据硬件设备对应的数据存储规则,消除冗余的数据重排信息,和/或,将同一有向边上的至少两个数据重排信息融合为单个数据重排信息。通过该方式,可以消除或融合中间计算图上的冗余无用的数据重排信息。
100.其中,冗余的数据重排信息可以理解为对数据存储或数据计算无用的信息;同一有向边上的至少两个数据重排信息可以指示连续多次的数据重排操作,因此可以直接将同一有向边上的至少两个数据重排信息进行融合,使中间计算图更简洁有效。应理解的是,步骤s126可以是可选步骤。
101.如上所述,中间计算节点包括:与第一原始计算节点等价的计算节点,第一原始计算节点是原始计算图中能被目标算子集中目标算子等价替换的节点;考虑到有些由多个计算节点组成的节点组合是能够被硬件设备执行单次计算实现的,例最大池化操作和relu激活函数可以合成一个算子在硬件设备中执行单次计算、卷积操作和归一化操作也可以合成一个算子在硬件设备中执行单次计算,如图5所示,图转换中还可以包括融合计算节点,用于根据硬件设备对应的算子计算规则,将中间计算图中的至少两个计算节点融合成单个计算节点,这样可以降低中间计算图在计算和存储上的消耗代价。
102.在一种可能的实现方式中,在建立中间计算节点与中间存储节点之间的有向边之后,在步骤s12中,将原始计算图转换为基于目标算子集构成的中间计算图,还包括:
103.步骤s127:根据硬件设备对应的算子计算规则,将满足算子计算规则且存在数据依赖关系的至少两个计算节点融合成单个计算节点,其中,硬件计算规则用于指示硬件设备能单次执行计算的至少两个目标算子。通过该方式,可以降低中间计算图在计算和存储上的消耗代价。
104.应理解的是,本领域技术人员可以根据实际需求设置算子计算规则,本公开实施例对于算子计算规则的具体内容不作限制。其中,满足算子计算规则且存在数据依赖关系的至少两个计算节点,可以理解为,硬件设备能单次执行计算的、且在原始计算图中前后关联的至少两个计算节点。步骤s127可以是可选步骤。
105.需要说明的是,本领域技术人员可以根据实际需求自定义设计上述步骤s121至步骤s127的具体执行顺序。本公开实施例对于上述步骤s121至步骤s127的执行顺序不作限制,例如,s121至s122可以在s123和s125之前执行,s126和s127可以在s123和s125之后执行。
106.如上所述,硬件约束条件是基于硬件设备对应的数据精度、硬件资源以及目标算子集中的至少一种所确定的,近似转换中间计算图可以包括精度转换、资源转换、结构转换以及完备性转换中的至少一种处理。图7示出根据本公开实施例的一种转换中间计算图的示意图,如图7所示,基于上述至少一种硬件约束条件,精度转换可以包括量化与生成查找表中的至少一种处理,资源转换可以包括删减节点、删减有向边、分解节点中的至少一种处
理,结构转换可以包括合并分支、平衡分支中的至少一种处理,完备性转换可以包括知识蒸馏、近似逼近中的至少一种处理。
107.其中,量化用于根据数据精度需求,对中间计算图进行数据精度转换。其中,当硬件设备对于目标计算图的精度需求与中间计算图的数据精度不同时,则对中间计算图进行量化,若对于目标计算图的精度需求与中间计算图的数据精度相同,则无需进行量化。应理解的是,本领域技术人员可以采用本领域已知的数据精度转换技术,实现对中间计算图进行数据精度转换,本公开实施例对于中间计算图的数据精度转化方式不作限制。
108.其中,查找表简称为lut,生成查找表用于针对一些非线性函数(如e
x
、lnx等),将数据精度需求指示的输入精度范围内全部离散的输入数据对应的输出数据,记录成查找表后存储到计算图中,从而高效实现目标算子集中不能原生支持的一些非线性函数的近似计算;若通过生成查找表实现非线性函数的精度转换,则输入数据可是有限的离散值,这相当于对连续的非线性函数进行了精度转换。在一种可能的实现方式中,由于非线性函数也可以通过泰勒展开等方式实现,因此当非线性函数是通过泰勒展开的方式实现时,可以无需生成非线性函数对应的查找表,生成查找表可以是可选步骤。
109.其中,删减节点用于根据硬件资源限制,删除中间计算图中的某些节点;删除有向边用于根据硬件资源限制,删除中间计算图中的某些有向边;删除节点和/或删除有向边后一般需要进行重训练微调,也即重训练中间计算图对应的中间神经网络模型,从而可以使目标计算图与中间计算图近似等价的同时,减少目标计算图所需的计算资源和存储资源,从而提高目标计算图的执行效率;节点分解(也可成张量分解)用于根据硬件资源限制,将神经网络模型中的某一网络层中的计算节点分解成多个子网络层的计算节点,降低原本该层神经网络的计算量和参数量。本公开实施例对于删除节点、删除有向边以及分解节点的具体实现方式不作限制。
110.其中,合并分支用于根据硬件资源限制,将中间计算图中的某些具有分支结构的节点组合,合并成不具有分支结构的节点组合,起到降低目标计算图在执行过程中的动态存储量和计算量,使得目标计算图本身更适合某些硬件设备执行;平衡分支用于根据硬件资源限制,对中间计算图中某些具有多分支结构的节点组合进行修改,使节点组合中的不同分支之间尽量负载均衡,有利于提高硬件资源利用率;其中,负载均衡可以理解为节点组合中的各个分支之间的计算速度相近、存储差异较小等。本公开实施例对于合并分支、平衡分支的具体实现方式不作限制。如图2示出的计算图中由计算节点2、存储节点4、计算节点3、计算节点4、存储节点5构成的节点组合可以是具有分支结构的节点组合,计算节点4和存储节点5可以是该节点组合中的一个分支,计算节点2和存储节点4可是该节点组合中的另一个分支。
111.其中,知识蒸馏指利用学习能力强、规模大的神经网络模型的输出结果,来训练学习能力弱、规模小的轻量化神经网络模型,实现将神经网络模型中学习的知识迁移到轻量化神经网络模型中,也即实现压缩神经网络模型的作用;通过对中间计算图对应的中间神经网络模型进行知识蒸馏,得到基于目标算子集中目标算子构成的轻量化神经网络模型,该轻量化神经网络模型对应的计算图可是目标计算图,该轻量化神经网络模型可以与中间神经网络模型的结构、类型、参数等不同,这样不仅可以降低目标计算图所需的硬件资源,还可以起到处理中间计算图中的占位节点的作用,也即起到处理原始计算图中硬件设备无
法支持的算子的作用。
112.其中,近似逼近指利用目标算子集中的目标算子,来逼近在原始计算图中无法被等价替换的计算节点,即通过由硬件设备中能够支持的一个或多个目标算子(或称子神经网络)来代替中间计算图中的占位节点,不仅可以起到处理中间计算图中的占位节点的作用,还可以扩展目标算子集的完备性。
113.需要说明的是,本公开实施例对于上述精度转换、资源转换、结构转换以及完备性转换的具体执行顺序不作限制。以及对于量化、生成查找表、删减节点、删减有向边、分解节点、合并分支、平衡分支中、知识蒸馏、近似逼近的具体执行顺序也不作限制。
114.如上所述,硬件约束条件是基于硬件设备对应的数据精度、硬件资源以及目标算子集中的至少一种所确定的。在一种可能的实现方式中,硬件约束条件包括:硬件设备的数据精度需求、硬件资源限制以及目标算子集的完备性需求中的至少一种,其中,数据精度需求表征硬件设备对目标计算图的数据精度的需求,硬件资源限制表征硬件设备对目标计算图所需硬件资源的限制,完备性需求表征目标算子集中目标算子不能等价替换中间计算图中全部的原始计算节点。
115.在本公开实施例中,通过结合等价转换和近似转换可以实现一种原始计算图到另一种目标计算图的转换,等价转换可以使原始计算图的语义被完整保留,近似转换可以使得等价转换后得到的中间计算图进一步满足其它硬件约束条件,同时还可以扩展目标计算图对应的目标算子集的完备性。
116.在本公开实施例中等价转换和近似转换结合的转换方式,可以应用于神经网络计算图(相当于原始计算图)到硬件原语计算图(相当于目标计算图)的转换,等价转换后的中间计算图可以在保留原始计算图的语义的同时,满足硬件设备支持的目标算子集和硬件存储规则,近似转换可以在此基础上使硬件原语计算图满足数据精度需求,以及可以提高硬件资源利用率、降低执行硬件可执行文件所需的各种硬件资源以及扩展目标算子集的完备性。
117.基于上述硬件约束条件,在一种可能的实现方式中,在步骤s13中,根据硬件设备对应的硬件约束条件,将中间计算图转换为适配硬件设备的目标计算图,包括:
118.步骤s131:在硬件约束条件包括数据精度需求的情况下,对中间计算图的精度进行转换,得到满足数据精度需求的目标计算图;和/或,
119.步骤s132:在硬件约束条件包括硬件资源限制的情况下,对中间计算图的结构进行优化,得到满足指定执行效率需求的目标计算图;和/或,
120.步骤s133:在硬件约束条件包括目标算子集的完备性需求的情况下,根据目标算子集,生成与中间计算图近似等价的目标计算图。
121.如上所述,数据精度需求指示硬件设备需求的目标数据精度,在一种可能的实现方式中,在步骤s131中,在硬件约束条件包括数据精度需求的情况下,对中间计算图的精度进行转换,得到满足数据精度需求的目标计算图,包括:根据目标数据精度,对中间计算图进行量化,得到具有目标数据精度的目标计算图;和/或,在中间计算图的中间计算节点中包含非线性函数,且目标数据精度限定非线性函数的输入数据为有限的离散值的情况下,通过计算非线性函数的各个输入数据所对应的输出数据,生成非线性函数对应的查找表,并将查找表存储至与非线性函数的中间计算节点相连的中间存储节点,得到目标计算图。
其中,可以根据中间计算图中各个节点之间的数据依赖关系(也即有向边),确定与非线性函数的中间计算节点相连的中间存储节点。通过该方式,可以有效地将中间计算图转换成满足数据精度需求的目标计算图。
122.本公开实施例对于中间计算图的量化方式、查找表的生成方式不作限制。计算非线性函数的各个输入数据所对应的输出数据,也即利用非线性函数计算目标数据精度指示的离散值所对应的输出值,例如,假设非线性函数是e
x
,目标数据精度指示该非线性函数的输入数据为0和1,那么0对应的输出数据可以是1,1对应的输出数据可以是2.718。
123.在步骤s132中,指定执行效率需求,可以包括提高执行效率或降低执行效率;满足指定执行效率需求的目标计算图,可以理解为,执行效率更高的目标计算图或执行效率更低的目标计算图,也即对中间计算图的结构进行优化后所得到的目标计算图的执行效率,可以比中间计算图更低,也可以比中间计算图更高;具体可依据硬件设备的硬件资源限制,通过修改中间计算图的结构来调整中间计算图的执行效率,例如,若硬件设备的硬件资源能够支持执行效率更高的中间计算图,可以将中间计算图转换为执行效率更高的目标计算图;若硬件设备的硬件资源无法支持中间计算图目前的执行效率,那么可以将中间计算图转换为执行效率更低的目标计算图。
124.在一种可能的实现方式中,在步骤s132中,对中间计算图的结构进行优化,包括以下至少一种处理:删除中间计算图中的部分中间计算节点和/或部分中间存储节点(相当于删除节点);删除中间计算图中的部分有向边(相当于上述删除有向边);将中间计算图中的部分中间计算节点,分解为多个子计算节点(相当于上述分解节点);将中间计算图中部分具有分支结构的节点组合,合并为不具有分支结构的节点组合(相当于上述合并节点);将中间计算图中部分具有分支结构且分支结构的负载不均衡的节点组合,修改为分支结构的负载均衡的节点组合(相当于上述平衡节点)。
125.如上所述,本公开实施例对于删除节点、删除有向边、分解节点、合并分支、平衡分支的具体实现方式不作限制。负载不均衡可以理解为节点组合中的各个分支之间的计算速度差异、存储差异较大,相应的,负载均衡可以理解为节点组合中的各个分支之间的计算速度相近、存储差异较小。通过对中间计算图的结构进行优化,可以使硬件设备能够支持目标计算图所需的计算资源和存储资源,调整目标计算图的执行效率,降低单个网络层的计算量和参数量,降低目标计算图在计算过程中的动态存储量和计算量,使得目标计算图本身更适合硬件执行,以及使节点组合中的不同分支之间尽量负载均衡,有利于提高硬件资源的利用率。
126.如上所述,中间计算图中包括由无法被目标算子集中目标算子等价替换的第二原始计算节点转换成的占位节点,占位节点对应第二原始计算节点的算子信息;在一种可能的实现方式中,在步骤s133中,在硬件约束条件包括目标算子集的完备性需求的情况下,根据目标算子集,生成与中间计算图近似等价的目标计算图,包括:
127.对中间计算图对应的中间神经网络模型进行知识蒸馏,得到与中间神经网络模型近似等价的轻量化神经网络模型,轻量化神经网络模型是基于目标算子集构建的,目标计算图包括轻量化神经网络模型对应的计算图;和/或,根据占位节点对应的算子信息,从目标算子集中确定出与第二原始计算节点近似等价的目标算子,并将占位节点替换为与第二原始计算节点近似等价的目标算子,得到目标计算图。
128.其中,对中间神经网络模型进行知识蒸馏,可以理解为利用学习能力强、规模大的中间神经网络模型的输出结果,来训练学习能力弱、规模小的轻量化神经网络模型,实现将中间神经网络模型中学习的知识迁移到轻量化神经网络模型中,该轻量化神经网络模型可以是基于目标算子集构建的网络模型,也即该轻量化神经网络模型可以是硬件设备支持的网络模型,或者说能在硬件设备中部署执行的网络模型。通过该方式,不仅可以降低目标计算图所需的硬件资源,还可以起到处理中间计算图中的占位节点的作用,也即起到处理原始计算图中硬件设备无法支持的算子的作用
129.其中,根据占位节点对应的算子信息,从目标算子集中确定出与第二原始计算节点近似等价的目标算子,可以理解为,确定出硬件设备能支持的且与第二原始计算节点近似等价的目标算子;近似等价可以理解为针对同一输入,目标算子与第二原始计算节点之间的输出结果不同但近似,或者说目标算子与第二原始计算节点针对同一输入数据的输出结果之间的差异在可允许范围内。如上所述,算子信息可以描述第二原始计算节点,因此基于算子信息可以找到与第二原始计算节点近似等价的目标算子。
130.应理解的是,与第二原始计算节点近似等价的目标算子可以是单个目标算子,也可以是多个目标算子组成的算子组合,也即可以用单个目标算子或多个目标算子组成的算子组合替换占位节点。也可以是单个目标算子替换多个占位节点或多个目标算子替换多个占位节点。通过该方式,不仅可以处理中间计算图中的占位节点,还可以扩展目标算子集的完备性。
131.需要说明的是,本公开实施例对于上述步骤s131、步骤s132、步骤s133的具体执行顺序不作限制。在本公开实施例中,通过上述步骤s131、步骤s132、步骤s133中的至少一个步骤,将中间计算图转换为的目标计算图,可以适配硬件设备,满足硬件设备各种约束条件,从而实现高效统一地将不同算法框架下的原始神经网络模型,转换成能部署到上述硬件设备上的硬件可执行文件。
132.图8示出根据本公开实施例的神经网络模型部署装置的框图,如图8所示,该神经网络模型部署装置,包括:
133.获取模块101,用于获取待部署到硬件设备上的原始神经网络模型所对应的原始计算图;
134.等价转换模块102,用于将所述原始计算图转换为基于目标算子集构成的中间计算图,所述目标算子集为所述硬件设备支持的算子集;
135.近似转换模块103,用于根据所述硬件设备对应的硬件约束条件,将所述中间计算图转换为适配所述硬件设备的目标计算图,所述硬件约束条件是基于所述硬件设备对应的数据精度、硬件资源以及所述目标算子集中的至少一种所确定的;
136.确定模块104,用于基于所述目标计算图,确定硬件可执行文件,所述硬件可执行文件用于部署到所述硬件设备上。
137.在一种可能的实现方式中,所述等价转换模块102,包括:替换子模块,用于利用所述目标算子集中的目标算子,替换所述原始计算图中的原始计算节点,得到与所述原始计算节点等价的中间计算节点;生成子模块,用于根据所述硬件设备对应的数据存储规则,生成与所述中间计算节点关联的中间存储节点,所述数据存储规则用于指示所述硬件设备支持的数据存储方式;建立子模块,用于根据所述原始计算图中各个节点之间的数据依赖关
系,建立所述中间计算节点与所述中间存储节点之间的有向边,得到所述中间计算图,其中,所述数据依赖关系表征所述原始计算图中各个节点之间的关联关系。
138.在一种可能的实现方式中,所述利用所述目标算子集中的目标算子,替换所述原始计算图中的原始计算节点,得到与所述原始计算节点等价的中间计算节点,包括:确定所述原始计算图中能被所述目标算子集中的目标算子等价替换的第一原始计算节点,以及确定所述原始计算图中不能被所述目标算子集中的目标算子等价替换的第二原始计算节点;将能等价替换所述第一原始计算节点的目标算子,作为与所述第一原始计算节点等价的计算节点;将不能被等价替换的所述第二原始计算节点转换成占位节点,并记录所述占位节点对应的第二原始计算节点的算子信息;其中,所述中间计算节点包括:与所述第一原始计算节点等价的计算节点以及所述第二原始计算节点转换成的占位节点。
139.在一种可能的实现方式中,所述原始计算图中包括多个第一原始计算节点,所述将能等价替换所述第一原始计算节点的目标算子,作为与所述第一原始计算节点等价的计算节点,包括:针对所述原始计算图中的任一个第一原始计算节点,在所述目标算子集中存在至少两个目标算子能等价替换所述第一原始计算节点的情况下,根据所述至少两个目标算子各自对应的计算效率和/或存储效率,确定与所述第一原始计算节点等价的计算节点。
140.在一种可能的实现方式中,在建立所述中间计算节点与所述中间存储节点之间的有向边之后,所述等价转换模块102,还包括:重排操作转换子模块,用于在所述原始计算图中包括用于执行数据重排操作的第三原始计算节点的情况下,根据所述第三原始计算节点在所述原始计算图中的节点位置,将所述第三原始计算节点转换成数据重排信息,并将所述数据重排信息记录于与所述节点位置对应的有向边上;其中,所述数据重排操作包括用于改变数据排布且不产生计算的操作,所述数据重排信息用于指示所述数据重排操作。
141.在一种可能的实现方式中,在得到所述数据重排信息之后,所述等价转换模块102,还包括:重排信息优化子模块,用于根据所述硬件设备对应的数据存储规则,消除冗余的数据重排信息,和/或,将同一有向边上的至少两个数据重排信息融合为单个数据重排信息。
142.在一种可能的实现方式中,所述中间计算节点包括:与第一原始计算节点等价的计算节点,所述第一原始计算节点是所述原始计算图中能被所述目标算子集中目标算子等价替换的节点;其中,在建立所述中间计算节点与所述中间存储节点之间的有向边之后,所述等价转换模块102,还包括:节点融合子模块,用于根据所述硬件设备对应的算子计算规则,将满足所述算子计算规则且存在数据依赖关系的至少两个计算节点融合成单个计算节点,其中,所述硬件计算规则用于指示所述硬件设备能单次执行计算的至少两个目标算子。
143.在一种可能的实现方式中,所述硬件约束条件包括:所述硬件设备的数据精度需求、硬件资源限制以及所述目标算子集的完备性需求中的至少一种,其中,所述数据精度需求表征所述硬件设备对所述目标计算图的数据精度的需求,所述硬件资源限制表征所述硬件设备对所述目标计算图所需硬件资源的限制,所述完备性需求表征所述目标算子集中目标算子不能等价替换所述中间计算图中全部的原始计算节点;其中,所述近似转换模块103,包括:精度转换子模块,用于在所述硬件约束条件包括所述数据精度需求的情况下,对所述中间计算图的精度进行转换,得到满足所述数据精度需求的目标计算图;和/或,结构优化子模块,用于在所述硬件约束条件包括所述硬件资源限制的情况下,对所述中间计算
图的结构进行优化,得到满足指定执行效率需求的目标计算图;和/或,完备性转换子模块,用于在所述硬件约束条件包括所述目标算子集的完备性需求的情况下,根据所述目标算子集,生成与所述中间计算图近似等价的目标计算图。
144.在一种可能的实现方式中,所述中间计算图中包括由无法被所述目标算子集中目标算子等价替换的第二原始计算节点转换成的占位节点,所述占位节点对应所述第二原始计算节点的算子信息;其中,所述在所述硬件约束条件包括所述目标算子集的完备性需求的情况下,根据所述目标算子集,生成与所述中间计算图近似等价的目标计算图,包括:对所述中间计算图对应的中间神经网络模型进行知识蒸馏,得到与所述中间神经网络模型近似等价的轻量化神经网络模型,所述轻量化神经网络模型是基于所述目标算子集构建的,所述目标计算图包括所述轻量化神经网络模型对应的计算图;和/或,根据所述占位节点对应的算子信息,从所述目标算子集中确定出与所述第二原始计算节点近似等价的目标算子,并将所述占位节点替换为与所述第二原始计算节点近似等价的目标算子,得到所述目标计算图。
145.在一种可能的实现方式中,所述数据精度需求指示所述硬件设备需求的目标数据精度,其中,在所述硬件约束条件包括所述数据精度需求的情况下,对所述中间计算图的精度进行转换,得到满足所述数据精度需求的目标计算图,包括:根据所述目标数据精度,对所述中间计算图进行量化,得到具有所述目标数据精度的目标计算图;和/或,在所述中间计算图的中间计算节点中包含非线性函数,且所述目标数据精度限定所述非线性函数的输入数据为有限的离散值的情况下,通过计算所述非线性函数的各个输入数据所对应的输出数据,生成所述非线性函数对应的查找表,并将所述查找表存储至与所述非线性函数的中间计算节点相连的中间存储节点,得到所述目标计算图。
146.在一种可能的实现方式中,所述对所述中间计算图的结构进行优化,包括以下至少一种处理:删除所述中间计算图中的部分中间计算节点和/或部分中间存储节点;删除所述中间计算图中的部分有向边;将所述中间计算图中的部分中间计算节点,分解为多个子计算节点;将所述中间计算图中部分具有分支结构的节点组合,合并为不具有分支结构的节点组合;将所述中间计算图中部分具有分支结构且分支结构的负载不均衡的节点组合,修改为分支结构的负载均衡的节点组合。
147.根据本公开的实施例,通过获取待部署到硬件设备上的原始神经网络模型所对应的原始计算图,将原始计算图转换为基于硬件设备支持的目标算子集构成的中间计算图,这相当于从一种原始的算子集所定义的原始计算图转换成硬件设备支持的另一种算子集所定义的中间计算图,再根据硬件设备对应的硬件约束条件,将中间计算图转换为适配硬件设备的目标计算图,能够使基于目标计算图所确定的硬件可执行文件不仅符合硬件设备支持的目标算子集,还可以满足硬件设备在数据精度、存储规则、硬件资源以及目标算子集上的约束条件,从而实现将各种原始神经网络模型高效统一地转换成能部署到硬件设备上的硬件可执行文件。
148.在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
149.本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所
述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
150.本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
151.本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
152.图9示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图9,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
153.电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(i/o)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
154.在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
155.本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
156.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
157.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
158.用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的
任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
159.这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
160.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
161.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
162.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
163.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1