CN111880807A - 深度学习编译方法、装置、设备及存储介质 - Google Patents
深度学习编译方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111880807A CN111880807A CN202010757619.2A CN202010757619A CN111880807A CN 111880807 A CN111880807 A CN 111880807A CN 202010757619 A CN202010757619 A CN 202010757619A CN 111880807 A CN111880807 A CN 111880807A
- Authority
- CN
- China
- Prior art keywords
- optimization
- intermediate representation
- deep learning
- target hardware
- target
- 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.)
- Withdrawn
Links
- 238000013135 deep learning Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000005457 optimization Methods 0.000 claims abstract description 449
- 238000013136 deep learning model Methods 0.000 claims abstract description 115
- 230000006870 function Effects 0.000 claims description 92
- 230000008901 benefit Effects 0.000 claims description 76
- 230000015654 memory Effects 0.000 claims description 48
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 21
- 238000010845 search algorithm Methods 0.000 claims description 13
- 238000010801 machine learning Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000000354 decomposition reaction Methods 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 7
- 238000013473 artificial intelligence Methods 0.000 description 43
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 238000011176 pooling Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 101100189913 Caenorhabditis elegans pept-1 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/045—Combinations of networks
-
- 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
Abstract
本申请实施例公开了一种深度学习编译方法、装置、设备及存储介质,属于深度学习领域。所述方法包括:基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取到的可选优化方式中,确定满足指定条件的目标优化方式;采用目标优化方式对第一中间表示进行优化,得到第二中间表示;对第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令。如此,能够进一步挖掘深度学习模型在目标硬件设备上的优化空间,提升深度学习模型在目标硬件设备上的运行性能,进而提升面向专用AI芯片的编译效果,提升深度学习模型在专用AI芯片上的运行性能。
Description
技术领域
本申请涉及深度学习领域,特别涉及一种深度学习编译方法、装置、设备及存储介质。
背景技术
DL(Deep Learning,深度学习)编译器用于对深度学习模型进行编译,可以将DL编译器对深度学习模型进行编译的过程称为深度学习编译。深度学习编译用于对深度学习框架产生的深度学习模型进行优化并转换成能够在硬件上运行的机器指令,以将深度学习模型部署在不同的硬件设备上。
相关技术中,DL编译器的深度学习编译过程一般包括前端优化、后端优化和代码生成(Code Generation)等流程,即先对深度学习模型进行前端优化,得到低层IR(Intermediate Representation,中间表示),然后对低层IR进行后端优化,再对后端优化后的低层IR进行代码生成,得到优化后的深度学习模型对应的机器指令。其中,IR为编译器内部用来做编译优化的结构数据,可以包括多个函数(Function),每个函数是由1个或多个算子组成的数据结构。目前,DL编译器在对低层IR进行后端优化时,所采用的后端优化策略一般是面向通用处理器的后端优化策略,在进行后端优化时,先将低层IR中的各个函数分解成更细粒度的算子,比如将卷积操作分解成一系列的加减乘除或矩阵乘法,再对分解后的各个函数分别进行优化。
但是,随着人工智能的发展,不断出现了各种专门用来对深度学习模型进行运算的AI(Artificial Intelligence,人工智能)芯片。这些AI芯片与通用处理器在硬件设计和资源上存在巨大差异,因此,面向通用处理器的后端优化策略不一定适用于专用的AI芯片,导致目前的深度学习编译具有一定的局限性。
发明内容
本申请实施例提供了一种深度学习编译方法、装置、设备及存储介质,可以用于解决相关技术的问题。所述技术方案如下:
一方面,提供了一种深度学习编译方法,所述方法包括:
基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定所述第一中间表示的目标优化方式,其中,所述第一中间表示是对所述深度学习模型至少进行前端优化后得到的数据结构,所述目标优化方式满足指定条件;
采用所述目标优化方式对所述第一中间表示进行优化,得到第二中间表示;
对所述第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令,且所述机器指令能够在所述目标硬件设备上运行。
另一方面,提供了一种深度学习编译装置,所述装置包括:
确定模块,用于基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定所述第一中间表示的目标优化方式,其中,所述第一中间表示是对所述深度学习模型至少进行前端优化后得到的数据结构,所述目标优化方式满足指定条件;
第一优化模块,用于采用所述目标优化方式对所述第一中间表示进行优化,得到第二中间表示;
第一生成模块,用于对所述第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令,且所述机器指令能够在所述目标硬件设备上运行。
另一方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任一种深度学习编译方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述任一种深度学习编译方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种深度学习编译方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例中,在对深度学习模型对应的第一中间表示进行后端优化的过程中,可以结合目标硬件设备的硬件特性以及深度学习模型的网络结构,来获取可能的优化方式,并从可能的优化方式中选择出满足指定条件的目标优化方式,再采用目标优化方式对第一中间表示进行优化,并进行代码生成,得到能够运行在目标硬件设备上机器指令。通过结合目标硬件设备的硬件特性和深度学习模型的网络结构,来搜索目标优化方式,能够进一步挖掘深度学习模型在目标硬件设备上的优化空间,提升深度学习模型在目标硬件设备上的运行性能,进而使得这种编译方式在面向专用AI芯片时,也能够提升面向专用AI芯片的编译效果,提升深度学习模型在专用AI芯片上的运行性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种深度学习编译的架构示意图;
图2是一种DL编译器的后端优化流程的示意图;
图3是本申请实施例提供的一种后端优化方式对比示意图;
图4是相关技术提供的一种后端优化示意图;
图5是本申请提供的一种深度学习编译方法的流程图;
图6是本申请提供的另一种深度学习编译方法的流程图;
图7是本申请实施例提供的一种深度学习编译装置的框图;
图8是本申请实施例提供的一种电子设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
随着深度学习的发展,有越来越多的需求需要将深度学习模型部署到不同的硬件设备上,如手机、嵌入式设备或加速器等硬件设备上。其中,DL编译器就是这样一种编译并部署深度学习模型的工具,它能够对深度学习模型进行编译,生成可在目标硬件设备上运行的机器指令。深度学习是机器学习的分支,是一种以神经网络为架构,对数据进行表征学习的算法。
另外,DL编译器还可以将机器指令转换成能够部署在目标硬件设备上的可部署模块(Deployable Module)。其中,可部署模块为能够部署在目标硬件设备上的应用文件,包括机器指令和一些用于运行机器指令的辅助信息。目标硬件设备可以通过解析该可部署模块,来运行其中的机器指令。
作为一个示例,DL编译器通过将深度学习框架(DL Frameworks)生成的深度学习模型作为输入,经过一系列的转换和优化,最终生成可在目标硬件设备上部署运行的可部署模块。
需要说明的是,DL编译器是一种软件程序,其能够运行在电子设备上。也即是,电子设备能够通过运行该DL编译器,来对深度学习模型进行编译。该电子设备可以为终端或服务器等,终端可以为手机、平板电脑或计算机等。
还需要说明的是,目前的DL编译器面向的硬件设备一般为通用处理器,用于将深度学习模型部署到CPU(Central Processing Unit,中央处理器)或GPU(GraphicsProcessing Unit,图形处理器)等通用处理器中,而本申请实施例提供的深度学习编译方法还可以应用于将深度学习模型部署到AI芯片中,扩展了应用场景,能够提升面向专用AI芯片的编译效果,进而提升深度学习模型在专用AI芯片上的运行性能。
接下来,对本申请实施例涉及的实施环境进行介绍。
图1是本申请实施例提供的一种深度学习编译的架构示意图,如图1所示,该架构包括:前端的深度学习框架10、DL编译器20和目标硬件设备30。其中,深度学习框架10用于输出深度学习模型,将输出的深度学习模型作为DL编译器的输入。DL编译器20用于对深度学习模型进行编译,生成可在目标硬件设备30上部署运行的可部署模块。
如图1所示,DL编译器20的深度学习编译流程包括:前端优化、后端优化、代码生成和可部署模块生成。深度学习编译的实质是将高级语言编写的深度学习模型优化编译为能够在目标硬件设备上运行的低级的机器语言的过程。在前端优化过程中,可以先将深度学习模型转换为高层中间表示(High-Level IR),再对高层中间表示进行高层优化,得到低层中间表示(Low-Level IR)。在后端优化过程中,对低层中间表示进行后端优化,得到优化模块(Optimized Module)。然后,对优化模块进行代码生成(Code Generation),得到优化后的深度学习模型对应的机器指令。最后,基于优化后的深度学习模型对应的机器指令,生成能够部署在目标硬件设备上的可部署模块。
相关技术中,请参考图2,图2是一种DL编译器的后端优化流程的示意图。如图2所示,低层中间表示可以包括多个函数,如Func1,Func2,...,FuncN。其中,函数为由单个低层中间表示所指示的函数,由1个或多个算子组成。算子是深度学习模型中的基本计算单元,如卷积(convolution)或池化(pooling)等操作等。后端优化包括多种优化方式,如包括Opt1,Opt2,...,OptN。后端优化过程中,对于低层中间表示中的各个函数,可以对各个函数分别执行所有优化方式,即对各个函数分别单独进行优化,再将优化后的各个函数组成优化模块。
但是,相关技术中的DL编译器的后端优化策略更多面向的是通用处理器,对于众多通过FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)或者ASIC(Application-Specific Integrated Circuit,专用集成电路)等实现的专用AI芯片而言,由于其硬件设计及资源与通用处理器之间存在巨大差异,因此面向通用处理器的优化策略并不一定适用于专用AI芯片。具体而言,主要存在以下两个缺点:
1,目前的DL编译器支持的算子粒度较细,对于神经网络中常用的卷积或池化等操作,DL编译器首先会将其分解成细粒度算子的组合,如将卷积分解成一系列的加减乘除或者矩阵乘运算,在此基础上再做进一步的优化。但是,对于某些原生支持卷积或池化等操作的专用AI芯片而言,由于其将卷积或池化等操作实现成了芯片原生指令,因此DL编译器在编译过程中,不能将这些粗粒度算子分解成更细粒度的算子,进而对于面向专用AI芯片的神经网络模型,也就不能利用目前DL编译器的后端优化方式进行优化。
请参考图3,对于支持卷积操作的专用AI芯片而言,由于其能够将卷积操作实现为芯片原生指令,因此,在后端优化过程中,不应该将卷积操作分解成更细粒度的算子,再进行优化,而是应该直接对其进行优化。如果将其分解成一系列的加减乘除或者矩阵乘运算等细粒度算子的组合再进行优化,则优化后生成的机器指令可能无法在专用AI芯片上运行,或者运行效率较低。
2,DL编译器在做硬件相关的后端优化时,优化对象是低层中间表示中的单个函数,并没有考虑各个函数之间是否存在关联。然而对于很多专用AI芯片而言,由于其设计的特性,函数之间还是存在进一步优化的可能的。因此,目前DL编译器的后端优化策略并没有对深度学习模型进行充分优化。
请参考图4,对于很多专用AI芯片而言,由于其设计的特性,在对各个函数单独进行优化之后,这些函数之间还存在进一步优化的可能,比如函数之间可以进行融合,或者函数之间可以进行内存延迟隐藏等。
本申请实施例中,面对上述DL编译器的缺点,对DL编译器的后端优化策略进行了改进,在后端优化过程中,引入了新的后端优化流程,该新的后端优化流程可以通过结合目标硬件设备的硬件特性和深度学习模型的网络结构,来搜索可能的优化方式,进而寻找满足指定条件的目标优化方式。比如,通过结合目标硬件设备的硬件特性和深度学习模型的网络结构,并综合考虑可能的优化方式在目标硬件设备上的优化收益,来评估可能的优化方式的优劣,进而寻找最优的优化方式。如此,能够进一步挖掘深度学习模型在目标硬件设备上的优化空间,提升深度学习模型在目标硬件设备上的运行性能。
接下来,对本申请实施例提供的深度学习编译方法进行详细介绍。
图5是本申请提供的一种深度学习编译方法的流程图,该方法应用于电子设备中,该电子设备可以为终端或服务器等,终端可以为手机、平板电脑或计算机等。如图5所示,该方法包括如下步骤:
步骤501:基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定第一中间表示的目标优化方式,目标优化方式满足指定条件。
其中,目标硬件设备为待部署该神经学习模型的硬件设备,可以为手机、嵌入式设备、加速器、通用处理器和AI芯片等。加速器可以为FPGA或ASIC等。通用处理器可以为CPU或GPU等。AI芯片可以为TPU(Tensor Processing Unit,张量处理器)或NPU(NeuralProcessing Unit,神经处理器)等。
目标硬件设备的硬件特性包括硬件设计特性和资源设计特性等。示例的,该硬件特性包括原生支持的指令集,以及内存设计方案。比如,对于某个专用AI芯片来说,该AI芯片可以支持卷积指令和池化指令等。再比如,对于某个专用AI芯片来说,该AI芯片的内存可以由两级缓存组成,包括容量较小但访问速度更快的片上内存(on-chip memory)和容量更大但访问速度较慢的全局内存(global memory)。
需要说明的是,对于包括片上内存和全局内的AI芯片,目前的DL编译器在对低层中间表示中的每个函数分别进行后端优化时,会尽量使用片上内存存放每个函数需要的输入数据,缩短访存时间,加快模型推理速度。但如果某些函数需要的输入数据的数据量过大,片上内存无法全部容纳时,DL编译器则需要对该函数的输入数据进行切分,即将该函数的输入数据切分成多个数据块,每次将一个数据块内容从全局内存拷贝到片上内存,完成计算后再将该数据块的计算结果拷贝回全局内存。依此循环,直到该函数的所有数据块均处理完毕。
另外,本申请实施例提供的深度学习编译方法的输入为第一中间表示。第一中间表示可以是对深度学习模型至少进行前端优化后得到的数据结构。
作为一个示例,第一中间表示是对深度学习模型至少进行前端优化后得到的数据结构。比如,对深度学习模型进行前端优化,得到低层中间表示,将低层中间表示作为第一中间表示。
作为另一个示例,第一中间表示是对深度学习模型进行前端优化和后端优化后得到的数据结构,也即是,本申请实施例提供的深度学习编译方法为在目前的后端优化流程之后插入的一个新的后端优化流程。比如,对深度学习模型进行前端优化,得到低层中间表示,再对该低层中间表示中的各个函数分别进行优化,得到第一中间表示。
其中,第一中间表示可以包含多个函数,每个函数由单个的第一中间表示指示,由一个或多个算子组成。比如,如第一中间表示可以包含两个连续的卷积操作:Convolution1-Convolution2。
其中,可选优化方式为与目标硬件设备的硬件特性和深度学习模型的网络结构匹配的可能的优化方式,且不同的可选优化方式具有不同的优化参数。也即是,可以结合目标硬件设备的硬件特性和深度学习模型的网络结构,搜索出不同的优化参数组成不同的可选优化方式,以便从中寻找最优的优化方式。
比如,所获取的每个可选优化方式包括与硬件特性和网络结构匹配的优化参数组合,即根据目标硬件设备的硬件特性和深度学习模型的网络结构设计的可能的优化参数的组合。其中,不同的可选优化方式包括不同的优化参数组合,即不同的可选优化方式包括的优化参数组合中优化参数的参数值不同。
作为一个示例,优化参数组合可以包括函数之间的优化方式、各个函数的输入数据的切分方式以及指定函数是否支持在优化之前进行分解中的至少一种,当然也可以包括根据硬件特性和网络结构设计其他优化参数。指定函数为指定指令对应的函数,比如包括卷积操作指令对应的函数,或池化操作指令对应的函数等。
示例的,可选优化方式1包括:函数之间的优化方式采用第一种优化方式,各个函数的输入数据的切分方式采用第一种切分方式,对于卷积指令和池化指令对应的函数支持在优化之前进行分解。可选优化方式2包括:函数之间的优化方式采用第二种优化方式,各个函数的输入数据的切分方式采用第二种切分方式,对于卷积指令和池化指令对应的函数不支持在优化之前进行分解。
其中,函数之间的优化方式包括函数之间是否进行融合、函数之间是否进行内存延迟隐藏以及函数之间是否调整数据传输方式中的至少一种。函数之间进行内存延迟隐藏是指对于两个函数,如果第二个函数的输入数据不受第一个函数运算的影响,则可以将第一个函数和第二个函数并行执行。函数之间的数据传输方式包括各个函数的输出数据是否作为下一个函数的输入数据等。
其中,目标优化方式是指满足指定条件的可选优化方式。比如,指定条件与在目标硬件设备上的优化收益相关联,其中,优化收益用于表示经优化后的第一中间表示在目标硬件设备上的运行性能。也即是,目标优化方式为经优化的第一中间表示在目标硬件设备上的运行性能满足性能条件的可选优化方式。
作为一个示例,目标优化方式是指在目标硬件设备上的优化收益最大的可选优化方式。某个可选优化方式在目标硬件设备上的优化收益是指采用该可选优化方式对第一中间表示进行优化得到的优化后的中间表示在目标硬件设备上的运行性能。优化收益用于对采用对应可选优化方式对第一中间表示进行优化得到的优化后的中间表示在目标硬件设备上的运行性能进行评估,且运行性能越好,则优化收益越大。
比如,采用可选优化方式对第一中间表示进行优化得到的优化后的中间表示在目标硬件设备上的运行性能可以包括多个性能参数,可以对这多个性能参数进行综合评估,得到该可选优化方式在目标硬件设备上的优化收益。比如,可以根据这多个性能参数的权重,对这多个性能参数进行加权求和,得到该可选优化方式在目标硬件设备上的优化收益。
示例的,这多个性能参数可以包括处理速率、时延、精度、运行时长和功耗中的至少一种,当然,也可以包括频率和带宽等其他性能参数,本申请实施例对此不作限定。其中,处理速率是指优化后的第一中间表示的数据处理速率,如图像处理速率等。图像处理速率可以用IPS(Image Per Second,图像每秒)等来表示。
作为一个示例,对于所获取的任一可选优化方式,可以通过目标硬件的成本模型,确定该可选优化方式在目标硬件设备上的优化收益。其中,该成本模型用于预估任一优化方式在目标硬件设备上的优化收益。
需要说明的是,该成本模型是根据该目标硬件设备进行设计得到,可以为该目标硬件设备的模拟运行软件,用于模拟运行采用可选优化方式进行优化后得到的优化后的中间表示,并能够根据模拟运行的运行性能确定可选优化方式的优化收益。
作为一个示例,对于所获取的任一可选优化方式,可以对该可选优化方式对第一中间表示进行优化,得到第二中间表示;通过目标硬件设备的成本模型,模拟运行第二中间表示,得到第二中间表示在所述成本模型上的运行性能;基于第二中间表示在所述成本模型上的运行性能,通过成本模型,确定该可选优化方式在目标硬件设备上的优化收益。
作为一个示例,在获取第一中间表示的可选优化方式,从所获取到的可选优化方式中,确定第一中间表示的目标优化方式的过程中,可以在每获取到一个新的可选优化方式,则确定新的可选优化方式在目标硬件设备上的优化收益,得到新的优化收益。若新的优化收益为当前的最大优化收益,即为已获取到的可选优化方式在目标硬件设备上的优化收益中的最大优化收益,则将当前新的可选优化方式作为当前最优的优化方式,并继续获取新的可选优化方式,直至无法获取到新的可选优化方式时,将当前最优的优化方式确定为第一中间表示的目标优化方式。
作为一个示例,基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定第一中间表示的目标优化方式包括如下步骤:
1)基于目标硬件设备的硬件特性和深度学习模型的网络结构,确定第一中间表示的初始可选优化方式。
其中,初始可选优化方式包括与硬件特性和网络结构匹配的初始优化参数组合。该初始优化参数组合可以由技术人员根据该硬件特性和网络结构设计得到,也可以由设备对该硬件特性和网络结构进行分析匹配得到。
2)确定初始可选优化方式在目标硬件设备上的优化收益,得到初始优化收益,并将初始优化收益作为参考优化收益。
其中,参考优化收益为当前的最大优化收益,也即是,得到初始优化收益之后,可以先初始优化收益保存为当前的最大优化收益。
作为一个示例,可以基于初始可选优化方式,通过目标硬件设备的成本模型,确定初始可选优化方式在所述目标硬件设备上的优化收益。其中,该成本模型用于预估任一优化方式在目标硬件设备上的优化收益。
比如,可以先基于初始可选优化方式对第一中间表示进行优化,得到第二中间表示。然后,通过目标硬件设备的成本模型,模拟运行第二中间表示,得到第二中间表示在所述成本模型上的运行性能。再基于第二中间表示在成本模型上的运行性能,通过该成本模型,确定初始可选优化方式在目标硬件设备上的优化收益。
作为一个示例,第二中间表示在成本模型上的运行性能可以包括目标硬件设备运行第二中间表示的处理速率、延时、精度、运行时长和功耗中的至少一种。则可以通过成本模型,对目标硬件设备运行第二中间表示的处理速率、延时、精度、运行时长和功耗中的至少一种进行综合评估,得到初始可选优化方式在目标硬件设备上的优化收益。比如,对目标硬件设备运行第二中间表示的的处理速率、延时、精度、运行时长和功耗中的至少一种进行加权求和,得到初始可选优化方式在目标硬件设备上的优化收益。
3)基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取新的可选优化方式。
其中,新的可选优化方式是与已获取到的可选优化方式不同的优化方式。
作为一个示例,可以通过对初始可选优化方式中初始优化参数组合进行调整,来搜索新的优化方式。
作为另一个示例,可以基于目标硬件设备的硬件特性和深度学习模型的网络结构,采用指定搜索算法,搜索与已搜索到的可选优化方式不同的可选优化方式,得到新的可选优化方式。比如,采用指定搜索算法,搜索与已搜索到的可选优化方式中的优化参数组合不同的优化参数组合,基于搜索到优化参数组合确定新的可选优化方式。
其中,搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法,因此可以利用搜索算法来搜索第一中间表示的各种可选优化方式。示例的,该指定搜索算法可以包括枚举算法、模式匹配算法、贪心算法、动态规划算法和机器学习算法中的至少一种,当然也也可以包括其他搜索算法,本申请实施例对此不作限定。
4)若获取到新的可选优化方式,则确定新的可选优化方式在目标硬件设备上的优化收益,得到新的优化收益。
本申请实施例中,可以通过目标硬件设备的成本模型,来确定新的可选优化方式在目标硬件设备上的优化收益,得到新的优化收益。
5)若新的优化收益小于或等于参考优化收益,则返回步骤3)。
也即是,若新的优化收益小于或等于当前的最大优化收益,则说明新的可选优化方式不是当前最优的优化方式,因此可以返回步骤3),继续获取新的可选优化方式。
6)若新的优化收益大于参考优化收益,则基于新的优化收益对参考优化收益进行更新,并将新的优化方式作为参考优化方式,然后返回步骤3),直至获取不到新的可选优化方式时,将参考优化方式确定为目标优化方式。
其中,参考优化收益为当前的最大优化收益,参考优化方式为当前最优的优化方式。若新的优化收益大于当前的最大优化收益,则可以将新的优化收益保存为当前的最大优化收益,并将新的可选优化方式保存为当前最优的优化方式。然后返回步骤3),继续获取新的可选优化方式,循环往复。直至获取不到新的可选优化方式为止,将当前最优的优化方式确定为目标优化方式。
步骤502:采用目标优化方式对第一中间表示进行优化,得到第二中间表示。
也即是,可以采用搜索到的最优的优化方式,来对第一中间表示进行优化,使得编译过程能够充分对深度学习模型进行优化,提升了优化效果。
需要说明的是,相关技术中的后端优化,只能对中间表示中的各个函数单独进行优化,并未考虑函数之间存在的优化可能。而本申请实施例中搜索到的目标优化方式,由于是综合考虑了目标硬件设备的硬件特性以及模型网络结构搜索到的在目标硬件设备上的优化收益最大的优化方式,因此搜索过程中考虑到了模型网络结构中函数之间存在的优化可能,能够对深度学习模型进行充分优化。
以一个原生支持卷积指令的专用AI芯片为例,该AI芯片内存由片上内存和全局内存这两级缓存组成。目前的DL编译器在进行后端优化时,会尽量使用片上内存存放每个函数需要的输入数据,缩短访存时间,加快模型推理速度。但如果某些函数需要的输入数据的数据量过大,片上内存无法全部容纳时,DL编译器则需要对该函数的输入数据进行切分,即将该函数的输入数据切分成多个数据块,每次将一个数据块内容从全局内存拷贝到片上内存,完成计算后再将该数据块的计算结果拷贝回全局内存。依此循环,直到该函数的所有数据块均处理完毕。
因此,相关技术中,如果某个函数的输入数据的数据量过大,则DL编译器会先将该函数的输入数据切分成多个数据块,并将这多个数据块保存到全局内存中。其中,一个数据块的推理过程可分为如下三个阶段:
加载(Load):从全局内存拷贝数据块到片上内存;
计算(Compute):AI芯片完成数据块的计算,并将计算结果保存在片上内存上;
存储(Store):将数据块的计算结果从片上内存拷贝到全局内存上。
因此,一个数据块经过三个阶段所需的总推理时间可表示为如下公式(1):
Tblk=Tload+Tcompute+Tstore (1)
其中,Tblk为一个数据块的总推理时间,Tload为加载阶段所需时间,Tcompute为计算阶段所需时间,Tstore为存储阶段所需时间。
如果一个函数的输入数据被切分成n个数据块,则整个函数所需要的推理时间Tfun为如下公式(2):
假设经过前端优化后的网络模型中包含两个连续的且均需要切分成n块的卷积操作:Func1和Func2,由于原有的DL编译器后端优化中没有考虑函数之间的优化,因此两个卷积操作的总推理时间如下公式(3):
其中,Torig为两个卷积操作的总推理时间,Tfun1为Func1的总推理时间,Tfun2为Func2的总推理时间。
而在本申请实施例中,则可以使用本申请实施例提供的优化方案中描述的方法查找最优的切分方式,使得Func1的数据块推理结果正好可以作为Func2的输入数据,这样Func1的数据块推理完毕后,无需再从片上内存拷贝回全局内存,省去了一次存储时间;同时,由于Func2的数据块也无需从全局内存中拷贝到片上内存,也省去了一次加载时间,优化后两个卷积操作的总推理时间Toptimized可以如以下公式(4):
步骤503:对第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令。
其中,该机器指令能够在目标硬件设备上运行。机器指令为能够在目标硬件设备上运行的目标代码,一般由机器代码或接近于机器语言的代码组成。代码生成也即是用于将语法分析后或优化后的中间代码变换成目标代码。
进一步地,在对第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令之后,还可以基于机器指令,生成优化后的深度学习模型对应的可部署模块。
其中,可部署模块用于部署在目标硬件设备上。可部署模块为能够部署在目标硬件设备上的应用文件,包括机器指令和一些用于运行机器指令的辅助信息。目标硬件设备可以通过解析该可部署模块,来运行其中的机器指令。
将可部署模块部署在目标硬件设备上,也即是,将可部署模块发送到目标硬件设备上或拷贝到目标硬件设备上,由目标硬件设备对其进行解析,以运行其中的机器指令。
本申请实施例中,在对深度学习模型对应的第一中间表示进行后端优化的过程中,可以结合目标硬件设备的硬件特性以及深度学习模型的网络结构,来获取可能的优化方式,并从可能的优化方式中选择出满足指定条件的目标优化方式,再采用目标优化方式对第一中间表示进行优化,并进行代码生成,得到能够运行在目标硬件设备上机器指令。通过结合目标硬件设备的硬件特性和深度学习模型的网络结构,来搜索满足指定条件的目标优化方式,能够进一步挖掘深度学习模型在目标硬件设备上的优化空间,提升深度学习模型在目标硬件设备上的运行性能,进而使得这种编译方式在面向专用AI芯片时,也能够提升面向专用AI芯片的编译效果,提升深度学习模型在专用AI芯片上的运行性能。
另外,本申请实施例提供的深度学习编译方法用于对DL编译器的编译算法进行改进,使得改进后的DL编译器可适用于所有深度学习模型针对专用AI芯片的编译优化操作。
为了便于理解,接下来对本申请实施例提供的深度学习编译方法进行举例说明。图6是本申请提供的另一种深度学习编译方法的流程图,该方法应用于电子设备中,该电子设备可以为终端或服务器等,终端可以为手机、平板电脑或计算机等。如图6所示,该方法包括如下步骤:
步骤601:对深度学习模型进行前端优化,得到低层中间表示。
步骤602:对低层中间表示中的各个函数分别进行优化,得到第一中间表示。
也即是,对于低层中间表示中的每个函数分别执行所有优化方式,即对各个函数分别单独进行优化,将优化后的各个函数作为第一中间表示。
需要说明的是,对低层中间表示中的各个函数分别进行优化为目前的后端优化过程,而本申请实施例中,在目前的后端优化流程之后插入的一个新的后端优化流程,可以结合目标硬件设备的硬件特性和深度学习模型的网络结构,进一步挖掘优化方式,来对第一中间表示进行优化。
步骤603:基于目标硬件设备的硬件特性和深度学习模型的网络结构,搜索第一中间表示的可选优化方式。
也即是,搜索与已搜索到的可选优化方式不同的新的可选优化方式。
比如,可以基于目标硬件设备的硬件特性和深度学习模型的网络结构,采用指定搜索算法,搜索与已搜索到的可选优化方式不同的可选优化方式,得到新的可选优化方式。其中,指定搜索算法可以包括枚举算法、模式匹配算法、贪心算法、动态规划算法和机器学习算法等,当然也可以为其他搜索算法,本申请实施例对此不做限定。
步骤604:通过目标硬件设备的成本模型,确定搜索到的可选优化方式在目标硬件设备上的优化收益。
步骤605:若搜索到的可选优化方式在目标硬件设备上的优化收益为当前的最大优化收益,则将搜索到的可选优化方式保存为参考优化方式。
其中,参考优化方式为当前最优的优化方式,也即是,若搜索到的可选优化方式在目标硬件设备上的优化收益为当前已搜索到的可选优化方式在目标硬件设备上的优化收益中的最大优化收益,则将搜索到的可选优化方式保存为当前最优的优化方式。
步骤606:判断是否能够继续搜索到新的可选优化方式。
如果能够搜索到新的可选优化方式,则返回步骤603,继续搜索新的可选优化方式。如果不能搜索到新的可选优化方式,则执行下述步骤607。
步骤607:将参考优化方式确定为第一中间表示的目标优化方式,采用目标优化方式对第一中间表示进行优化,得到第二中间表示。
步骤608:对第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令。
步骤609:基于机器指令,生成优化后的深度学习模型对应的可部署模块。
需要说明的是,步骤607-609的具体实现过程可以参考图5实施例中步骤202-203的相关描述,本申请实施例在此不再赘述。
本申请实施例中,在对深度学习模型对应的第一中间表示进行后端优化的过程中,可以结合目标硬件设备的硬件特性以及深度学习模型的网络结构,来搜索可能的优化方式,并从可能的优化方式中选择出在目标硬件设备上的优化收益最大的优化方式作为目标优化方式,再采用目标优化方式对第一中间表示进行优化,并进行代码生成,得到能够运行在目标硬件设备上机器指令。通过结合目标硬件设备的硬件特性、深度学习模型的网络结构以及在目标硬件设备上的优化收益,来搜索优化收益最大的目标优化方式,能够进一步挖掘深度学习模型在目标硬件设备上的优化空间,提升深度学习模型在目标硬件设备上的运行性能,进而使得这种编译方式在面向专用AI芯片时,也能够提升面向专用AI芯片的编译效果,提升深度学习模型在专用AI芯片上的运行性能。
另外,本申请实施例提供的深度学习编译方法用于对DL编译器的编译算法进行改进,使得改进后的DL编译器可适用于所有深度学习模型针对专用AI芯片的编译优化操作。
图7是本申请实施例提供的一种深度学习编译装置的框图,该装置可以集成于电子设备中,该电子设备可以为终端或服务器等,终端可以为手机、平板电脑或计算机等。如图7所示,该装置包括:
确定模块701,用于基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定该第一中间表示的目标优化方式,其中,第一中间表示是对该深度学习模型至少进行前端优化后得到的数据结构,该目标优化方式满足指定条件;
第一优化模块702,用于采用该目标优化方式对该第一中间表示进行优化,得到第二中间表示;
第一生成模块703,用于对该第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令,且该机器指令能够在该目标硬件设备上运行。
可选地,所述指定条件与在所述目标硬件设备上的优化收益相关联,其中,所述优化收益用于表示经优化后的第一中间表示在所述目标硬件设备上的运行性能。
可选地,不同的可选优化方式包括与该硬件特性和该网络结构匹配的不同的优化参数组合,该优化参数组合包括该第一中间表示中的函数之间的优化方式、各个函数的输入数据的切分方式以及指定函数是否支持在优化之前进行分解中的至少一种,该指定函数为指定指令对应的函数。
可选地,该函数之间的优化方式包括函数之间是否进行融合、函数之间是否进行内存延迟隐藏以及函数之间是否调整数据传输方式中的至少一种。
可选地,该确定模块702包括:
第一确定单元,用于基于该目标硬件设备的硬件特性和该深度学习模型的网络结构,确定该第一中间表示的初始可选优化方式,该初始可选优化方式包括与该硬件特性和该网络结构匹配的初始优化参数组合;
第二确定单元,用于确定该初始可选优化方式在该目标硬件设备上的优化收益,得到初始优化收益,并将该初始优化收益作为参考优化收益,所述优化收益用于表示经优化后的第一中间表示在所述目标硬件设备上的运行性能;
搜索单元,用于基于该目标硬件设备的硬件特性和该深度学习模型的网络结构,获取新的可选优化方式;
第三确定单元,用于若获取到新的可选优化方式,则确定该新的可选优化方式在该目标硬件设备上的优化收益,得到新的优化收益;
第三确定单元,用于若该新的优化收益大于该参考优化收益,则基于该新的优化收益对该参考优化收益进行更新,并将该新的优化方式作为参考优化方式,返回基于所述目标硬件设备的硬件特性和所述深度学习模型的网络结构,获取新的可选优化方式的步骤,直至获取不到新的可选优化方式时,将该参考优化方式确定为该目标优化方式。
可选地,该第二确定单元用于:
基于该初始可选优化方式,通过该目标硬件设备的成本模型,确定该初始可选优化方式在该目标硬件设备上的优化收益,该成本模型用于预估任一优化方式在该目标硬件设备上的优化收益。
可选地,该第二确定单元用于:
基于该初始可选优化方式对该第一中间表示进行优化,得到第二中间表示;
通过该目标硬件设备的成本模型,模拟运行该第二中间表示,得到该第二中间表示在该成本模型上的运行性能;
基于该第二中间表示在该成本模型上的运行性能,通过该成本模型,确定该初始可选优化方式在该目标硬件设备上的优化收益。
可选地,该第二中间表示在该成本模型上的运行性能包括该目标硬件设备运行该第二中间表示的处理速率、延时、精度、运行时长和功耗中的至少一种;该第二确定单元用于:
通过该成本模型,对该目标硬件设备运行该第二中间表示所需的频率、带宽、运行时长和功耗中的至少一种进行综合评估,得到该初始可选优化方式在该目标硬件设备上的优化收益。
可选地,该搜索单元用于:
基于该目标硬件设备的硬件特性和该深度学习模型的网络结构,采用指定搜索算法,搜索与已搜索到的可选优化方式不同的可选优化方式,得到新的可选优化方式;
其中,该指定搜索算法包括枚举算法、模式匹配算法、贪心算法、动态规划算法和机器学习算法中的至少一种。
可选地,该装置还包括:
第二生成模块,用于基于该机器指令,生成优化后的深度学习模型对应的可部署模块,该可部署模块用于部署在该目标硬件设备上。
可选地,该装置还包括:
第二优化模块,用于对该深度学习模型进行前端优化,得到低层中间表示;
第三优化模块,用于对该低层中间表示中的各个函数分别进行优化,得到该第一中间表示。
本申请实施例中,在对深度学习模型对应的第一中间表示进行后端优化的过程中,可以结合目标硬件设备的硬件特性以及深度学习模型的网络结构,来搜索可能的优化方式,并从可能的优化方式中选择出在满足指定条件的目标优化方式,再采用目标优化方式对第一中间表示进行优化,并进行代码生成,得到能够运行在目标硬件设备上机器指令。通过结合目标硬件设备的硬件特性和深度学习模型的网络结构,来搜索满足指定条件的的目标优化方式,能够进一步挖掘深度学习模型在目标硬件设备上的优化空间,提升深度学习模型在目标硬件设备上的运行性能,进而使得这种编译方式在面向专用AI芯片时,也能够提升面向专用AI芯片的编译效果,提升深度学习模型在专用AI芯片上的运行性能。
另外,本申请实施例提供的深度学习编译方法用于对DL编译器的编译算法进行改进,使得改进后的DL编译器可适用于所有深度学习模型针对专用AI芯片的编译优化操作。
需要说明的是:上述实施例提供的深度学习编译装置在进行深度学习编译时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的深度学习编译装置与深度学习编译方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请实施例提供的一种电子设备800的结构框图。该电子设备800可以是手机、平板电脑、智能电视、多媒体播放设备、可穿戴设备、台式电脑、服务器等电子设备。该电子设备800可用于实施上述实施例中提供的深度学习编译方法。
通常,电子设备800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的深度学习编译方法。
在一些实施例中,电子设备800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备可以包括:显示屏804、音频电路805、通信接口806和电源807中的至少一种。
本领域技术人员可以理解,图8中示出的结构并不构成对电子设备800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述深度学习编译方法。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述深度学习编译方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (14)
1.一种深度学习编译方法,其特征在于,所述方法包括:
基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定所述第一中间表示的目标优化方式,其中,所述第一中间表示是对所述深度学习模型至少进行前端优化后得到的数据结构,所述目标优化方式满足指定条件;
采用所述目标优化方式对所述第一中间表示进行优化,得到第二中间表示;
对所述第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令,且所述机器指令能够在所述目标硬件设备上运行。
2.如权利要求1所述的方法,其特征在于,所述指定条件与在所述目标硬件设备上的优化收益相关联,其中,所述优化收益用于表示经优化后的第一中间表示在所述目标硬件设备上的运行性能。
3.如权利要求1所述的方法,其特征在于,不同的可选优化方式包括与所述硬件特性和所述网络结构匹配的不同的优化参数组合,所述优化参数组合包括所述第一中间表示中的函数之间的优化方式、各个函数的输入数据的切分方式以及指定函数是否支持在优化之前进行分解中的至少一种,所述指定函数为指定指令对应的函数。
4.如权利要求3所述的方法,其特征在于,所述函数之间的优化方式包括函数之间是否进行融合、函数之间是否进行内存延迟隐藏以及函数之间是否调整数据传输方式中的至少一种。
5.如权利要求1所述的方法,其特征在于,所述基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定所述第一中间表示的目标优化方式,包括:
基于所述目标硬件设备的硬件特性和所述深度学习模型的网络结构,确定所述第一中间表示的初始可选优化方式,所述初始可选优化方式包括与所述硬件特性和所述网络结构匹配的初始优化参数组合;
确定所述初始可选优化方式在所述目标硬件设备上的优化收益,得到初始优化收益,并将所述初始优化收益作为参考优化收益,所述优化收益用于表示经优化后的第一中间表示在所述目标硬件设备上的运行性能;
基于所述目标硬件设备的硬件特性和所述深度学习模型的网络结构,获取新的可选优化方式;
若获取到新的可选优化方式,则确定所述新的可选优化方式在所述目标硬件设备上的优化收益,得到新的优化收益;
若所述新的优化收益大于所述参考优化收益,则基于所述新的优化收益对所述参考优化收益进行更新,并将所述新的优化方式作为参考优化方式,返回基于所述目标硬件设备的硬件特性和所述深度学习模型的网络结构,获取新的可选优化方式的步骤,直至获取不到新的可选优化方式时,将所述参考优化方式确定为所述目标优化方式。
6.如权利要求5所述的方法,其特征在于,所述确定所述初始可选优化方式在所述目标硬件设备上的优化收益,包括:
基于所述初始可选优化方式,通过所述目标硬件设备的成本模型,确定所述初始可选优化方式在所述目标硬件设备上的优化收益,所述成本模型用于预估任一优化方式在所述目标硬件设备上的优化收益。
7.如权利要求6所述的方法,其特征在于,所述基于所述初始可选优化方式,通过所述目标硬件设备的成本模型,确定所述初始可选优化方式在所述目标硬件设备上的优化收益,包括:
基于所述初始可选优化方式对所述第一中间表示进行优化,得到第二中间表示;
通过所述目标硬件设备的成本模型,模拟运行所述第二中间表示,得到所述第二中间表示在所述成本模型上的运行性能;
基于所述第二中间表示在所述成本模型上的运行性能,通过所述成本模型,确定所述初始可选优化方式在所述目标硬件设备上的优化收益。
8.如权利要求7所述的方法,其特征在于,所述第二中间表示在所述成本模型上的运行性能包括所述目标硬件设备运行所述第二中间表示的处理速率、延时、精度、运行时长和功耗中的至少一种;
所述基于所述第二中间表示在所述成本模型上的运行性能,通过所述成本模型,确定所述初始可选优化方式在所述目标硬件设备上的优化收益,包括:
通过所述成本模型,对所述目标硬件设备运行所述第二中间表示的处理速率、延时、精度、运行时长和功耗中的至少一种进行综合评估,得到所述初始可选优化方式在所述目标硬件设备上的优化收益。
9.如权利要求5所述的方法,其特征在于,所述基于所述目标硬件设备的硬件特性和所述深度学习模型的网络结构,获取新的可选优化方式,包括:
基于所述目标硬件设备的硬件特性和所述深度学习模型的网络结构,采用指定搜索算法,搜索与已搜索到的可选优化方式不同的可选优化方式,得到新的可选优化方式;
其中,所述指定搜索算法包括枚举算法、模式匹配算法、贪心算法、动态规划算法和机器学习算法中的至少一种。
10.如权利要求1-9任一所述的方法,其特征在于,所述对所述第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令之后,还包括:
基于所述机器指令,生成优化后的深度学习模型对应的可部署模块,所述可部署模块用于部署在所述目标硬件设备上。
11.如权利要求1-9任一所述的方法,其特征在于,所述基于目标硬件设备的硬件特性和深度学习模型的网络结构,搜索第一中间表示的可选优化方式之前,还包括:
对所述深度学习模型进行前端优化,得到低层中间表示;
对所述低层中间表示中的各个函数分别进行优化,得到所述第一中间表示。
12.一种深度学习编译装置,其特征在于,所述装置包括:
确定模块,用于基于目标硬件设备的硬件特性和深度学习模型的网络结构,获取第一中间表示的可选优化方式,从所获取的可选优化方式中,确定所述第一中间表示的目标优化方式,其中,所述第一中间表示是对所述深度学习模型至少进行前端优化后得到的数据结构,所述目标优化方式满足指定条件;
第一优化模块,用于采用所述目标优化方式对所述第一中间表示进行优化,得到第二中间表示;
第一生成模块,用于对所述第二中间表示进行代码生成,得到优化后的深度学习模型对应的机器指令,且所述机器指令能够在所述目标硬件设备上运行。
13.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1-11任一项所述的深度学习编译方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1-11任一项所述的深度学习编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010757619.2A CN111880807A (zh) | 2020-07-31 | 2020-07-31 | 深度学习编译方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010757619.2A CN111880807A (zh) | 2020-07-31 | 2020-07-31 | 深度学习编译方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111880807A true CN111880807A (zh) | 2020-11-03 |
Family
ID=73204670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010757619.2A Withdrawn CN111880807A (zh) | 2020-07-31 | 2020-07-31 | 深度学习编译方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880807A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764755A (zh) * | 2021-01-13 | 2021-05-07 | 北京百度网讯科技有限公司 | 代码转换方法、装置、设备以及存储介质 |
CN112947932A (zh) * | 2021-02-24 | 2021-06-11 | 上海商汤智能科技有限公司 | 对编译过程中的向量化进行优化的方法、装置及电子设备 |
CN113467783A (zh) * | 2021-07-19 | 2021-10-01 | 中科曙光国际信息产业有限公司 | 一种人工智能加速器的核函数编译方法和装置 |
CN113705017A (zh) * | 2021-09-08 | 2021-11-26 | 清华大学无锡应用技术研究院 | 芯片设计方法、装置、芯片、电子设备及存储介质 |
CN114168154A (zh) * | 2022-02-11 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 模型数据处理方法、装置、电子设备及存储介质 |
WO2022095413A1 (zh) * | 2020-11-05 | 2022-05-12 | 上海交通大学 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
CN114611697A (zh) * | 2022-05-11 | 2022-06-10 | 上海登临科技有限公司 | 神经网络量化及部署方法、系统、电子设备及存储介质 |
CN115658370A (zh) * | 2022-11-18 | 2023-01-31 | 辉羲智能科技(上海)有限公司 | 一种基于编译器的机器学习加速芯片故障实时探测方法 |
CN116301903A (zh) * | 2023-05-11 | 2023-06-23 | 杭州登临瀚海科技有限公司 | 一种编译器、ai网络编译方法、处理方法、执行系统 |
CN116306856A (zh) * | 2023-05-17 | 2023-06-23 | 之江实验室 | 一种基于搜索的深度学习模型部署方法及装置 |
CN116991428A (zh) * | 2023-09-28 | 2023-11-03 | 飞腾信息技术有限公司 | 一种编译方法、装置、编译器、计算设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018094099A1 (en) * | 2016-11-17 | 2018-05-24 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
WO2019136756A1 (zh) * | 2018-01-15 | 2019-07-18 | 深圳鲲云信息科技有限公司 | 人工智能处理装置设计模型建立方法、系统、存储介质、终端 |
CN110750265A (zh) * | 2019-09-06 | 2020-02-04 | 华中科技大学 | 一种面向图计算的高层次综合方法及系统 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
-
2020
- 2020-07-31 CN CN202010757619.2A patent/CN111880807A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018094099A1 (en) * | 2016-11-17 | 2018-05-24 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
WO2019136756A1 (zh) * | 2018-01-15 | 2019-07-18 | 深圳鲲云信息科技有限公司 | 人工智能处理装置设计模型建立方法、系统、存储介质、终端 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110750265A (zh) * | 2019-09-06 | 2020-02-04 | 华中科技大学 | 一种面向图计算的高层次综合方法及系统 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
TIANQI CHEN: "TVM: An Automated End-to-End Optimizing Compiler for Deep Learning", 《PROCEEDINGS OF THE 13TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION (OSDI’18)》, pages 1 - 18 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022095413A1 (zh) * | 2020-11-05 | 2022-05-12 | 上海交通大学 | 神经网络的编译方法、系统、计算机存储介质及编译设备 |
CN112764755B (zh) * | 2021-01-13 | 2022-04-12 | 北京百度网讯科技有限公司 | 代码转换方法、装置、设备以及存储介质 |
CN112764755A (zh) * | 2021-01-13 | 2021-05-07 | 北京百度网讯科技有限公司 | 代码转换方法、装置、设备以及存储介质 |
CN112947932A (zh) * | 2021-02-24 | 2021-06-11 | 上海商汤智能科技有限公司 | 对编译过程中的向量化进行优化的方法、装置及电子设备 |
CN113467783B (zh) * | 2021-07-19 | 2023-09-12 | 中科曙光国际信息产业有限公司 | 一种人工智能加速器的核函数编译方法和装置 |
CN113467783A (zh) * | 2021-07-19 | 2021-10-01 | 中科曙光国际信息产业有限公司 | 一种人工智能加速器的核函数编译方法和装置 |
CN113705017A (zh) * | 2021-09-08 | 2021-11-26 | 清华大学无锡应用技术研究院 | 芯片设计方法、装置、芯片、电子设备及存储介质 |
CN113705017B (zh) * | 2021-09-08 | 2022-09-16 | 清华大学无锡应用技术研究院 | 芯片设计方法、装置、芯片、电子设备及存储介质 |
CN114168154A (zh) * | 2022-02-11 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 模型数据处理方法、装置、电子设备及存储介质 |
CN114168154B (zh) * | 2022-02-11 | 2022-05-17 | 腾讯科技(深圳)有限公司 | 模型数据处理方法、装置、电子设备及存储介质 |
CN114611697A (zh) * | 2022-05-11 | 2022-06-10 | 上海登临科技有限公司 | 神经网络量化及部署方法、系统、电子设备及存储介质 |
CN115658370A (zh) * | 2022-11-18 | 2023-01-31 | 辉羲智能科技(上海)有限公司 | 一种基于编译器的机器学习加速芯片故障实时探测方法 |
CN116301903A (zh) * | 2023-05-11 | 2023-06-23 | 杭州登临瀚海科技有限公司 | 一种编译器、ai网络编译方法、处理方法、执行系统 |
CN116301903B (zh) * | 2023-05-11 | 2023-08-08 | 杭州登临瀚海科技有限公司 | 一种编译器、ai网络编译方法、处理方法、执行系统 |
CN116306856A (zh) * | 2023-05-17 | 2023-06-23 | 之江实验室 | 一种基于搜索的深度学习模型部署方法及装置 |
CN116306856B (zh) * | 2023-05-17 | 2023-09-05 | 之江实验室 | 一种基于搜索的深度学习模型部署方法及装置 |
CN116991428A (zh) * | 2023-09-28 | 2023-11-03 | 飞腾信息技术有限公司 | 一种编译方法、装置、编译器、计算设备及存储介质 |
CN116991428B (zh) * | 2023-09-28 | 2023-12-15 | 飞腾信息技术有限公司 | 一种编译方法、装置、编译器、计算设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111880807A (zh) | 深度学习编译方法、装置、设备及存储介质 | |
EP3754495B1 (en) | Data processing method and related products | |
US11500959B2 (en) | Multiple output fusion for operations performed in a multi-dimensional array of processing units | |
JP7078758B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
US7318213B2 (en) | Apparatus, method and program for behavioral synthesis including loop processing | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
US9977663B2 (en) | Technologies for optimizing sparse matrix code with field-programmable gate arrays | |
CN110689121A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
US20210295158A1 (en) | End-to-end optimization | |
US8711160B1 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
US20220101194A1 (en) | Method, electronic device, and computer program product for processing machine learning model | |
CN110895718A (zh) | 用于训练机器学习模型的方法及系统 | |
US20220172044A1 (en) | Method, electronic device, and computer program product for deploying machine learning model | |
Gao et al. | DPACS: hardware accelerated dynamic neural network pruning through algorithm-architecture co-design | |
CN112990461B (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
US20230076473A1 (en) | Memory processing unit architecture mapping techniques | |
US20230409302A1 (en) | Computer-readable recording medium storing conversion program and conversion processing method | |
CN117170681A (zh) | 核函数生成方法、装置、电子设备及存储介质 | |
Pietron et al. | Parallel Implementation of Spatial Pooler in Hierarchical Temporal Memory. | |
US10909021B2 (en) | Assistance device, design assistance method, and recording medium storing design assistance program | |
US20230100930A1 (en) | Mixing sparsity compression | |
CN112860534B (zh) | 硬件架构性能评估和性能优化方法及装置 | |
Yu et al. | Overview of a fpga-based overlay processor | |
CN113760380A (zh) | 网络模型的运行代码的确定方法、装置、设备及存储介质 | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201103 |