CN116897356A - 算子的调度运行时间比较方法、装置及存储介质 - Google Patents
算子的调度运行时间比较方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116897356A CN116897356A CN202280006829.5A CN202280006829A CN116897356A CN 116897356 A CN116897356 A CN 116897356A CN 202280006829 A CN202280006829 A CN 202280006829A CN 116897356 A CN116897356 A CN 116897356A
- Authority
- CN
- China
- Prior art keywords
- cost comparison
- model
- candidate
- schedules
- training
- 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
- 238000000034 method Methods 0.000 title claims abstract description 113
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 238000012549 training Methods 0.000 claims abstract description 122
- 230000014509 gene expression Effects 0.000 claims abstract description 83
- 238000013528 artificial neural network Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims description 45
- 239000011159 matrix material Substances 0.000 claims description 35
- 238000007781 pre-processing Methods 0.000 claims description 15
- 238000010606 normalization Methods 0.000 claims description 14
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 10
- 238000003062 neural network model Methods 0.000 claims description 10
- 238000011156 evaluation Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 33
- 230000008569 process Effects 0.000 description 31
- 238000005457 optimization Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 22
- 238000012360 testing method Methods 0.000 description 12
- 238000000605 extraction Methods 0.000 description 10
- 239000013598 vector Substances 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000011478 gradient descent method Methods 0.000 description 2
- 238000000691 measurement method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000452 restraining effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- 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
Abstract
本申请实施例数据处理领域,特别涉及一种算子的调度运行时间比较方法、装置及存储介质。该方法包括:获取目标计算表达对应的至少两个候选调度,目标计算表达用于描述算子的计算逻辑;获取代价比较模型,代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;根据至少两个候选调度,调用代价比较模型输出得到代价对比结果,代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序。本申请实施例可以在不预测调度绝对执行时长的前提下,直接比较不同调度的执行时长的相对大小,从而实现编译器/自动优化器的自动调优功能,大大提高了调度运行代价的评估速度和准确度。
Description
本申请涉及数据处理领域,特别涉及一种算子的调度运行时间比较方法、装置及存储介质。
算子用于指示一种数据处理操作,比如,神经网络通常包括卷积算子和池化算子,卷积算子用于指示一种卷积操作,池化算子用于指示一种池化操作。为了能够在实际的硬件平台上运行算子,以执行对应的数据处理操作,需要生成算子的可执行代码。其中,算子的可执行代码的生成过程分为计算表达和调度两个步骤。计算表达是指通过特定语言描述算子的计算逻辑,也即是,描述算子需要完成的任务,以及算子的输入和输出,之后,将描述算子的计算逻辑的语言转换为中间语言,可以得到算子的中间表示信息(也称为模板)。调度是指根据目标硬件平台的硬件特性,对算子的中间表示信息进行调度优化。之后,可以将调度优化后的中间表示信息转换为目标硬件平台可识别的可执行代码。
算子自动优化是优化工具和编译器的一个重要的功能,算子自动优化的难点在于需要在海量的调度所形成的调度空间中,搜索针对特定硬件平台的最优调度实现。如何评估神经网络中算子的不同调度在硬件平台上的执行时长是优化成功的重中之重。为了评估调度在特定硬件平台上的执行时长,相关技术中可以通过预先训练的代价模型来评估调度的绝对执行时长,从而实现对调度运行代价的评估。但是在这种方式中,预测的绝对执行时长与真实执行时长之间的误差比较大,并且需要专业人员针对特定硬件平台建立专用的代价模型,往往需要海量的训练数据,且模型结构复杂。此外,该种方式中由于预测误差比较大,导致无法消除相近预测值的调度之间代价比较的不确定性问题。
相关技术中,尚未提供一种合理且有效的对调度运行代价进行评估的方法。
发明内容
有鉴于此,提出了一种算子的调度运行时间比较方法、装置及存储介质。本申请实施例提供了一种算子的调度运行时间比较方法、装置及存储介质,在不预测调度绝对执行时长的前提下,直接比较不同调度的执行时长的相对大小,从而实现编译器/自动优化器的自动调优功能,大大提高了调度运行代价的评估速度和准确度。
第一方面,本申请实施例提供了一种算子的调度运行时间比较方法,所述方法包括:
获取目标计算表达对应的至少两个候选调度,所述目标计算表达用于描述算子的 计算逻辑,所述候选调度为基于所述目标计算表达生成的所述算子在目标硬件平台上的可执行代码;
获取代价比较模型,所述代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;
根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,所述代价对比结果用于指示所述至少两个候选调度在所述目标硬件平台上的执行时长的大小排序。
在该实现方式中,通过获取目标计算表达对应的至少两个候选调度,根据至少两个候选调度调用代价比较模型,直接比较至少两个候选调度在目标硬件平台上的执行时长的相对大小,从而输出得到用于指示执行时长大小排序的代价对比结果,可以实现编译器/自动优化器的自动调优功能,大大提高了调度运行代价的评估速度和准确度。
在一种可能的实现方式中,所述根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,包括:
对所述至少两个候选调度进行预处理,得到预处理后的所述至少两个候选调度;
将预处理后的所述至少两个候选调度输入至所述代价比较模型中,输出得到所述代价对比结果;
其中,所述代价比较模型是根据至少一组样本数据组训练得到的,每组所述样本数据组包括:样本计算表达对应的至少两个样本调度和预先标注的正确代价对比结果。
在该实现方式中,通过对至少两个候选调度进行预处理,得到预处理后的至少两个候选调度,将预处理后的至少两个候选调度输入至代价比较模型中,输出得到代价对比结果,由于代价比较模型是根据至少一组样本数据组训练得到的,保证了代价比较模型的高准确率,进一步保证了通过代价比较模型输出得到的代价对比结果的准确度。
在另一种可能的实现方式中,所述对所述至少两个候选调度进行预处理,得到预处理后的所述至少两个候选调度,包括:
对于所述至少两个候选调度中的每个所述候选调度,对所述候选调度进行特征提取得到特征矩阵;
对所述候选调度对应的所述特征矩阵进行归一化处理,得到预处理后的所述候选调度。
在该实现方式中,对于至少两个候选调度中的每个候选调度,对候选调度进行特征提取得到特征矩阵;对候选调度对应的特征矩阵进行归一化处理,得到预处理后的候选调度,通过对候选调度进行预处理转化为专门的数据结构,进一步保证了后续模型输出得到代价对比结果的准确度。
在另一种可能的实现方式中,所述特征矩阵用于指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码中的至少一种,所述循环信息包括与所述候选调度的循环计算逻辑相关的信息,所述输入数据形状信息用于描述所述算子的输入数据,所述计算编码包括所述候选调度的当前循环里用到的计算指令的编码,所述轴类型编码包括对轴进行操作的类型编码,所述数据访问类型编码包括对数据进行访问的类型编码。
在该实现方式中,将候选调度转化为特征矩阵,该特征矩阵可以包括5类信息中的至少一种,这5类信息为指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码,从而将具有该数据结构的特征矩阵作为代价比较模型的输入数据,进一步提高了后续模型输出得到代价对比结果的准确度。
在另一种可能的实现方式中,所述获取代价比较模型之前还包括:
获取训练样本集,所述训练样本集包括至少一组所述样本数据组;
对于每组所述样本数据组,对至少两个样本调度进行预处理得到预处理后的所述至少两个样本调度;
将预处理后的所述至少两个样本调度输入原始参数模型得到训练结果,所述原始参数模型为神经网络模型;
将所述训练结果与所述正确代价对比结果进行比较,得到计算损失,所述计算损失用于指示所述训练结果与所述正确代价对比结果之间的误差;
根据所述至少一组样本数据组各自对应的计算损失,采用误差反向传播算法训练得到所述代价比较模型。
在该实现方式中,还通过在获取代价比较模型之前,获取训练样本集,训练样本集包括至少一组样本数据组;对于每组样本数据组,对至少两个样本调度进行预处理得到预处理后的至少两个样本调度;将预处理后的至少两个样本调度输入原始参数模型得到训练结果,原始参数模型为神经网络模型;将训练结果与正确代价对比结果进行比较,得到计算损失,计算损失用于指示训练结果与正确代价对比结果之间的误差;根据至少一组样本数据组各自对应的计算损失,采用误差反向传播算法训练得到代价比较模型,从而预先训练得到用于评估算子的调度运行代价的代价比较模型,保证了后续调用模型实现算子的调度运行时间比较方法的可行性。
在另一种可能的实现方式中,所述根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果之后,还包括:
将所述至少两个候选调度和所述代价对比结果添加至所述训练样本集,得到更新后的训练样本集;
根据所述更新后的训练样本集对所述代价比较模型进行训练,得到更新后的代价比较模型。
在该实现方式中,通过将至少两个候选调度和代价对比结果添加至训练样本集,得到更新后的训练样本集;根据更新后的训练样本集对代价比较模型进行训练,得到更新后的代价比较模型,从而及时地对代价比较模型进行更新,不断提高代价比较模型的准确度。
第二方面,本申请实施例提供了一种算子的调度运行时间比较装置,所述装置包括:
第一获取单元,用于获取目标计算表达对应的至少两个候选调度,所述目标计算表达用于描述算子的计算逻辑,所述候选调度为基于所述目标计算表达生成的所述算子的可执行代码;
第二获取单元,用于获取代价比较模型,所述代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;
调用单元,用于根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,所述代价对比结果用于指示所述至少两个候选调度的执行时长的大小排序。
在一种可能的实现方式中,所述调用单元,还用于:
对所述至少两个候选调度进行预处理,得到预处理后的所述至少两个候选调度;
将预处理后的所述至少两个候选调度输入至所述代价比较模型中,输出得到所述代价对比结果;
其中,所述代价比较模型是根据至少一组样本数据组训练得到的,每组所述样本数据组包括:样本计算表达对应的至少两个样本调度和预先标注的正确代价对比结果。
在另一种可能的实现方式中,所述调用单元,还用于:
对于所述至少两个候选调度中的每个所述候选调度,对所述候选调度进行特征提取得到特征矩阵;
对所述候选调度对应的所述特征矩阵进行归一化处理,得到预处理后的所述候选调度。
在另一种可能的实现方式中,所述特征矩阵用于指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码中的至少一种,所述循环信息包括与所述候选调度的循环计算逻辑相关的信息,所述输入数据形状信息用于描述所述算子的输入数据,所述计算编码包括所述候选调度的当前循环里用到的计算指令的编码,所述轴类型编码包括对轴进行操作的类型编码,所述数据访问类型编码包括对数据进行访问的类型编码。
在另一种可能的实现方式中,所述装置还包括训练单元;所述训练单元用于:
获取训练样本集,所述训练样本集包括至少一组所述样本数据组;
对于每组所述样本数据组,对至少两个样本调度进行预处理得到预处理后的所述至少两个样本调度;
将预处理后的所述至少两个样本调度输入原始参数模型得到训练结果,所述原始参数模型为神经网络模型;
将所述训练结果与所述正确代价对比结果进行比较,得到计算损失,所述计算损失用于指示所述训练结果与所述正确代价对比结果之间的误差;
根据所述至少一组样本数据组各自对应的计算损失,采用误差反向传播算法训练得到所述代价比较模型。
在另一种可能的实现方式中,所述装置还包括更新单元;所述更新单元用于:
将所述至少两个候选调度和所述代价对比结果添加至所述训练样本集,得到更新后的训练样本集;
根据所述更新后的训练样本集对所述代价比较模型进行训练,得到更新后的代价比较模型。
第三方面,本申请实施例提供了一种算子的调度运行时间比较装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现上述的方法。
第四方面,本申请实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品在计算机上运行时,所述计算机执行上述的方法。
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。
图1示出了相关技术中调度空间的生成过程的示意图。
图2示出了相关技术中实际测量法和代价模型法的原理示意图。
图3示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
图4示出了本申请一个示例性实施例提供的算子的调度运行时间比较方法的流程图。
图5示出了本申请一个示例性实施例提供的算子的调度运行时间比较方法的原理示意图。
图6示出了本申请一个示例性实施例提供的代价比较模型的训练过程的流程图。
图7示出了本申请一个示例性实施例提供的代价比较模型的训练过程的原理示意图。
图8示出了本申请一个示例性实施例提供的归一化函数的输入输出曲线的示意图。
图9示出了本申请一个示例性实施例提供的多层感知器架构的网络结构的示意图。
图10示出了本申请另一个示例性实施例提供的算子的调度运行时间比较方法的流程图。
图11示出了本申请一个示例性实施例提供的特征矩阵的数据结构的示意图。
图12示出了本申请另一个示例性实施例提供的代价比较模型的应用过程的原理示意图。
图13示出了本申请一个示例性实施例提供的算子的调度运行时间比较装置的框图。
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
随着人工智能技术的快速发展,深度学习在多个领域得到了广泛应用,这些应用对计算资源的需求快速增加,因此深度学习算法的优化愈加重要。深度学习技术通过建立深度学习模型,对大量历史数据进行迭代拟合(模型训练),使模型可以在输入输出之间建立映射关系,从而实现对新输入数据结果的预测(模型推理)。深度学习模型中包含大量的算子,例如:卷积算子,全连接算子,池化算子等。不同的算子堆叠、连接所形成的整体构成深度学习模型,也称之为神经网络模型。神经网络的拓扑架构称之为神经网络架构;神经网络中包含的算子的参数为模型参数。为使算子能够在特定硬件平台上高效执行,需要对算子的计算表达进行深度优化。其中,特定硬件平台可以是中央处理器(Central Processing Unit,CPU),也可以是图形处理器(Graphics Processing Unit,GPU),还可以是神经网络处理器(Neural network Processing Unit,NPU)。
算子的计算表达可以有很多种实现方式,称之为调度,不同的调度在特定硬件平台上的性能差异可以非常大。从大量的调度实现中,利用编译器/自动优化器,自动的搜索针对特定硬件的最优调度即可实现对深度学习应用的优化,从而达到降低算力要求、增加系统吞吐量的目的。工程实现中,计算表达和调度之间可以存在一种中间表达,称之为模板。计算表达可以形成多个模板,每个模板又可以生成多个调度。
算子自动优化是优化工具和编译器的一个重要的功能,自动优化后的算子性能优劣,决定了深度学习模型能否高效落地应用,满足产品需求。算子自动优化的难点在于需要在海量的调度所形成的调度空间中,搜索针对特定硬件平台的最优调度实现。如何评估神经网络中算子的不同调度在硬件平台上的执行时长是优化成功的重中之重。本文所述“代价”指调度在硬件平台上的执行时长。为评估调度在硬件平台上的执行时长,目前的方法主要有两钟:实际测量法和代价模型法。
实际测量法,指的是将每个调度经过代码生成,代码编译,然后在硬件上运行。通过测量运行时间来得到具体的执行时间,这种方法需要经过完整的编译流程。其缺点是评估调度的时间长(秒级以上),在实际十万,百万级别的调度空间场景中耗时过长;受搜索时间的限制,很难探索更大的调度空间。
代价模型法,指的是通过建立代价模型来评估调度的执行时长。这种方法因为不需要经过编译、运行和测量过程,在评估耗时上具有非常明显的优势。
相关技术中,基于代价模型的方法均采用预测调度的绝对执行时间来实现对调度运行代价的评估。但是在这种方式中,预测的绝对执行时长与真实执行时长之间的误差比较大,并且需要专业人员针对特定硬件平台建立专用的代价模型,往往需要海量的训练数据,且模型结构复杂。此外,该种方式中由于预测误差比较大,导致无法消除相近预测值的调度之间代价比较的不确定性问题。以上缺点限制了相关技术中的代价模型法在实际优化过程的应用。
本申请实施例提供了一种算子的调度运行时间比较方法、装置及存储介质,在不预测调度绝对执行时长的前提下,直接比较不同调度的执行时长的相对大小,从而实现编译器/自动优化器的自动调优功能,大大提高了调度运行代价的评估速度和准确度。对比相关技术中的方法,本申请实施例提供的算子的调度运行时间比较方法在速度和 准确度上均有很强的优势,提升算子优化器的性能并且显著降低评估时间。
首先,对本申请涉及的一些名词进行介绍。
1、计算表达(compute):指算子输入数据、输出数据和计算逻辑所构成的整体。计算表达是对具体计算过程进行描述的实例。在算子自动优化框架中,计算表达可以是用户自定义的,计算表达用于完成用户所需计算逻辑功能的全部信息。计算表达的形式通常为伪代码或结构化的流程图等形式,易于编写但未经优化。
2、模板(template):计算表达可以经过一系列等效变换(transform)形成模板。模板为计算表达结构优化过程中,介于计算表达和调度之间的中间表示信息。通常来说,模板将计算表达逻辑中计算执行的顺序,数据访问的模式确定下来。
模板改变计算表达的计算执行顺序和数据访问模式,但对计算表达的输入数据如何具体划分不做限制。如循环经过轴分割变换后,某单循环可以被分割成数个子循环,不同数量子循环的划分即为不同的模板。每个模板中,子循环的循环上下界只需满足与计算表达等效,但是每个子循环的循环上下界数值不确定。
3、调度(schedule):根据目标硬件平台的硬件特性,对算子的中间表示信息进行调度优化。调度确定了模板中全部可变参数的具体表达,可转化为软件实现的计算表达的描述。对相同的输入数据,调度的输出数据与计算表达的输出数据完全一致,但执行计算过程可以不同。
4、特征嵌入(feature embedding):输入数据经过神经网络模块后的中间输出。特征嵌入是神经网络模块对输入数据在另外一个空间上的映射,包括对输入数据的提取、增强和编码。
5、多层感知器:一种由全连接层、激活层等层叠组成的神经网络基本单元。多层感知器可以形成整体神经网络架构,也可以在整体架构中的一部分作为模块出现。
在一个示意性的例子中,以单循环的变换为例(伪代码),调度空间的生成过程如图1所示,计算机设备(比如自动优化器)获取用户输入的计算表达,将计算表达进行变换,生成模板空间,模板空间中的模板可以转化为逻辑等效于计算表达的调度实现。合法的调度的集合形成调度空间。计算机设备在调度空间中搜索,输出最优调度实现。在该例子中,计算表达为用户自定义的一个循环计算,循环体内的计算逻辑由陈列式(statement,stmt)代表。循环的上下界由0到546756。经过轴分割变换,计算表达的单循环可以等效的转换为双重嵌套循环,三重嵌套循环至N重嵌套循环的模板,模板中,每层嵌套循环的循环上下界并未确定,通过轴分割可以对数据访问的模式做出不同规划。而将与计算表达的循环上下界等效的循环边界值填入模板中,并对循环陈列式进行合理变形或约束(比如,图1中stmt_tpln_immd_constrain可以是第n个模板的中间约束陈列式),形成的与计算表达等效逻辑的代码即为调度。
在实际场景中,复杂的计算逻辑所构成的计算表达,通常可以衍生出千百万量级的调度实现,其中不同调度在目标硬件平台上的执行时长可以相差成百上千倍。自动优化系统即通过一系列操作在海量调度所构成的搜索空间中,搜索硬件执行最优的调度以实现对算子的优化。
如图2所示,实际测量法根据调度的定义,生成合法代码,经过编译器编译,在 硬件上执行并测量,获得性能评估结果。结果通常为调度的执行时长,也可以为运行所需的硬件时钟周期计数。通过对有限数量的调度实现的实际测量,最终选择执行时长最短(硬件时钟周期计数最小)的调度。以该方式获得的执行时长最为准确真实,缺点是代码生成和编译过程通常需要数秒钟至数分钟才可以完成,运行和测量过程的耗时取决于算子计算量及复杂度,在大规模选优过程中速度非常慢。
而基于机器学习模型的搜索选优方法可以大大加速上述过程,将数秒钟的代码生成,编译运行过程缩短为毫秒级的神经网络推理过程。同时由于模型预测的准确率限制,选优的效果可能会出现下降。目前的代价模型如前文所述,在对调度进行特征提取后,通过调用该代价模型预测该调度的绝对执行时长或运行周期数。该方法中代价模型的准确度低,相关技术中的代价模型对调度执行时长的预测平均有16%的误差,而相当多的调度之间的真实执行时长差异都小于16%误差值;除误差外,获取代价模型的成本高昂,训练需要180万训练数据,网络架构复杂度高,训练收敛时间长。因此该方法无法很好达到快速并准确地算子搜索优化的目的。
本申请实施例提供了一种新的代价模型:代价比较模型。代价比较模型避免直接对调度执行时长的预测,将回归问题转化为易于神经网络学习的分类问题。代价比较模型以至少两个候选调度作为输入,输出结果为代价对比结果,代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序。本申请实施例提供的方法具有准确度高,推理速度快,所需要的训练成本相对现存方法较低的优点。在算子优化流程中,本申请实施例提供的代价比较模型可以快速比较不同调度的执行时长,从而实现对算子的大规模搜索优化。
需要说明的是,本申请实施例提供的算子的调度运行时间比较方法,可应用于算子自动优化系统的优化过程中。本申请实施例的核心内容为代价比较模型,包括代价比较模型的模型架构、模型训练过程和模型应用过程。本申请实施例提供的算子的调度运行时间比较方法可以应用于特定的计算机设备(比如CPU或者GPU或者NPU),对目标计算表达的多个候选调度实现进行大规模比较、搜索,从而获得最优的调度,达到目标计算表达在特定的计算机设备上优化的目的。
本申请实施例提供的算子的调度运行时间比较方法的执行主体为计算机设备,该计算机设备可以是通用计算机设备或专用计算设备。请参考图3,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
该计算机设备可以是终端或者服务器。终端包括平板电脑、膝上型便携计算机和台式计算机等等。服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
如图1所示,计算机设备包括处理器10、存储器20以及通信接口30。本领域技术人员可以理解,图1中示出的结构并不构成对该计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器10是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进 行整体控制。处理器10可以由CPU实现,也可以由GPU实现。
存储器20可用于存储软件程序以及模块。处理器10通过运行存储在存储器20的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统21、第一获取单元22、第二获取单元23、检测单元24和至少一个功能所需的应用程序25(比如神经网络训练等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。存储器20可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read-Only Memory,PROM),只读存储器(Read Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。相应地,存储器20还可以包括存储器控制器,以提供处理器10对存储器20的访问。
其中,处理器20通过运行第一获取单元22执行以下功能:获取目标计算表达对应的至少两个候选调度,所述目标计算表达用于描述算子的计算逻辑,所述候选调度为基于所述目标计算表达生成的所述算子的可执行代码;处理器20通过第二获取单元23执行以下功能:获取代价比较模型,所述代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;处理器20通过调用单元24执行以下功能:根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,所述代价对比结果用于指示所述至少两个候选调度的执行时长的大小排序。
可选地,计算机设备获取用户输入的计算表达代码即目标计算表达,通过算子优化系统对该目标计算表达进行分析,基于优化规则或多面体模型等方法生成模板空间,通过对模板实例化生成大量合法的候选调度,生成的多个候选调度构成调度空间。调度空间中的一个实例代表一个合法的调度,本申请实施例提供的代价比较模型作为评价模块,对输入的至少两个候选调度进行比较输出得到代价对比结果,从而实现在调度空间中寻找最优调度的目标。
下面,采用示意性的实施例对算子的调度运行时间比较方法进行介绍。
请参考图4,其示出了本申请一个示例性实施例提供的算子的调度运行时间比较方法的流程图。本实施例以该算子的调度运行时间比较方法应用于图3所示出的计算机设备来举例说明。该算子的调度运行时间比较方法包括:
步骤401,获取目标计算表达对应的至少两个候选调度,目标计算表达用于描述算子的计算逻辑,候选调度为基于目标计算表达生成的算子在目标硬件平台上的可执行代码。
可选地,计算机设备从目标计算表达对应的调度空间中获取至少两个候选调度。示意性的,计算机设备获取输入的目标计算表达,对目标计算表达进行分析,根据预设方式生成模板空间,通过对模板实例化生成多个候选调度,生成的多个候选调度构成调度空间。计算机设备从该调度空间中获取至少两个候选调度。
可选地,预设方式为动态规划法或者优化规则法或者多面体模型法。针对不同计 算系统,预设方式也可能有差异。本申请实施例对调度空间的生成算法不加以限定。调度空间中需保证包括至少两个候选调度用于比较才可以应用本申请实施例。
其中,目标计算表达为特定的计算表达,比如目标计算表达为输入的计算表达。
候选调度为基于目标计算表达生成的算子在目标硬件平台上的可执行代码。比如,目标硬件平台为CPU或者GPU或者NPU。本申请实施例对此不加以限定。
可选地,计算机设备在接收到预设获取指令时,获取目标计算表达对应的至少两个候选调度。或者,计算机设备每隔预设时间间隔获取目标计算表达对应的至少两个候选调度。或者,计算机设备实时获取目标计算表达对应的至少两个候选调度。
其中,预设时间间隔为默认设置的,或者自定义设置的,本实施例对此不加以限定。
步骤402,获取代价比较模型,代价比较模型为采用多个样本调度对神经网络进行训练得到的模型。
计算机设备获取训练好的代价比较模型。在一种可能的实现方式中,当计算机设备为终端时,终端获取自身存储的训练好的代价比较模型,或者从服务器中获取训练好的代价比较模型。在另一种可能的实现方式中,当计算机设备为服务器时,服务器获取自身存储的训练好的代价比较模型。
代价比较模型为采用至少两个样本调度和正确代价对比结果对神经网络进行训练得到的模型。即代价比较模型是根据至少两个样本调度和正确代价对比结果所确定的。其中,正确代价对比结果为预先标注的与至少两个样本调度对应的正确代价对比结果。
其中,代价比较模型的神经网络可以采用端到端的堆叠的多层感知器架构。其他合理的变形架构也同样可以实现代价比较模型的拟合功能,不同架构对模型最终的准确率会有影响。任何对本架构的变形、衍生、层替换所构成的网络架构均应视为等价于本申请实施例所述的神经网络。
比如,神经网络为深度神经网络(Deep Neural Network,DNN)。比如,神经网络为卷积神经网络(Convolutional Neural Network,CNN)。又比如,神经网络为循环神经网络(Recurrent Neural Network,RNN)。本申请实施例对此不加以限定。
代价比较模型是具有对至少两个候选调度在目标硬件平台上的相对执行时长进行识别的神经网络模型。
代价比较模型用于将输入的至少两个候选调度转化为代价对比结果。该代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序。
代价比较模型用于表示至少两个候选调度与代价对比结果之间的相关关系。
代价比较模型为预设的数学模型,该代价比较模型包括至少两个候选调度与代价对比结果之间的模型系数。模型系数可以为固定值,也可以是随时间动态修改的值,还可以是随着使用场景动态修改的值。
步骤403,根据至少两个候选调度,调用代价比较模型输出得到代价对比结果,代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序。
可选的,计算机设备对至少两个候选调度进行预处理,得到预处理后的至少两个候选调度;将预处理后的至少两个候选调度输入至代价比较模型中,输出得到代价对比结果。
其中,代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序。即代价对比结果不指示至少两个候选调度在目标硬件平台上的绝对执行时长,而是指示至少两个候选调度在目标硬件平台上的执行时长的相对大小。
可选地,代价对比结果为预测的至少两个候选调度的执行时长的比较结果的编码信息。计算机设备对代价比较模型输出的编码信息进行解码,得到至少两个候选调度的执行时长的大小排序即比较结果。
示意性的,代价对比结果包括编码信息,编码信息的取值与至少两个候选调度的执行时长比较结果一一对应。示意性的,以至少两个候选调度为第一候选调度和第二候选调度为例,编码信息为第一数值时用于指示第一候选调度的执行时长小于第二候选调度的执行时长,编码信息为第二数值时用于指示第一候选调度的执行时长等于第二候选调度的执行时长,编码信息为第三数值时用于指示第一候选调度的执行时长大于第二候选调度的执行时长,其中第一数值、第二数值和第三数值各不相同。
可选的,计算机设备根据至少两个候选调度的代价对比结果,将至少两个候选调度中执行时长最短的候选调度作为目标调度,保留目标调度,丢弃除目标调度以外的其它候选调度。
可选地,在代价对比结果指示至少两个候选调度的执行时长均相同的情况下,计算机设备将至少两个候选调度中的任意一个候选调度作为目标调度,保留目标调度,丢弃除目标调度以外的其它候选调度。本申请实施例对调度的保留和丢弃方式不加以限定。
在一个示意性的例子中,如图5所示,计算机设备获取输入的目标计算表达,对目标计算表达进行分析,根据预设方式生成模板空间,通过对模板实例化生成多个候选调度,生成的多个候选调度构成调度空间。从该调度空间中获取两个候选调度,比如调度A和调度B。对调度A和调度B进行预处理,得到预处理后的调度A和调度B;将预处理后的调度A和调度B输入至代价比较模型中输出得到编码信息,对编码信息进行解码得到调度A和调度B的代价对比结果。比如,编码信息为001时用于指示调度A的执行时长小于调度B的执行时长,保留调度A,并丢弃调度B;编码信息为002时用于指示调度A的执行时长等于调度B的执行时长,保留调度A或调度B;编码信息为100时用于指示调度A的执行时长大于调度B的执行时长,保留调度B,并丢弃调度A。
综上所述,本申请实施例通过获取目标计算表达对应的至少两个候选调度,根据至少两个候选调度调用代价比较模型,直接比较至少两个候选调度在目标硬件平台上的执行时长的相对大小,从而输出得到用于指示执行时长大小排序的代价对比结果,可以实现编译器/自动优化器的自动调优功能,大大提高了调度运行代价的评估速度和准确度。
需要说明的是,在计算机设备获取代价比较模型之前,需要对训练样本集进行训练得到代价比较模型。下面对代价比较模型的训练过程进行介绍。
在一种可能的实现方式中,如图6所示,对代价比较模型的训练过程包括如下几个步骤:
步骤601,获取训练样本集,训练样本集包括至少一组样本数据组。
代价比较模型是根据至少一组样本数据组训练得到的,每组样本数据组包括:样本计算表达对应的至少两个样本调度和预先标注的正确代价对比结果。
步骤602,对于每组样本数据组,对至少两个样本调度进行预处理得到预处理后的至少两个样本调度。
对于每组样本数据组,计算机设备对至少两个样本调度中的每个样本调度进行特征提取得到特征矩阵,对样本调度对应的特征矩阵进行归一化处理,得到预处理后的样本调度。
示意性的,特征提取是从样本调度中提取特征,并将特征转换为结构化数据的过程。
需要说明的是,特征矩阵的相关描述可参考下面实施例中的相关细节,在此先不介绍。
步骤603,将预处理后的至少两个样本调度输入原始参数模型得到训练结果,原始参数模型为神经网络模型。
可选的,原始参数模型是根据神经网络模型建立的,比如:原始参数模型是根据DNN模型建立的。
示意性的,对于每组样本数据组,计算机设备创建该组样本数据组对应的输入输出对,输入输出对的输入参数为该组样本数据组中的至少两个样本调度,目标参数为该组样本数据组中的正确代价对比结果;计算机设备将输入参数输入原始参数模型,得到训练结果。
可选的,输入输出对通过特征向量表示。
步骤604,将训练结果与正确代价对比结果进行比较,得到计算损失,计算损失用于指示训练结果与正确代价对比结果之间的误差。
可选地,训练结果为原始参数模型输出的编码信息,正确代价对比结果为预先标注的编码信息。比如,编码信息为采用独热码(One-Hot)编码的信息。
可选的,计算损失通过交叉熵来表示。
步骤605,根据至少一组样本数据组各自对应的计算损失,采用误差反向传播算法训练得到代价比较模型。
可选的,计算机设备通过反向传播算法根据计算损失确定代价比较模型的梯度方向,从代价比较模型的输出层逐层向前更新代价比较模型中的模型参数。
在一个示意性的例子中,以至少两个候选调度为调度A和调度B为例,如图7所示。计算机设备从调度空间中抽取两个调度即调度A和B,作为代价比较模型训练的输入数据。对比两个调度在目标硬件平台上的相对执行时长,采用独热码编码,生成(A,B)输入的编码信息(即正确代价对比结果)作为反向传播算法的目标参数,编码信息如表一所示。编码信息为第一数值时用于指示调度A的执行时长小于调度B的执行时长,编码信息为第二数值时用于指示调度A的执行时长等于调度B的执行时长,编码信息为第三数值时用于指示调度A的执行时长大于调度B的执行时长。
表一
计算机设备对调度A和调度B进行特征提取得到各自对应的特征矩阵。比如,调度A和调度B的特征矩阵为两个250x57维的矩阵。对特征矩阵中的部分列数据进行归一化处理以限制其动态范围,归一化函数的公式如下:
其中,v为输入数据,v*为输出数据。示意性的,归一化函数的输入输出曲线如图8所示。其中,横坐标为上述的输入数据,纵坐标为上述的输出数据。
计算机设备将经过归一化处理的调度A输入至多层感知器构成的特征嵌入模块A即DNN_A,输出一个1x512维的调度嵌入(schedule embedding)A,并将经过归一化处理的调度B输入至多层感知器构成的特征嵌入模块B即DNN_B,输出一个1x512维的调度嵌入B。这两个调度嵌入按位减,即将调度嵌入A减去调度嵌入B得到调度差嵌入(schedule difference embedding)。将调度差嵌入输入至深度网络判别模块即DNN_CLS中,输出得到训练结果即三个数字的编码信息。根据深度网络判别模块的输出数据以及调度A和调度B的真实标签即正确代价对比结果,以均方差损失函数(或最小平方差函数)作为损失函数,计算获得模型针对当前输入的计算损失。将计算损失通过梯度下降法反向传播,更新DNN_A、DNN_B、DNN_CLS等基于神经网络模块的模型参数。重复上述的步骤,对训练样本集进行多期(比如30期)训练至模型收敛。其中,DNN_A、DNN_B、DNN_CLS的网络结构可以是端到端的堆叠的多层感知器架构,网络结构如图9所示。其中,数字代表各层神经元的个数,每个全连接层之间由Relu函数作为激活函数。
基于上述训练完成的代价比较模型,请参考图10,其示出了本申请另一个示例性实施例提供的算子的调度运行时间比较方法的流程图。本实施例以该算子的调度运行时间比较方法应用于图3所示出的计算机设备来举例说明。该算子的调度运行时间比较方法包括:
步骤1001,从目标计算表达对应的调度空间中获取至少两个候选调度。
其中,目标计算表达用于描述算子的计算逻辑,候选调度为基于目标计算表达生成的算子在目标硬件平台上的可执行代码。
可选地,计算机设备获取输入的目标计算表达,对该目标计算表达进行分析,根据预设方式生成模板,确定调度空间,该调度空间包括对模板实例化生成的至少两个候选调度。计算机设备从目标计算表达对应的调度空间中获取至少两个候选调度。
示意性的,调度空间中包括n个候选调度,一种可能的实现方式中,采取每次两两比较,保留最优的方式比较n-1次而获得最优的目标调度。另一种可能的实现方式中,选择二分法比较,比如n为8,即将8个调度两两分为4组,4组中通过代价比较模型选取4个运行速度最快的候选调度进行二次分组,二次分组分为2组,需要做2 次比较,比较完成后保留2个最优的候选调度进行最后比较,从而获得8个候选调度中最优的目标调度。本申请实施例对调度的分组比较方式不加以限定。
步骤1002,对于至少两个候选调度中的每个候选调度,对候选调度进行特征提取得到特征矩阵。
可选地,对于至少两个候选调度中的每个候选调度,计算机设备从该候选调度的m个循环中提取多类信息组合成向量,即为候选调度对应的特征矩阵,m为正整数。比如,组合成的向量大小为1x57。最多支持250个循环的信息,最终组装成一个250x57大小的二维特征矩阵,支持循环的数量可以按实际需求变化,本申请实施例对此不加以限定。
可选地,特征矩阵用于指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码中的至少一种。
循环信息包括与候选调度的循环计算逻辑相关的信息。可选地,循环信息为调度中层级的循环信息,比如循环信息的大小为1x6。其中,循环信息包括:循环深度、嵌套层级、块编号、用于指示是否为最后一个循环的标识、循环深度的商、循环深度的余数中的至少一个信息。其中循环深度和循环深度的商需要进行归一化处理。
输入数据形状信息用于描述算子的输入数据。比如输入数据形状信息的大小为1x10。该算子为单输入算子或者双输入算子或者多输入的算子。输入数据形状信息包括:k输入数据各自对应的形状信息,k为正整数,形状信息包括批大小、通道数、高度、宽度、最小通道数中的至少一个信息。
计算编码包括候选调度的当前循环里用到的计算指令的编码。比如计算编码的大小为1x6。计算编码包括:内存访问类型、程序指令、数据类型、存储单元、用于指示是否使用双缓存的标识中的至少一种信息。
轴类型编码包括对轴进行操作的类型编码。比如轴类型编码的大小为1x15。轴类型编码用于指示扩展、归一轴中的至少一种操作。
数据访问类型编码包括对数据进行访问的类型编码。比如数据访问类型编码的大小为1x19。数据访问类型编码用于指示写数据、读数据、分配、编译指示中的至少一种访问。
在一个示意性的例子中,对候选调度进行特征提取得到特征矩阵的,特征矩阵的数据结构如图11所示。从候选调度的每一个循环中提取多类信息组合成向量,组合成的向量大小为1x57,最多支持250个循环的信息,最终组装成一个250x57大小的二维特征矩阵,其中特征矩阵用于指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码,循环信息的大小为1x6,输入数据形状信息的大小为1x10,0,计算编码的大小为1x6,轴类型编码的大小为1x15,数据访问类型编码的大小为1x20。
需要说明的是,除了本申请实施例提供的特征提取、映射方式及数据结构外,其他调度表达方式同样可以作为代价比较模型的输入。本申请实施例对输入的数据结构不做限定。
步骤1003,对于至少两个候选调度中的每个候选调度,对候选调度对应的特征矩阵进行归一化处理,得到预处理后的候选调度。
步骤1004,将预处理后的至少两个候选调度输入至训练完成的代价比较模型中,输出得到代价对比结果,代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序。
可选地,计算机设备获取训练好的代价比较模型,代价比较模型为采用多个样本调度对神经网络进行训练得到的模型。计算机设备将预处理后的至少两个候选调度输入至训练完成的代价比较模型中,输出得到代价对比结果,代价对比结果用于指示至少两个候选调度在目标硬件平台上的执行时长的大小排序
计算机设备调用代价比较模型的过程可参考上述实施例中的相关细节,在此不再赘述。
可选地,计算机设备将至少两个候选调度和代价对比结果添加至训练样本集,得到更新后的训练样本集;根据更新后的训练样本集对代价比较模型进行训练,得到更新后的代价比较模型。
在一个示意性的例子中,以至少两个候选调度为调度A和调度B为例,如图12所示。计算机设备从调度空间中抽取两个调度A和调度B,对调度A和调度B进行特征提取得到各自对应的特征矩阵。比如,调度A和调度B的特征矩阵为两个250x57维的矩阵。对特征矩阵中的部分列数据进行归一化处理以限制其动态范围,归一化处理的方式可类比参考上述模型训练过程中的归一化处理的相关描述,在此不再赘述。计算机设备将经过归一化处理的调度A输入至多层感知器构成的特征嵌入模块A即DNN_A,输出一个1x512维的调度嵌入A,并将经过归一化处理的调度B输入至多层感知器构成的特征嵌入模块B即DNN_B,输出一个1x512维的调度嵌入B。这两个调度嵌入按位减,即将调度嵌入A减去调度嵌入B得到调度差嵌入。将调度差嵌入输入至深度网络判别模块即DNN_CLS中,输出得到代价对比结果即三个数字的编码结果。其中,DNN_A、DNN_B、DNN_CLS的网络结构可类比参考上述模型训练过程中的相关描述,在此不再赘述。计算机设备将输出的三个数字的编码信息转化为独热码的标签格式。
综上所述,本申请实施例还通过对至少两个候选调度进行特征提取,将调度映射为其唯一对应的矩阵表达形式,获得至少两个候选调度的特征矩阵表达;对两个特征矩阵表达做归一化处理;基于深度神经网络的代价比较模型以预处理过后的至少两个特征矩阵表达为输入,输出为预测的至少两个候选调度的执行时长的比较结果的编码信息;对代价比较模型输出的编码信息进行解码,得到至少两个候选调度的执行时长的比较结果,即通过深度学习网络模型比较同一个计算表达的不同调度实现在特定硬件平台上的执行时长,从而替代调度实现经过编译流程后在硬件上运行并测量的过程,解决自动优化器/编译器等算子自动优化系统在大规模搜索中速度慢的问题。
在一个示意性的例子中,对代价比较模型的实施以预测算子执行时长的快慢为目标。训练样本集包括源自于32个算子的20792个调度,每个算子包含的调度的个数不相同。对属于同一个算子的调度,进行两两组合配对形成训练实例集,配对后对比两个算子的执行时长,并按照上述的相关方法生成配对后的训练实例的目标。例抽取调度A和调度B,调度A的实际执行时长为15秒,调度B的实际执行时长为17秒,则 (A,B)为一个训练实例,15秒时间少于17秒,(A,B)这个训练实例的目标编码为001。属于同一个算子的调度两两组合,在训练样本集中,可以包括一个调度与该调度本身的组合,所形成的训练实例的目标编码为010。属于同一个算子调度两两组合,组合对顺序敏感,如(A,B)组合不同于(B,A)组合,如果A和B的执行时长不同,(A,B)组合和(B,A)组合的目标编码也不同。若某算子中包含N(N>2)个调度,则两两组合可以组成N的平方个训练实例。这种组合训练,即便训练数据数量相对有限,也可以构建出比较大的训练数据集。在该例子中存在20792个调度,共组成了4900万个训练实例及其目标编码用于训练模型。模型结构如上所述,在此不再赘述。神经网络模型采用批训练,每次迭代输入5000个训练实例,学习率设定为10e-8,采用动量随机梯度下降法对完整的训练实例集训练多期(比如30期)。测试集中包括46022个测试实例,每个测试实例由归属于同一个算子的两个调度构成,用于生成测试实例的任何调度均不包含于生成训练实例的调度集合中。测试目标编码为测试实例通过上述的相关方法生成,网络输出的预测结果经过最大值参数(argmax)函数后如果与测试目标编码完全吻合则记为测试实例被网络正确预测。准确率定义为:被网络正确预测的测试实例个数/被测试的测试实例总数。通过对46022个测试实例的测试,该方法正确预测41242个测试实例,准确率达89.61%。通过增加训练调度的数量和对网络结构进行优化,可以进一步提高模型的准确率。
综上所述,本申请实施例提供了一种算子的调度运行时间比较方法,采用代价比较的思想来确定至少两个调度的相对执行时长的比较结果,将代价比较模型应用于算子自动优化系统的调优过程中,还涉及一种可应用于算子自动优化系统中的代价比较模型的建模方法,包括模型的架构设计,模型训练和模型推理应用过程,并在模型训练和模型推理应用过程中,调度可以通过特征提取转化为专门的数据结构,并对数据的归一化处理及对输出格式的表达,具有准确度高、推理速度快、所需要的训练成本相对现存方法较低的优点。也就是说,一方面保证了代价比较模型较高的准确率;另一方面,提高了代价比较模型的推理速度,对比一组实例仅需要3毫秒;另一方面,代价比较模型训练所需的数据量和算力相对较少,GPU单卡上70个小时完成对4900多万训练实例的30期训练。通过代价比较模型,代码优化器/编译器自动调优只需要考虑如何提高代价比较模型的准确率即可,相较于相关技术中预测调度绝对执行时长的代价模型,除了模型预测的准确度外,相关技术中的代价模型还需要考虑如何应对误差带来的边界问题,例如:预测出两个调度运行时间的差异小于模型预测的误差,此时绝对值模型无法给出高确信度的预测。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图13,其示出了本申请一个示例性实施例提供的算子的调度运行时间比较装置的框图。该装置可以通过软件、硬件或者两者的结合实现成为图3提供的计算机设备的全部或者一部分。该装置可以包括:第一获取单元1310、第二获取单元1320和调用单元1330。
第一获取单元1310,用于获取目标计算表达对应的至少两个候选调度,目标计算 表达用于描述算子的计算逻辑,候选调度为基于目标计算表达生成的算子的可执行代码;
第二获取单元1320,用于获取代价比较模型,代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;
调用单元1330,用于根据至少两个候选调度,调用代价比较模型输出得到代价对比结果,代价对比结果用于指示至少两个候选调度的执行时长的大小排序。
在一种可能的实现方式中,调用单元1330,还用于:
对至少两个候选调度进行预处理,得到预处理后的至少两个候选调度;
将预处理后的至少两个候选调度输入至代价比较模型中,输出得到代价对比结果;
其中,代价比较模型是根据至少一组样本数据组训练得到的,每组样本数据组包括:样本计算表达对应的至少两个样本调度和预先标注的正确代价对比结果。
在另一种可能的实现方式中,调用单元1330,还用于:
对于至少两个候选调度中的每个候选调度,对候选调度进行特征提取得到特征矩阵;
对候选调度对应的特征矩阵进行归一化处理,得到预处理后的候选调度。
在另一种可能的实现方式中,特征矩阵用于指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码中的至少一种,循环信息包括与候选调度的循环计算逻辑相关的信息,输入数据形状信息用于描述算子的输入数据,计算编码包括候选调度的当前循环里用到的计算指令的编码,轴类型编码包括对轴进行操作的类型编码,数据访问类型编码包括对数据进行访问的类型编码。
在另一种可能的实现方式中,装置还包括训练单元;训练单元用于:
获取训练样本集,训练样本集包括至少一组样本数据组;
对于每组样本数据组,对至少两个样本调度进行预处理得到预处理后的至少两个样本调度;
将预处理后的至少两个样本调度输入原始参数模型得到训练结果,原始参数模型为神经网络模型;
将训练结果与正确代价对比结果进行比较,得到计算损失,计算损失用于指示训练结果与正确代价对比结果之间的误差;
根据至少一组样本数据组各自对应的计算损失,采用误差反向传播算法训练得到代价比较模型。
在另一种可能的实现方式中,该装置还包括更新单元;更新单元用于:
将至少两个候选调度和代价对比结果添加至训练样本集,得到更新后的训练样本集;
根据更新后的训练样本集对代价比较模型进行训练,得到更新后的代价比较模型。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种算子的调度运行时间比较装置,该算子的调度运行时间比较装置包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现上述实施例中由计算机设备执行的方法。
本申请实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当计算机可读代码在处理器中运行时,处理器执行上述实施例中由计算机设备执行的方法。
本申请实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述实施例中由计算机设备执行的方法。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(Electrically Programmable Read-Only-Memory,EPROM或闪存)、静态随机存取存储器(Static Random-Access Memory,SRAM)、便携式压缩盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能盘(Digital Video Disc,DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
这里所描述的计算机可读程序指令或代码可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(Local Area Network,LAN)或广域网(Wide Area Network,WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或可编程逻辑阵列(Programmable Logic Array,PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
这里参照根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或ASIC(Application Specific Integrated Circuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
- 一种算子的调度运行时间比较方法,其特征在于,所述方法包括:获取目标计算表达对应的至少两个候选调度,所述目标计算表达用于描述算子的计算逻辑,所述候选调度为基于所述目标计算表达生成的所述算子在目标硬件平台上的可执行代码;获取代价比较模型,所述代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,所述代价对比结果用于指示所述至少两个候选调度在所述目标硬件平台上的执行时长的大小排序。
- 根据权利要求1所述的方法,其特征在于,所述根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,包括:对所述至少两个候选调度进行预处理,得到预处理后的所述至少两个候选调度;将预处理后的所述至少两个候选调度输入至所述代价比较模型中,输出得到所述代价对比结果;其中,所述代价比较模型是根据至少一组样本数据组训练得到的,每组所述样本数据组包括:样本计算表达对应的至少两个样本调度和预先标注的正确代价对比结果。
- 根据权利要求2所述的方法,其特征在于,所述对所述至少两个候选调度进行预处理,得到预处理后的所述至少两个候选调度,包括:对于所述至少两个候选调度中的每个所述候选调度,对所述候选调度进行特征提取得到特征矩阵;对所述候选调度对应的所述特征矩阵进行归一化处理,得到预处理后的所述候选调度。
- 根据权利要求3所述的方法,其特征在于,所述特征矩阵用于指示循环信息、输入数据形状信息、计算编码、轴类型编码和数据访问类型编码中的至少一种,所述循环信息包括与所述候选调度的循环计算逻辑相关的信息,所述输入数据形状信息用于描述所述算子的输入数据,所述计算编码包括所述候选调度的当前循环里用到的计算指令的编码,所述轴类型编码包括对轴进行操作的类型编码,所述数据访问类型编码包括对数据进行访问的类型编码。
- 根据权利要求2至4任一所述的方法,其特征在于,所述获取代价比较模型之前还包括:获取训练样本集,所述训练样本集包括至少一组所述样本数据组;对于每组所述样本数据组,对至少两个样本调度进行预处理得到预处理后的所述至少两个样本调度;将预处理后的所述至少两个样本调度输入原始参数模型得到训练结果,所述原始参数模型为神经网络模型;将所述训练结果与所述正确代价对比结果进行比较,得到计算损失,所述计算损失用于指示所述训练结果与所述正确代价对比结果之间的误差;根据所述至少一组样本数据组各自对应的计算损失,采用误差反向传播算法训练得到所述代价比较模型。
- 根据权利要求2至5任一所述的方法,其特征在于,所述根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果之后,还包括:将所述至少两个候选调度和所述代价对比结果添加至所述训练样本集,得到更新后的训练样本集;根据所述更新后的训练样本集对所述代价比较模型进行训练,得到更新后的代价比较模型。
- 一种算子的调度运行时间比较装置,其特征在于,所述装置包括:第一获取单元,用于获取目标计算表达对应的至少两个候选调度,所述目标计算表达用于描述算子的计算逻辑,所述候选调度为基于所述目标计算表达生成的所述算子的可执行代码;第二获取单元,用于获取代价比较模型,所述代价比较模型为采用多个样本调度对神经网络进行训练得到的模型;调用单元,用于根据所述至少两个候选调度,调用代价比较模型输出得到代价对比结果,所述代价对比结果用于指示所述至少两个候选调度的执行时长的大小排序。
- 一种算子的调度运行时间比较装置,其特征在于,所述装置包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现权利要求1-6任意一项所述的方法。
- 一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-6任意一项所述的方法。
- 一种计算机程序产品,其特征在于,所述计算机程序产品在计算机上运行时,所述计算机执行如权利要求1-6任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/075526 WO2023150912A1 (zh) | 2022-02-08 | 2022-02-08 | 算子的调度运行时间比较方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116897356A true CN116897356A (zh) | 2023-10-17 |
Family
ID=87563395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280006829.5A Pending CN116897356A (zh) | 2022-02-08 | 2022-02-08 | 算子的调度运行时间比较方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116897356A (zh) |
WO (1) | WO2023150912A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116755779B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 循环间隔的确定方法、装置、设备、存储介质及芯片 |
CN117032936B (zh) * | 2023-09-28 | 2024-02-06 | 之江实验室 | 一种数据调度方法、装置和计算机设备 |
CN117171577B (zh) * | 2023-11-02 | 2024-03-22 | 之江实验室 | 一种高性能算子选择的动态决策方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10846643B2 (en) * | 2016-08-24 | 2020-11-24 | Clari Inc. | Method and system for predicting task completion of a time period based on task completion rates and data trend of prior time periods in view of attributes of tasks using machine learning models |
US10228972B2 (en) * | 2017-06-22 | 2019-03-12 | Banuba Limited | Computer systems and computer-implemented methods for dynamically adaptive distribution of workload between central processing unit(s) and graphics processing unit(s) |
CN113946412A (zh) * | 2020-07-17 | 2022-01-18 | 阿里巴巴集团控股有限公司 | 调度搜索方法和装置、云服务提供方法、电子设备以及计算机可读存储介质 |
CN112668701B (zh) * | 2020-12-31 | 2023-12-22 | 上海商汤智能科技有限公司 | 神经网络运行方法、装置、电子设备及存储介质 |
CN113128702A (zh) * | 2021-04-15 | 2021-07-16 | 杭州电子科技大学 | 一种基于强化学习的神经网络自适应分布式并行训练方法 |
CN113342631B (zh) * | 2021-07-02 | 2022-08-26 | 厦门美图之家科技有限公司 | 分发管理优化方法、装置和电子设备 |
-
2022
- 2022-02-08 WO PCT/CN2022/075526 patent/WO2023150912A1/zh active Application Filing
- 2022-02-08 CN CN202280006829.5A patent/CN116897356A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023150912A1 (zh) | 2023-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200097810A1 (en) | Automated window based feature generation for time-series forecasting and anomaly detection | |
WO2022068623A1 (zh) | 一种模型训练方法及相关设备 | |
US20190228495A1 (en) | Learning robotic tasks using one or more neural networks | |
CN116897356A (zh) | 算子的调度运行时间比较方法、装置及存储介质 | |
US20190138887A1 (en) | Systems, methods, and media for gated recurrent neural networks with reduced parameter gating signals and/or memory-cell units | |
US11386256B2 (en) | Systems and methods for determining a configuration for a microarchitecture | |
US20220230048A1 (en) | Neural Architecture Scaling For Hardware Accelerators | |
US11068747B2 (en) | Computer architecture for object detection using point-wise labels | |
US20230196202A1 (en) | System and method for automatic building of learning machines using learning machines | |
WO2021218517A1 (zh) | 获取神经网络模型的方法、图像处理方法及装置 | |
CN114997412A (zh) | 一种推荐方法、训练方法以及装置 | |
CN111428854A (zh) | 一种结构搜索方法及结构搜索装置 | |
CN113095370A (zh) | 图像识别方法、装置、电子设备及存储介质 | |
US20200272812A1 (en) | Human body part segmentation with real and synthetic images | |
CN112420125A (zh) | 分子属性预测方法、装置、智能设备和终端 | |
CN112149809A (zh) | 模型超参数的确定方法及设备、计算设备和介质 | |
US11003909B2 (en) | Neural network trained by homographic augmentation | |
CN116805157B (zh) | 无人集群自主动态评估方法及装置 | |
EP4217928A1 (en) | Neural architecture scaling for hardware accelerators | |
WO2023160290A1 (zh) | 神经网络推理加速方法、目标检测方法、设备及存储介质 | |
KR102561799B1 (ko) | 디바이스에서 딥러닝 모델의 레이턴시를 예측하는 방법 및 시스템 | |
CN110728359A (zh) | 搜索模型结构的方法、装置、设备和存储介质 | |
WO2022127603A1 (zh) | 一种模型处理方法及相关装置 | |
CN114819140A (zh) | 模型剪枝方法、装置和计算机设备 | |
CN114496068A (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 |