算子融合方法、设备、存储介质及程序产品与流程

摘要: 本公开涉及芯片,更具体地,涉及一种算子融合方法、设备、存储介质及程序产品。背景技术:1、在基于图形处理器(graphicsprocessingunit,gpu)...
算子融合方法、设备、存储介质及程序产品与流程

本公开涉及芯片,更具体地,涉及一种算子融合方法、设备、存储介质及程序产品。

背景技术:

1、在基于图形处理器(graphics processing unit,gpu)等芯片进行深度学习等人工智能(artificial intelligence,ai)模型训练或推理的过程中,大量小粒度算子(如逐元素加法、激活函数、归一化等)虽然单个执行时间很短,但数量众多且频繁调用,其累积的内核启动开销和中间数据搬运开销对模型的端到端延迟影响较大。

2、在相关技术中,可以将相邻的小粒度算子融合为单个内核,以消除中间数据搬运和多次内核启动的开销。例如,深度学习编译器可以通过静态分析计算图结构识别可融合模式并自动生成融合内核,或者,由工程师根据模型结构手动设计融合内核并通过单元测试验证正确性。但是,相关技术中的算子融合方式准确性和可靠性不足,导致算子融合后的模型运行效果不可靠、开发效率较低。

技术实现思路

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、通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其他特征及其优点将会变得清楚。

1.一种算子融合方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述获取目标模型中各个初始算子的目标张量形状,包括:

3.根据权利要求2所述的方法,其特征在于,所述初始算子的算子运行信息通过对所述目标跟踪事件进行解析得到;所述算子运行信息包括所述初始算子在运行过程中的带宽信息和/或时延信息,所述带宽信息用于表征所述初始算子的存储带宽利用率,所述时延信息用于表征所述初始算子的运行时长。

4.根据权利要求3所述的方法,其特征在于,

5.根据权利要求1所述的方法,其特征在于,

6.根据权利要求1所述的方法,其特征在于,所述算子运行信息包括所述初始算子的运行时刻或运行次序;所述根据所述目标张量形状和所述算子运行信息,从所述目标模型的多个初始算子中确定待融合的多个候选算子组,包括:

7.根据权利要求1所述的方法,其特征在于,基于所述融合优先级从高到低的顺序,依次将所述融合后算子集成至所述目标模型中,以得到算子融合后的目标模型,包括:

8.根据权利要求1至7中任一项所述的方法,其特征在于,对所述候选算子组进行算子融合的方式包括:

9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机指令,所述处理器用于从所述存储器中调用所述计算机指令,以执行权利要求1至8中任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时实现权利要求1至8中任一项所述的方法。

11.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现权利要求1至8中任一项所述的方法。