CN112990433B - 模型耗时预测方法、装置、电子设备以及存储介质 - Google Patents
模型耗时预测方法、装置、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN112990433B CN112990433B CN202110251614.7A CN202110251614A CN112990433B CN 112990433 B CN112990433 B CN 112990433B CN 202110251614 A CN202110251614 A CN 202110251614A CN 112990433 B CN112990433 B CN 112990433B
- Authority
- CN
- China
- Prior art keywords
- operator
- configuration information
- time
- consuming
- adjacent
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 238000007667 floating Methods 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 32
- 238000013528 artificial neural network Methods 0.000 claims description 14
- 238000012360 testing method Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 240000001436 Antirrhinum majus Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种模型耗时预测方法、装置、电子设备以及存储介质,涉及电子设备技术领域。获取待测模型,并创建待测模型对应的拓扑结构,该拓扑结构包括多个节点,其中,多个节点中的每个节点对应待测模型中的一个待测算子;获取每个节点对应的待测算子的配置信息;基于每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果;基于多个节点和每个节点的预测耗时结果,获得待测模型的预测耗时结果。本申请通过获取待测模型的每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,基于多个节点以及每个节点的预测耗时结果,预测该待测模型的耗时结果,从而提升模型耗时结果预测的精确度。
Description
技术领域
本申请涉及电子设备技术领域,更具体地,涉及一种模型耗时预测方法、装置、电子设备以及存储介质。
背景技术
深度学习技术在很多方向上都取得了巨大的成功,最近几年神经网络架构搜索(Neural Architecture Search,NAS)技术成为研究热点,NAS是用算法代替繁琐的人工操作,在海量的搜索空间中自动搜索出最佳的神经网络架构。在面向模型压缩的神经网络架构搜索过程中,模型在目标设备上的推理耗时是搜索的主要关注点,它决定了模型能否在目标设备上高效的运行。因此,如何得到精确的耗时预测结果成为人们关注的问题。
发明内容
鉴于上述问题,本申请提出了一种模型耗时预测方法、装置、电子设备以及存储介质,以解决上述问题。
第一方面,本申请实施例提供了一种模型耗时预测方法,所述方法包括:获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子;获取所述每个节点对应的待测算子的配置信息;基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果;基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
第二方面,本申请实施例提供了一种模型耗时预测装置,所述装置包括:模型获取模块,用于获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子;配置信息获取模块,用于获取所述每个节点对应的待测算子的配置信息;节点耗时预测模块,用于基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果;模型耗时预测模块,用于基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时所述处理器执行上述方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述方法。
本申请实施例提供的模型耗时预测方法、装置、电子设备以及存储介质,获取待测模型,并创建待测模型对应的拓扑结构,该拓扑结构包括多个节点,其中,多个节点中的每个节点对应待测模型中的一个待测算子;获取每个节点对应的待测算子的配置信息;基于每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果;基于多个节点和每个节点的预测耗时结果,获得待测模型的预测耗时结果。从而通过获取待测模型的每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,基于多个节点以及每个节点的预测耗时结果,预测该待测模型的耗时结果,从而提升模型耗时结果预测的精确度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出了本申请一个实施例提供的模型耗时预测方法的流程示意图;
图2示出了本申请又一个实施例提供的模型耗时预测方法的流程示意图;
图3示出了本申请再一个实施例提供的模型耗时预测方法的流程示意图;
图4示出了本申请的图3所示的模型耗时预测方法的步骤S350的流程示意图;
图5示出了本申请的图4所示的模型耗时预测方法的步骤S352以及步骤S353的一个流程示意图;
图6示出了本申请的图4所示的模型耗时预测方法的步骤S352以及步骤S353的又一个流程示意图;
图7示出了本申请的图4所示的模型耗时预测方法的步骤S352以及步骤S353的再一个流程示意图;
图8示出了本申请另一个实施例提供的模型耗时预测方法的流程示意图;
图9示出了本申请实施例提供的模型耗时预测装置的模块框图;
图10示出了本申请实施例用于执行根据本申请实施例的模型耗时预测方法的电子设备的框图;
图11示出了本申请实施例的用于保存或者携带实现根据本申请实施例的模型耗时预测方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
深度学习技术在很多方向上都取得了巨大的成功,最近几年神经网络架构搜索(Neural Architecture Search,NAS)技术成为研究热点,NAS是用算法代替繁琐的人工操作,在海量的搜索空间中自动搜索出最佳的神经网络架构。在面向模型压缩的神经网络架构搜索过程中,模型在目标设备上的推理耗时是搜索的主要关注点,它决定了模型能否在目标设备上高效的运行。
目前一种方式是采用模型参数量/浮点运算量代理来预测模型的推理耗时,模型的推理耗时很大程度上与模型的参数量、浮点运算数强相关,因此,在网络结构搜索过程中,可以用模型的参数量和浮点运算数来近似表征模型的推理耗时。另一种方式是训练一个回归器,根据模型拓扑结构预测模型在设备上的推理耗时。但是,发明人经过研究发现,基于参数量和浮点运算数的模型推理耗时评估方法不够精确,需要大量的重复验证才能找到满足要求的网络结构;基于回归器的方法受训练集的影响,回归器预测精度通常较低,并且制作训练数据过程复杂低效,不利于方法移植复用推广。
针对上述问题,发明人经过长期的研究发现,并提出了本申请实施例提供的模型耗时预测方法、装置、电子设备以及存储介质,通过获取待测模型的每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,基于多个节点以及每个节点的预测耗时结果,预测该待测模型的耗时结果,从而提升模型耗时结果预测的精确度。其中,具体的模型耗时预测方法在后续的实施例中进行详细的说明。
请参阅图1,图1示出了本申请一个实施例提供的模型耗时预测方法的流程示意图。所述模型耗时预测方法用于通过获取待测模型的每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,基于多个节点以及每个节点的预测耗时结果,预测该待测模型的耗时结果,从而提升模型耗时结果预测的精确度。在具体的实施例中,所述模型耗时预测方法应用于如图9所示的模型耗时预测装置200以及配置有模型耗时预测装置200的电子设备100(图10)。下面将以电子设备为例,说明本实施例的具体流程,当然,可以理解的,本实施例所应用的电子设备可以包括智能手机、平板电脑、穿戴式电子设备等,在此不做限定。下面将针对图1所示的流程进行详细的阐述,所述模型耗时预测方法具体可以包括以下步骤:
步骤S110:获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子。
NAS是一种自动设计神经网络的技术,可以通过算法根据样本集自动设计出高性能的网络结构,其原理是给定一个称为搜索空间的候选神经网络结构集合,用某种策略从中搜索出最优网络结构。在本实施例中,可以获取NAS搜索到的模型作为待测模型,并可以创建该待测模型对应的拓扑结构,该拓扑结构包括多个节点,其中,多个节点中的每个节点对应该待测模型中的一个待测算子。
在一些实施方式中,NAS可以基于搜索策略搜索模型。具体地,NAS可以随机搜索,即从搜索空间中随机选取模型。NAS还可以基于梯度的搜索,将网络结构搜索转化为连续空间的优化问题,采用梯度下降法求解,从而搜索到待测模型。进一步地,搜索方法还可以包括强化学习、遗传算法、贝叶斯优化等,在此不再赘述。
在一些实施方式中,可以获取待测模型的结构,具体地,可以获取待测模型的网络的层数,以及这些层的连接关系、层向操作等,将节点代表待测模型的层,边代表数据的流动,从而创建得到该待测模型对应的拓扑结构。其中,拓扑结构包括多个节点,每个节点对应待测模型中的一个待测算子。
步骤S120:获取所述每个节点对应的待测算子的配置信息。
在本实施例中,得到待测模型的拓扑结构后,可以获取多个节点中的每个节点对应的待测算子的配置信息。具体地,在待测模型的拓扑结构中,拓扑结构中的节点代表待测模型的层,可以获取待测模型每层的配置信息,作为每个节点对应的待测算子的配置信息。其中,配置信息可以包括算子类型、输入尺寸、输入通道数、卷积核尺寸、卷积核通道数、卷积步长、浮点运算数中的至少一种。
步骤S130:基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果。
在本实施例中,可以基于每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果。具体地,可以基于待测算子的配置信息,得到该待测算子的预测耗时结果,将待测算子的预测耗时结果作为待测算子对应的节点的预测耗时结果。
在一些实施方式中,可以预先构建算子耗时表,算子耗时表包括多个预先构建的算子的配置信息以及多个预先构建的算子的配置信息对应的耗时结果,可以在算子耗时表中查找待测算子的配置信息,若查找到,则可以将在算子耗时表中查找到的待测算子的配置信息对应的耗时结果作为待测算子的预测耗时结果。进一步地,若未查找到,还可以基于算子耗时表中已有的数据进行插值处理得到待测算子的预测耗时结果。
在一些实施方式中,构建算子耗时表后,可以根据构建的算子耗时表训练相应的回归器,从而用模型来学习算子的耗时结果与算子的配置信息之间的映射关系,将待测算子的配置信息输入训练后的回归器,即可以得到待测算子的预测耗时结果。
在一些实施方式中,还可以将待测算子输入测试平台进行速度测试,得到该待测算子的预测耗时结果,其中,可以先将待测算子的格式转换为测试平台对应的格式,再将格式转换后的待测算子输入测试平台进行速度测试。
步骤S140:基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
在本实施例中,基于每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,即可以基于多个节点和每个节点的预测耗时结果,获得待测模型的预测耗时结果。作为一种实施方式,可以将多个节点中每个节点的预测耗时结果的相加,得到的预测耗时结果的总和作为待测模型的预测耗时结果。从而根据模型架构和算子配置直接估计模型在特定平台的推理耗时,大大减少了端侧神经网络结构搜索的工作量,使搜索符合目标平台算力和功耗要求的模型架构的时间从几天减少到几个小时,提升了开发效率。
在一些实施方式中,模型在端侧的推理耗时与模型拓扑结构、内存读写和硬件读写带宽有着较强的联系,可以构建基于网络拓扑结构的预测器,结合模型拓扑结构和单个算子的预测耗时结果共同预测模型的耗时结果,从而取得更精确的结果。
本申请一个实施例提供的模型耗时预测方法,获取待测模型,并创建待测模型对应的拓扑结构,该拓扑结构包括多个节点,其中,多个节点中的每个节点对应待测模型中的一个待测算子;获取每个节点对应的待测算子的配置信息;基于每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果;基于多个节点和每个节点的预测耗时结果,获得待测模型的预测耗时结果。从而通过获取待测模型的每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,基于多个节点以及每个节点的预测耗时结果,预测该待测模型的耗时结果,从而提升模型耗时结果预测的精确度。
请参阅图2,图2示出了本申请又一个实施例提供的模型耗时预测方法的流程示意图。下面将针对图2所示的流程进行详细的阐述,所述模型耗时预测方法具体可以包括以下步骤:
步骤S210:获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子。
步骤S220:获取所述每个节点对应的待测算子的配置信息。
其中,步骤S210-步骤S220的具体描述请参阅步骤S110-步骤S120,在此不再赘述。
步骤S230:基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果。
在本实施例中,获取待测算子的配置信息后,可以通过查表的方式确定待测算子的耗时结果。具体地,电子设备预先存储有算子耗时表,该算子耗时表中包括多个预先构建的算子的配置信息以及多个预先构建的算子的配置信息对应的耗时结果,通过在算子耗时表中查找待测算子的配置信息,即可确定待测算子的配置信息。
在一些实施方式中,算子耗时表中的存储方式可以是关键字以及关键字对应的结果,其中,关键字是由配置信息拼接而成的。当待测算子只有一个配置信息时,可以先确定待测算子的配置信息的类型与算子耗时表中存储的关键字是否匹配,在匹配的情况下查看待测算子的配置信息的数值是否与关键字的数值是否相同。例如,待测算子的配置信息为卷积核尺寸为3*3,可以构建得到待测算子对应的查询关键字为那么可以先在算子耗时表中查找关键字中是否存在卷积核尺寸,当查找到关键字存在卷积核尺寸时,再确定关键字中的卷积核尺寸是否为3*3。
在一些实施方式中,当待测算子的配置信息为多个时,可以根据待测算子的配置信息构建查询关键字,使用构建的关键字在算子耗时表中进行查询。其中,根据待测算子的配置信息构建查询关键字,可以是将多个配置信息进行拼接,例如,待测算子的配置信息为算子类型为二维卷积,输入尺寸为16*16,输入通道数为16,卷积核的尺寸为3*3,输出通道数为64,卷积步长为2,构建查询关键字为conv2d_16_16_3_64_2。在算子耗时表中进行查找时,可以先查找算子耗时表中是否存在待测算子对应的查询关键字。例如,若待测算子的配置信息为卷积核尺寸为3*3,卷积核通道数为64时,可以先构建待测算子的查询关键字为3_64,可以在算子耗时表中查询是否存在关键字为3_64。
步骤S240:当在所述算子耗时表中查找到所述待测算子的配置信息时,从所述算子耗时表中获取所述待测算子的配置信息对应的耗时结果,作为所述待测算子对应的节点的预测耗时结果。
在本实施例中,当在算子耗时表中查找到待测算子的配置信息,即在算子耗时表中查找到与待测算子的配置信息相同的配置信息时,可以从算子耗时表中获取待测算子的配置信息对应的耗时结果,作为待测算子对应的节点的预测耗时结果。
在一些实施方式中,在算子耗时表中进行查找时,可以先确定待测算子的配置信息的类型与关键字是否匹配,在匹配的情况下查看待测算子的配置信息的数值是否与关键字的数值是否相同。在确定待测算子的配置信息的类型与关键字匹配,且待测算子的配置信息的数值与关键字的数值相同时,可以从算子耗时表中获取该关键字对应的耗时结果,作为待测算子的配置信息对应的耗时结果,将待测算子的配置信息对应的耗时结果,作为待测算子对应的节点的预测耗时结果。例如,请参阅如表1所示的算子耗时表。
表1
算子 | 耗时,FLOPs |
conv2d_16_16_1_256_2 | [406,278528.0] |
conv2d_16_16_1_2_1 | [393,8704.0] |
conv2d_16_16_1_512_1 | [676,2228224.0] |
conv2d_16_16_3_256_1 | [455,7275520.0] |
conv2d_16_16_3_64_2 | [392,454720.0] |
表1的第一列是由预先构建的算子的配置信息拼接而成的关键字,第二列是关键字对应的结果,其中包括算子的耗时结果以及算子的浮点运算数(floating pointoperation,FLOPs)。若待测算子的配置信息为算子类型为普通卷积算子,输入尺寸为16*16,输入通道数为16,卷积核尺寸为1*1,卷积核通道数为256,卷积步长为2。可以将待测算子的配置信息分别与关键字中的每个配置信息进行匹配,可以从表1看出,第一行的算子的关键字的配置信息与待测算子的配置信息完全一致,表明在算子耗时表1中查找到待测算子的配置信息,则可以从表1中获取第一行的关键字对应的耗时结果为406,那么该待测算子的耗时结果即为406,进而可以得到该待测算子对应的节点的预测耗时结果为406。
步骤S250:基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
其中,步骤S250的具体描述请参阅步骤S140,在此不再赘述。
本申请又一个实施例提供的模型耗时预测方法,相较于图2所示的模型耗时预测方法,本实施例基于算子耗时表查找待测算子的配置信息,当在算子耗时表中查找到待测算子的配置信息时,从算子耗时表中获取待测算子的配置信息对应的耗时结果,进而得到待测模型的预测耗时结果。从而通过查表的方式获取算子的耗时结果,获得更精确的模型的预测耗时结果。
请参阅图3,图3示出了本申请再一个实施例提供的模型耗时预测方法的流程示意图。下面将针对图3所示的流程进行详细的阐述,所述模型耗时预测方法具体可以包括以下步骤:
步骤S310:获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子。
步骤S320:获取所述每个节点对应的待测算子的配置信息。
其中,步骤S310-步骤S320的具体描述请参阅步骤S110-步骤S120,在此不再赘述。
步骤S330:基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果。
步骤S340:当在所述算子耗时表中查找到所述待测算子的配置信息时,从所述算子耗时表中获取所述待测算子的配置信息对应的耗时结果,作为所述待测算子对应的节点的预测耗时结果。
其中,步骤S330-步骤S340的具体描述请参阅步骤S230-步骤S240,在此不再赘述。
步骤S350:当在所述算子耗时表中未查找到所述待测算子的配置信息时,基于所述待测算子的配置信息以及所述算子耗时表进行插值处理,得到所述待测算子对应的预测耗时结果,作为所述待测算子对应的节点的预测耗时结果。
在本实施例中,当在算子耗时表中未查找到待测算子的配置信息时,即在算子耗时表中未查找到与待测算子的配置信息相同的配置信息时,可以基于待测算子的配置信息以及算子耗时表进行插值处理,得到待测算子对应的预测耗时结果,作为待测算子对应的节点的预测耗时结果。
在一些实施方式中,在算子耗时表中未查找到待测算子的配置信息,可以是在算子耗时表中未查找到与待测算子的配置信息匹配的关键字,也可以是在算子耗时表中查找到与待测算子的配置信息匹配的关键字,但关键字对应的数值与待测算子的配置信息的数值不同。进一步地,当在算子耗时表中未查找到待测算子的配置信息时,可以根据算子耗时表中已有的数据来预测待测算子的预测耗时结果,即基于待测算子的配置信息以及算子耗时表进行插值处理。
在一些实施方式中,可以获取算子耗时表中与待测算子的配置信息相近的关键字,基于待测算子的配置信息以及关键字的配置信息对与待测算子的配置信息相近的关键字对应的耗时结果进行插值处理,得到待测算子的耗时结果。其中,进行插值处理时,可以采用线性插值、多项式插值、样条曲线插值、泰勒插值等插值方法,在此不作限定,具体以实际应用场景来选择合适插值方法进行插值操作。
请参阅图4,图4示出了本申请的图3所示的模型耗时预测方法的步骤S350的流程示意图。下面将针对图4所示的流程进行详细的阐述,所述方法具体可以包括以下步骤:
步骤S351:在所述算子耗时表中查找与所述待测算子的配置信息相邻的配置信息,并基于与所述待测算子的配置信息相邻的配置信息得到相邻算子。
在本实施例中,当在算子耗时表中未查找到待测算子的配置信息时,基于待测算子的配置信息以及算子耗时表进行插值,得到待测算子对应的预测耗时结果,可以是获取算子耗时表中与待测算子的配置信息相近的关键字,基于待测算子的配置信息以及关键字的配置信息对该关键字对应的耗时结果进行插值处理,从而得到待测算子的耗时结果。获取算子耗时表中与待测算子的配置信息相近的关键字,具体地可以是在算子耗时表中查找与待测算子的配置信息相邻的配置信息,并可以基于与待测算子的配置信息相邻的配置信息得到相邻算子。
在一些实施方式中,当待测算子的配置信息为一个时,可以在算子耗时表中先获取与待测算子的配置信息的类型一致的关键字,再从与待测算子的配置信息的类型一致的关键字中,选取与待测算子的配置信息的数值相邻的数值,得到与待测算子的配置信息相邻的配置信息。例如,待测算子A的配置信息为输入通道数为48,则可以在算子耗时表中先获取关键字为输入通道数的关键字,然后在算子耗时表中获取与输入通道数为48相邻的输入通道数,若算子耗时表中存在输入通道数为16、32、64,那么与输入通道数为48相邻的输入通道数为32和64,因此,输入通道数为32以及输入通道数为64即为与待测算子A的配置信息相邻的配置信息。当待测算子的配置信息为多个时,可以在算子耗时表中分别获取与每个配置信息相邻的配置信息,例如,待测算子B的配置信息为输入通道数为48、卷积核尺寸为3*3,卷积步长为2,若算子耗时表中存在输入通道数为16、32、64,存在卷积核尺寸为3*3,卷积步长为2,那么可以得到与待测算子B的配置信息相邻的配置信息为输入通道数为32、输入通道数为64、卷积核尺寸为3*3、卷积步长为2。
在一些实施方式中,在算子耗时表中查找到与所述待测算子的配置信息相邻的配置信息时,可以基于与待测算子的配置信息相邻的配置信息得到相邻算子。具体地,可以将相邻的配置信息进行拼接得到相邻算子,拼接方式可以参考算子耗时表的构建方式进行拼接。例如,待测算子B的配置信息为输入通道数为48、卷积核尺寸为3*3,卷积步长为2,得到与待测算子B的配置信息相邻的配置信息为输入通道数为32、输入通道数为64、卷积核尺寸为3*3、卷积步长为2,将相邻的配置信息进行拼接,可以得到相邻算子B1为32_3_2,相邻算子B2为64_3_2。
步骤S352:在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果。
在本实施例中,可以进一步在算子耗时表中获取相邻算子的配置信息以及相邻算子的耗时结果。具体地,可以在算子耗时表中查找该相邻算子对应的关键字,根据关键字获取相邻算子的配置信息,并获取该关键字对应的耗时结果,即为相邻算子的耗时结果。
步骤S353:基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值处理,得到所述待测算子的预测耗时结果。
在本实施例中,通过在算子耗时表中与待测算子的配置信息相邻的配置信息,从而可以得到与待测算子相邻的相邻算子,由于算子耗时表中存储有相邻算子的耗时结果,则可以根据相邻算子的耗时结果,预测待测算子的耗时结果。具体地,可以基于相邻算子的配置信息与待测算子的配置信息对相邻算子的耗时结果进行插值处理,得到待测算子的预测耗时结果。其中,可以根据相邻算子的配置信息与待测算子的配置信息计算得到相邻算子与待测算子之间的比例关系,基于比例关系以及相邻算子的配置信息可以求解得到待测算子的预测耗时结果。
在一些实施方式中,还可以根据相邻算子的数量,选择不同的插值方式来预测待测算子的预测耗时结果。作为一种实施方式,当只有一个相邻算子时,可以根据相邻算子与待测算子的FLOPs按比例进行插值。作为另一种实施方式,当有上下两个相邻算子时,可以根据待测算子在这两个算子之间的位置进行插值处理。作为又一种实施方式,当有超过两个相邻算子时,可以根据每个相邻算子的FLOPs进行加权平均得到待测算子的预测耗时结果。
请参阅图5,图5示出了本申请的图4所示的模型耗时预测方法的步骤S352以及步骤S353的一个流程示意图。下面将针对图5所示的流程进行详细的阐述,所述方法具体可以包括以下步骤:
步骤S3521A:当所述相邻算子的数量为一个时,在所述算子耗时表中获取所述相邻算子的浮点运算数以及所述相邻算子的耗时结果。
在本实施例中,若与待测算子的配置信息相邻的配置信息只有一个时,那么可以确定待测算子的相邻算子的数量为一个,可以根据待测算子与相邻算子的FLOPs按比例进行插值。具体地,可以先在算子耗时表中获取相邻算子的浮点运算数以及相邻算子的耗时结果。例如,待测算子A的配置信息为算子类型为一维卷积、输入尺寸512*512、输入通道数128、卷积核尺寸为3*3、卷积核通道数为64、卷积步长为2,预先构建的算子耗时表如表2所示,则可以在表2中获取到与待测算子的配置信息相邻的配置信息为输入通道数64,于是可以得到一个相邻算子A1为conv_512_64_3_64_2。根据表2进一步可以获取到相邻算子A1的耗时结果为600,浮点运算数为6。
表2
算子 | 耗时,FLOPs |
conv_512_64_3_64_2 | [600,6] |
conv_512_32_3_64_2 | [500,5] |
conv_256_64_3_64_2 | [400,4] |
conv_256_32_3_64_2 | [300,3] |
步骤S3531A:计算所述相邻算子的浮点运算数与所述待测算子的浮点运算数的比值。
在本实施例中,根据待测算子与相邻算子的FLOPs按比例进行插值,可以先获取相邻算子的浮点运算数以及待测算子的浮点运算数,然后计算相邻算子的浮点运算数与待测算子的浮点运算数的比值。例如,如上述举例,获取到与待测算子A相邻的相邻算子A1的浮点运算数为6,获取待测算子A的浮点运算数为7,计算相邻算子的浮点运算数与待测算子的浮点运算数的比值为6/7。
步骤S3532A:基于所述比值以及所述相邻算子的耗时结果,得到所述待测算子的预测耗时结果。
在本实施例中,可以基于相邻算子的浮点运算数与待测算子的浮点运算数的比值,以及相邻算子的耗时结果,得到待测算子的预测耗时结果。具体地,相邻算子的浮点运算数与待测算子的浮点运算数的比值,与相邻算子的耗时结果与待测算子的预测耗时结果的比值相同,因此,用相邻算子的耗时结果除以相邻算子的浮点运算数与待测算子的浮点运算数的比值,即可得到待测算子的预测耗时结果。例如,相邻算子A1的浮点运算数与待测算子A的浮点运算数的比值为6/7,相邻算子A1的耗时结果为600,则可以计算得到待测算子A的预测耗时结果为600/(6/7)=700。
请参阅图6,图6示出了本申请的图4所示的模型耗时预测方法的步骤S352以及步骤S353的又一个流程示意图。其中,配置信息包括多个子配置信息。下面将针对图6所示的流程进行详细的阐述,所述方法具体可以包括以下步骤:
步骤S3521B:当所述相邻算子包括第一相邻算子和第二相邻算子时,获取第一相邻算子的配置信息中与所述待测算子的第一配置信息相邻的配置信息作为第二配置信息,其中,所述待测算子的第一配置信息为所述待测算子的配置信息中的一子配置信息。
步骤S3522B:获取第二相邻算子的配置信息中与所述待测算子的第一配置信息相邻的配置信息作为第三配置信息。
在本实施例中,若与待测算子的配置信息相邻的配置信息只有一个时,那么可以确定待测算子的相邻算子的数量为两个,即相邻算子包括第一相邻算子和第二相邻算子,可以根据待测算子在第一相邻算子和第二相邻算子之间的位置进行插值。
具体地,可以先获取第一相邻算子的配置信息中与待测算子的第一配置信息相邻的配置信息作为第二配置信息,获取第二相邻算子的配置信息中与待测算子的第一配置信息相邻的配置信息作为第三配置信息,其中,待测算子的配置信息包括多个子配置信息,待测算子的第一配置为待测算子的配置信息中的一子配置信息。例如,待测算子B的配置信息为算子类型为一维卷积、输入尺寸512*512、输入通道数48、卷积核尺寸为3*3、卷积核通道数为64、卷积步长为2,预先构建的算子耗时表如表2所示,则可以在表2中获取到与待测算子的配置信息相邻的配置信息为输入通道数64以及输入通道数32,于是可以得到第一相邻算子B1为conv_512_64_3_64_2以及第二相邻算子B2 conv_512_32_3_64_2。其中,待测算子的第一配置信息即为输入通道数48,将第一相邻算子B1中与输入通道数48相邻的输入通道数64作为第二配置信息,将第二相邻算子B2中与输入通道数48相邻的输入通道数32作为第三配置信息。
步骤S3531B:计算所述第二配置信息的数值与所述第三配置信息的数值的差值。
在本实施例中,根据待测算子在第一相邻算子和第二相邻算子之间的位置进行插值,具体地,可以先计算第二配置信息的数值与第三配置信息的数值的差值,例如,第二配置信息为输入通道数64,第三配置信息为输入通道数32,可以计算得到第二配置信息的数值与第三配置信息的数值的差值为64-32=32。
步骤S3532B:基于所述差值,计算所述第一配置信息的数值在所述第二配置信息的数值与所述第三配置信息的数值之间的比例。
在本实施例中,可以基于第二配置信息的数值与第三配置信息的数值的差值,计算第一配置信息的数值在第二配置信息的数值与第三配置信息的数值之间的比例,该比例即可表示待测算子在第一相邻算子与第二相邻算子之间的位置。具体地,可以计算第一配置信息的数值与第二配置信息的数值的差值,基于第一配置信息的数值与第二配置信息的数值的差值,与第二配置信息的数值与第三配置信息的数值的差值之间的比值,得到第一配置信息的数值在第二配置信息的数值与第三配置信息的数值之间的比例,例如,第二配置信息的数值与第三配置信息的数值的差值为32,第一配置信息为输入通道数48,第一配置信息的数值与第二配置信息的数值的差值为64-48=16,第一配置信息的数值与第二配置信息的数值的差值,与第二配置信息的数值与第三配置信息的数值的差值之间的比值为16/32=1/2,因此,可以得到第一配置信息的数值在第二配置信息的数值与第三配置信息的数值之间的比例为1/2。
步骤S3533B:基于所述比例,所述第一相邻算子的耗时结果以及所述第二相邻算子的耗时结果,得到所述待测算子的预测耗时结果。
在本实施例中,在获取第一相邻算子和第二相邻算子后,可以在算子耗时表中查找第一相邻算子的耗时结果以及第二相邻算子的耗时结果,可以基于第一配置信息的数值在第二配置信息的数值与第三配置信息的数值之间的比例,以及第一相邻算子的耗时结果、第二相邻算子的耗时结果,得到待测算子的预测耗时结果。
具体地,第一配置信息的数值在第二配置信息的数值与第三配置信息的数值之间的比例,与待测算子的预测耗时结果在第一相邻算子的耗时结果与第二相邻算子的耗时结果之间的比例相同,因此,可以先计算第一相邻算子的耗时结果与第二相邻算子的耗时结果的差值,根据待测算子的预测耗时结果在第一相邻算子的耗时结果与第二相邻算子的耗时结果之间的比例,以及第一相邻算子的耗时结果与第二相邻算子的耗时结果的差值,即可得到待测算子的预测耗时结果与第一相邻算子的耗时结果的差值,进而可以得到待测算子的预测耗时。例如,待测算子B为conv_512_48_3_64_2,第一相邻算子B1为conv_512_64_3_64_2,第二相邻算子B2为conv_512_32_3_64_2,从上述表2中可以获取第一相邻算子B1的耗时结果为600,第二相邻算子B2的耗时结果为500,第一配置信息的数值在第二配置信息的数值与第三配置信息的数值之间的比例为1/2,第一相邻算子B1的耗时结果与第二相邻算子B2的耗时结果的差值为600-500=100,可以得到待测算子B的预测耗时结果与第一相邻算子B1的耗时结果的差值为100*1/2=50,因此,可以得到待测算子B的预测耗时结果为600-50=550。
请参阅图7,图7示出了本申请的图4所示的模型耗时预测方法的步骤S352以及步骤S353的再一个流程示意图。下面将针对图7所示的流程进行详细的阐述,所述方法具体可以包括以下步骤:
步骤S3521C:当所述相邻算子的数量为至少三个时,在所述算子耗时表中分别获取至少三个相邻算子中每个相邻算子的浮点运算数以及每个相邻算子的耗时结果。
在本实施例中,若与待测算子的配置信息相邻的配置信息有至少三个时,那么可以确定待测算子的相邻算子的数量为至少三个,可以根据至少三个相邻算子的FLOPs按比例进行插值。具体地,当相邻算子的数量为至少三个时,可以在算子耗时表中分别获取至少三个相邻算子中每个相邻算子的浮点运算数以及每个相邻算子的耗时结果。例如,待测算子C的配置信息为算子类型为一维卷积、输入尺寸480*480、输入通道数48、卷积核尺寸为3*3、卷积核通道数为64、卷积步长为2。从上述表2中可以获取到与待测算子C相邻的配置信息为输入尺寸512*512、输入尺寸256*256、输入通道数64、输入通道数32,于是可以得到四个相邻算子,即相邻算子C1为conv_512_64_3_64_2,相邻算子C2为conv_512_32_3_64_2、相邻算子C3为conv_256_64_3_64_2,相邻算子C4为conv_256_32_3_64_2。根据上述表2即可获取到相邻算子C1的浮点运算数为6、耗时结果为600,相邻算子C2的浮点运算数为5、耗时结果为500,相邻算子C3的浮点运算数为4、耗时结果为400,相邻算子C4的浮点运算数为3、耗时结果为300。
步骤S3531C:基于所述每个相邻算子的浮点运算数,计算所述每个相邻算子的权重。
在本实施例中,根据至少三个相邻算子的FLOPs按比例进行插值,可以是先基于每个相邻算子的浮点运算数,计算每个相邻算子的权重。例如,相邻算子C1的浮点运算数为6,相邻算子C2的浮点运算数为5,相邻算子C3的浮点运算数为4,相邻算子C4的浮点运算数为3。相邻算子C1的权重为6/(6+5+4+3)=1/3,相邻算子C2的权重为5/(6+5+4+3)=5/18,相邻算子C3的权重为4/(6+5+4+3)=2/9,相邻算子C4的权重为3/(6+5+4+3)=1/6。
步骤S3532C:基于所述每个相邻算子的权重以及所述每个相邻算子的耗时结果,获得所述待测算子的预测耗时结果。
在本实施例中,可以基于每个相邻算子的权重以及每个相邻算子的耗时结果,获得待测算子的预测耗时结果。具体地,可以将每个相邻算子的权重分别与其对应的耗时结果相乘,将所有相乘之后的结果相加,可以得到待测算子的预测耗时结果。例如,相邻算子C1的权重为1/3、耗时结果为600,相邻算子C2的权重为5/18、耗时结果为500,相邻算子C3的权重为2/9、耗时结果为400,相邻算子C4的权重为1/6、耗时结果为300,即可以得到待测算子C的预测耗时结果为600*1/3+500*5/18+400*2/9+300*1/6=477。
步骤S360:基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
其中,步骤S360的具体描述请参阅步骤S140,在此不再赘述。
本申请再一个实施例提供的模型耗时预测方法,相较于图2所示的模型耗时预测方法,本实施例基于算子耗时表查找待测算子的配置信息,当在算子耗时表中查找到待测算子的配置信息时,从算子耗时表中获取待测算子的配置信息对应的耗时结果,当在算子耗时表中未查找到待测算子的配置信息时,对待测算子的耗时结果进行插值预测,进而得到待测模型的预测耗时结果。从而利用模型结构和算子配置,通过查表和插值的方式直接预测模型的推理耗时,获得更精确的模型的预测耗时结果,同时,减少了端侧神经网络结构搜索的工作量,提升开发效率。
请参阅图8,图8示出了本申请另一个实施例提供的模型耗时预测方法的流程示意图。下面将针对图8所示的流程进行详细的阐述,所述模型耗时预测方法具体可以包括以下步骤:
步骤S410:获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子。
步骤S420:获取所述每个节点对应的待测算子的配置信息。
其中,步骤S410-步骤S420的具体描述请参阅步骤S110-步骤S120,在此不再赘述。
步骤S430:基于常用配置信息构建多个算子模型。
在本实施例中,在基于算子耗时表查找待测算子的配置信息之前,可以先构建算子耗时表。具体地,可以基于常用配置信息构建多个算子模型。其中,配置信息可以包括算子类型、输入尺寸、输入通道数、卷积核尺寸、卷积核通道数、卷积步长等至少一种。常用配置信息即可以包括常用的算子类型、常用输入尺寸、常用输入通道数、常用卷积核尺寸、常用卷积核通道数、常用卷积步长等至少一种。
在一些实施方式中,可以先获取常用配置信息,当常用配置信息为多个时,可以分别获取每个常用配置信息。例如,可以分别获取常用算子类型、常用卷积核尺寸、常用输入尺寸、常用输入通道数、常用卷积核通道数、常用卷积步长。将获取到的常用配置信息随机组合,从而构建得到多个算子模型。例如,获取到常用算子类型为一维卷积,获取到常用卷积核尺寸为3*3、5*5,获取到常用输入尺寸为16*16*16,获取到常用卷积核通道数为64,获取到常用卷积步长为1、2,则随机组合上述获取到的常用配置信息,可以构建得到算子模型A为conv_16_16_3_64_1、算子模型B为conv_16_16_3_64_2、算子模型C为conv_16_16_5_64_1、算子模型D为conv_16_16_5_64_2。进一步地,为了确保算子耗时表中数据的全面性,构建的算子模型的数量可以设置的多一些,例如,可以构建一万个算子模型。
在一些实施方式中,构建算子耗时表也可以在获取待测模型之前执行,即步骤S430-步骤S460也可以在步骤S410之前执行。
步骤S440:将所述多个算子模型的格式转换为目标平台运行格式。
在本实施例中,对于构建算子耗时表,在得到多个算子模型后,还需要获取多个算子模型的耗时结果,其中,需要先将多个算子模型的格式进行转换。具体地,可以将多个算子模型的格式转换为目标平台运行格式。目标平台可以是指用来对算子模型进行速度测试的平台,例如,可以是骁龙865的DSP平台。其中,目标平台运行格式可以有Tflite(Tflite文件由tensorflow提供的TOCO工具生成的轻量级模型,存储格式是flatbuffer)、骁龙神经处理引擎(Snapdragon Neural Processing Engine,SNPE)针对高通骁龙加速深层神经网络的运行时软件等格式。
在一些实施方式中,将多个算子模型的格式转换为目标平台运行格式,可以是通过模型转换器来进行转换。
步骤S450:对转换后的所述多个算子模型分别进行速度测试,得到所述多个算子模型的耗时结果。
在本实施例中,将多个算子模型的格式转换为目标平台运行格式后,可以将转换后的多个算子模型进行上机测试,即将转换格式后的多个算子模型分别输入至目标平台进行速度测试。
作为一种实施方式,目标平台可以通过完整运行一次算子模型,得到算子模型的一次运行时间,该运行时间即可作为该算子模型的耗时结果。作为另一种实施方式,目标平台可以多次运行算子模型,得到该算子模型的多次运行时间,通过求解多次运行时间的平均值,作为该算子模型的耗时结果。
步骤S460:基于所述多个算子模型的配置信息以及所述多个算子模型的耗时结果,构建算子耗时表。
在本实施例中,可以基于多个算子模型的配置信息以及多个算子模型的耗时结果,构建算子耗时表。具体地,可以将多个算子模型的配置信息与多个算子模型的耗时结果一一对应存储在算子耗时表中。
在一些实施方式中,算子耗时表的关键字可以是由配置信息拼接而成,关键字对应的值为一个列表,其中,关键字对应的值可以是算子的耗时结果,也可以包含算子的耗时结果以及浮点运算数,例如,如上述表1所示,算子耗时表的关键字为【算子类型、输入尺寸、输入通道、卷积核尺寸、卷积核通道、卷积步长】拼接而成,关键字对应的结果包含【耗时,浮点运算数】,表中最后一行表示该卷积算子为普通卷积,输入为一个16*16*16的张量,卷积核的尺寸为3*3,输出通道数为64,卷积步长为2,它的FLOPs为454720,在骁龙865的DSP平台上推理耗时为392微秒。其中,浮点运算数可以在对未知算子进行插值时使用,未知算子可以指在算子耗时表中未查找到的算子。
步骤S470:基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果。
步骤S480:当在所述算子耗时表中查找到所述待测算子的配置信息时,从所述算子耗时表中获取所述待测算子的配置信息对应的耗时结果,作为所述待测算子对应的节点的预测耗时结果。
其中,步骤S470-步骤S480的具体描述请参阅步骤S230-步骤S240,在此不再赘述。
步骤S490:基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
其中,步骤S490的具体描述请参阅步骤S140,在此不再赘述。
本申请另一个实施例提供的模型耗时预测方法,相较于图2所示的模型耗时预测方法,本实施例还提供了构建算子耗时表的方法,使得通过算子的配置信息进行查表,即可预测模型的耗时结果,提升开发效率。
请参阅图9,图9示出了本申请实施例提供的模型耗时预测装置的模块框图。下面将针对图9所示的框图进行阐述,所述模型耗时预测装置200包括:模型获取模块210、配置信息获取模块220、节点耗时预测模块230以及模型耗时预测模块240,其中:
模型获取模块210,用于获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子。
进一步地,所述模型获取模块210包括:模型获取子模块,其中:
模型获取子模块,用于基于神经网络架构搜索获取待测模型。
配置信息获取模块220,用于获取所述每个节点对应的待测算子的配置信息。
节点耗时预测模块230,用于基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果。
进一步地,所述节点耗时预测模块230包括:信息查找子模块以及耗时结果获取子模块,其中:
信息查找子模块,用于基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果。
耗时结果获取子模块,用于当在所述算子耗时表中查找到所述待测算子的配置信息时,从所述算子耗时表中获取所述待测算子的配置信息对应的耗时结果,作为所述待测算子对应的节点的预测耗时结果。
进一步地,所述节点耗时预测模块230还包括:插值处理子模块,其中:
插值处理子模块,用于当在所述算子耗时表中未查找到所述待测算子的配置信息时,基于所述待测算子的配置信息以及所述算子耗时表进行插值处理,得到所述待测算子对应的预测耗时结果,作为所述待测算子对应的节点的预测耗时结果。
进一步地,所述插值处理子模块包括:相邻信息查找单元、相邻算子获取单元以及插值处理单元,其中:
相邻信息查找单元,用于在所述算子耗时表中查找与所述待测算子的配置信息相邻的配置信息,并基于与所述待测算子的配置信息相邻的配置信息得到相邻算子。
相邻算子获取单元,用于在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果。
进一步地,所述相邻算子获取单元包括:第一相邻算子获取子单元,其中:
第一相邻算子获取子单元,用于当所述相邻算子的数量为一个时,在所述算子耗时表中获取所述相邻算子的浮点运算数以及所述相邻算子的耗时结果。
进一步地,所述相邻算子获取单元包括:第二配置信息获取子单元以及第三配置信息获取子单元,其中:
第二配置信息获取子单元,用于当所述相邻算子包括第一相邻算子和第二相邻算子时,获取第一相邻算子的配置信息中与所述待测算子的第一配置信息相邻的配置信息作为第二配置信息,其中,所述待测算子的第一配置信息为所述待测算子的配置信息中一子配置信息。
第三配置信息获取子单元,用于获取第二相邻算子的配置信息中与所述待测算子的第一配置信息相邻的配置信息作为第三配置信息。
进一步地,所述相邻算子获取单元包括:第二相邻算子获取子单元,其中:
第二相邻算子获取子单元,用于当所述相邻算子的数量为至少三个时,在所述算子耗时表中分别获取至少三个相邻算子中每个相邻算子的浮点运算数以及每个相邻算子的耗时结果。
插值处理单元,用于基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值处理,得到所述待测算子的预测耗时结果。
进一步地,所述插值处理单元包括:比值计算子单元以及第一耗时预测子单元,其中:
比值计算子单元,用于计算所述相邻算子的浮点运算数与所述待测算子的浮点运算数的比值。
第一耗时预测子单元,用于基于所述比值以及所述相邻算子的耗时结果,得到所述待测算子的预测耗时结果。
进一步地,所述插值处理单元包括:差值计算子单元、比例计算子单元以及第二耗时预测子单元,其中:
差值计算子单元,用于计算所述第二配置信息的数值与所述第三配置信息的数值的差值。
比例计算子单元,用于基于所述差值,计算所述第一配置信息的数值在所述第二配置信息的数值与所述第三配置信息的数值之间的比例。
第二耗时预测子单元,用于基于所述比例,所述第一相邻算子的耗时结果以及所述第二相邻算子的耗时结果,得到所述待测算子的预测耗时结果。
进一步地,所述插值处理单元包括:权重计算子单元以及第三耗时预测子单元,其中:
权重计算子单元,用于基于所述每个相邻算子的浮点运算数,计算所述每个相邻算子的权重。
第三耗时预测子单元,用于基于所述每个相邻算子的权重以及所述每个相邻算子的耗时结果,获得所述待测算子的预测耗时结果。
模型耗时预测模块240,用于基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
进一步地,所述模型耗时预测装置200还包括:算子构建模块、格式转换模块、速度测试模块以及耗时表构建模块,其中:
算子构建模块,用于基于常用配置信息构建多个算子模型。
格式转换模块,用于将所述多个算子模型的格式转换为目标平台运行格式。
速度测试模块,用于对转换后的所述多个算子模型分别进行速度测试,得到所述多个算子模型的耗时结果。
耗时表构建模块,用于基于所述多个算子模型的配置信息以及所述多个算子模型的耗时结果,构建算子耗时表。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图10,其示出了本申请实施例提供的一种电子设备100的结构框图。该电子设备100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
其中,处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责待显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参阅图11,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质300中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质300可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质300包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质300具有执行上述方法中的任何方法步骤的程序代码310的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码310可以例如以适当形式进行压缩。
综上所述,本申请实施例提供的模型耗时预测方法、装置、电子设备以及存储介质,获取待测模型,并创建待测模型对应的拓扑结构,该拓扑结构包括多个节点,其中,多个节点中的每个节点对应待测模型中的一个待测算子;获取每个节点对应的待测算子的配置信息;基于每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果;基于多个节点和每个节点的预测耗时结果,获得待测模型的预测耗时结果。从而通过获取待测模型的每个节点对应的待测算子的配置信息,得到每个节点的预测耗时结果,基于多个节点以及每个节点的预测耗时结果,预测该待测模型的耗时结果,从而提升模型耗时结果预测的精确度。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种模型耗时预测方法,其特征在于,所述方法包括:
获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子;
获取所述每个节点对应的待测算子的配置信息,所述配置信息包括算子类型、输入尺寸、输入通道数、卷积核尺寸、卷积核通道数、卷积步长、浮点运算数中的至少一种;
基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果;
所述基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果,包括:
基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果;
当在所述算子耗时表中未查找到所述待测算子的配置信息时,在所述算子耗时表中查找与所述待测算子的配置信息相邻的配置信息,并基于与所述待测算子的配置信息相邻的配置信息得到相邻算子,其中,与所述待测算子的配置信息相邻的配置信息为所述算子耗时表中,与所述待测算子的配置信息的类型一致且数值相近的配置信息;
在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果;
基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值处理,得到所述待测算子的预测耗时结果;
基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果,包括:
基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果;
当在所述算子耗时表中查找到所述待测算子的配置信息时,从所述算子耗时表中获取所述待测算子的配置信息对应的耗时结果,作为所述待测算子对应的节点的预测耗时结果。
3.根据权利要求1所述的方法,其特征在于,所述配置信息包括浮点运算数,所述在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果,包括:
当所述相邻算子的数量为一个时,在所述算子耗时表中获取所述相邻算子的浮点运算数以及所述相邻算子的耗时结果;
所述基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值操作,得到所述待测算子的预测耗时结果,包括:
计算所述相邻算子的浮点运算数与所述待测算子的浮点运算数的比值;
基于所述比值以及所述相邻算子的耗时结果,得到所述待测算子的预测耗时结果。
4.根据权利要求1所述的方法,其特征在于,所述配置信息包括多个子配置信息,所述在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果,包括:
当所述相邻算子包括第一相邻算子和第二相邻算子时,获取第一相邻算子的配置信息中与所述待测算子的第一配置信息相邻的配置信息作为第二配置信息,其中,所述待测算子的第一配置信息为所述待测算子的配置信息中的一子配置信息;
获取第二相邻算子的配置信息中与所述待测算子的第一配置信息相邻的配置信息作为第三配置信息;
所述基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值操作,得到所述待测算子的预测耗时结果,包括:
计算所述第二配置信息的数值与所述第三配置信息的数值的差值;
基于所述差值,计算所述第一配置信息的数值在所述第二配置信息的数值与所述第三配置信息的数值之间的比例;
基于所述比例,所述第一相邻算子的耗时结果以及所述第二相邻算子的耗时结果,得到所述待测算子的预测耗时结果。
5.根据权利要求1所述的方法,其特征在于,所述配置信息包括浮点运算数,所述在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果,包括:
当所述相邻算子的数量为至少三个时,在所述算子耗时表中分别获取至少三个相邻算子中每个相邻算子的浮点运算数以及每个相邻算子的耗时结果;
所述基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值操作,得到所述待测算子的预测耗时结果,包括:
基于所述每个相邻算子的浮点运算数,计算所述每个相邻算子的权重;
基于所述每个相邻算子的权重以及所述每个相邻算子的耗时结果,获得所述待测算子的预测耗时结果。
6.根据权利要求2-5任一项所述的方法,其特征在于,在所述基于算子耗时表查找所述待测算子的配置信息之前,所述方法还包括:
基于常用配置信息构建多个算子模型;
将所述多个算子模型的格式转换为目标平台运行格式;
对转换后的所述多个算子模型分别进行速度测试,得到所述多个算子模型的耗时结果;
基于所述多个算子模型的配置信息以及所述多个算子模型的耗时结果,构建算子耗时表。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述获取待测模型,包括:
基于神经网络架构搜索获取待测模型。
8.一种模型耗时预测装置,其特征在于,所述装置包括:
模型获取模块,用于获取待测模型,并创建所述待测模型对应的拓扑结构,所述拓扑结构包括多个节点,其中,所述多个节点中的每个节点对应所述待测模型中的一个待测算子;
配置信息获取模块,用于获取所述每个节点对应的待测算子的配置信息,所述配置信息包括算子类型、输入尺寸、输入通道数、卷积核尺寸、卷积核通道数、卷积步长、浮点运算数中的至少一种;
节点耗时预测模块,用于基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果;所述基于所述每个节点对应的待测算子的配置信息,得到所述每个节点的预测耗时结果,包括:基于算子耗时表查找所述待测算子的配置信息,其中,所述算子耗时表中包括多个预先构建的算子的配置信息以及所述多个预先构建的算子的配置信息对应的耗时结果;当在所述算子耗时表中未查找到所述待测算子的配置信息时,在所述算子耗时表中查找与所述待测算子的配置信息相邻的配置信息,并基于与所述待测算子的配置信息相邻的配置信息得到相邻算子,其中,与所述待测算子的配置信息相邻的配置信息为所述算子耗时表中,与所述待测算子的配置信息的类型一致且数值相近的配置信息;在所述算子耗时表中获取所述相邻算子的配置信息以及所述相邻算子的耗时结果;基于所述相邻算子的配置信息与所述待测算子的配置信息对所述相邻算子的耗时结果进行插值处理,得到所述待测算子的预测耗时结果;
模型耗时预测模块,用于基于所述多个节点和所述每个节点的预测耗时结果,获得所述待测模型的预测耗时结果。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时所述处理器执行如权利要求1-7任一项所述的方法。
10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110251614.7A CN112990433B (zh) | 2021-03-08 | 2021-03-08 | 模型耗时预测方法、装置、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110251614.7A CN112990433B (zh) | 2021-03-08 | 2021-03-08 | 模型耗时预测方法、装置、电子设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112990433A CN112990433A (zh) | 2021-06-18 |
CN112990433B true CN112990433B (zh) | 2024-06-04 |
Family
ID=76335806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110251614.7A Active CN112990433B (zh) | 2021-03-08 | 2021-03-08 | 模型耗时预测方法、装置、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112990433B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896950B (zh) * | 2022-07-11 | 2022-10-28 | 浙江大华技术股份有限公司 | 模型转换方法以及模型转换设备、存储介质 |
CN115527525B (zh) * | 2022-11-23 | 2023-04-18 | 广州小鹏汽车科技有限公司 | 语音识别模型生成方法、语音交互方法、车辆和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522837A (zh) * | 2020-04-23 | 2020-08-11 | 北京百度网讯科技有限公司 | 用于确定深度神经网络的耗时的方法和装置 |
CN111753950A (zh) * | 2020-01-19 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN111753978A (zh) * | 2020-01-19 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN112286658A (zh) * | 2020-10-28 | 2021-01-29 | 北京字节跳动网络技术有限公司 | 一种集群任务调度方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9753782B2 (en) * | 2014-04-24 | 2017-09-05 | Empire Technology Development Llc | Resource consumption optimization |
-
2021
- 2021-03-08 CN CN202110251614.7A patent/CN112990433B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111753950A (zh) * | 2020-01-19 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN111753978A (zh) * | 2020-01-19 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN111522837A (zh) * | 2020-04-23 | 2020-08-11 | 北京百度网讯科技有限公司 | 用于确定深度神经网络的耗时的方法和装置 |
CN112286658A (zh) * | 2020-10-28 | 2021-01-29 | 北京字节跳动网络技术有限公司 | 一种集群任务调度方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112990433A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701250B (zh) | 数据定点化方法和装置 | |
CN108959246B (zh) | 基于改进的注意力机制的答案选择方法、装置和电子设备 | |
WO2022068196A1 (zh) | 跨模态的数据处理方法、装置、存储介质以及电子装置 | |
CN112487168B (zh) | 知识图谱的语义问答方法、装置、计算机设备及存储介质 | |
CN110837602B (zh) | 基于表示学习和多模态卷积神经网络的用户推荐方法 | |
JP6938229B2 (ja) | クリークを介してグラフィックスを圧縮するシステム及び方法 | |
JP7392668B2 (ja) | データ処理方法および電子機器 | |
CN112633010B (zh) | 基于多头注意力和图卷积网络的方面级情感分析方法及系统 | |
CN112990433B (zh) | 模型耗时预测方法、装置、电子设备以及存储介质 | |
CN115456159A (zh) | 一种数据处理方法和数据处理设备 | |
CN106407311A (zh) | 获取搜索结果的方法和装置 | |
CN106844341B (zh) | 基于人工智能的新闻摘要提取方法及装置 | |
CN111047563B (zh) | 一种应用于医学超声图像的神经网络构建方法 | |
CN113792768A (zh) | 超图神经网络分类方法和装置 | |
CN114547267A (zh) | 智能问答模型的生成方法、装置、计算设备和存储介质 | |
CN111160049B (zh) | 文本翻译方法、装置、机器翻译系统和存储介质 | |
US11037356B2 (en) | System and method for executing non-graphical algorithms on a GPU (graphics processing unit) | |
CN107463486B (zh) | 系统性能分析方法、装置及服务器 | |
CN114565092A (zh) | 一种神经网络结构确定方法及其装置 | |
CN114997360B (zh) | 神经架构搜索算法的演化参数优化方法、系统及存储介质 | |
JP2020021208A (ja) | ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム | |
CN111966889B (zh) | 一种图嵌入向量的生成方法以及推荐网络模型的生成方法 | |
CN114724103A (zh) | 神经网络处理系统、指令生成方法、装置及电子设备 | |
US11841792B1 (en) | Instructions with multiple memory access modes | |
CN110097183B (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 |