模型引擎的构建、核函数处理方法、设备及存储介质与流程

文档序号:33319332发布日期:2023-03-03 19:18阅读:22来源:国知局
模型引擎的构建、核函数处理方法、设备及存储介质与流程

1.本技术涉及人工智能领域,尤其涉及一种模型引擎的构建、核函数处理方法、设备及存储介质。


背景技术:

2.核函数(kernel function),是运行在gpu(graphics processing unit,图形处理器)或者cpu(central processing unit,中央处理器)上用于执行运算过程的函数。通常,为获取较佳的运算性能,可开发多个核函数来完成相同功能的计算过程。在构造神经网络模型的推理(或称预测)引擎(engine)时,可为神经网络模型中的每个算子选取较佳的核函数,以提升神经网络模型的性能。
3.现有技术中提供的为神经网络模型中的算子选取核函数的方案,不利于降低神经网络模型的引擎构造开销。因此,有待提出一种新的解决方案。


技术实现要素:

4.本技术的多个方面提供一种模型引擎的构建、核函数处理方法、设备及存储介质,用以有效地降低神经网络模型的引擎构造开销。
5.本技术实施例还提供一种模型引擎构建方法,包括:响应模型引擎构造请求,确定待构造模型引擎的目标模型;对所述目标模型进行分析,得到所述目标模型包含的多个算子;利用核函数复用信息,为所述多个算子分别选择适配的核函数;其中,所述核函数复用信息用于记录算子与适配的核函数的对应关系;所述算子与适配的核函数的对应关系,通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到;根据所述多个算子适配的核函数,构造所述目标模型对应的模型引擎。
6.本技术实施例还提供一种模型引擎构建方法,包括:响应核函数选择操作,确定目标模型中的待处理算子;查询预先创建的核函数复用信息中,是否存在与所述待处理算子相同的目标算子;其中,所述核函数复用信息用于记录算子与适配的核函数的对应关系;所述算子与适配的核函数的对应关系,通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到;若存在所述目标算子,则从所述核函数复用信息中确定所述目标算子对应的核函数;将所述目标算子对应的核函数,复用为所述待处理算子适配的核函数。
7.本技术实施例还提供一种电子设备,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本技术实施例提供的方法中的步骤。
8.本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现本技术实施例提供的方法中的步骤。
9.本技术实施例提供的模型引擎构建方法中,在为目标模型构造模型引擎时,可利用核函数复用信息为目标模型中的算子选择适配的核函数。该核函数复用信息用于保存算子与适配的核函数的对应关系。基于核函数复用信息,可避免为相同的算子重复执行核函
数的测试选择操作,可有效降低模型引擎的构建开销。
附图说明
10.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
11.图1为本技术一示例性实施例提供的模型引擎构建方法的流程示意图;
12.图2为本技术一示例性实施例提供的核函数复用列表的示意图;
13.图3为基于初始为空的核函数复用列表进行核函数选择操作的流程示意图;
14.图4为基于初始不为空的核函数复用列表进行核函数选择操作的流程示意图;
15.图5为本技术一示例性实施例提供的核函数处理方法的流程示意图;
16.图6为本技术一示例性实施例提供的电子设备的结构示意图。
具体实施方式
17.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
18.深度学习应用的开发过程包括两个阶段,即训练(training)阶段和推理(inference)阶段。其中,训练阶段用于利用训练数据生成和优化网络模型。推理阶段用于将网络模型集成到应用程序,输入数据,并得到推理结果。目前,存在一些神经网络框架,用于优化网络模型在推理过程中的运行效率。
19.现有的一些神经网络框架中,通常通过遍历测试的方式,为神经网络模型中的算子选取较优的kernel(核函数)。其中,核函数kernel作为实现某个运算过程的基础函数源码,可在计算机设备的gpu(graphics processing unit,图形处理器)上运行。在神经网络模型中,核函数可用于完成神经网络模型中的算子的运算任务,为算子选择较优的核函数可有效加速神经网络模型的推理执行过程。
20.例如,在tensorrt(一种高性能神经网络推理引擎)框架中,可将每个备选的核函数作为算子适配的核函数进行推理测试,并统计推理测试的结果。基于统计得到的推理测试的结果,为算子选择较优核函数。但是这种方式较为耗时,且模型的规模越大,耗时越长,不利于降低模型引擎的构造开销。
21.针对上述技术问题,在本技术的一些实施例中,提供了一种解决方案,该解决方案通过记录为算子选择的适配的核函数,并复用相同算子的核函数,可极大降低神经网络模型的引擎构造所需的时间开销。以下将结合附图,详细说明本技术各实施例提供的技术方案。
22.图1为本技术一示例性实施例提供的模型引擎的构建方法的流程示意图,如图1所示,该方法包括:
23.步骤101、响应模型引擎构造请求,确定待构造模型引擎的目标模型。
24.步骤102、对所述目标模型进行分析,得到所述目标模型包含的多个算子。
25.步骤103、利用核函数复用信息,为所述多个算子分别选择适配的核函数;其中,所
述核函数复用信息用于记录算子与适配的核函数的对应关系;所述算子与适配的核函数的对应关系,通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到。
26.步骤104、根据所述多个算子适配的核函数,构造所述目标模型对应的模型引擎。
27.本技术实施例的执行主体可以为运行有神经网络框架程序的电子设备,该电子设备可实现为终端设备或者服务器设备。若实现为终端设备,则该终端设备的实现形式可包括:智能手机、平板电脑、计算机设备等。若实现为服务器设备,则该服务器设备的实现形式可以是常规服务器、云服务器、云主机、云上的弹性计算实例等等,本实施例不做限制。
28.其中,电子设备上运行的神经网络框架程序被电子设备执行时,可根据模型引擎的创建请求,为训练好的目标模型创建模型引擎,即推理引擎,从而实现目标模型的部署。
29.其中,电子设备上运行的神经网络框架程序,可以是tensorrt框架程序、openvino框架程序或mediapipe框架程序等等,本实施例包含但不限于此。
30.其中,待构造模型引擎的目标模型可以是任意的神经网络模型,例如可以是:卷积神经网络(convolutional neural networks,cnn)模型、深度神经网络(deep neural network,dnn)模型、图卷积神经网络(graph convolutional networks,gcn)模型、循环神经网络(recurrent neural network,rnn)模型以及长短期记忆神经网络(long short-term memory,lstm)模型中的一种或多种,或者可由上述一种或多种神经网络变形得到的模型,本实施例包含但不限于此。当然,除上述列举的神经网络模型之外,还可实现为其他可选的神经网络模型,本实施例不做限制。
31.其中,模型引擎构造请求,可以由用户直接向运行有神经网络框架程序的电子设备提交,也可以由用户通过除该电子设备之外的其他设备提交,本实施例不做限制。该模型引擎构造请求,可携带待构造模型引擎的目标模型的标识,例如目标模型的id(identity,身份标识)、名称等。神经网络框架程序接收到模型引擎构造请求后,可从该请求中获取目标模型的标识,并根据该标识确定获取待构造模型引擎的目标模型。其中,目标模型训练完成后得到的模型数据可存放在电子设备的指定存储空间(例如磁盘)中,神经网络框架程序可基于目标模型的标识从指定空间中将目标模型的模型数据加载到电子设备的内存中,从而进行模型引擎的构造操作。
32.神经网络是由大量的处理单元(称为神经元)广泛地互相连接而形成的结构复杂的网络系统。每个神经元,可称为一个算子(operator,简称op)或层(layer)。例如,一个神经网络模型可包括卷积算子、激活算子、矩阵运算算子、向量运算算子等等。模型引擎可基于算子,对模型的输入数据进行计算,得到模型的输出数据。为优化模型引擎的性能,神经网络框架程序可为模型中的每个算子选择较佳kernel。
33.神经网络框架程序基于目标模型的标识确定目标模型后,可对目标模型进行分析,得到目标模型包含的多个算子。得到目标模型包含的多个算子后,可逐个为算子选择合适的核函数。
34.在本实施例中,为提升核函数的选择效率,可记录已选择核函数的算子与适配的核函数的对应关系,作为核函数复用信息,并利用核函数复用信息为目标模型包含的多个算子进行核函数的选择操作。
35.核函数复用信息中的算子与核函数的对应关系,可由电子设备通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到。该核函数复用信息,可以是在目标
模型的本次模型引擎构造操作中生成的,也可以是在多个其他模型的引擎构造过程中生成的。该核函数复用信息,可随着模型引擎的构造过程不断变化,核函数复用信息包含的算子与适配的核函数的对应关系也可随着模型引擎的构建过程不断丰富。即,核函数复用信息中记录的算子,可以是该目标模型中已执行核函数选择操作的算子,也可以是其他已启动模型引擎构建操作的神经网络模型中的算子,本实施例不做限制。
36.在本实施例中,将每个未执行核函数选择操作的算子,描述为待处理算子。基于核函数复用的原则,神经网络框架程序在为待处理算子挑选核函数时,可首先判断该待处理算子是否与核函数复用信息中已执行核函数选择操作的某个算子相同。若核函数复用信息中存在已执行核函数选择操作的某个算子与该待处理算子相同,则可将该算子适配的核函数,复用为该待处理算子适配的核函数。进而,针对相同的算子,可避免重复地遍历测试可选的核函数。
37.每个目标模型中的多个算子分别选择出核函数后,可基于所述多个算子适配的核函数,构造目标模型对应的模型引擎,以完成目标模型的部署操作。
38.在本实施例中,在为目标模型构造模型引擎时,可利用核函数复用信息为目标模型中的算子选择适配的核函数。该核函数复用信息用于保存算子与适配的核函数的对应关系。基于核函数复用信息,可避免为相同的算子重复执行核函数的测试选择操作,可有效降低模型引擎的构建开销。
39.需要说明的是,在本技术的上述以及下述各实施例中,神经网络框架程序在获取到目标模型的模型数据后,可进一步对模型进行算子分析以及算子融合操作。
40.其中,算子融合是指,按照特定的算子融合规则,将不同的算子通过合并(concat)的方式融合为一个算子。例如,可根据神经网络模型的结构,对神经网络模型中的算子进行垂直融合或者水平融合。其中,垂直融合的融合规则可包括:将卷积算子(conv)与激活算子(例如relu)进行融合,或者,将卷积算子、批量归一化算子(batch normalization,bn)以及激活算子进行融合等等。其中,水平融合的融合规则可包括:将输入为相同张量并执行相同操作的算子进行融合,或者,将执行相同操作且不存在依赖关系的算子进行融合。其中,融合后的算子可称为复合算子,神经网络框架程序可基于本技术提供的实施方式为每个复合算子选择适配的kernel。
41.本技术的上述以及下述各实施例中,神经网络框架程序可在为算子选择核函数之前执行算子融合操作,并对融合后的算子进行核函数的选择操作。为确保核函数复用信息具有较高的可用性,针对不同的模型以及模型中的不同算子,可按照相同的算子融合规则进行算子融合操作,以便于进行相同算子的匹配搜索操作,不再赘述。
42.基于算子融合操作,可减少目标模型中的网络层,缩短数据通道,以更高效地利用gpu资源。
43.以下将以任一待处理算子为例,对利用核函数复用信息,为待处理算子选择适配的核函数的实施方式进行示例性说明。
44.核函数复用信息在保存算子与适配的核函数对应关系时,可对应保存算子的算子信息以及与算子适配的核函数的识别标识。基于此,针对目标模型中的任一待处理算子,可根据该待处理算子的算子信息,对核函数复用信息进行搜索查询。
45.可选地,若在核函数复用信息中,查询到与该待处理算子的算子信息匹配的算子,
则可将该与算子信息匹配的算子作为与该待处理算子相同的目标算子。确定目标算子后,可从核函数复用信息中,确定目标算子对应的核函数,并将目标算子对应的核函数复用为待处理算子的核函数。
46.可选地,若在核函数复用信息中,未查询到与该待处理算子的算子信息匹配的算子,则可针对待处理算子,遍历测试多个候选的核函数,并据该多个候选的核函数的测试结果,从该多个候选的核函数中,确定与待处理算子适配的目标核函数。其中,与待处理算子适配的目标核函数,指的是能够使得待处理算子具有较佳推理性能的核函数。针对待处理算子,遍历测试多个候选的核函数时,可根据每个核函数的测试结果,统计每个核函数对应的推理性能,并可选择推理性能较优的核函数,作为算子适配的核函数。进一步可选地,基于遍历测试的方法为待处理算子选择适配的目标核函数后,可将该待处理算子的算子信息以及遍历测试得到的目标核函数,对应添加至核函数复用信息中,从而可对核函数复用信息进行更新,以供后续查询使用。
47.基于这种实施方式,可在构造目标模型的模型引擎的过程中,对目标模型中的相同算子进行识别,从而避免对相同的算子执行重复的核函数选择操作,降低模型引擎构造的时间成本。
48.在上述实施例中,算子信息,指的是用于对算子进行描述的信息,可用于唯一标识该算子。可选地,该算子信息可包括:算子的类型、运算参数、张量尺寸以及设备类型中的至少一种。其中,算子类型可包括:卷积类型、激活类型等。其中,运算参数,用于表示算子的计算逻辑,可包括:权重参数、偏置参数等等。张量尺寸,指的是算子输入数据的尺寸。设备类型,指的是算子对应的gpu设备的型号,不同类型的设备具有不同的硬件资源。
49.其中,算子的类型以及运算参数,用于描述算子的计算内容。张量尺寸以及设备类型,用于描述算子的运行环境。核函数在不同的gpu设备上运行时,具有不同的性能表现。核函数在不同张量尺寸的状态下,性能也存在一定的差异。
50.基于此,在一些可选的实施例中,在核函数复用信息中查询是否存在与待处理算子相同的算子时,可同时进行算子类型、运算参数、张量尺寸匹配以及设备类型的匹配,进而可确保匹配到的目标算子与待处理算子具有相同计算内容以及相同运行环境。从而,将目标算子的核函数复用为待处理算子的核函数时,可确保待处理算子与该核函数具有较高的适配度,从而提升待处理算子的运行性能。
51.可选地,当算子信息同时包含算子的类型、运算参数、张量尺寸以及设备类型时,核函数复用信息可采用如图2所示的核函数复用列表实现。如图2所示,该核函数复用列表中,每一行记录用于存储一个算子与其适配的核函数的对应关系。核函数复用列表包含多列,多列对应的字段分别为:算子类型、算子运行参数、张量尺寸、设备型号以及核函数名称。
52.应当理解的是,除了图2所示的核函数复用列表之外,核函数复用信息还可采用其他的存储方式进行存储,例如可以存储在数组中、文件中、关系型数据库中或者非关系型数据库中,本实施例不做限制。
53.以下将以核函数复用信息采用核函数复用列表进行存储的方式为例,对核函数选择操作进行进一步示例性说明。
54.在一些示例性的实施例中,核函数复用列表可包括:目标模型中已选择核函数的
算子与适配的核函数的对应关系。在为目标模型中的算子执行核函数选择操作之前,核函数复用列表为空。神经网络框架程序可在构造目标模型的模型引擎的过程中,根据目标模型中的算子的核函数的选择结果,在核函数复用列表写入核函数复用信息。
55.神经网络框架程序启动对目标模型中的算子进行核函数选择操作后,可按照特定顺序遍历每个算子以进行核函数的选择操作。
56.在为第1个算子选择核函数时,可针对第1个算子遍历测试可选的核函数,并根据遍历测试的结果为第1个算子选择适配的核函数,该适配的核函数可称为较佳核函数。该较佳核函数,可使得第1算子的推理性能满足一定的要求。确定第1个算子的核函数后,可将第1算子的算子信息与第1算子适配的核函数的对应关系存储至核函数复用列表中。
57.当为第i(i=2,3

n)个算子选择核函数时,可首先判断核函数复用列表中,是否存在与第i个算子相同的目标算子,n为目标模型包含的算子的数量。若存在与第i个算子相同的目标算子,则不再对第i个算子执行核函数的遍历测试操作,并可直接将该目标算子适配的核函数,作为第i个算子适配的核函数。
58.若核函数复用信息中不存在与第i个算子相同的目标算子,则可针对第i个算子遍历测试多个备选的核函数,并根据遍历测试的结果,为第i个算子选择出适配的核函数。通过遍历测试的方式为第i个算子选择出适配的核函数后,可将第i个算子以及第i个算子适配的核函数对应保存在核函数复用信息中,以供后续使用。
59.每针对一个算子执行核函数选择操作后,可判断是否还存在待处理算子,若存在待处理算子,则重复执行上述操作,直至i=n。
60.以下将结合图3,对构造目标模型的过程中生成核函数复用列表,并利用核函数复用列表进行核函数选择操作的实施方式进行进一步说明。
61.未启动kernel选择操作时,核函数复用列表为空。如图3所示,启动kernel选择操作后,针对第1个算子,遍历测试多个备选的kernel,并根据遍历测试结果为第1个算子选择较佳kernel。接下来,将第1个算子的相关信息及其对应的较佳kernel记录到核函数复用列表。
62.接下来,判断目标模型中算子是否均已选择较佳kernel,即判断是否存在待处理算子。若不存在待处理算子,结束核函数选择流程。若存在待处理算子,则进行下一个算子的较佳kernel选择流程。在为下一个算子选择较佳kernel时,可将下一个算子与核函数复用列表中的算子进行搜索匹配。
63.若在核函数复用列表中匹配到与该下一个算子相同的目标算子,则可直接读取该目标算子的较佳kernel作为该下一个算子的较佳kernel。若核函数复用列表中未匹配到与该下一个算子相同的目标算子,则可对该下一个算子进行kernel的遍历测试统计操作,从而得到该下一个算子的较佳kernel,并将该下一个算子的相关信息与该下一个算子的较佳kernel记录到核函数复用列表中待用。
64.例如,yolov3模型中共有34个1x1的卷积算子,其中,9个卷积算子具有不同的张量尺寸,25个卷积算子具有相同的张量尺寸。那么,在为34个卷积算子选择kernel时,将存在25个重复的kernel选择操作。若复用kernel信息,则可对25个卷积算子中的第1个算子执行备选kernel的遍历测试操作,并对剩余24个算子复用为该第1个算子选择出的核函数,从而极大降低了遍历测试的次数,节省了模型引擎的构造开销。
65.在另一些示例性的实施例中,核函数复用列表包括:已启动模型引擎构建操作的至少一个模型中已选择核函数的算子与适配的核函数的对应关系。其中,该已启动模型引擎构建操作的至少一个模型,可包括目标模型,可包括当前已启动并正在执行模型引擎构建操作的其他模型,也可包括历史时间段内已启动并结束执行模型引擎构造操作的其他模型。也就是说,神经网络框架程序可在每次启动构造模型引擎的过程中,根据算子的核函数的选择结果,在核函数复用列表写入核函数复用信息,并复用多个不同模型的核函数复用信息。在这种情况下,核函数复用信息可以逐渐进行增量积累。在为目标模型中的算子执行核函数选择操作之前,核函数复用列表可以不为空。
66.基于此,在为第1个算子选择核函数时,可首先判断核函数复用列表中,是否存在与第1个算子相同的目标算子。若存在与第1个算子相同的目标算子,则不再对第1个算子执行核函数的遍历测试操作,并可直接将该目标算子适配的核函数,作为第1个算子适配的核函数。反之,若核函数复用列表中,不存在与第1个算子相同的目标算子,则针对第1个算子遍历测试可选的核函数,并根据遍历测试的结果为第1个算子选择适配的核函数,该适配的核函数可称为较佳核函数。确定第1个算子的核函数后,可将第1算子的算子信息与第1算子适配的核函数的对应关系作为增量信息,存储至核函数复用列表中。
67.同理,当为第i(i=2,3

n)个算子选择核函数时,可首先判断核函数复用列表中,是否存在与第i个算子相同的目标算子,n为目标模型包含的算子的数量。若存在与第i个算子相同的目标算子,则不再对第i个算子执行核函数的遍历测试操作,并可直接将该目标算子适配的核函数,作为第i个算子适配的核函数。
68.若核函数复用信息中不存在与第i个算子相同的目标算子,则可针对第i个算子遍历测试多个备选的核函数,并根据遍历测试的结果,为第i个算子选择出适配的核函数。通过遍历测试的方式为第i个算子选择出适配的核函数后,可将第i个算子以及第i个算子适配的核函数对应保存在核函数复用信息中,以供后续使用。
69.如图4所示,在启动核函数选择操作之后,可首先读取核函数复用列表。接下来,判断目标模型中算子是否均已选择较佳kernel,即判断是否存在待处理算子。若不存在待处理算子,结束核函数选择流程。若存在待处理算子,则进行下一个算子的较佳kernel选择流程。在为下一个算子选择较佳kernel时,可将下一个算子与核函数复用列表中的算子进行匹配。
70.若在核函数复用列表中匹配到与该下一个算子相同的目标算子,则可直接读取该目标算子的较佳kernel作为该下一个算子的较佳kernel。若核函数复用列表中未匹配到与该下一个算子相同的目标算子,则可对该下一个算子进行kernel的遍历测试统计操作,从而得到该下一个算子的较佳kernel,并将该下一个算子的相关信息与该下一个算子的较佳kernel作为增量信息记录到核函数复用列表中,以供后续使用。
71.在这种实施方式中,核函数复用列表可随着不同模型的运行,不断得到增量的核函数复用信息。当核函数复用信息足够丰富时,可使得后续模型的引擎构建过程极大减少需要遍历测试核函数的操作次数,甚至无需执行算子的核函数遍历测试操作,只需对核函数复用信息进行搜索和读取即可完成模型引擎的构建,极大节省了模型引擎的构建开销。
72.在一些实施例中,该神经网络框架程序可基于tensorrt框架实现。tensorrt是一种可编程的推理加速器,因此,可通过对tensorrt进行编程,以使其执行本实施例提供的模
型引擎构建方法,不再赘述。
73.本技术实施例提供的模型引擎构建方法,还可用于tensorrt框架的二次开发验证。在进行tensorrt的二次开发,例如插件(plugin)开发时,可在完成代码修改后,基于核函数复用信息,匹配算子的运算参数、张量尺寸等信息从而快速确定模型中的算子的核函数以重建模型引擎。基于重建的模型引擎,可对修改后的代码进行验证。进而,可快速获取二次开发的反馈信息,降低了二次开发过程中的迭代测试所需时间成本,极大提升了开发效率。
74.除前述实施例记载的模型引擎构建方法之外,本技术实施例还提供了一种核函数处理方法,以下将结合附图进行示例性说明。
75.图5为本技术一示例性实施例提供的核函数处理方法的流程示意图,如图5所示,该方法包括:
76.步骤501、响应核函数选择操作,确定目标模型中的待处理算子。
77.步骤502、查询预先创建的核函数复用信息中,是否存在与所述待处理算子相同的目标算子;其中,所述核函数复用信息用于记录算子与适配的核函数的对应关系;所述算子与适配的核函数的对应关系,通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到。
78.步骤503、若存在所述目标算子,则从所述核函数复用信息中确定所述目标算子对应的核函数。
79.步骤504、将所述目标算子对应的核函数,复用为所述待处理算子适配的核函数。
80.其中,该函数复用信息,用于保存算子的算子信息与算子适配的核函数的对应关系。
81.基于此,针对目标模型中的任一待处理算子,可根据该待处理算子的算子信息,对核函数复用信息进行查询。
82.可选地,若在核函数复用信息中,查询到与该待处理算子的算子信息匹配的算子,则可将该与算子信息匹配的算子作为与该待处理算子相同的目标算子。确定目标算子后,可从核函数复用信息中,确定目标算子对应的核函数,并将目标算子对应的核函数复用为待处理算子的核函数。
83.可选地,若在核函数复用信息中,未查询到与该待处理算子的算子信息匹配的算子,则可针对待处理算子,遍历测试多个候选的核函数,并据该多个候选的核函数的测试结果,从该多个候选的核函数中,确定与待处理算子适配的目标核函数。
84.进一步可选地,可将该待处理算子的算子信息以及遍历测试得到的目标核函数,对应添加至核函数复用信息中,从而可对核函数复用信息进行更新,以供后续查询使用。
85.在一些实施例中,核函数复用信息包括:目标模型中已选择核函数的算子与适配的核函数的对应关系。基于该核函数复用信息,可在构建目标模的模型引擎的过程中,复用目标模型中的算子的核函数信息,在一定程度上提升目标模型的引擎构建效率。
86.在另一些示例性的实施例中,核函数复用信息包括:已启动模型引擎构建操作的至少一个模型中已选择核函数的算子与适配的核函数的对应关系。基于该核函数复用信息,可在构建目标模型的模型引擎的过程中,充分利用实践过程中已积累的算子与核函数的适配信息,可极大降低模型引擎的构建开销。
87.在本实施例中,在为目标模型中的算子选择适配的核函数时,可基于核函数复用信息,对目标模型中的相同算子进行识别,并复用相同的算子的核函数信息,从而可避免对相同的算子执行重复的核函数选择操作,降低模型引擎构造的时间成本。
88.需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤104的执行主体可以为设备a;又比如,步骤101和102的执行主体可以为设备a,步骤103的执行主体可以为设备b;等等。
89.另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
90.图6是本技术一示例性实施例提供的电子设备的结构示意图,如图6所示,该电子设备可包括:存储器601以及处理器602。
91.存储器601,用于存储计算机程序,并可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
92.其中,存储器601可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
93.处理器602,与存储器601耦合,用于执行存储器601中的计算机程序,以用于执行指定的技术方案。
94.在一些实施例中,处理器602可执行存储器601中的计算机程序,以执行一种模型引擎的构建方法。处理器602具体用于:响应模型引擎构造请求,确定待构造模型引擎的目标模型;对所述目标模型进行分析,得到所述目标模型包含的多个算子;利用核函数复用信息,为所述多个算子分别选择适配的核函数;其中,所述核函数复用信息用于记录算子与适配的核函数的对应关系;所述算子与适配的核函数的对应关系,通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到;根据所述多个算子适配的核函数,构造所述目标模型对应的模型引擎。
95.进一步可选地,处理器602在利用核函数复用信息,为所述多个算子分别选择适配的核函数时,具体用于:确定所述核函数复用信息;针对所述多个算子中的任一待处理算子,根据所述待处理算子的算子信息,对所述核函数复用信息进行查询;若在所述核函数复用信息中,查询到与所述待处理算子的算子信息匹配的目标算子,则从所述核函数复用信息中,确定所述目标算子对应的核函数;将所述目标算子对应的核函数,复用为所述待处理算子的核函数。
96.进一步可选地,处理器602还用于:若在所述核函数复用信息中,未查询到与所述待处理算子的算子信息匹配的目标算子,则针对所述待处理算子遍历测试多个候选的核函数;根据所述多个候选的核函数的测试结果,从所述多个候选的核函数中,确定与所述待处理算子适配的核函数。
97.进一步可选地,处理器602在确定与所述待处理算子适配的核函数之后,还用于:将所述待处理算子的算子信息以及与所述待处理算子适配的核函数,对应添加至所述核函数复用信息中,以更新所述核函数复用信息。
98.进一步可选地,所述核函数复用信息包括:所述目标模型中已选择核函数的算子与适配的核函数的对应关系;和/或,已启动模型引擎构建操作的至少一个模型中已选择核函数的算子与适配的核函数的对应关系。
99.进一步可选地,所述算子信息,包括:算子的类型、运算参数、张量尺寸以及设备类型中的至少一种。
100.在另一些实施例中,处理器602可执行存储器601中的计算机程序,以执行一种核函数处理方法。其中,处理器602具体用于:响应核函数选择操作,确定目标模型中的待处理算子;查询预先创建的核函数复用信息中,是否存在与所述待处理算子相同的目标算子;其中,所述核函数复用信息用于记录算子与适配的核函数的对应关系;所述算子与适配的核函数的对应关系,通过在至少一次模型引擎构造过程中,对算子进行核函数的遍历测试得到;若存在所述目标算子,则从所述核函数复用信息中确定所述目标算子对应的核函数;将所述目标算子对应的核函数,复用为所述待处理算子适配的核函数。
101.进一步可选地,处理器602还用于:若所述核函数复用信息中,不存在与所述待处理算子相同的算子,则针对所述待处理算子遍历测试多个候选的核函数;根据所述多个候选的核函数的测试结果,从所述多个候选的核函数中,确定与所述待处理算子适配的核函数;将所述待处理算子以及与所述待处理算子适配的核函数,对应添加至所述核函数复用信息中,以更新所述核函数复用信息。
102.进一步,如图6所示,该电子设备还包括:通信组件603以及电源组件604。图6中仅示意性给出部分组件,并不意味着电子设备只包括图6所示组件。
103.其中,通信组件603被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g、3g、4g或5g,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(nfc)技术、射频识别(rfid)技术、红外数据协会(irda)技术、超宽带(uwb)技术、蓝牙(bt)技术和其他技术来实现。
104.其中,电源组件604,用于为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
105.本实施例中,在为目标模型构造模型引擎时,可利用核函数复用信息为目标模型中的算子选择适配的核函数。该核函数复用信息用于保存算子与适配的核函数的对应关系。基于核函数复用信息,可避免为相同的算子重复执行核函数的测试选择操作,可有效降低模型引擎的构建开销。
106.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由电子设备执行的各步骤。
107.相应地,本技术实施例还提供一种计算机程序产品,包括计算机程序/指令,其中,当计算机程序被处理器执行时,致使处理器实现本技术实施例提供的方法中的步骤。在一
些实施例中,该计算机程序产品可实现为运行在电子设备上的神经网络框架程序。
108.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
109.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
110.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
111.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
112.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
113.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
114.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
115.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
116.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员
来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1