一种神经网络编译的优化方法及系统技术方案

技术编号:28224378 阅读:18 留言:0更新日期:2021-04-28 09:55
本发明专利技术提供了神经网络编译的优化方法,包括:根据待编译深度学习模型获取具有设定数据结构的计算图。将一个或多个预处理层融合为多个融合层。根据融合层中的算子间依赖关系获取融合层中的算子计算顺序。获取层内算子输入、输出调用次数及拆分策略。获取多个融合层在模拟硬件平台上对应的系统开销值。将所述多个融合层的系统开销值中最小值对应的融合层作为当前融合层。根据当前融合层编译待编译深度学习模型。其通过融合神经网络多层算子,将计算的中间结果保存于片上而非通过内存进行读写,可以有效地减少访存的需求,从而提升系统的执行效率。同时,本发明专利技术还提供了神经网络编译的优化系统。优化系统。优化系统。

【技术实现步骤摘要】
一种神经网络编译的优化方法及系统


[0001]本专利技术涉及可重构处理器及应用领域,应用于可重构编译器的编译器及编译过程。本专利技术具体涉及一种神经网络编译的优化方法及系统。

技术介绍

[0002]深度神经网络已应用于多个领域,如:人脸识别、机器翻译、推荐系统等领域。随着深度神经网络模型复杂度的提升,在相应任务上取得更好效果的同时,计算的复杂度也随之增长。为了提升深度神经网络的计算效率,从而使其能够更有效的完成相应的任务,亟须基于神经网络的编译优化技术来对复杂神经网络的计算进行优化。
[0003]在当前的计算机体系结构中,处理单元的执行速度远高于存储单元的访问速度,对于内存的访问已经成为制约整个计算机系统的瓶颈。针对这一瓶颈,现有技术中通过访存技术或通过有效的复用数据的方式来提升系统的执行速度。其关注点在于单个算子数据流进行调度。但此方式在提升系统执行速度的同时,也增加了内存负担,从而并未显著提升系统的执行效率,同时增加了系统负担。

技术实现思路

[0004]本专利技术的目的是提供一种神经网络编译的优化方法,其通过融合神经网络多层算子,将计算的中间结果保存于片上而非通过内存进行读写,可以有效地减少访存的需求,从而提升系统的执行效率。
[0005]同时本专利技术的目的是提供一种神经网络编译的优化系统,其通过融合神经网络多层算子,将计算的中间结果保存于片上而非通过内存进行读写,可以有效地减少访存的需求,从而提升系统的执行效率。
[0006]本专利技术的第一个方面,提供了一种神经网络编译的优化方法,神经网络编译的优化方法能够应用于可重构处理器的编译。可重构处理器中包括缓冲存储器。缓冲存储器具有缓冲存储量。
[0007]神经网络编译的优化方法包括:
[0008]步骤S101,根据待编译深度学习模型获取具有设定数据结构的计算图。计算图具有DAG无回路有向图属性。计算图中包括多个算子。多个算子包括:一个输入算子和一个或多个计算算子。输入算子相当于DAG无回路有向图中的根结点。计算算子相当于DAG无回路有向图中的中间结点。获取算子属性信息和算子间依赖关系。算子属性信息包括:算子输出数据的存储地址及存储量、算子的类型信息以及算子的参数信息。算子间依赖关系相应于DAG无回路有向图的各结点间的拓扑关系。
[0009]步骤S102,根据算子间依赖关系及输入算子与计算算子间的最长路径长度,分组算子为多个预处理层。将一个或多个预处理层融合为多个融合层。
[0010]步骤S103,根据融合层中的算子间依赖关系获取融合层中的算子计算顺序。根据融合层中的算子计算顺序给算子分配缓冲存储地址及存储量。
[0011]步骤S104,根据融合层中算子间依赖关系,获取融合层的层内输出算子、层内输入算子和层内中间算子。层内输出算子为与其他融合层具有输出关系的算子。层内输入算子为与其他融合层具有输入关系的算子。层内中间算子为仅与层内输出算子或层内输入算子具有依赖关系的算子。
[0012]根据层内输出算子的输出数据的存储地址、存储量及缓冲存储量获取缓冲存储器在缓存层内输出算子输出数据时的输出调用次数。根据输出调用次数获取层内输出算子的拆分策略。
[0013]根据层内输出算子与其他算子的依赖关系、层内输出算子的类型信息以及层内输出算子的参数信息获取层内输出算子的输入数据量。
[0014]根据输出数据量及缓冲存储量获取缓冲存储器在缓存层内输出算子输入数据时的输入调用次数。根据输入调用次数获取层内输出算子输入数据的的拆分策略。
[0015]将层内输出算子的输入数据作为与其依赖算子的输出数据。重复本步骤,直到层内中间算子及层内输入算子能够获取输出数据的输出调用次数及拆分策略、能够获取输入数据的输入调用次数及拆分策略为止。
[0016]步骤S105,将多个融合层、融合层中各算子的计算顺序以及所有融合层中输出算子、输入算子及中间算子的输出调用次数及拆分策略,部署在一个模拟硬件平台上获取多个融合层对应的系统开销值。模拟硬件平台具有一种设定的可重构处理器的系统结构。
[0017]步骤S106,将所述多个融合层的系统开销值中最小值对应的融合层作为当前融合层。
[0018]步骤S107,根据当前融合层编译待编译深度学习模型。
[0019]在本专利技术神经网络编译的优化方法的一种实施方式中,步骤S101前还包括:
[0020]步骤S100,获取待编译深度学习模型。
[0021]步骤S101中根据待编译深度学习模型获取具有设定数据结构的计算图的步骤包括:
[0022]根据待编译深度学习模型生成对应IR转换函数。通过IR转换函数将待编译深度学习模型转换为具有设定数据结构的计算图。
[0023]在本专利技术神经网络编译的优化方法的另一种实施方式中,步骤S102包括:
[0024]步骤S1021,多个预处理层为1、2、3......n预处理层。
[0025]步骤S1022,根据n

