CN116663618B - 一种算子优化方法、装置、存储介质及电子设备 - Google Patents

一种算子优化方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN116663618B
CN116663618B CN202310941263.1A CN202310941263A CN116663618B CN 116663618 B CN116663618 B CN 116663618B CN 202310941263 A CN202310941263 A CN 202310941263A CN 116663618 B CN116663618 B CN 116663618B
Authority
CN
China
Prior art keywords
solution
operator
determining
candidate
evaluation
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.)
Active
Application number
CN202310941263.1A
Other languages
English (en)
Other versions
CN116663618A (zh
Inventor
王鹏程
吕波
孙红江
陈晨
李勇
胡陈枢
曾令仿
陈�光
程稳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202310941263.1A priority Critical patent/CN116663618B/zh
Publication of CN116663618A publication Critical patent/CN116663618A/zh
Application granted granted Critical
Publication of CN116663618B publication Critical patent/CN116663618B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Feedback Control In General (AREA)

Abstract

本说明书公开了一种算子优化方法、装置、存储介质及电子设备。在本说明书提供的算子优化方法中,获取目标神经网络模型,并确定目标神经网络模型的计算图;针对计算图中每个算子,确定包含该算子所有可行解的搜索空间;在搜索空间中选择若干可行解作为候选解,确定各候选解的评估值,并将评估值最高的作为待定解;确定目标硬件运行待定解的运行时间,并增加迭代次数;当运行时间小于当前最优时间或不存在当前最优时间时,将运行时间确定为当前最优时间,并将待定解确定为当前最优解;当迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;当迭代次数不小于指定次数时,将当前最优解确定为该算子的最优解。

Description

一种算子优化方法、装置、存储介质及电子设备
技术领域
本说明书涉及计算机技术领域,尤其涉及一种算子优化方法、装置、存储介质及电子设备。
背景技术
近年来,随着深度学习技术地不断发展,随着神经网络模型参数量越来越大,结构越来越复杂,对模型部署的要求也越来越高。但是,高性能计算库的构建和调优需要耗费巨大的工程量,而神经网络的结构日新月异,无疑造成了极大的工程压力。
为了解决上述问题,通过编译技术将神经网络模型对应的计算图映射到不同硬件并生成硬件可执行代码的方案取得了显著效果。在这一过程中,对计算图中的算子进行优化以提升神经网络模型与硬件的适配程度是一个至关重要的步骤。
现有方法在实现算子优化的过程中,会将算子所有不同可行解对应的实现方法均在硬件中进行测试,并将测试结果中运行时间最少的可行解作为最终采用的最优解。但是,上述方案中算子优化所耗费的时间往往非常长,成本较大。
因此,如何提高执行算子优化时的效率是一个亟待解决的问题。
发明内容
本说明书提供一种方法、装置、存储介质及电子设备,以至少部分地解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种算子优化方法,包括:
获取目标神经网络模型,并确定所述目标神经网络模型的计算图;
针对所述计算图中的每个算子,确定该算子的搜索空间,所述搜索空间中包含该算子的所有可行解;
在该算子的搜索空间中选择指定数量个可行解作为候选解,确定各候选解的评估值,并将所述评估值最高的候选解作为待定解;
确定目标硬件运行所述待定解的运行时间,并增加迭代次数;
当所述运行时间小于当前最优时间或不存在当前最优时间时,将所述运行时间确定为当前最优时间,并将所述待定解确定为当前最优解;
当所述迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;
当所述迭代次数不小于所述指定次数时,将所述当前最优解确定为该算子的最优解。
可选地,在该算子的搜索空间中选择指定数量个候选解,具体包括:
在该算子的可行解中选择指定解,作为候选解;
在该算子的可行解中确定所述指定解的邻域解,并将所述邻域解重新确定为指定解,直到确定出的候选解的数量达到指定数量。
可选地,确定各候选解的评估值,具体包括:
针对每个候选解,将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果;
根据所述评估结果,确定该候选解的评估值。
可选地,所述评估模型包括若干预测模型;
将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果,具体包括:
将该候选解输入预先训练的评估模型中的各预测模型中,得到每个预测模型输出的预测运行时间;
根据各预测运行时间确定该候选解的评估结果。
可选地,所述评估结果包括平均运行时间和标准差;
根据各预测运行时间确定该候选解的评估结果,具体包括:
根据各预测运行时间确定该候选解的平均运行时间和标准差。
可选地,根据所述评估结果,确定该候选解的评估值,具体包括:
根据所述评估结果与当前最优时间,确定该候选解的评估值。
可选地,预先训练评估模型,具体包括:
获取样本算子;
确定所述样本算子的样本可行解,以及所述样本可行解在目标硬件中的真实运行时间;
针对每个预测模型,将所述样本可行解输入该预测模型,得到该预测模型输出的待优化预测运行时间,其中,输入每个预测模型的样本可行解所属的样本算子不同;
以所述样本待优化预测运行时间与输入该预测模型的样本可行解在目标硬件中的真实运行时间之间的差异最小为优化目标,对该预测模型进行训练。
本说明书提供的一种算子优化装置,所述装置包括:
获取模块,用于获取目标神经网络模型,并确定所述目标神经网络模型的计算图;
确定模块,用于针对所述计算图中的每个算子,确定该算子的搜索空间,所述搜索空间中包含该算子的所有可行解;
选择模块,用于在该算子的搜索空间中选择指定数量个可行解作为候选解,确定各候选解的评估值,并将所述评估值最高的候选解作为待定解;
增加模块,用于确定目标硬件运行所述待定解的运行时间,并增加迭代次数;
更新模块,用于当所述运行时间小于当前最优时间或不存在当前最优时间时,将所述运行时间确定为当前最优时间,并将所述待定解确定为当前最优解;
迭代模块,用于当所述迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;
优化模块,用于当所述迭代次数不小于所述指定次数时,将所述当前最优解确定为该算子的最优解。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述算子优化方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述算子优化方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的算子优化方法中,获取目标神经网络模型,并确定目标神经网络模型的计算图;针对计算图中每个算子,确定包含该算子所有可行解的搜索空间;在搜索空间中选择若干可行解作为候选解,确定各候选解的评估值,并将评估值最高的作为待定解;确定目标硬件运行待定解的运行时间,并增加迭代次数;当运行时间小于当前最优时间或不存在当前最优时间时,将运行时间确定为当前最优时间,并将待定解确定为当前最优解;当迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;当迭代次数不小于指定次数时,将当前最优解确定为该算子的最优解。
在采用本说明书提供的算子优化方法对目标神经网络模型的计算图中的算子进行优化时,可在算子的搜索空间中通过循环迭代的方式,每次迭代均不重复地选择指定数量个候选解,寻找局部最优解;最终在多个局部最优解中寻找全局最优解,作为算子地最优解。相比传统方法,本说明书提供的算子优化方法基于贝叶斯优化的思想,通过预先评估的方式寻找潜在的最优解,能够极大地减少在目标硬件中运行算子的各不同可行解的次数,显著降低算子优化的时间成本与开销。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中一种算子优化方法的流程示意图;
图2为本说明书提供的一种算子优化装置的示意图;
图3为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
如今,许多神经网络模型都可以导出为计算图的形式。例如使用Tensorflow、Pytorch等深度学习框架训练的模型。在部署时,会将计算图中的算子映射到硬件供应商提供的计算库来执行。
目前,比较高效的深度学习编译器通常包含以下流程:首先导入神经网络模型对应的计算图为高级中间表示(Intermediate Representation,IR),并进行图级别的优化,然后将优化后的高级IR转化为低级IR,并进行算子级别的优化,最后进行代码生成,将低级IR转化为目标硬件的可执行代码。例如TVM、Halide等深度学习编译器便采用了与上述流程相似的方案。
但目前,上述流程中对算子进行优化的过程仍不够成熟,耗费时间较长且成本较大。为解决上述问题,本说明书提供了一种效率更高的算子优化方法。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中一种算子优化方法的流程示意图,具体包括以下步骤:
S100:获取目标神经网络模型,并确定所述目标神经网络模型的计算图。
本说明书所提供的算子优化方法中的所有步骤均可由任何具有计算功能的电子设备实现,例如终端、服务器等设备。
本说明书所提供的算子优化方法用于以较高的效率对神经网络模型导出的计算图中的算子进行优化,以使神经网络模型中的算子在硬件上运行时的速度得到提升。基于此,在此步骤中,可首先获取目标神经网络模型,并在获取目标神经网络模型后,确定出目标神经网络模型的计算图。
计算图是一种用于表示计算过程的数据结构,与一般的图数据相同,计算图也同样由节点和边组成。在由神经网络模型导出的计算图中,节点表示网络层,计算图中的每个不同的节点分别对应于神经网络模型中不同的网络层;边表示数据流动,也就是数据在节点(网络层)之间进行传递。每个节点中包含若干个算子,每个算子表示一种运算,例如矩阵乘法等。不同算子表示的运算不同,每个节点中包含的算子用于实现该节点对应的网络层的功能。
S102:针对所述计算图中的每个算子,确定该算子的搜索空间,所述搜索空间中包含该算子的所有可行解。
在步骤S100中确定出的神经模型网络的计算图中,会存在若干算子。本方法所要达成的目标是最大程度地保证每个算子都能够以最快的速度在硬件上运行,而算子在硬件上运行的速度通常取决于算子的可行解与硬件的适配程度。其中,一个算子的可行解为可行的计算该算子的方式。一般的,一个算子会存在多种不同的可行解,而每个可行解与硬件的适配程度都可能不同。算子的一个可行解与硬件的适配程度越高,在该可行解下硬件运行算子的速度就越快;反之,算子的一个可行解与硬件的适配程度越低,在该可行解下硬件运行算子的速度就越慢。
因此,在此步骤中,可首先确定出每个算子的搜索空间。其中,一个算子的搜索空间中会包含该算子的所有可行解。确定出每个算子的所有可行解,以在后续步骤中找到与硬件适配程度较高的可行解。
更优的,在确定各算子的搜索空间之前,还可优先对相同算子进行合并,以进一步提高算子优化的效率。通常情况下,在计算图的各节点中,很可能会包含重复的算子。例如,为实现一个节点对应的网络层的功能可能会重复适用同一个算子多次;又例如,在实现不同节点对应的网络层的功能时可能会用到相同的算子。上述情况在实际应用中都是较为常见的情况。而另一方面,同一种算子在同一硬件上的适配程度,也就是运行效率是不变的,与算子所在的节点无关。基于此,对于一个在计算图中重复出现多次的算子,仅需对该算子优化一次即可。因此,可在确定各算子的搜索空间之前,先对计算图中的相同算子进行合并,使每种算子只保留不超过一个,随后再确定各算子的搜索空间。
S104:在该算子的搜索空间中选择指定数量个可行解作为候选解,确定各候选解的评估值,并将所述评估值最高的候选解作为待定解。
针对每个算子,可在该算子的搜索空间中选择出指定数量的可行解,作为候选解进行使用。随后,可确定出各候选解的评估值,并将评估值最高的候选解作为待定解。其中,指定数量可根据具体需求进行设置。
其中,算子的一个候选解评估值用于表征在该候选解下目标硬件运行该算子的速度。一个候选解的评估值越高,目标硬件在该候选解下运行对应算子的速度就越快。需要注意的是,评估值是本方法中预测出来,用于辅助后续步骤执行的值,而并非实际的真实结果。
在本说明书提供的算子优化方法中,从步骤S104到步骤S112为循环执行的步骤,在未达成一定的条件之前,需要不断地循环执行步骤S104~S112以寻找出算子的最优解。步骤S104为循环的开始,在每个轮次的循环开始时,都需要重新选择指定数量个可行解作为候选解。更进一步地,为了尽量扩大被覆盖的搜索空间的范围,每次选择出的指定数量个可行解都应是在之前的循环中未被选择过的。
更优的,在确定候选解的过程中,可基于贝叶斯优化的思想,通过确定邻域解的方式,以使确定出的各候选解相对靠近,从而尽可能保证每一轮次的循环中确定出的候选解均不相同。具体的,可在该算子的可行解中选择指定解,作为候选解;在该算子的可行解中确定所述指定解的邻域解,并将所述邻域解重新确定为指定解,直到确定出的候选解的数量达到指定数量。
其中,指定解的邻域解为与指定解相邻的可行解。举例来说,假设一个矩阵乘法算子,具有两种不同维度的变换,第一维度的变换存在4种可能,第二维度的变换存在55种不同的可能,那么该算子就存在4×55=220种不同的可行解。在此,采用()来表示一个可行解,其中,/>表示第一维度的变化中的一种可能,/>表示第二维度的变换中的一种可能,可以想到,在此例中,1≤/>≤4,1≤/>≤55,且/>、/>均为整数。对于同一算子的任意两个可行解,如果该两个可行解之间只有一种维度下的变换不同,那么该两个可行解互为邻域解。例如,假设上例中指定解为(4,20),那么它的邻域解可以是(3,20),可以是(1,20),也可以是(4,25),或者(4,10)等等。只要两个可行解之间只存在一种维度下的变换不同,那么这两个可行解就互为邻域解。
在上述方法中,针对每个算子,可首先在该算子的可行解中选择一个指定解,并将指定解确定为候选解之一;随后确定出指定解的一个邻域解,并将确定出的邻域解替代原本的指定解,确定为新的指定解,并将指定解继续确定为候选解之一……重复执行上述过程,直到确定出的候选解的数量达到指定数量。可以看出,上述过程需要重复执行多次,直到确定出的候选解的数量达到指定数量,在这一过程中,确定出的指定解以及每个邻域解最终都将会成为候选解。通过上述方式确定出的候选解在变换方式上相对靠近,更容易确定出局部最优的待定解;结合重复多轮次确定候选解以及待定解的过程,将各局部最优结合,能够较为准确地得到全局最优的可行解。
更优的,在确定各候选解的评估值时,可存在多种不同的方式。本说明书在此提供一种实施例以供参考。具体的,可针对每个候选解,将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果;根据所述评估结果,确定该候选解的评估值。
上述方式通过一个预先训练的评估模型来对各候选解进行评估。其中,评估模型的具体结构与参数可根据需求进行设置,训练评估模型的方式也可随着评估模型本身结构的改变而改变,本说明书对此不做具体限制。同样,本说明书在此提供一个具体实施例一共参考。具体的,评估模型中可包括若干预测模型;在确定一个候选解的评估值时,可将该候选解输入预先训练的评估模型中的各预测模型中,得到每个预测模型输出的预测运行时间;根据各预测运行时间确定该候选解的评估结果。
在上述具体实施例中,评估模型采用随机森林模型的思想,由多个不同的预测模型组成。其中,各预测模型可以是结构、参数均不相同的模型,也可以是结构相同、参数不同的模型,本说明书对此不做具体限制,仅需保证对于相同的输入,各模型均可给出不完全相同的输出即可。
各预测模型的功能相同,均为根据给定的一个算子的候选解,输出该算子在该候选解下的预测运行时间。但由于各预测模型均不相同,因此各预测模型给出的结果之间一定会存在差异。此时,根据各预测模型给出的各预测运行时间,确定该候选解的评估结果。
在随机森林思想下,采用多个预测模型组成评估模型时,评估模型的评估结果也可与预测模型得到的预测运行时间相关。具体的,评估结果可包括平均运行时间和标准差;在根据预测模型输出的预测运行时间确定候选解的评估结果时,可根据各预测运行时间确定该候选解的平均运行时间和标准差。
其中,平均运行时间可以是各预测运行时间的平均值,标准差为各预测运行时间的标准差,采用这两项数值能够较为客观、准确地反映出一个候选解下的算子在硬件上的运行速度。
更进一步地,由于各候选解的评估结果本身并不能直接进行严格地对比,因此,需要将评估结果转化为可能进行比较的评估值后进行对比。具体的,可根据所述评估结果与当前最优时间,确定该候选解的评估值。
其中,当前最优时间为在当前时刻,已知的部分可行解在目标硬件上的运行时间中,最短的运行时间。由于本方法中步骤S104~S112为循环执行,需要重复执行多次,因此在执行此步骤时可能会存在部分已知的可行解在目标硬件上的运行时间。而在上述已知的运行时间中,取最小的运行时间作为当前最优时间。
额外的,在根据评估结果与当前最优时间确定候选解的评估值时,可存在多种不同的方式。本说明书在此提供一种具体实施例以供参考,具体的,可按照下述公式确定候选解的评估值:
其中,EI表示评估值,x表示候选解,表示评估结果中的平均运行时间,表示评估结果中的标准差,/>为当前最优时间;z=/>和/>分别表示标准正态分布在处的概率分布函数和密度函数。通过上述公式可得到一个候选解的评估值。
当通过评估模型确定出一个算子的所有选择出的候选解的评估值后,便能够选择出评估值最高的候选解,作为该算子的待定解,以在后续步骤中使用。
S106:确定目标硬件运行所述待定解的运行时间,并增加迭代次数。
在此步骤中,可针对计算图中的每个算子,确定出该算子的待定解在目标硬件中的运行时间,同时增加迭代次数。具体的,可将一个算子在待定解下对应的应用程序,也就是采用待定解实现算子的代码输入目标硬件中,将目标硬件执行代码所需要的时间确定为该算子的待定解在目标硬件中的运行时间。
在本说明书提供的算子优化方法中,迭代次数为循环执行步骤S104~步骤S112的次数。通常情况下,在执行本方法时,迭代次数以0为起始,每执行一次步骤S104~步骤S112的循环,迭代次数在步骤S106中增加1。
S108:当所述运行时间小于当前最优时间或不存在当前最优时间时,将所述运行时间确定为当前最优时间,并将所述待定解确定为当前最优解。
在步骤S106中可确定出该算子的待定解在目标硬件中的运行时间,而算子优化最终的目标是为计算图中的算子希望找到运行时间尽可能短的可行解。因此,针对该算子的待定解在目标硬件中的运行时间的不同,可采用不同的方式处理。
在该算子的待定解在目标硬件中的运行时间小于当前最优时间,或不存在当前最优时间时,可将该算子的待定解在目标硬件中的运行时间确定为当前最优时间,同时将该算子的待定解确定为该算子的当前最优解。在运行时间小于当前最优时间时,说明该算子的待定解能够更好地适配目标硬件,优于已有的当前最优解,因此,可采用该算子的待定解的运行时间替换当前最优时间,作为新的当前最优时间,并采用该算子的待定解替换当前最优解,作为新的当前最优解。而对于不存在当前最优时间的情况,通常只会发生在第一轮次的循环中,还未在目标硬件中运行任何可行解,此时,可直接将该算子的待定解的运行时间作为当前最优时间,并将该算子的待定解作为当前最优解。
另一种情况,在该算子的待定解的运行时间不小于当前最优时间时,说明该算子的待定解是并不优于当前最优解的,因此可直接舍弃该算子的待定解,不做任何处理,直接执行后续步骤。
S110:当所述迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的可行解作为候选解。
为保证本说明书提供的算子优化方法的执行效率,在执行步骤S104~S112的循环迭代时,迭代次数是存在上限的,即迭代次数不会超过指定次数。其中,指定次数可根据具体需求进行设置。
在迭代次数仍未达到上限,也就是迭代次数小于指定次数时,回到步骤S104,重新在该算子的搜索空间中选择指定数量个未被选择过的可行解作为候选解,重新执行步骤S104~步骤S112。
S112:当所述迭代次数不小于所述指定次数时,将所述当前最优解确定为该算子的最优解。
针对每个算子,在迭代次数达到上限,也就是迭代次数不小于指定次数时,可将经过多次循环迭代后最终确定出的当前最优解确定为该算子的最优解。至此,本方法完成了对计算图中的算子的优化。在应用时,将此步骤中确定出的算子的最优解直接应用在目标神经网络模型中,即可在目标硬件中实现目标神经网络模型时达到最优的适配,以较高的效率实现目标神经网络模型中的运算。
在采用本说明书提供的算子优化方法对目标神经网络模型的计算图中的算子进行优化时,可在算子的搜索空间中通过循环迭代的方式,每次迭代均不重复地选择指定数量个候选解,寻找局部最优解;最终在多个局部最优解中寻找全局最优解,作为算子地最优解。相比传统方法,本说明书提供的算子优化方法基于贝叶斯优化的思想,通过预先评估的方式寻找潜在的最优解,能够极大地减少在目标硬件中运行算子的各不同可行解的次数,显著降低算子优化的时间成本与开销。
额外的,本说明书中采用的评估模型可以预先训练。具体的,可获取样本算子;确定所述样本算子的样本可行解,以及所述样本可行解在目标硬件中的真实运行时间;针对每个预测模型,将所述样本可行解输入该预测模型,得到该预测模型输出的待优化预测运行时间,其中,输入每个预测模型的样本可行解所属的样本算子不同;以所述样本待优化预测运行时间与输入该预测模型的样本可行解在目标硬件中的真实运行时间之间的差异最小为优化目标,对该预测模型进行训练。
在评估模型以随机森林模型为基础来使用的情况下,对评估模型的训练实际上可以转化为对评估模型中包含的各预测模型进行训练。评估模型中包含的多个预测模型不能完全相同,需要拥有不同的参数,以使各预测模型在面对同样的输入时能给出具有差别的输出。因此,在训练时各预测模型时,虽然可采用同样的方式进行训练,但需要采用不同的样本算子来进行训练。由此,经过训练得到的各预测模型能够针对相同的输入给出不同的输出。当然,在理想情况下,即使是不同算子样本训练出的预测模型也可能会存在相同的参数。但实际应用中不可能出现理想情况,因此,各预测模型对于相同输入得到的输出大概率可以相近,但很少会相同。
更优的,为了能够更进一步地提高算子优化的效果,可将步骤S104中确定出的待定解作为样本可行解之一,结合步骤S106中确定出的待定解在目标硬件中的运行时间,对评估模型进行更进一步地训练。也就是,在实际应用的过程中,不断穿插对评估模型的优化与调整,以尽可能达到最好的算子优化效果。
以上是本说明书提供的算子优化方法,基于同样的思路,本说明书还提供了相应的算子优化装置,如图2所示。
图2为本说明书提供的一种算子优化装置示意图,具体包括:
获取模块200,用于获取目标神经网络模型,并确定所述目标神经网络模型的计算图;
确定模块202,用于针对所述计算图中的每个算子,确定该算子的搜索空间,所述搜索空间中包含该算子的所有可行解;
选择模块204,用于在该算子的搜索空间中选择指定数量个可行解作为候选解,确定各候选解的评估值,并将所述评估值最高的候选解作为待定解;
增加模块206,用于确定目标硬件运行所述待定解的运行时间,并增加迭代次数;
更新模块208,用于当所述运行时间小于当前最优时间或不存在当前最优时间时,将所述运行时间确定为当前最优时间,并将所述待定解确定为当前最优解;
迭代模块210,用于当所述迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;
优化模块212,用于当所述迭代次数不小于所述指定次数时,将所述当前最优解确定为该算子的最优解。
可选地,所述选择模块204,具体用于在该算子的可行解中选择指定解,作为候选解;在该算子的可行解中确定所述指定解的邻域解,并将所述邻域解重新确定为指定解,直到确定出的候选解的数量达到指定数量。
可选地,所述选择模块204,具体用于针对每个候选解,将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果;根据所述评估结果,确定该候选解的评估值。
可选地,所述评估模型包括若干预测模型;
所述选择模块204,具体用于将该候选解输入预先训练的评估模型中的各预测模型中,得到每个预测模型输出的预测运行时间;根据各预测运行时间确定该候选解的评估结果。
可选地,所述评估结果包括平均运行时间和标准差;
所述选择模块204,具体用于根据各预测运行时间确定该候选解的平均运行时间和标准差。
可选地,所述选择模块204,具体用于根据所述评估结果与当前最优时间,确定该候选解的评估值。
可选地,所述装置还包括训练模块214,具体用于获取样本算子;确定所述样本算子的样本可行解,以及所述样本可行解在目标硬件中的真实运行时间;针对每个预测模型,将所述样本可行解输入该预测模型,得到该预测模型输出的待优化预测运行时间,其中,输入每个预测模型的样本可行解所属的样本算子不同;以所述样本待优化预测运行时间与输入该预测模型的样本可行解在目标硬件中的真实运行时间之间的差异最小为优化目标,对该预测模型进行训练。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的算子优化方法。
本说明书还提供了图3所示的电子设备的示意结构图。如图3所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的算子优化方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogic Device, PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescription Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBoolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(JavaHardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby HardwareDescription Language)等,目前最普遍使用的是VHDL(Very-High-Speed IntegratedCircuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、***或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (7)

1.一种算子优化方法,其特征在于,包括:
获取目标神经网络模型,并确定所述目标神经网络模型的计算图;
针对所述计算图中的每个算子,确定该算子的搜索空间,所述搜索空间中包含该算子的所有可行解;
在该算子的搜索空间中选择指定数量个可行解作为候选解,确定各候选解的评估值,并将所述评估值最高的候选解作为待定解;
确定目标硬件运行所述待定解的运行时间,并增加迭代次数;
当所述运行时间小于当前最优时间或不存在当前最优时间时,将所述运行时间确定为当前最优时间,并将所述待定解确定为当前最优解;
当所述迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;
当所述迭代次数不小于所述指定次数时,将所述当前最优解确定为该算子的最优解;
其中,确定各候选解的评估值,具体包括:
针对每个候选解,将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果;
根据所述评估结果,确定该候选解的评估值;
所述评估模型包括若干预测模型;
将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果,具体包括:
将该候选解输入预先训练的评估模型中的各预测模型中,得到每个预测模型输出的预测运行时间;
根据各预测运行时间确定该候选解的评估结果;
所述评估结果包括平均运行时间和标准差;
根据各预测运行时间确定该候选解的评估结果,具体包括:
根据各预测运行时间确定该候选解的平均运行时间和标准差。
2.如权利要求1所述的方法,其特征在于,在该算子的搜索空间中选择指定数量个候选解,具体包括:
在该算子的可行解中选择指定解,作为候选解;
在该算子的可行解中确定所述指定解的邻域解,并将所述邻域解重新确定为指定解,直到确定出的候选解的数量达到指定数量。
3.如权利要求1所述的方法,其特征在于,根据所述评估结果,确定该候选解的评估值,具体包括:
根据所述评估结果与当前最优时间,确定该候选解的评估值。
4.如权利要求1所述的方法,其特征在于,预先训练评估模型,具体包括:
获取样本算子;
确定所述样本算子的样本可行解,以及所述样本可行解在目标硬件中的真实运行时间;
针对每个预测模型,将所述样本可行解输入该预测模型,得到该预测模型输出的待优化预测运行时间,其中,输入每个预测模型的样本可行解所属的样本算子不同;
以所述样本待优化预测运行时间与输入该预测模型的样本可行解在目标硬件中的真实运行时间之间的差异最小为优化目标,对该预测模型进行训练。
5.一种算子优化装置,其特征在于,包括:
获取模块,用于获取目标神经网络模型,并确定所述目标神经网络模型的计算图;
确定模块,用于针对所述计算图中的每个算子,确定该算子的搜索空间,所述搜索空间中包含该算子的所有可行解;
选择模块,用于在该算子的搜索空间中选择指定数量个可行解作为候选解,确定各候选解的评估值,并将所述评估值最高的候选解作为待定解;
增加模块,用于确定目标硬件运行所述待定解的运行时间,并增加迭代次数;
更新模块,用于当所述运行时间小于当前最优时间或不存在当前最优时间时,将所述运行时间确定为当前最优时间,并将所述待定解确定为当前最优解;
迭代模块,用于当所述迭代次数小于指定次数时,重新在该算子的搜索空间中选择指定数量个未被选择过的候选解;
优化模块,用于当所述迭代次数不小于所述指定次数时,将所述当前最优解确定为该算子的最优解;
所述选择模块,具体用于针对每个候选解,将该候选解输入预先训练的评估模型,得到所述评估模型输出的该候选解的评估结果;根据所述评估结果,确定该候选解的评估值;
所述评估模型包括若干预测模型;
所述选择模块,具体用于将该候选解输入预先训练的评估模型中的各预测模型中,得到每个预测模型输出的预测运行时间;根据各预测运行时间确定该候选解的评估结果;
所述评估结果包括平均运行时间和标准差;
所述选择模块,具体用于根据各预测运行时间确定该候选解的平均运行时间和标准差。
6.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~4任一项所述的方法。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~4任一项所述的方法。
CN202310941263.1A 2023-07-28 2023-07-28 一种算子优化方法、装置、存储介质及电子设备 Active CN116663618B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310941263.1A CN116663618B (zh) 2023-07-28 2023-07-28 一种算子优化方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310941263.1A CN116663618B (zh) 2023-07-28 2023-07-28 一种算子优化方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN116663618A CN116663618A (zh) 2023-08-29
CN116663618B true CN116663618B (zh) 2023-12-05

Family

ID=87717473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310941263.1A Active CN116663618B (zh) 2023-07-28 2023-07-28 一种算子优化方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN116663618B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116860259B (zh) * 2023-09-05 2023-12-19 之江实验室 一种模型训练和编译器自动调优的方法、装置及设备
CN117075918B (zh) * 2023-10-13 2024-01-09 之江实验室 一种模型部署方法、装置、存储介质及电子设备
CN117171577B (zh) * 2023-11-02 2024-03-22 之江实验室 一种高性能算子选择的动态决策方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108986470A (zh) * 2018-08-20 2018-12-11 华南理工大学 粒子群算法优化lstm神经网络的行程时间预测方法
CN110598842A (zh) * 2019-07-17 2019-12-20 深圳大学 一种深度神经网络超参数优化方法、电子设备及存储介质
WO2021175058A1 (zh) * 2020-03-05 2021-09-10 华为技术有限公司 一种神经网络架构搜索方法、装置、设备及介质
WO2023287239A1 (ko) * 2021-07-16 2023-01-19 서울대학교산학협력단 함수 최적화 방법 및 장치
CN116301904A (zh) * 2023-05-18 2023-06-23 之江实验室 一种用于深度学习编译器的算子优化加速方法及装置
CN116306856A (zh) * 2023-05-17 2023-06-23 之江实验室 一种基于搜索的深度学习模型部署方法及装置
CN116484906A (zh) * 2023-04-23 2023-07-25 北京航空航天大学 图神经网络架构搜索方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7003753B2 (ja) * 2018-03-14 2022-01-21 富士通株式会社 探索点決定プログラム、探索点決定方法および探索点決定装置
US11120014B2 (en) * 2018-11-23 2021-09-14 International Business Machines Corporation Enhanced search construction and deployment
US20220035878A1 (en) * 2021-10-19 2022-02-03 Intel Corporation Framework for optimization of machine learning architectures

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108986470A (zh) * 2018-08-20 2018-12-11 华南理工大学 粒子群算法优化lstm神经网络的行程时间预测方法
CN110598842A (zh) * 2019-07-17 2019-12-20 深圳大学 一种深度神经网络超参数优化方法、电子设备及存储介质
WO2021175058A1 (zh) * 2020-03-05 2021-09-10 华为技术有限公司 一种神经网络架构搜索方法、装置、设备及介质
WO2023287239A1 (ko) * 2021-07-16 2023-01-19 서울대학교산학협력단 함수 최적화 방법 및 장치
CN116484906A (zh) * 2023-04-23 2023-07-25 北京航空航天大学 图神经网络架构搜索方法和装置
CN116306856A (zh) * 2023-05-17 2023-06-23 之江实验室 一种基于搜索的深度学习模型部署方法及装置
CN116301904A (zh) * 2023-05-18 2023-06-23 之江实验室 一种用于深度学习编译器的算子优化加速方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Learning Search Space Partition for Black-box Optimization using Monte Carlo Tree Search;Linnan Wang et al.;《arXiv[cs.LG]》;第1-15页 *
贝叶斯优化方法和应用综述;崔佳旭 等;《软件学报》;第29卷(第10期);第3068-3090页 *

Also Published As

Publication number Publication date
CN116663618A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN116663618B (zh) 一种算子优化方法、装置、存储介质及电子设备
CN116860259B (zh) 一种模型训练和编译器自动调优的方法、装置及设备
CN116304720B (zh) 一种代价模型训练的方法、装置、存储介质及电子设备
CN116306856B (zh) 一种基于搜索的深度学习模型部署方法及装置
CN115981870B (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN116502679B (zh) 一种模型构建方法、装置、存储介质及电子设备
CN116185532B (zh) 一种任务执行***、方法、存储介质及电子设备
CN116049761A (zh) 数据处理方法、装置及设备
CN117409466B (zh) 一种基于多标签控制的三维动态表情生成方法及装置
CN117075918B (zh) 一种模型部署方法、装置、存储介质及电子设备
CN115543945B (zh) 一种模型压缩的方法、装置、存储介质及电子设备
CN116151355B (zh) 一种模型训练和业务执行的方法、装置、介质及设备
CN116150563A (zh) 一种业务执行方法、装置、存储介质及电子设备
CN113205377A (zh) 一种信息推荐的方法及装置
CN116991388B (zh) 一种深度学习编译器的图优化序列生成方法及装置
CN116415103B (zh) 一种数据处理的方法、装置、存储介质以及电子设备
CN116434787B (zh) 一种语音情感识别的方法、装置、存储介质及电子设备
CN116186272B (zh) 一种联合训练方法、装置、存储介质及电子设备
CN115862675B (zh) 一种情感识别方法、装置、设备及存储介质
CN118193757B (zh) 一种任务执行方法、装置、存储介质及电子设备
CN117992600B (zh) 一种业务执行方法、装置、存储介质以及电子设备
CN117171577B (zh) 一种高性能算子选择的动态决策方法及装置
CN117009729B (zh) 基于softmax的数据处理方法及装置
CN117828360A (zh) 一种模型训练、代码生成方法、装置、存储介质及设备
CN117520850A (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
GR01 Patent grant
GR01 Patent grant