一种算子融合方法及装置制造方法及图纸

技术编号:37545465 阅读:11 留言:0更新日期:2023-05-12 16:17
本申请公开了一种算子融合方法及装置,所述方法包括:确定AI模型中的多个目标算子;其中,所述AI模型包含多个算子,任一算子用于表示所述AI模型中的至少一个计算操作,所述多个目标算子包含在所述多个算子中;在所述多个目标算子中,每个目标算子与至少一个其它的目标算子相连;在多个算子融合模板中选择目标算子融合模板;其中,任一算子融合模板用于采用所述算子融合模板对应的算子融合方式对多个算子进行算子融合处理;根据所述目标算子融合模板,对所述多个目标算子进行算子融合处理。在该方法中,通过多模板的算子融合方案可以提高算子融合处理的灵活性和通用性,进而更显著的提升算子融合的效率,进一步提升AI模型的性能。能。能。

【技术实现步骤摘要】
一种算子融合方法及装置


[0001]本申请涉及人工智能领域,尤其涉及一种算子融合方法及装置。

技术介绍

[0002]在人工智能(artificial intelligence,AI)、机器学习(machine learning,ML)等领域中,可以通过设计或训练不同的AI模型(如深度学习模型、神经网络模型、机器学习模型等)来实现不同的功能。AI模型中一般包括多个算子,算子可以代表AI模型中对数据进行的计算操作。不同算子之间具有连接关系,表示算子之间的数据传输关系,每个算子可以对输入该算子的数据进行相应的计算操作,并输出对应的计算结果。
[0003]AI模型经过编译后可以被部署到硬件装置例如AI芯片上实现落地应用。其中,AI芯片也称为AI加速器或计算卡,是专门用于处理人工智能应用中的大量计算任务的模块,可以用于执行AI模型的计算任务。
[0004]AI芯片的内存空间一般较小,因此在运行AI模型的过程中,各算子的输入数据和输出数据均是存储在空间较大的片外内存的。在执行AI模型中的算子对应的计算操作时,AI芯片需先将该算子对应的输入数据从片外内存搬移到缓存中,再对缓存中的数据执行计算操作。这就造成了片外内存和缓存之间频繁的数据搬移,因此,AI芯片执行AI模型过程中的访存开销较大。针对该问题,当前可以在编译AI模型的过程中,通过对AI模型中的算子进行算子融合处理,将部分算子融合为一个新的算子,从而减少数据在片外内存和缓存之间的数据搬移,进而减少访存开销。
[0005]当前可以通过张量虚拟机(Tensor Virtual Machine,TVM)编译器对AI模型中的算子进行融合处理。TVM编译器主要通过人工配置方式对特定场景的算子进行融合处理。该方案要求待融合的算子的输入数据与输出数据之间满足一一映射的关系,因此该方案仅能实现对少数复杂度低的算子的融合,且需要较多的人工干预,自动性和通用性都较差,处理效率较低。
[0006]除了上述对于特定场景的算子的融合处理之外,TVM编译器还可以基于自动生成技术实现自动的算子融合。该方式中,TVM编译器可以基于不同算子之间的关系,自动识别上述特定场景,并进行对应的算子融合处理。该方案虽然可以一定程度上提高算子融合的自动性和处理效率,但也仅能实现特定场景下的算子融合,因此也仅适用于简单的算子场景。
[0007]综上,当前的算子融合方法的融合策略较为单一固定,场景适用性较差,导致算子融合效率相对较低,对AI模型的性能提升较低。

技术实现思路