1预处理层获取n预处理层的融合层、根据n

1预处理层与n预处理层获取n

2预处理层的融合层........。根据2预处理层、3预处理层~和n

1预处理层获取1预处理层的融合层。
[0026]在本专利技术神经网络编译的优化方法的再一种实施方式中,步骤S107包括:
[0027]根据根结点的当前融合方案编译待编译深度学习模型,获取待编译深度学习模型的编译文件。
[0028]本专利技术的第二个方面,提供了一种神经网络编译的优化系统,神经网络编译的优化系统能够应用于可重构处理器的编译。可重构处理器中包括缓冲存储器。缓冲存储器具有缓冲存储量。
[0029]神经网络编译的优化系统包括:一个计算图获取单元、一个融合层获取单元、一个计算顺序获取单元、一个平铺单元、一个模拟单元、一个当前融合层获取单元和一个编译单
元。其中,
[0030]计算图获取单元,其配置为根据待编译深度学习模型获取具有设定数据结构的计算图。计算图具有DAG无回路有向图属性。计算图中包括多个算子。多个算子包括:一个输入算子和一个或多个计算算子。输入算子相当于DAG无回路有向图中的根结点。
[0031]计算算子相当于DAG无回路有向图中的中间结点。获取算子属性信息和算子间依赖关系。算子属性信息包括:算子输出数据的存储地址及存储量、算子的类型信息以及算子的参数信息。算子间依赖关系相应于DAG无回路有向图的各结点间的拓扑关系。
[0032]融合层获取单元,其配置为根据算子间依赖关系及输入算子与计算算子间的最长路径长度,分组算子为多个预处理层。将一个或多个预处理层融合为多个融合层。
[0033]计算顺序获取单元,其配置为根据融合层中的算子间依赖关系获取融合层中的算子计算顺序。根据融合层中的算子计算顺序给算子分配缓冲存储地址及存储量。
[0034]平铺单元,其配置为根据融合层中算子间依赖关系,获取本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种神经网络编译的优化方法,其特征在于,所述神经网络编译的优化方法能够应用于可重构处理器的编译;所述可重构处理器中包括缓冲存储器;所述缓冲存储器具有缓冲存储量;所述神经网络编译的优化方法包括:步骤S101,根据待编译深度学习模型获取具有设定数据结构的计算图;所述计算图具有DAG无回路有向图属性;所述计算图中包括多个算子;所述多个算子包括:一个输入算子和一个或多个计算算子;所述输入算子相当于所述DAG无回路有向图中的根结点;所述计算算子相当于所述DAG无回路有向图中的中间结点;获取所述算子属性信息和所述算子间依赖关系;所述算子属性信息包括:算子输出数据的存储地址及存储量、算子的类型信息以及算子的参数信息;所述算子间依赖关系相应于所述DAG无回路有向图的各结点间的拓扑关系;步骤S102,根据所述算子间依赖关系及所述输入算子与所述计算算子间的最长路径长度,分组所述算子为多个预处理层;将所述一个或多个预处理层融合为多个融合层;步骤S103,根据所述融合层中的算子间依赖关系获取所述融合层中的算子计算顺序;根据所述融合层中的算子计算顺序给所述算子分配缓冲存储地址及存储量;步骤S104,根据所述融合层中算子间依赖关系,获取融合层的层内输出算子、层内输入算子和层内中间算子;所述层内输出算子为与其他融合层具有输出关系的算子;所述层内输入算子为与其他融合层具有输入关系的算子;所述层内中间算子为仅与所述层内输出算子或层内输入算子具有依赖关系的算子;根据所述层内输出算子的输出数据的存储地址、存储量及所述缓冲存储量获取所述缓冲存储器在缓存所述层内输出算子输出数据时的输出调用次数;根据所述输出调用次数获取所述层内输出算子的拆分策略;根据所述层内输出算子与其他算子的依赖关系、层内输出算子的类型信息以及层内输出算子的参数信息获取所述层内输出算子的输入数据量;根据所述输出数据量及所述缓冲存储量获取所述缓冲存储器在缓存所述层内输出算子输入数据时的输入调用次数;根据所述输入调用次数获取所述层内输出算子输入数据的的拆分策略;将所述层内输出算子的输入数据作为与其依赖算子的输出数据;重复本步骤,直到所述层内中间算子及层内输入算子能够获取输出数据的输出调用次数及拆分策略、能够获取输入数据的输入调用次数及拆分策略为止;步骤S105,将所述多个融合层、所述融合层中各算子的计算顺序以及所有融合层中输出算子、输入算子及中间算子的输出调用次数及拆分策略,部署在一个模拟硬件平台上获取多个融合层对应的系统开销值;所述模拟硬件平台具有一种设定的可重构处理器的系统结构;步骤S106,将所述多个融合层的系统开销值中最小值对应的融合层作为当前融合层;步骤S107,根据所述当前融合层编译所述待编译深度学习模型。2.根据权利要求1所述的优化方法,其特征在于,所述步骤S101前还包括:步骤S100,获取待编译深度学习模型;所述步骤S101中根据待编译深度学习模型获取具有设定数据结构的计算图的步骤包
括:根据所述待编译深度学习模型生成对应IR转换函数;通过IR转换函数将待编译深度学习模型转换为具有设定数据结构的计算图。3.根据权利要求1所述的优化方法,其特征在于,所述步骤S102包括:步骤S1021,所述多个预处理层为1、2、3......n预处理层;步骤S1022,根据n

1预处理层获取n预处理层的融合层、根据n

1预处理层与n预处理层获取n

2预处理层的融合层........;根据2预处理层、3预处理层~和n

1预处理层获取1预处理层的融合层。4.根据权利要求1所述的优化方法,其特征在于,所述步骤S107包括:根据所述根结点的当前融合方案编译所述待编译深度学习模型,获取所述待编译深度学习模型的编译文件。5.一种神经网络编译的优化系统,其特征在于,所述神经网络编译的优化系统能...

【专利技术属性】
技术研发人员:欧道理郑时轩欧阳鹏
申请(专利权)人:北京清微智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1