优化策略生成方法和算子构建方法与流程

文档序号:29442133发布日期:2022-03-30 10:20阅读:126来源:国知局
优化策略生成方法和算子构建方法与流程

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.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.目前,基于芯片的指令集架构或者指令抽象开发得到的各类模型,其开发过程均采用的是手写大算子、半自动化模板或者纯手写内核的开发方式,而这一开发方式将变化的策略部分与不变的硬件抽象耦合在一起,从而导致每一策略均需耗费大量的时间精力重新写算子,以及引入新的调试时间,使得模型的开发效率低下。
44.针对上述情况,本发明提供一种优化策略生成方法,旨在降低模型开发的复杂度,将硬件复杂度和算法复杂度解耦,实现一种适用于各类模型的通用优化策略,图1是本发明提供的优化策略生成方法的流程示意图,如图1所示,该方法包括:
45.步骤110,确定策略抽象描述;
46.具体地,在生成通用优化策略之前,首先需要确定生成优化策略的导向和基准,即策略抽象描述,若将生成通用优化策略的过程比喻为建造房屋的过程,则通用优化策略相当于建造完成的房屋,而策略抽象描述相当于建造房屋的蓝图,在蓝图的指引下,可以高效无误的完成房屋的建造。
47.此处的策略抽象描述为细粒度应用程序编程接口(low level application programming interface,low level api)的策略抽象描述,包括硬件抽象、模型的算法输入和参数列表,其中,抽象表示数据结构。
48.步骤120,基于策略抽象描述构建融合算子;
49.具体地,在步骤110中确定策略抽象描述后,即可执行步骤120,根据策略抽象描述构建融合算子,这一过程具体包括如下步骤:
50.首先,根据策略抽象描述中的硬件特性(hardware feature)和硬件限制(hardware limitation),生成low level api特性列表(low level api feature list,细粒度api特性列表)以及low level api约束列表(low level api feature list,细粒度api约束列表);
51.随即,根据生成的low level api特性列表和low level api约束列表,构建融合算子,如此即可保证构建得到的融合算子能够满足硬件上的各方面要求,符合各种约束条款,为适用于各类模型的通用优化策略的生成提供了强有力的支撑。
52.步骤130,对融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定通用优化策略。
53.具体地,在步骤120中,得到融合算子后,即可对融合算子进行进一步优化,从而实现根据优化后的融合算子确定通用优化策略。
54.融合算子的优化过程包括如下步骤:
55.首先,对融合算子进行性能优化,得到性能优化后的融合算子;需要说明的是,融合算子的性能优化过程可以是以gemm(general matrix multiplication,通用矩阵乘)的利用率为引导执行的;
56.随即,可根据性能优化后的融合算子下的策略抽象描述,确定通用优化策略,此
处,具体可以是根据性能优化后的融合算子,对其下的策略抽象描述进行更新,并根据更新后的策略抽象描述确定通用优化策略。
57.需要说明的是,此处确定的通用优化策略能够应用于各种领域下的各类模型中,例如,图像增强领域、语音识别领域、人工智能芯片领域等。
58.本发明提供的优化策略生成方法,根据策略抽象描述构建融合算子,并对融合算子进行性能优化,根据性能优化后的融合算子下的策略抽象描述,确定通用优化策略,克服了利用传统方案中的开发方式开发模型的效率低下以及成本较大的缺陷,降低了模型开发的复杂度,将硬件复杂度和算法复杂度解耦,生成了适用于各类模型的通用优化策略,实现整个内核开发并行度的提升。
59.基于上述实施例,步骤120包括:
60.基于策略抽象描述构建功能覆盖测试框架;
61.对功能覆盖测试框架的功能覆盖进行验证,若验证通过,则基于功能覆盖测试框架,构建融合算子。
62.考虑到步骤110中确定的策略抽象描述的覆盖范围会对融合算子的适用范围产生影响,即策略抽象描述的功能覆盖的完备与否不仅影响着融合算子的适用范围,还间接影响了通用优化策略的适用范围,因此,本发明实施例中在确定策略抽象描述后,可进一步设置验证环节,通过此验证环节验证其功能覆盖,从而保证基于策略抽象描述直接或间接确定的融合算子和通用优化策略的适用性。
63.具体地,步骤120中,根据策略抽象描述构建融合算子时,具体可以是,首先根据策略抽象描述搭建功能覆盖测试框架,此框架可以是自动功能覆盖测试框架(automatic functional coverage test framework);随后,对功能覆盖测试框架的功能覆盖进行验证,验证基于策略抽象描述构建的功能覆盖测试框架的功能覆盖是否完备;若验证结果指示功能覆盖测试框架的功能覆盖完备,即验证通过,表明此时的策略抽象描述较为完善,则根据功能覆盖测试框架构建融合算子。
64.相应地,若验证结果指示功能覆盖测试框架的功能覆盖不够完备,即验证失败,表明此时的策略抽象描述不够完善,则需对策略抽象描述进行调整以及完善,然后将完善后的策略抽象描述重新确定为步骤110中的策略抽象描述,不断的对策略抽象描述进行完善的过程实际上是一个深度迭代的过程,完善后的策略抽象描述可以适用于各类模型的开发过程。
65.本发明实施例提供的方法,在确定策略抽象描述后,基于此构建功能覆盖测试框架,并对构建的功能覆盖测试框架的功能覆盖进行验证,在确保功能覆盖测试框架的功能覆盖完备的情况下,根据功能覆盖测试框架构建融合算子,通过验证环节的功能覆盖的验证,保证了最终得到的融合算子的适用范围,为适用于各类模型的通用优化策略的生成提供了助力,并且,基于验证后的策略抽象描述构建融合算子,大大减少了融合算子集成过程中的性能调试时间和功能调试时间。
66.基于上述实施例,步骤130包括:
67.对融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定性能优化策略;
68.对性能优化策略进行功能覆盖性调整,得到通用优化策略。
69.具体地,图2是本发明提供的性能优化的流程示意图,图2中的operator graph表示算子图,code-gen(code-generation)表示代码生成,high level api(high level application programming interface)表示粗粒度api,low level api表示细粒度api,emu(element management unit)表示网元管理单元,perf profiler表示性能分析器,如图2所示,步骤130中,对融合算子进行性能优化的过程,具体包括如下步骤:
70.首先,对融合算子进行性能优化,得到性能优化后的融合算子,并根据性能优化后的融合算子更新其下的策略抽象描述;需要说明的是,融合算子的性能优化过程可以是以gemm(general matrix multiplication,通用矩阵乘)的利用率为引导执行的;
71.随后,根据更新后的策略抽象描述,确定性能优化策略;
72.此后,还需对此性能优化策略进行功能覆盖性调整,调整其下的策略抽象描述的功能覆盖范围,即对low level api进行功能覆盖性调整,并通过perf profiler判断是否接近预设目标。需要说明的是,此处的low level api可以是以ir(intermediate representation,中间表达式)pass的形式存在,也可以是以api的形式,本发明实施例对不做具体限定。
73.对根据策略抽象描述构建的融合算子进行性能优化的过程实际上是对融合算子的性能和通用性进行折中的过程,最终能够得到一个适用性较强的通用优化策略和通用编程指南。
74.基于上述实施例,步骤110包括:
75.确定目标模型的硬件配置和负荷量;
76.基于硬件配置、负荷量以及硬件特性,确定策略抽象描述。
77.具体地,步骤110中,在确定策略抽象描述时,首先,可以根据目标模型梳理算例,确定目标模型的硬件配置config和负荷量workload,此处的config包括配置命令、配置信息以及操作对象,workload为目标模型的工作量。
78.随后,可在上一步得到的目标模型的硬件配置和负荷量的基础上,结合硬件特性,共同确定策略抽象描述,此处的硬件特性可以是缓冲区容量buffer size、寄存器register带宽、存储器memory带宽、仲裁优先级中的一种或多种,本发明实施例对此不作具体限定。
79.本发明实施例提供的方法,在目标模型的硬件配置和负荷量的基础上,结合了硬件特性确定策略抽象描述,使得最终得到的策略抽象描述能够包含多个方面的特性,拓宽了策略抽象描述的覆盖面,大大提升了其全面性,从而实现了通用优化策略实用性的提升。
80.基于上述实施例,硬件特性包括缓冲区容量、寄存器带宽、存储器带宽、仲裁优先级中的至少一种。
81.具体地,步骤110中确定策略抽象描述的硬件特性可以是缓冲区容量buffer size、寄存器register带宽、存储器memory带宽、仲裁优先级中的一种或多种。
82.其中,缓冲区容量buffer size为在内存中预留的用来对接口的数据做临时存储的存储空间的大小;寄存器register带宽表示单位时间里寄存器存放的数据量;存储器memory带宽表示单位时间里存储器所存取的信息量,也称为存储器在单位时间内读出/写入的位数或字节数;仲裁优先级表示通过仲裁设备评判的部件调用总线的优先级。
83.基于上述实施例,由low level api构建融合算子组网的过程包括如下步骤:
84.首先,梳理目标模型的硬件配置、负荷量以及硬件特性;
85.随即,自上而下定义low level api的数据和策略抽象描述;
86.随后,自上而下定义low level api的构造和通用函数接口;
87.此后,基于low level api通用函数接口规划low level api,且high level api以及low level api并行开发;
88.最后,基于目标模型组建网络,由融合算子到整个网格的迭代推进,整个网络在emu(element management unit,网元管理单元)功能以及性能上连通。
89.基于上述实施例,策略抽象描述包括多个属性,以及各个属性所包含的取值、预设值、子属性中的至少一种。
90.具体地,策略抽象描述中包含有多个属性(attribute),每一属性下可以包含取值(value)、预设值(default)以及子属性(attribute)中的任意一种或两种,除此之外,也可以同时包含取值(value)、预设值(default)以及子属性(attribute),本发明实施例对此不做具体限定。图3是本发明提供的策略抽象描述的结构示意图,如图3所示,策略抽象描述中,每一属性(attribute)下可以直接包含一个或多个取值(value),也可以直接包含多个取值(value)和一个预设值(default),还可以包含多个子属性(attribute)和一个预设值(default),每一子属性(attribute)又可以包含取值(value)、预设值(default)、属性(attribute)中的一种或多种。
91.基于上述实施例,图4是本发明提供的优化策略生成方法的总体流程图,如图4所示,low level api define表示细粒度api定义,ai model表示目标模型,hardware feature表示硬件特性,hardware limitation表示硬件限制,low level api feature list表示细粒度api特性列表,low level api constraint list表示细粒度api约束列表,low level verification表示验证细粒度api,automatic functional coverage test framework表示自动功能覆盖测试框架,fused operator test表示融合算子测试,low level programming guide表示细粒度编程指南,sample code表示示例代码,test coverage report表示测试覆盖率报告,handwrite performance tuning表示手写性能调整,build fused operator network表示建立融合算子组网,explore perf strategy表示探索性能策略,abstract strategy rule and write high level programming guide表示策略抽象描述和编写粗粒度编程指南,high level programming guide表示粗粒度编程指南,performance optimize strategy表示性能优化策略,cost model abstraction表示成本模型提取,performance kernel automatic gen为性能内核自动生成,based on fused operator strategy表示基于融合算子策略,based on ir strategy pass表示基于中间表达式策略优化,based on cost model表示基于成本模型,go to next operator表示转到下一个算子,code gen(code generation)表示代码生成。
92.本发明还提供一种算子方法,旨在降低算子开发的复杂度,将硬件复杂度和算法复杂度解耦,提高整个内核开发的并行度,图5是本发明提供的算子构建方法的流程示意图,如图5所示,该方法包括:
93.步骤510,确定通用优化策略,通用优化策略是基于如上述任一项所述的优化策略生成方法生成的。
94.具体地,在进行算子构建之前,首先需要确定通用优化策略,通用优化策略的确定过程包括如下步骤:
95.首先,确定目标模型的硬件配置和负荷量,基于硬件配置、负荷量以及硬件特性,确定策略抽象描述,其中,硬件特性包括缓冲区容量、寄存器带宽、存储器带宽、仲裁优先级中的至少一种,策略抽象描述包括多个属性,以及各个属性所包含的取值、预设值、子属性中的至少一种;
96.随后,基于策略抽象描述构建功能覆盖测试框架,并对功能覆盖测试框架的功能覆盖进行验证,若验证通过,则基于功能覆盖测试框架,构建融合算子;
97.此后,对融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定性能优化策略,并对性能优化策略进行功能覆盖性调整,得到通用优化策略。
98.步骤520,基于通用优化策略,进行算子构建。
99.具体地,经过步骤510确定通用优化策略后,即可根据通用优化策略进行算子构建,算子构建的过程实际上是将通用优化策略应用于对应模型的过程,即根据通用优化策略自动生成高性能算子的过程。
100.本发明提供的算子构建方法,确定通用优化策略,通用优化策略的确定过程是将硬件复杂度和算法复杂度解耦的过程,能够降低模型开发的复杂度,从而为算子以及各类功能提供了最小粒度的优化,并且,通过此通用优化策略进行算子构建,还能大大减小算子开发的复杂度,提高了整个内核开发的并行度。
101.下面对本发明提供的优化策略生成装置进行描述,下文描述的优化策略生成装置与上文描述的优化策略生成方法可相互对应参照。
102.图6是本发明提供的优化策略生成装置的结构示意图,如图6所示,该装置包括:
103.基本算子确定单元610,用于确定策略抽象描述;
104.融合算子构建单元620,用于基于所述策略抽象描述构建融合算子;
105.性能优化单元630,用于对所述融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定通用优化策略。
106.本发明提供的优化策略生成装置,根据策略抽象描述构建融合算子,并对融合算子进行性能优化,根据性能优化后的融合算子下的策略抽象描述,确定通用优化策略,克服了利用传统方案中的开发方式开发模型的效率低下以及成本较大的缺陷,降低了模型开发的复杂度,将硬件复杂度和算法复杂度解耦,生成了适用于各类模型的通用优化策略,实现整个内核开发并行度的提升。
107.基于上述实施例,融合算子构建单元620用于:
108.基于所述策略抽象描述构建功能覆盖测试框架;
109.对所述功能覆盖测试框架的功能覆盖进行验证,若验证通过,则基于所述功能覆盖测试框架,构建融合算子。
110.基于上述实施例,性能优化单元630用于:
111.对所述融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定性能优化策略;
112.对所述性能优化策略进行功能覆盖性调整,得到所述通用优化策略。
113.基于上述实施例,基本算子确定单元610用于:
114.确定目标模型的硬件配置和负荷量;
115.基于所述硬件配置、负荷量以及硬件特性,确定所述策略抽象描述。
116.基于上述实施例,所述硬件特性包括缓冲区容量、寄存器带宽、存储器带宽、仲裁优先级中的至少一种。
117.基于上述实施例,所述策略抽象描述包括多个属性,以及各个属性所包含的取值、预设值、子属性中的至少一种。
118.下面对本发明提供的算子构建装置进行描述,下文描述的算子构建装置与上文描述的算子构建方法可相互对应参照。
119.图7是本发明提供的算子构建装置的结构示意图,如图7所示,该装置包括:
120.确定通用优化策略710,所述通用优化策略是基于如上述任一项所述的优化策略生成方法生成的;
121.基于所述通用优化策略720,进行算子构建。
122.本发明提供的算子构建装置,确定通用优化策略,通用优化策略的确定过程是将硬件复杂度和算法复杂度解耦的过程,能够降低模型开发的复杂度,从而为算子以及各类功能提供了最小粒度的优化,并且,通过此通用优化策略进行算子构建,还能大大减小算子开发的复杂度,提高了整个内核开发的并行度。
123.图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(communications interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行优化策略生成方法或算子构建方法,其中,优化策略生成方法包括:确定策略抽象描述;基于所述策略抽象描述构建融合算子;对所述融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定通用优化策略。算子构建方法包括:确定通用优化策略,所述通用优化策略是基于如上述任一项所述的优化策略生成方法生成的;基于所述通用优化策略,进行算子构建。
124.此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
125.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的优化策略生成方法或算子构建方法,其中,优化策略生成方法包括:确定策略抽象描述;基于所述策略抽象描述构建融合算子;对所述融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定通用优化策略。算子构建方法包括:确定通用优化策略,所述通用优化策略是基于如上述任一项所述的优化策略生成方法生成的;基于所述通用优化策略,进行算子构建。
126.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的优化策略生成方法或算子构建方法,其中,优化策略生成方法包括:确定策略抽象描述;基于所述策略抽象描述构建融合算子;对所述融合算子进行性能优化,基于性能优化后的融合算子下的策略抽象描述,确定通用优化策略。算子构建方法包括:确定通用优化策略,所述通用优化策略是基于如上述任一项所述的优化策略生成方法生成的;基于所述通用优化策略,进行算子构建。
127.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单
元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
128.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
129.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1