[0008]本申请提供一种算子融合方法及装置,用以提高进行算子融合的灵活性和通用性。
[0009]第一方面,本申请提供一种算子融合方法及装置,所述方法包括:确定AI模型中的
多个目标算子;其中,所述AI模型包含多个算子,任一算子用于表示所述AI模型中的至少一个计算操作,所述多个目标算子包含在所述多个算子中;在所述多个目标算子中,每个目标算子与至少一个其它的目标算子相连;在多个算子融合模板中选择目标算子融合模板;其中,任一算子融合模板用于采用所述算子融合模板对应的算子融合方式对多个算子进行算子融合处理;根据所述目标算子融合模板,对所述多个目标算子进行算子融合处理。
[0010]在该方法中,在对AI模型中的算子进行融合处理时,针对待融合的多个目标算子,可以从采用多种不同融合策略的算子融合模板中选择算子融合模板来进行多个目标算子的融合处理。其中,不同算子融合模板的算子融合方式不同,可以实现不同的融合效果,因此可以适应更多场景的需求。因此,本申请通过多模板的算子融合方案可以提高算子融合处理的灵活性和通用性,进而更显著的提升算子融合的效率,进一步提升AI模型的性能。
[0011]在一种可能的设计中,所述多个算子融合模板包含第一算子融合模板和第二算子融合模板;其中,所述第一算子融合模板用于将多个算子融合为一个融合算子;所述第二算子融合模板用于将多个算子融合为多个融合算子;根据所述多个目标算子,在多个算子融合模板中选择目标算子融合模板,包括:当所述多个目标算子中存在第一目标算子和多个第二目标算子时,若存储所述第一目标算子的输出数据所需的存储空间小于设定的空间阈值,则在所述多个算子融合模板中随机选择一个算子融合模板为所述目标算子融合模板,否则,在所述多个算子融合模板中选择所述第二算子融合模板为所述目标算子融合模板;当所述多个目标算子中不存在第一目标算子和多个第二目标算子时,在所述多个算子融合模板中选择第一算子融合模板为所述目标算子融合模板;其中,所述多个第二目标算子分别与所述第一目标算子相连,所述多个第二目标算子的输入数据为所述第一目标算子的输出数据。
[0012]在该方法中,第一算子融合模板可以实现多个目标算子的整体融合,从而可以最大程度的减小多个目标算子执行过程中的访存开销。而第二目标算子可以实现多个目标算子的局部融合,因此可以通过将不同目标算子融合到不同融合算子中,来解耦部分目标算子之间的数据依赖关系,使得一些目标算子的计算操作的执行不会受到一些其它目标算子的影响,也不会影响其它目标算子的执行。在对多个目标算子进行算子融合处理时,可以根据多个目标算子的实际算子场景,灵活选择第一算子融合模板或第二算子融合模板对多个目标算子进行算子融合处理,从而得到相对较优的算子融合效果。
[0013]在一种可能的设计中,在所述多个第二目标算子中,至少一个第二目标算子的输入数据与输出数据的维度不同。
[0014]在该方法中,第一目标算子的输出数据会输入到多个第二目标算子,而多个第二目标算子中存在输入数据和输出数据维度不同的算子,该种算子场景下,算子执行过程较为复杂,且算子执行过程中的中间结果的数据量可能会很大,存在超出缓存容量的风险。因此,在该种算子场景下,根据算子输出数据的数据量选择算子融合模板,可以针对较为复杂的算子场景灵活选择合适的算子融合模板,进而得到更好的算子融合效果,提高算子融合后AI模型的性能。
[0015]在一种可能的设计中,根据所述目标算子融合模板,对所述多个目标算子进行算子融合处理,包括:当所述目标算子融合模板为所述第二算子融合模板时,使用所述第二算子融合模板将所述多个目标算子中的第一组目标算子融合为第一融合算子,以及将所述多
个目标算子中的第二组目标算子融合为第二融合算子;其中,所述第一组目标算子包含所述多个目标算子中执行顺序早于所述第一目标算子的其它目标算子以及所述第一目标算子;所述第二组目标算子包含执行顺序晚于所述第一目标算子的其它目标算子。
[0016]在该方法中,第一目标算子是多输出类型的算子,与第一目标算子连接的多个第二目标算子的执行都依赖于第一目标算子的输出数据,因此,多个第二目标算子之间及多个第二目标算子与第一目标算子之间都存在数据依赖关系。因此,以第一目标算子为分割点,通过第二算子融合模板对多个目标算子进行算子融合处理,将第一目标算子和多个第二目标算子融合到不同的融合算子中,一方面可以实现一定的算子融合效果,减少访存开销,另一方面可以在一定程度上本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种算子融合方法,其特征在于,包括:确定人工智能AI模型中的多个目标算子;其中,所述AI模型包含多个算子,任一算子用于表示所述AI模型中的至少一个计算操作,所述多个目标算子包含在所述多个算子中;在所述多个目标算子中,每个目标算子与至少一个其它的目标算子相连;在多个算子融合模板中选择目标算子融合模板;其中,任一算子融合模板用于采用所述算子融合模板对应的算子融合方式对多个算子进行算子融合处理;根据所述目标算子融合模板,对所述多个目标算子进行算子融合处理。2.根据权利要求1所述的方法,其特征在于,所述多个算子融合模板包含第一算子融合模板和第二算子融合模板;其中,所述第一算子融合模板用于将多个算子融合为一个融合算子;所述第二算子融合模板用于将多个算子融合为多个融合算子;根据所述多个目标算子,在多个算子融合模板中选择目标算子融合模板,包括:当所述多个目标算子中存在第一目标算子和多个第二目标算子时,若存储所述第一目标算子的输出数据所需的存储空间小于设定的空间阈值,则在所述多个算子融合模板中随机选择一个算子融合模板为所述目标算子融合模板,否则,在所述多个算子融合模板中选择所述第二算子融合模板为所述目标算子融合模板;当所述多个目标算子中不存在第一目标算子和多个第二目标算子时,在所述多个算子融合模板中选择第一算子融合模板为所述目标算子融合模板;其中,所述多个第二目标算子分别与所述第一目标算子相连,所述多个第二目标算子的输入数据为所述第一目标算子的输出数据。3.根据权利要求2所述的方法,其特征在于,在所述多个第二目标算子中,至少一个第二目标算子的输入数据与输出数据的维度不同。4.根据权利要求2或3的方法,其特征在于,根据所述目标算子融合模板,对所述多个目标算子进行算子融合处理,包括:当所述目标算子融合模板为所述第二算子融合模板时,使用所述第二算子融合模板将所述多个目标算子中的第一组目标算子融合为第一融合算子,以及将所述多个目标算子中的第二组目标算子融合为第二融合算子;其中,所述第一组目标算子包含所述多个目标算子中执行顺序早于所述第一目标算子的其它目标算子以及所述第一目标算子;所述第二组目标算子包含执行顺序晚于所述第一目标算子的其它目标算子。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:运行所述AI模型,包括:在执行所述第一融合算子结束后,生成所述第一融合算子的输出数据的多份复制数据;其中,所述多份复制数据的数量与所述多个第二目标算子的数量相同;根据所述多份复制数据执行所述第二融合算子。6.根据权利要求5所述的方法,其特征在于,所述第二融合算子用于表示所述第二组目标算子所表示的计算操作;根据所述多份复制数据执行所述第二融合算子,包括:在执行目标计算操作时,对所述多份复制数据中的一份复制数据执行所述目标计算操
作;其中,所述目标计算操作为所述第二组目标算子中任一个第二目标算子所表示的计算操作。7.根据权利要求6所述的方法,其特征在于,在根据所述多份复制数据执行所述第二融合算子之前,所述方法还包括:将所述多份复制数据分别存储到目标内存;在执行目标计算操作时,对所述多份复制数据中的一份复制数据执行所述目标计算操作,包括:执行多次数据处理过程;其中,每次数据处理过程包括以下步骤:从所述目标内存读取目标子数据,并将所述目标子数据写入目标缓存;从目标缓存读取所述目标子数据,并对所述目标子数据执行所述目标计算操作;其中,所述目标子数据为所述一份复制数据中的部分数据,存储所述目标子数据所需的存储空间小于目标阈值,所述目标阈值小于所述目标缓存中的可用存储空间;所述目标缓存中的可用存储空间小于存储所述目标数据所需的存储空间,所述目标内存中的可用存储空间大于存储所述目标数据所需的存储空间;其中,每次数据处理过程中从所述目标内存读取的目标子数据均不同。8.根据权利要求1~7任一所述的方法,其特征在于,在多个算子融合模板中选择目标算子融合模板之前,所述方法还包括:针对所述多个目标算子,生成所述多个算子融合模板。9.一种计算装置,其特征在于,包括:算子选择单元,用于确定AI模型中的多个目标算子;其中,所述AI模型包含多个算子,任一算子用于表示所述AI模型中的至少一个计算操作,所述多个目标算子包含在所述多个算子中;在所述多个目标算子中,每个目标算子与至少一个其它的目标算子相连;模板选择单元,用于在多个算子融...

【专利技术属性】
技术研发人员:左盟卢帆朱敏超
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1