CN116861359A - 面向深度学习推理任务编译器的算子融合方法和系统 - Google Patents
面向深度学习推理任务编译器的算子融合方法和系统 Download PDFInfo
- Publication number
- CN116861359A CN116861359A CN202310643920.4A CN202310643920A CN116861359A CN 116861359 A CN116861359 A CN 116861359A CN 202310643920 A CN202310643920 A CN 202310643920A CN 116861359 A CN116861359 A CN 116861359A
- Authority
- CN
- China
- Prior art keywords
- operator
- operators
- kernel
- heterogeneous
- fusible
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013135 deep learning Methods 0.000 title claims abstract description 51
- 238000007500 overflow downdraw method Methods 0.000 title claims abstract description 34
- 230000004927 fusion Effects 0.000 claims abstract description 87
- 230000014509 gene expression Effects 0.000 claims abstract description 32
- 230000005477 standard model Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 34
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000005192 partition Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 description 22
- 238000005457 optimization Methods 0.000 description 18
- 230000001133 acceleration Effects 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出一种面向深度学习推理任务编译器的算子融合方法,包括:将深度学习推理任务模型的标准模型,转化为初始图级IR;遍历该初始图级IR,将该初始图级IR中的可融合算子标识为同类算子或异类算子;将该初始图级IR转化为张量表达式,融合该张量表达式中的同类算子;将该张量表达式编译为内核源码,融合该内核源码中的异类算子;将该内核源码编译为可执行代码并部署运行。本发明还提出一种面向深度学习推理任务编译器的算子融合系统,以及一种用于深度学习推理任务编译器算子融合的数据处理装置。
Description
技术领域
本发明涉及深度学习技术领域,特别是涉及一种面向深度学习推理任务编译器的算子融合方法和系统。
背景技术
深度学习被广泛的应用于图像分类与识别,自然语言理解等人工智能技术领域。而随着半导体技术和编译器软件的进步,数据中心和超级计算机系统的工作负载也越来越多地来自以深度学习神经网络为代表的人工智能技术。
为了进一步提高基于深度学习神经网络模型的计算任务在设备上的运行速度,很多面向深度学习的编译器将神经网络模型中单个算子的优化作为主要工作。它们往往通过自动调整调度参数和调用硬件厂商提供的算子库来完成编译优化。然而,对于很多人工智能(AI)计算任务,尤其是对于深度学习的推理任务来说,神经网络模型中顺序运行的单个算子通常很难完全利用整个加速器的并行计算单元和其他资源。
而当前深度学习中卷积神经网络的设计也越来越倾向于使用多分支卷积来代替以往的单分支,从而使整个网络模型变得更宽、更深,单个算子的操作数也随之逐渐降低。最近的研究表明,在早期的图像分类识别网络VGG中,卷积算子平均包含2230MFlops。而在2018年之后出现的图像分类网络NASNet中,卷积运算的平均浮点操作数就降到了82MFlops。这种趋势伴随着硬件技术的进一步发展,将使算力浪费问题变得更加严重。
现有的深度学习编译器使用算子融合技术来提高单个算子的计算规模,减少算子间数据搬移次数,减少核函数加载的额外开销,从而提高整体计算的效率。此种算子融合技术可以在神经网络模型的执行通路上顺序地融合特定的算子组合。但是这种纵向的融合方案依赖于厂商停供的算子库,可融合的算子组合有限,而且只能沿着计算通路进行融合,无法彻底解决系统运行时计算资源利用率低下的问题。
利用硬件厂商提供的多流或资源隔离机制,有些优化方法可以将并行的算子分配到隔离的硬件流中并发执行从而提高系统计算资源的利用率,改善了系统的整体性能。但是这种方案受限于硬件资源的隔离机制,资源的分配调整难以动态实现,给核函数的优化带来困难。而且这种方法引入的调度开销无法被忽略,影响了总体的执行效率。
基于设备厂商提供的加速库,还有些方法可以执行计算图级别的并行算子融合优化。这种优化方法可以将相同的可并行化的小算子通过加速库中相应的批处理函数转化成相应的大算子,从而有效的提高加速器的利用率。然而这种方案受限于厂商提供的加速库,支持的算子有限,不同种类不同大小的并行算子也无法进行融合。并且这种方法还需要在融合前后对算子的输入和输出进行连接和拆分处理,这也会增加不小的计算开销。
最近的一些工作成果也提出了一些不依靠厂商加速库的并行算子融合机制,比如Rammer和HFUSE。这些方法可以把多个顺序或并行的Element-Wise类算子融合到一个大算子之中,从而更好地利用硬件计算单元,降低了模型端到端执行时间。但是现有的这些并行化算子融合机制无法处理常见复杂算子间的融合,比如卷积和矩阵乘。而且它们也没能提供融合后算子的调优方案,限制了进一步优化的空间。
针对深度学习编译器中单算子优化无法充分利用加速器算力资源的问题,以及上述现有算子融合解决方案存在的缺点,本发明提出了一种面向深度学习推理任务编译器的算子融合方法。
发明内容
针对上述问题,本发明提出一种面向深度学习推理任务编译器的算子融合方法,包括:将深度学习推理任务模型的标准模型,转化为初始图级IR;遍历该初始图级IR,将该初始图级IR中的可融合算子标识为同类算子或异类算子;将该初始图级IR转化为张量表达式,融合该张量表达式中的同类算子;将该张量表达式编译为内核源码,融合该内核源码中的异类算子;将该内核源码编译为可执行代码并部署运行。
本发明所述的算子融合方法,其中标识该可融合算子的步骤包括:对该初始图级IR的抽象语法树做广度优先搜索,将该标准模型中同一层的算子做并行标识,以得到多组可融合算子;遍历每组可融合算子,将本组内算子种类和输入输出都相同的可融合算子,标识为同一组的同类算子;将本组内算子种类和/或输入输出不相同,且部署运行时最大活跃线程块数处于一个划分区间的可融合算子,标识为同一组的异类算子。
本发明所述的算子融合方法,其中,融合该同类算子的步骤包括:对于同一组同类算子,将其对应的张量表达式的输出与输入部分同时增加一个相同的批次维度以生成新张量表达式,该批次维度的大小等于该组同类算子的个数;以该新张量表达式替换该组同类算子在该标准模型的语法树上的位置,并将该新张量表达式的输入与输出接入该语法树。融合该异类算子的步骤包括:对于同一组异类算子,从该内核源码中找到该异类算子的算子内核;将该算子内核的线程块对齐为大小一致;将对齐后的算子内核源到源地融合为单个新算子内核,并将该新算子内核的核函数的线程网格设置为一维结构,重新映射该一维结构的线程索引,以保证该新算子内核的计算逻辑与输入输出的正确性;将本组异类算子所有输入输出重新映射和添加到该新算子内核上;在该新算子内核的核函数内统一分配存储空间,以代替本组异类算子各自核函数内的存储空间请求。
本发明所述的算子融合方法,其中对齐该线程块的步骤包括:对于一个该算子内核,减少其线程块的数量,并增大其线程块的大小,或者,保留其线程块数量,并向其线程块内添加空线程来增大线程块的大小,使对齐后的线程块与本组的算子内核中具有的最大线程块大小一致。
本发明所述的算子融合方法,其中于标识该可融合算子的步骤前还包括:使用常数折叠和/或死代码消除和/或算子布局调整方式,对该初始图级IR进行优化
本发明还提出一种面向深度学习推理任务编译器的算子融合系统,包括:标识模块,用于标识可融合算子;将深度学习推理任务模型的标准模型,转化为初始图级IR;遍历该初始图级IR,将该初始图级IR中的可融合算子标识为同类算子或异类算子;同类算子融合模块,用于将该初始图级IR转化为张量表达式,融合该张量表达式中的同类算子;异类算子融合模块,用于将该张量表达式编译为内核源码,融合该内核源码中的异类算子;运行模块,用于将该内核源码编译为可执行代码并部署运行。
本发明所述的算子融合系统,其中该标识模块包括:搜索子模块,用于对该初始图级IR的抽象语法树做广度优先搜索,将该标准模型中同一层的算子做并行标识,以得到多组可融合算子;标识子模块,用于将该可融合算子标识为同类算子或异类算子;遍历每组可融合算子,将本组内算子种类和输入输出都相同的可融合算子,标识为同一组的同类算子;将本组内算子种类和/或输入输出不相同,且部署运行时最大活跃线程块数处于一个划分区间的可融合算子,标识为同一组的异类算子。
本发明还提出一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,当该计算机可执行指令被执行时,实现如前所述的面向深度学习推理任务编译器的算子融合方法。
本发明还提出一种数据处理装置,包括如前所述的计算机可读存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,实现面向深度学习推理任务编译器的算子融合方法。
本发明提供的算子融合方法是针对计算图中的可并行算子,其优势在于,这些待融合算子在计算图中可以处于不同的计算路径之上,而且带融合算子可以是非特定算子。
附图说明
图1是本发明的面向深度学习推理任务编译系统模块结构图。
图2是本发明的面向深度学习推理任务编译系统工作流程图。
图3是本发明的算子融合分析标识工作流程图。
图4是本发明的同类并行算子融合流程图。
图5是本发明的异类并行算子融合流程图。
图6是本发明的数据处理装置示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种面向深度学习推理任务编译器算子融合方法和系统。目的是在编译面向深度学习的神经网络模型时,能在更大范围内融合并行的同类或异类算子,使生成的核函数能更有效的利用目标设备的计算资源,进一步提高计算设备在处理深度学习推理任务时的通量。
针对以上现有技术方案存在的问题,本发明提供一种针对深度学习推理任务编译器的算子融合方法和系统。
本发明提供一种面向深度学习任务编译器的算子融合方法,包括:
1、基于神经网络结构信息,算子种类和算子资源请求特性,生成算子之间的依赖关系及算子融合标识。
2、对于可融合的同类并行算子,基于算子的张量表达式形式,通过维度扩张的方式完成算子融合。
3、同类并行算子融合后,先验地增加融合后算子的分块大小,来增强此新算子的自动调优的效率。
4、对于深度学习模型中异类的可融合并行算子,首先使用现有深度学习编译器对其分别完成优化和代码生成。基于生成的核函数源码,通过线程块(ThreadBlock)对齐的方法,使来自不同算子的核函数拥有相同大小的线程块,从而使异类的算子可以融合。
5、异类的并行算子核函数融合后,采用基于计算复杂度的线程块排序规则。来自计算复杂度较高的算子的线程块获得较小的块索引值(Block Index)。
6、异类算子的核函数融合后,融合后的核函数的线程块内包含了来自不同算子的计算逻辑,处理来自不同算子的原本的输入输出。通过重新建立线程块内线程索引,保证各个线程块激活了正确的计算逻辑,匹配了正确的输入和输出。
7、异类算子核函数融合前,各核函数内包含了各自的共享存储(Shared Memory)空间分配请求。融合后采用统一的存储资源请求代替被融合算子核函数内各自分散的资源请求。统一资源请求的规模与被融合算子的核函数中的最大资源请求一致。
本发明基于具有上述的特征的算子融合方法,提供一种面向深度学习推理任务的编译器系统,如图1所示,包括:
1、深度学习标准模型生成模块。此模块负责将来自不同框架的深度学习神经网络模型转化为标准模型。此模型将作为IR生成与优化模块的输入。常见的深度学习框架有TensorFlow,PyTorch,Coffee等。本发明使用ONNX(OpenNeuralNetworkExchange)作为深度学习推理任务模型的标准描述。ONNX是一种用来表示深度学习模型的开放标准,可以使来自不同框架构建的神经网络模型能够彼此转换,并提供了统一的表示方法来描述神经网络的结构和操作。
2、IR生成与优化模块。负责将深度学习标准模型转化为高阶抽象的中间表示(IntermediateRepresentation)的生成与优化;基于IR,本模块还会执行算子并行融合分析,确定适合并行融合的算子,并标识它们。此模块由3个子模块构成:IR生成器模块,负责将深度学习标准模型编译成为基础的中间表达形式;IR优化器模块,基于生成的基础IR对模型在图级别与张量级别分别进行进一步的优化;算子融合分析器模块,基于模型IR对模型中的算子进行并行性与可融合性分析,并对分析结果进行标注。
3、目标代码生成与优化模块。负责将IR编译优化为目标设备的可执行代码。此模块由4个子模块构成:目标设备内核源码生成器负责将优化的底层IR转化为与目标设备匹配的初始内核源代码;并行算子内核融合器负责融合被标识的并行算子内核,并生成融合后的算子内核源代码;目标设备可执行代码编译器负责将融合优化过的内核源代码进一步的编译为与目标设备匹配的可执行代码,并在目标设备上运行;融合内核自动调优器负责读取代码运行性能的采样数据,并采用启发性算法调整算子优化参数与内核融合参数,辅助生成最优的目标设备代码。
图2是采用本发明提供的方法时,本发明中编译器系统的工作流程。具体来说,本发明的面向深度学习推理任务编译器的算子融合方法包括:
步骤1.将来自用户的深度学习推理任务模型转化为ONNX标准模型。
步骤2.IR生成器接收来自用户的ONNX标准模型,并调用TVM的RelayIR生成函数将其转化为初始图级IR。
步骤3.IR优化器读取初始图级IR,并调用TVMRelayIRPasses功能来完成图级IR的优化。优化方式根据模型和涉及的算子种类不同,而有所不同,于本发明的实施例中,包括常数折叠,死代码消除,算子布局调整等方式中的一种或多种。
步骤4.算子融合分析器读取并遍历优化后的图级IR,标识可融合并行算子,包括可融合同类算子与可融合异类算子。
针对算子融合分析器模块,本发明提出一种并行算子可融合分析与标识的流程,具体实施细节如图3所示,详细步骤如下:
步骤41.对图级IR的抽象语法树(AST)做广度优先搜索,将深度学习网络中同一层的算子做并行标识;
步骤42.遍历每组可并行算子,对种类与输入输出都相同的算子,标识为同类可融合并行算子。
步骤43.遍历每组可并行算子,对种类或输入输出不相同的算子,调用设备运行时或驱动API获取算子的“每个并行单元的最大活跃线程块数”。此数字相近的算子标识为异类可融合并行算子。判断标准可来自先验数据。
步骤5.IR生成器调用TVM下译(lowering)函数,将优化后的图级IR转化为张量表达式TE(TensorExpression)。
步骤6.基于用户模型的张量表达式TE与可融合同类并行算子标识信息,IR优化器通过TE维度扩张方式,完成同类可并行算子融合。
针对步骤6中的同类并行算子融合方法,本发明提出一种同类并行算子融合流程,具体实施细节如图4所示,详细步骤如下:
步骤61.根据算子融合分析模块对计算图中算子的融合标记,找到一组可融合的同类并行算子。然后将其张量表达式的输出与输入部分同时增加一个相同的批次维度(BatchDimension)。批次维度的大小等于待融合同类算子的个数。
步骤62.用新生成的张量算子表达式代替之前的所有同类算子在语法树上的位置,并在新的融合算子中对输入输出做相应的修改,接入到将原有算子的输入与输出。
步骤63.检查是否所有标识的同类算子完成融合。如果还有剩余待融合算子,则重复步骤61—步骤62,直到所有同类可融合并行算子完成融合。
步骤7.IR生成器调用TVMTE下译函数,将同类算子融合后的张量表达式转化为张量级IR。
步骤8.目标设备内核源码生成器(CodeGenerator)读取步骤7中优化后的张量级IR,根据用户指定的设备与后端编译链,将其编译为对应的内核源码。
步骤9.并行算子内核融合器首先读取可融合异类并行算子的标识信息。取出其中一组待融合算子。如果所有标识算子都已融合完毕,则进入步骤11。
步骤10.并行算子内核融合器对一组异类并行算子内核进行融合。主要融合方法和流程在步骤1001—步骤1007和图5中描述。融合完成后,回到步骤10准备进行下一组算子内核融合。
针对步骤10中的异类并行算子内核融合方法,本发明提出一种异类并行算子内核融合流程,具体实施细节如图5所示,详细步骤如下:
步骤1001.根据算子融合分析模块对计算图中算子的融合标记,找到一组可融合的异类并行算子,并在步骤9中生成的算子内核源码中找到对应的算子内核。
步骤1002.异类算子内核通常具有不同的线程块(ThreadBlock)大小设置。而融合后的单算子内核应有一致的线程块大小。因此,在此步骤中融合器将调整组内算子内核的线程块大小,使来自不同算子内核的线程块大小对齐。对于一些运算逻辑相对简单的算子(如矩阵乘),融合器直接减少其线程块数量,增大其线程块大小,使之与组内算子内核的最大线程块大小一致;对于其它不容易直接调整线程块数量的算子内核,融合器将保留其线程块数量,而向其线程块内添加空线程来增大线程块的大小,使其与组内最大线程块对齐。
步骤1003.将步骤1002中线程块大小一致的算子内核源到源地重写为单个新算子内核。
步骤1004.融合器将融合后核函数的线程网格设置为一维结构,也就是说来自异构算子的所有线程块在新核函数中将按照一维排布。这样可以简化其后的线程索引(ThreadIndex)。
步骤1005.融合器根据新算子的规模、原算子内核融合后在新算子内核中的位置以及新算子输入和输出与原算子输入输出的对应关系等重新映射线程索引,保证各算子融合后计算逻辑与输入输出的正确性。
步骤1006.将原组内算子的所有输入输出重新映射和添加到新算子内核上。
步骤1007.融合器在融合后的算子核函数内统一分配存储空间,以代替融合前各算子核函数内各自的存储空间请求。访问统一共享存储时,线程的索引值也会按照上一步骤的方式做相应的映射修改。
步骤1008.检查是否所有标识的异类算子已完成融合。如果还有剩余待融合算子,则重复步骤1001—步骤1007,直到所有异类可融合并行算子完成融合。
步骤11.目标设备可执行代码编译器将调用用户指定的后端编译链,将融合后的算子内核源码编译为目标计算设备的可执行代码。
步骤12.在计算设备上部署和运行二级制代码。
步骤13.代码运行完成后,融合内核自动调优器负责自动调整系统多算子的优化编译参数。自动调优器将当前算子优化配置参数作为进化算法本轮次的输入和配置搜索空间的配置值,将获得的代码采样执行时间作为这组算子的配置收益,进行新的一轮进化迭代。从而中获得新的算子优化配置参数。这些参数将反馈回IR优化器与目标设备内核源码生成器来产生新的目标设备可执行代码。重复若干次性能收敛后,或者达到预定优化目标后完成自动调优。
上述步骤6与步骤10涉及的同类并行算子融合与异类并行算子核函数融合的实现方法包含以下7个特征:
1)算子并行融合:现有的深度学习模型优化编译器只能在神经网络的顺序执行路径上对特定组合的算子进行融合优化。而在步骤6与步骤10中涉及的可融合算子可以是深度学习网络中并行执行的算子,这样扩大了可融合算子的范围。
2)同类与异类算子广泛融合:特定设备厂商提供算子加速库支持将相同的可并行化的小算子通过加速库中相应的批处理函数转化成相应的大算子来完成融合。这种方法受限于厂商提供的加速库,支持的算子有限。而且不同种类不同大小的算子也无法进行融合。本发明提出的融合方法(步骤6,步骤10)理论上可以并行融合大多数常见种类的算子,进一步扩大了可融合算子的范围。
3)算子融合开销低:本发明提出的融合方法(步骤6,步骤10)不需要调用现有的厂商加速库函数来实现,所以也避免了融合时产生的连接和分离操作,进一步的减少了算子融合的开销。
4)基于张量表达式的同类并行算子融合:融合同类并行算子时,基于算子的张量表达式(TE),通过维度扩张的方法完成融合。
5)通过线程块大小对齐和输入输出聚合的方式进行异类并行算子融合:通过对算子内核线程块大小对齐并聚合输入输出的方法,实现了通用的异类并行算子自动融合。在调整算子内核线程块大小时,可以通过直接改变算子线程块大小及相应的数目,或者通过添加空线程(inactivethread)的方式来完成。这种融合实现方法可以支持大多数算子的自动融合,而无需厂商提供定制的算子融合模板和函数。
6)重建线程索引保证融合后计算逻辑的正确性:通过线程块大小对齐和输入输出聚合的方式完成异类算子内核的融合后,通过重建原算子线程索引的方式保证融合后原算子计算逻辑的正确性。
7)算子融合后统一进行资源分配请求:由于步骤6和步骤10提供的算子融合方法能极大的拓展算子融合的来源和规模,算子内核融合后新算子内会包含原算子的所有存储资源请求,并行算子内核融合器将合并这些请求,形成统一共用的存储资源池满足所有融合后算子的计算需求。
本发明的面向深度学习推理任务编译器的算子融合方法主要用于人工智能应用的优化与部署,还可以应用于计算机集群的基础软件服务等,本发明并不以此为限。
图6是本发明的数据处理装置示意图。如图6所示,本发明实施例还提供一种计算机可读存储介质,以及一种数据处理装置。本发明的计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被数据处理装置的处理器执行时,实现上述面向深度学习推理任务编译器的算子融合方法。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器、FPGA、ASIC等)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
本发明提出的方法有如下优势:1)可融合的算子范围广:既可以高效融合同类同大小的算子,也可以融合不同类别的算子。从而使算法的适应性更强,融合后的算子更能充分利用硬件资源;2)可融合的算子种类多:此方法理论上可以融合大多数常见种类的算子;3)算子融合不受限于厂商提提供的算子库:算子融合时不需要调用现有的厂商库函数,所以也避免了融合时产生的连接和分离操作,进一步的减少了算子融合的开销;4)不需要资源隔离来实现计算资源的高利用率:本发明提出的方法不需要厂商提供的计算资源隔离机制来提高资源利用率。从而避免了资源隔离带来的潜在资源浪费和额外开销。5)提高了系统资源利用率,降低了深度学习推理任务的执行时间:针对多个常见网络模型,与厂家函数算子库对比,本发明提供的方法能取得1.64至4.94倍的速度提升;与其它最新的算子融合技术相比,本发明提供的方法有3.37倍至14.68倍的效率提升。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变形,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (10)
1.一种面向深度学习推理任务编译器的算子融合方法,其特征在于,包括:
将深度学习推理任务模型的标准模型,转化为初始图级IR;遍历该初始图级IR,将该初始图级IR中的可融合算子标识为同类算子或异类算子;
将该初始图级IR转化为张量表达式,融合该张量表达式中的同类算子;
将该张量表达式编译为内核源码,融合该内核源码中的异类算子;
将该内核源码编译为可执行代码并部署运行。
2.如权利要求1所述的算子融合方法,其特征在于,标识该可融合算子的步骤包括:
对该初始图级IR的抽象语法树做广度优先搜索,将该标准模型中同一层的算子做并行标识,以得到多组可融合算子;
遍历每组可融合算子,将本组内算子种类和输入输出都相同的可融合算子,标识为同一组的同类算子;将本组内算子种类和/或输入输出不相同,且部署运行时最大活跃线程块数处于一个划分区间的可融合算子,标识为同一组的异类算子。
3.如权利要求2所述的算子融合方法,其特征在于,融合该同类算子的步骤包括:
对于同一组同类算子,将其对应的张量表达式的输出与输入部分同时增加一个相同的批次维度以生成新张量表达式,该批次维度的大小等于该组同类算子的个数;以该新张量表达式替换该组同类算子在该标准模型的语法树上的位置,并将该新张量表达式的输入与输出接入该语法树。
4.如权利要求2所述的算子融合方法,其特征在于,融合该异类算子的步骤包括:
对于同一组异类算子,从该内核源码中找到该异类算子的算子内核;将该算子内核的线程块对齐为大小一致;将对齐后的算子内核源到源地融合为单个新算子内核,并将该新算子内核的核函数的线程网格设置为一维结构,重新映射该一维结构的线程索引,以保证该新算子内核的计算逻辑与输入输出的正确性;将本组异类算子所有输入输出重新映射和添加到该新算子内核上;在该新算子内核的核函数内统一分配存储空间,以代替本组异类算子各自核函数内的存储空间请求。
5.如权利要求4所述的算子融合方法,其特征在于,对齐该线程块的步骤包括:
对于一个该算子内核,减少其线程块的数量,并增大其线程块的大小,或者,保留其线程块数量,并向其线程块内添加空线程来增大线程块的大小,使对齐后的线程块与本组的算子内核中具有的最大线程块大小一致。
6.如权利要求1所述的算子融合方法,其特征在于,标识该可融合算子的步骤前,还包括:
使用常数折叠和/或死代码消除和/或算子布局调整方式,对该初始图级IR进行优化。
7.一种面向深度学习推理任务编译器的算子融合系统,其特征在于,包括:
标识模块,用于标识可融合算子;将深度学习推理任务模型的标准模型,转化为初始图级IR;遍历该初始图级IR,将该初始图级IR中的可融合算子标识为同类算子或异类算子;
同类算子融合模块,用于将该初始图级IR转化为张量表达式,融合该张量表达式中的同类算子;
异类算子融合模块,用于将该张量表达式编译为内核源码,融合该内核源码中的异类算子;
运行模块,用于将该内核源码编译为可执行代码并部署运行。
8.如权利要求7所述的算子融合系统,其特征在于,该标识模块包括:
搜索子模块,用于对该初始图级IR的抽象语法树做广度优先搜索,将该标准模型中同一层的算子做并行标识,以得到多组可融合算子;
标识子模块,用于将该可融合算子标识为同类算子或异类算子;遍历每组可融合算子,将本组内算子种类和输入输出都相同的可融合算子,标识为同一组的同类算子;将本组内算子种类和/或输入输出不相同,且部署运行时最大活跃线程块数处于一个划分区间的可融合算子,标识为同一组的异类算子。
9.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,当该计算机可执行指令被执行时,实现如权利要求1~6任一项所述的面向深度学习推理任务编译器的算子融合方法。
10.一种数据处理装置,包括如权利要求9所述的计算机可读存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,实现面向深度学习推理任务编译器的算子融合方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310643920.4A CN116861359A (zh) | 2023-06-01 | 2023-06-01 | 面向深度学习推理任务编译器的算子融合方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310643920.4A CN116861359A (zh) | 2023-06-01 | 2023-06-01 | 面向深度学习推理任务编译器的算子融合方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116861359A true CN116861359A (zh) | 2023-10-10 |
Family
ID=88233009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310643920.4A Pending CN116861359A (zh) | 2023-06-01 | 2023-06-01 | 面向深度学习推理任务编译器的算子融合方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116861359A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170685A (zh) * | 2023-11-02 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及介质 |
-
2023
- 2023-06-01 CN CN202310643920.4A patent/CN116861359A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170685A (zh) * | 2023-11-02 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及介质 |
CN117170685B (zh) * | 2023-11-02 | 2024-02-23 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103858099B (zh) | 用于执行应用的方法和系统、具有机器指令的电路 | |
US20220171626A1 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
US5293631A (en) | Analysis and optimization of array variables in compiler for instruction level parallel processor | |
US20220092439A1 (en) | Decoupled architecture for artificial intelligence model management | |
Zheng et al. | AStitch: enabling a new multi-dimensional optimization space for memory-intensive ML training and inference on modern SIMT architectures | |
CN109933327B (zh) | 基于代码融合编译框架的OpenCL编译器设计方法和系统 | |
CN112148472A (zh) | 用于提高执行软件的异构系统的利用率的方法和装置 | |
CN116861359A (zh) | 面向深度学习推理任务编译器的算子融合方法和系统 | |
Weber et al. | MATOG: array layout auto-tuning for CUDA | |
Rausch et al. | A data-centric optimization framework for machine learning | |
US20220172044A1 (en) | Method, electronic device, and computer program product for deploying machine learning model | |
Liu et al. | swTVM: exploring the automated compilation for deep learning on sunway architecture | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
Yi et al. | Optimizing DNN compilation for distributed training with joint OP and tensor fusion | |
Gómez-Hernández et al. | Using PHAST to port Caffe library: First experiences and lessons learned | |
Jiang et al. | A Task Parallelism Runtime Solution for Deep Learning Applications using MPSoC on Edge Devices | |
Heldens et al. | Kernel Launcher: C++ Library for Optimal-Performance Portable CUDA Applications | |
US20240078098A1 (en) | Analysis assistant for determining execution inefficiencies in dataflow programs | |
Chennupati et al. | Automatic evolution of parallel recursive programs | |
Li et al. | CoCoPIE XGen: A Full-Stack AI-Oriented Optimizing Framework | |
US20230315414A1 (en) | Searching neural network pipelines based on named matrix dimensions | |
Hu et al. | Automatic Thread Block Size Selection Strategy in GPU Parallel Code Generation | |
WO2024039923A1 (en) | Method of compile-time optimization for nested parallel for-loops for deep learning neural network computation | |
CN114549277A (zh) | 一种基于编译的核函数自动多流调度方法 | |
Wu et al. | Task Mapping and Scheduling on RISC-V MIMD Processor With Vector Accelerator Using Model-Based Parallelization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |