确定硬件运算平台分配方式的方法和装置与流程

文档序号:25543372发布日期:2021-06-18 20:40
确定硬件运算平台分配方式的方法和装置与流程

本公开是关于机器学习模型应用技术领域,尤其是关于一种确定硬件运算平台分配方式的方法和装置。



背景技术:

随着科技的发展,机器学习模型应用到越来越多的技术领域。机器学习模型实际中可以采用深度学习框架进行描述,如pytorch深度学习框架。通过深度学习框架对机器学习模型进行描述可以得到机器学习模型对应的模型数据。基于模型数据进行编译操作,能够得到机器学习模型对应的运行代码。可以为机器学习模型选择一个用于执行运行代码的硬件设备,将机器学习模型对应的运行代码下载到该硬件设备中,该硬件设备完成实际执行过程。

相关技术中,硬件设备可以是异构硬件设备,异构硬件设备中一般包括不同类型的硬件运算平台,如armcpu(advancedriscmachinescentralprocessingunit,精简指令集中央处理器)、dsp(digitalsignalprocessing,数字信号处理器)、nn(neuralnetwork,神经网络)硬核处理器等硬件运算平台。机器学习模型可以包括多个计算节点,每个计算节点对应一个机器学习模型中的网络层(如卷积层、池化层、全连接层等),可以将机器学习模型对应的运行代码拆分成各计算节点分别对应的子运行代码进行执行。前面介绍到的nn硬核处理器中会设置有乘累加硬件运算电路阵列,在该乘累加硬件运算电路阵列中能够快速进行乘累加类型的运算。机器学习模型中的卷积层就要进行多次乘累加计算,因此如果将卷积层对应的子运行代码分配到nn硬核处理器中执行,则执行时长会比较短。这里只是通过nn硬核处理器和卷积层举了一个简单的例子,理论上不同的计算节点在异构硬件设备中对应有最为匹配的硬件运算平台,一个计算节点与一个硬件运算平台是否匹配主要与计算节点的运算类型、硬件运算平台底层执行指令的逻辑和硬件运算平台的物理硬件电路结构相关。

如果将要运行机器学习模型对应的运行代码的硬件设备是异构硬件设备,技术人员一般则会手动为每个计算节点的子运行代码分配一个用于执行它的硬件运算平台。配置硬件运算平台的自由度较高,技术人员完全是凭借个人的经验为每个计算节点的子运行代码分配硬件运算平台的。如果技术人员能够为每个计算节点都分配上较为匹配的硬件运算平台,则最终异构硬件设备运行机器学习模型对应的运行代码的整体执行时长就比较短。

在实现本公开的过程中,发明人发现至少存在以下问题:

由于技术人员完全是凭借个人的经验为每个计算节点的子运行代码分配硬件运算平台的,因此不能保证分配的合理性,进而就无法保证异构硬件设备能够以较短的整体执行时长快速运行机器学习模型对应的运行代码。



技术实现要素:

为了克服相关技术中存在的问题,本公开提供了以下技术方案:

根据本公开实施例的第一方面,提供一种确定硬件运算平台分配方式的方法,所述方法包括:

确定待运行的机器学习模型中包括的多个计算节点,其中,每个计算节点对应所述机器学习模型中的一个网络层;

获取所述多个计算节点对应的多组样本平台配置信息,其中,每组样本平台配置信息对应一种将所述多个计算节点分配到多个预设的硬件运算平台的分配方式;

对于每组样本平台配置信息,基于所述样本平台配置信息控制将所述多个计算节点分配到各硬件运算平台,控制所述各硬件运算平台执行分配到的各计算节点,统计所述各硬件运算平台执行所述多个计算节点的总执行时长,作为所述样本平台配置信息对应的总执行时长;

基于所述多组样本平台配置信息和分别对应的总执行时长,确定优化平台配置信息。

可选地,所述基于所述多组样本平台配置信息和分别对应的总执行时长,确定优化平台配置信息,包括:

确定所述多个计算节点对应的所有样本平台配置信息的数目;

如果所述数目大于或者等于预设数目阈值,则基于所述多组样本平台配置信息和分别对应的总执行时长、以及预设的平台配置信息优化方法,确定优化平台配置信息;

如果所述数目小于所述预设数目阈值,则在所有样本平台配置信息中,确定对应的总执行时长最短的优化平台配置信息。

可选地,所述基于所述多组样本平台配置信息和分别对应的总执行时长、以及预设的平台配置信息优化方法,确定优化平台配置信息,包括:

获取待训练的配置优化器模型;

基于所述多组样本平台配置信息和分别对应的总执行时长,对所述待训练的配置优化器模型进行训练,得到训练后的配置优化器模型;

基于所述训练后的配置优化器模型,确定优化平台配置信息。

可选地,所述方法还包括:

获取所述机器学习模型对应的运行代码;

基于所述优化平台配置信息,对所述运行代码进行优化处理。

可选地,所述基于所述优化平台配置信息,对所述运行代码进行优化处理,包括:

基于预设的硬件运算平台的类型、计算节点的类型和优化处理方式之间的对应关系,确定所述优化平台配置信息对应的至少一种优化处理方式;

基于所述至少一种优化处理方式,对所述运行代码进行优化处理。

根据本公开实施例的第二方面,提供一种确定硬件运算平台分配方式的装置,所述装置包括:

确定模块,用于确定待运行的机器学习模型中包括的多个计算节点,其中,每个计算节点对应所述机器学习模型中的一个网络层;

获取模块,用于获取所述多个计算节点对应的多组样本平台配置信息,其中,每组样本平台配置信息对应一种将所述多个计算节点分配到多个预设的硬件运算平台的分配方式;

执行模块,用于对于每组样本平台配置信息,基于所述样本平台配置信息控制将所述多个计算节点分配到各硬件运算平台,控制所述各硬件运算平台执行分配到的各计算节点,统计所述各硬件运算平台执行所述多个计算节点的总执行时长,作为所述样本平台配置信息对应的总执行时长;

所述确定模块,用于基于所述多组样本平台配置信息和分别对应的总执行时长,确定优化平台配置信息。

可选地,所述确定模块,用于:

确定所述多个计算节点对应的所有样本平台配置信息的数目;

如果所述数目大于或者等于预设数目阈值,则基于所述多组样本平台配置信息和分别对应的总执行时长、以及预设的平台配置信息优化装置,确定优化平台配置信息;

如果所述数目小于所述预设数目阈值,则在所有样本平台配置信息中,确定对应的总执行时长最短的优化平台配置信息。

可选地,所述确定模块,用于:

获取待训练的配置优化器模型;

基于所述多组样本平台配置信息和分别对应的总执行时长,对所述待训练的配置优化器模型进行训练,得到训练后的配置优化器模型;

基于所述训练后的配置优化器模型,确定优化平台配置信息。

可选地,所述获取模块,还用于获取所述机器学习模型对应的运行代码;

所述装置还包括:

优化模块,用于基于所述优化平台配置信息,对所述运行代码进行优化处理。

可选地,所述优化模块,用于:

基于预设的硬件运算平台的类型、计算节点的类型和优化处理方式之间的对应关系,确定所述优化平台配置信息对应的至少一种优化处理方式;

基于所述至少一种优化处理方式,对所述运行代码进行优化处理。

根据本公开实施例的第三方面,提供一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线,其中:

所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序,以实现上述确定硬件运算平台分配方式的方法。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述确定硬件运算平台分配方式的方法。

本公开的实施例提供的技术方案可以包括以下有益效果:

通过本公开的实施例,可以获取多个计算节点对应的多组样本平台配置信息,基于多组样本平台配置信息分别在硬件运算平台中控制实际运行各计算节点,以统计每组样本平台配置信息分别对应的总执行时长,最后可以基于多组样本平台配置信息和分别对应的总执行时长,确定较优的将多个计算节点分配到多个硬件运算平台的分配方式。通过本公开实施例提供的方法,避免了技术人员凭借个人的经验为每个计算节点的子运行代码分配硬件运算平台。本公开实施例更能保证分配的合理性,进而可以保证异构硬件设备能够以较短的整体执行时长快速运行机器学习模型对应的运行代码。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。在附图中:

图1是根据一示例性实施例示出的一种计算机设备的结构示意图;

图2是根据一示例性实施例示出的一种确定硬件运算平台分配方式的方法的流程示意图;

图3是根据一示例性实施例示出的一种确定硬件运算平台分配方式的方法的流程示意图;

图4是根据一示例性实施例示出的一种确定硬件运算平台分配方式的方法的流程示意图;

图5是根据一示例性实施例示出的一种确定硬件运算平台分配方式的方法的流程示意图;

图6是根据一示例性实施例示出的一种网络图的示意图;

图7是根据一示例性实施例示出的一种确定硬件运算平台分配方式的方法的流程示意图;

图8是根据一示例性实施例示出的一种确定硬件运算平台分配方式的装置的结构示意图;

图9是根据一示例性实施例示出的一种计算机设备的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供了一种确定硬件运算平台分配方式的方法,该方法可以由计算机设备实现。其中,计算机设备可以包括台式计算机、终端,终端可以是异构硬件设备,异构硬件设备可以设置有不同类型的硬件运算平台,如armcpu、dsp、nn硬核处理器等硬件运算平台。

如图1所示,计算机设备可以包括网络图生成单元101、节点分配单元102、网络图优化单元103、代码优化单元104。各单元具体能够实现的功能将会在后面进行详细介绍,这里先简单介绍一下各单元的功能。

如图2所示,网络图生成单元101可以执行步骤s201、步骤s202。步骤s201,获取用户输入的机器学习模型,对机器学习模型进行解析,将其转换为网络图。网络图可以由节点和边构成。可以把机器学习模型的输入数据、权重数据作为数据节点,把每个网络层(如卷积层、池化层、全连接层等)作为计算节点,不同节点之间可以通过边相连接,边则表示数据的输入、输出关系。步骤s202,对网络图进行基本的处理。例如,进行信息的配置处理,配置处理可以包括配置各节点的数据类型、排布方式、各计算节点的参数等。在步骤s202中,还可以完成基本的网络图的简化处理,例如拆分bn(batchnormalization,批量归一化)层、融合卷积层与scale层(一种类型的网络层)、融合卷积层与激活层等。节点分配单元102可以执行步骤s203、步骤s204。步骤s203,根据历史执行状态,结合用户指定的配置,确定各计算节点的硬件运算平台的分配方式。步骤s204,根据各节点的硬件运算平台的分配方式,实施与硬件运算平台相关的优化处理。代码优化单元104可以执行步骤s205、步骤s206、步骤s207。步骤s205,生成各计算节点对应的计算逻辑代码,实施与硬件运算平台特性相关的优化处理,得到优化代码。步骤s206,编译、执行优化代码,获取到机器学习模型的整体执行效率。步骤s207,判断当前的整体执行效率是否满足效率指标要求或者是否已达到最优整体执行效率,若是,则将当前获得的优化代码最为最终输出,否则,则转至步骤s203,从步骤s203继续往后面的步骤执行。

本公开一示例性实施例提供了一种确定硬件运算平台分配方式的方法,如图3所示,该方法的处理流程可以包括如下的步骤:

步骤s301,确定待运行的机器学习模型中包括的多个计算节点。

其中,每个计算节点对应机器学习模型中的一个网络层。

在实施中,用户可以通过深度学习框架对机器学习模型进行描述,如pytorch深度学习框架。用户可以将机器学习模型输入到计算机设备中,计算机设备可以获取机器学习模型。计算机设备可以自动将通过pytorch深度学习框架等编写的机器学习模型转换为通过ir(intermediaterepresentation,中间表达)深度学习框架表示的网络图代码。

ir语言侧重的是对机器学习模型的结构的描述,重点关注的是初始输入数据、权重数据和不同计算层之间的关系。在ir语言中,可以把输入数据、权重数据作为数据节点,把每个网络层作为计算节点,不同节点之间可以通过边相连接,边表示数据的输入输出关系。这样可以认为通过ir语言描述了机器学习模型的结构,得到了一个机器学习模型对应的网络图。计算机设备还可以对网络图进行配置处理、简化处理等。

因此当用户输入机器学习模型之后,计算机设备可以自动基于机器学习模型生成网络图,基于网络图确定机器学习模型中包括的多个计算节点。

步骤s302,获取多个计算节点对应的多组样本平台配置信息。

其中,每组样本平台配置信息对应一种将多个计算节点分配到多个预设的硬件运算平台的分配方式。

在实施中,可以为每个计算节点分配一个硬件运算平台,不同计算节点分配到的硬件运算平台可以相同也可以不同。例如,当前有5个计算节点,包括节点a、b、c、d、e,当前有3个硬件运算平台,包括armcpu、dsp、nn硬核处理器,可以将节点a、b、c、d、e分配到armcpu、dsp、nn硬核处理器中,如将a和c分配到armcpu,将b和e分配到dsp,将d分配到nn硬核处理器,这样就可以得到一组样本平台配置信息,每组样本平台配置信息对应一种将多个计算节点分配到多个预设的硬件运算平台的分配方式。如果换一种方式对上述5个计算节点和3个硬件运算平台进行分配,又可以得到另外一组样本平台配置信息。以此类推,可以得到多组样本平台配置信息。

除了可以让计算机设备自由对计算节点和硬件运算平台进行分配之外,还可以让用户对分配方式进行约束。用户还可以输入配置约束,计算机设备可以根据用户输入的配置约束构建硬件运算平台的分配空间。用户可以将特定类型的计算节点指定到特定的硬件运算平台中执行。例如,用户可以将所有卷积层对应的计算节点指定到nn硬核处理器中执行。

假如当前有m个硬件运算平台,有n个计算节点,n个计算节点中的p个计算节点为在用户的配置约束中已完成配置的节点的数目,n个计算节点中的q个计算节点为未在用户的配置约束中指定硬件运算平台的节点。理论上q个计算节点中的每个节点都可以分配到任一一个硬件运算平台上执行。在本公开实施例中,可以用1~m来标识硬件运算平台,当前有q个计算节点需要分配硬件运算平台,q个计算节点中的每个节点可能分配到的硬件运算平台为1~m中的一个数值,q个计算节点对应的分配空间则可以记为qm。n个计算节点对应的平台配置信息则可以记为一个长度为n位,每位取值为1~m中任一数值的平台配置序列c。

样本平台配置信息为历史执行机器学习模型对应的运行代码过程之后获取到的数据,在初始执行本公开实施例提供的方法时,计算机设备中还未存储有样本平台配置信息。因此可以判断当前是否存储有样本平台配置信息,如果当前未存储有样本平台配置信息,则可以随机生成一组样本平台配置信息,作为初始样本平台配置信息,也可以称为初始平台配置序列c。后续可以通过循环执行运行代码以获取多组样本平台配置信息,就可以不通过随机生成的方式获取样本平台配置信息了。

步骤s303,对于每组样本平台配置信息,基于样本平台配置信息控制将多个计算节点分配到各硬件运算平台,控制各硬件运算平台执行分配到的各计算节点,统计各硬件运算平台执行多个计算节点的总执行时长,作为样本平台配置信息对应的总执行时长。

在实施中,对于每组样本平台配置信息,意味着得到了一种将多个计算节点分配到多个预设的硬件运算平台的分配方式,可以参照样本平台配置信息,实际控制将多个计算节点(这里可以认为是计算节点对应的运行代码)分配到各硬件运算平台。本公开实施例提供的方法可以通过计算机设备如台式计算机实现,技术人员可以先准备一个异构硬件运算平台如手机,在手机中可以设置有armcpu、dsp、nn硬核处理器,手机可以通过usb(universalserialbus,通用串行总线)等接口和台式计算机相连,可以在台式计算机中先确定样本平台配置信息,然后基于样本平台配置信息控制手机对计算节点和硬件运算平台进行分配。

手机可以基于台式计算机的控制,将各计算节点分配到样本平台配置信息中指定的硬件运算平台中,由实际的硬件运算平台执行分配到的计算节点。这样台式计算机可以统计从开始控制执行各计算节点,到手机中的硬件运算平台输出最后一个计算节点对应的运算结果所需的总执行时长。将统计到的上述总执行时长,确定为样本平台配置信息对应的总执行时长。

步骤s304,基于多组样本平台配置信息和分别对应的总执行时长,确定优化平台配置信息。

可选地,步骤s304可以包括:确定多个计算节点对应的所有样本平台配置信息的数目;如果数目大于或者等于预设数目阈值,则基于多组样本平台配置信息和分别对应的总执行时长、以及预设的平台配置信息优化方法,确定优化平台配置信息;如果数目小于预设数目阈值,则在所有样本平台配置信息中,确定对应的总执行时长最短的优化平台配置信息。

在实施中,计算机设备可以初步统计多个计算节点对应的所有样本平台配置信息的数目,即分配空间,可以记为qm。如果qm小于预设数目阈值,则表示分配空间较小,因此可以获取所有样本平台配置信息以及分别对应的总执行时长,在所有样本平台配置信息中,确定对应的总执行时长最短的优化平台配置信息。

上述方式可以称为全局遍历的方式,除了上述方式之外,当qm小于预设数目阈值时还可以通过随机生成的方式,确定优化平台配置信息。例如,qm为10000,可以在10000个样本平台配置信息中随机选择5000个样本平台配置信息,获取5000个样本平台配置信息以及分别对应的总执行时长,在5000个样本平台配置信息中,确定对应的总执行时长最短的优化平台配置信息。

如果qm大于或者等于预设数目阈值,则表示分配空间较大,难以能够获取到所有样本平台配置信息以及分别对应的总执行时长,例如当qm为几亿级的数值时,难以让计算机设备挨个基于每组样本平台配置信息试执行机器学习模型对应的运行代码,因此可以通过预设的平台配置信息优化方法,在数目小于qm的样本平台配置信息中找到优化平台配置信息。

可选地,基于多组样本平台配置信息和分别对应的总执行时长、以及预设的平台配置信息优化方法,确定优化平台配置信息的步骤可以包括:获取待训练的配置优化器模型;基于多组样本平台配置信息和分别对应的总执行时长,对待训练的配置优化器模型进行训练,得到训练后的配置优化器模型;基于训练后的配置优化器模型,确定优化平台配置信息。

在实施中,可以将多组样本平台配置信息和分别对应的总执行时长作为训练数据,对待训练的配置优化器模型进行训练,这样训练后的配置优化器模型就可以在所有样本平台配置信息中,预测出一个优化平台配置信息。

如果qm大于或者等于预设数目阈值,则表示分配空间较大,难以能够获取到所有样本平台配置信息以及分别对应的总执行时长,此时则可以通过决策树、随机森林等机器学习算法构建配置优化器模型。

本公开实施例中的步骤s301至步骤s304可以由前面提到的节点分配单元102实现。在节点分配单元102中,如图4所示,可以执行以下步骤。

步骤s401,根据用户输入的配置约束,构建硬件运算平台的分配空间。

步骤s402,判断当前是否存储有样本平台配置信息。

步骤s403,如果当前未存储有样本平台配置信息,则可以随机生成一组样本平台配置信息,作为初始样本平台配置信息。

步骤s404,根据训练数据,调整配置优化器模型。

在该步骤中,可以每次只获取一组样本平台配置信息和对应的总执行时长,基于该组样本平台配置信息和对应的总执行时长,调整配置优化器模型。在对配置优化器模型进行过一次调整之后,配置优化器模型可以在分配空间中,选择一组当前确认为比较好的样本平台配置信息。硬件运行平台可以执行该比较好的样本平台配置信息,得到比较好的样本平台配置信息对应的总执行时长。后续可以再基于比较好的样本平台配置信息和对应的总执行时长,再次调整配置优化器模型。这样每次对配置优化器模型进行调整之后,配置优化器模型都可以在分配空间中,选择一组当前确认为比较好的样本平台配置信息。

例如,在第5次调整配置优化器模型时,配置优化器模型确认为样本平台配置信息x比较好,但是实际上样本平台配置信息x可能更接近最优配置了,随着对配置优化器模型不断地进行调整,在第6次调整配置优化器模型时,配置优化器模型确认为样本平台配置信息y比较好。配置优化器模型随着训练次数的增多,会在分配空间中,不断找寻更优的样本平台配置信息。

步骤s405,控制当前的配置优化器模型,输出一组新的样本平台配置信息。

在执行步骤s405之后,可以转至执行步骤s404,从步骤s404继续往后执行,直到满足一定条件之后,得到优化平台配置信息,执行步骤s406。

步骤s406,获取优化平台配置信息,基于优化平台配置信息,配置网络图中各计算节点的硬件运算平台,完成硬件运算平台分配的过程。

在配置网络图中各计算节点的硬件运算平台之后,可以进入网络图优化单元103。在网络图优化单元103中,如图5所示,可以执行以下步骤。

步骤s501,获取计算节点配置有硬件运算平台的网络图,根据网络图的结构以及各计算节点的配置信息,顺序执行各硬件运算平台的优化处理。

优化处理可以包括系数内存排布转换,节点融合,内存复用优化等。以节点融合处理为例进行说明,如果存在nn硬核处理器,且nn硬核处理器能够支持卷积操作后接池化操作,则该类型的nn硬核处理器在编译框架中对应存在一个优化遍。可以在当前的网络图中查找卷积层对应的计算节点后接池化层对应的计算节点的这种结构,如果二者的配置信息均为上述类型的nn硬核处理器,则可以将这两个计算节点融合为一个计算节点。

步骤s502,根据网络图的结构以及各计算节点的配置信息,生成计算节点的执行顺序序列。

在该步骤中,可以找出能够并行执行的计算节点。例如,在图6中,节点node101、node102就可以和node201并行执行,因为它们在结构中不存在数据依赖关系,同时还因为它们对应的硬件运算平台也不相同,node101、node102的硬件运算平台为plat_id:0,node201的硬件运算平台为plat_id:1。它们对应的执行顺序序列为node0->((node101->node102)||(node201))->node3,其中”||”符号表示并行关系。

可选地,本公开实施例提供的方法还可以包括:获取机器学习模型对应的运行代码;基于优化平台配置信息,对运行代码进行优化处理。

在确定了较优的将多个计算节点分配到多个硬件运算平台的分配方式之后,可以实际在各硬件运算平台中运行分配到的计算节点的运行代码。在实际运行计算节点的运行代码之前,可以先基于机器学习模型对应的运行代码,确定各计算节点的运行代码,基于优化平台配置信息,对各计算节点的运行代码进行优化处理,运行优化处理后的运行代码,这样运行代码运行的效率更高。

可选地,基于优化平台配置信息,对运行代码进行优化处理的步骤可以包括:基于预设的硬件运算平台的类型、计算节点的类型和优化处理方式之间的对应关系,确定优化平台配置信息对应的至少一种优化处理方式;基于至少一种优化处理方式,对运行代码进行优化处理。

在实施中,基于优化平台配置信息,对运行代码进行优化处理的具体步骤可以在代码优化单元104实现,代码优化单元104可以通过不同方式基于优化平台配置信息和其他相关信息,生成优化后的运行代码,在本公开实施例提供提供两种实现方式,当然在实际应用中还可以通过其他可能的方式对运行代码进行优化,对此本公开实施例不作限定。

代码优化单元104可以基于预先建立的优化库对运行代码进行优化处理。例如,硬件运算平台为armcpu,arm相应的厂家在armcpu出厂时,预先可以建立一个专用于在armcpu中进行运算处理的运行代码的arm优化库,可以通过调用arm优化库中的相关优化函数(函数代码可以是c代码),来实现对运行代码的优化处理。或者,可以由技术人员对优化库进行开发,将开发得到的用于在不同硬件运算平台进行对不同类型的运算的优化函数存储到优化库中,后续可以基于预先建立的优化库对运行代码进行优化处理。

除了上述方式之外,在代码优化单元104中,如图7所示,还可以执行以下步骤来对运行代码进行自动化优化处理。

步骤s701,按照计算节点的执行顺序序列,逐个获取计算节点,确定当前获取到的计算节点对应的计算逻辑代码。

对于卷积类型的运算,编译框架可以直接提供其计算定义,并存储有对应的计算逻辑代码。但是对于机器学习模型中的私有网络层来说,需要用户提供私有网络层的计算逻辑定义,描述计算过程。在获取计算逻辑代码之后,可以对计算逻辑代码进行解析处理,以获取其核心操作(如加法操作、累加操作等)、输入张量、输出张量、中间过程张量等属性。

步骤s702,获取优化遍集合。

其中,优化遍集合为优化平台配置信息,对运行代码进行优化处理的步骤可以包括:基于预设的硬件运算平台的类型、计算节点的类型和优化处理方式之间的对应关系。

例如,对于dsp类型的硬件运算平台,其优化遍集合可以包括:输出张量的数据切分优化、中间过程张量的dma(directmemoryaccess,直接内存存取)绑定优化、输入输出张量的数据流并行优化、核心计算的平台计算核绑定优化、通用的循环优化等。

可以统计不同类型的硬件运算平台可以执行的优化处理,同时不同优化处理针对的计算节点的类型可能不同,因此可以对不同类型的硬件运算平台可以执行的针对不同类型的计算节点的优化处理进行统计,建立硬件运算平台的类型、计算节点的类型和优化处理方式之间的对应关系。这样当确定了优化平台配置信息之后,就可以确定将多个计算节点分配到多个预设的硬件运算平台的分配方式,进而就可以基于对应关系确定优化平台配置信息对应的至少一种优化处理方式。

步骤s703,基于优化遍集合以及优化平台配置信息,将当前获取到的计算节点对应的计算逻辑代码转义为优化代码。

在优化代码中,仍然存在优化空间。以输出张量的数据切分优化为例,数据切分的方式有很多,在步骤s702中可以确定需要进行输出张量的数据切分优化类型的处理,但是具体如何进行输出张量的数据切分优化处理,到底如何对输出张量的数据进行切分还暂时不能确定。

步骤s704,获取代码优化器模型,结合实际效率测试数据,调整优化空间中的待定参数,将参数添加到优化代码中。

代码优化器模型可以采用机器学习或全局遍历的策略来更新优化空间配置。

步骤s705,将优化代码转义为平台能够编译的代码,对平台能够编译的代码进行编译,得到平台可执行文件。配合平台底层驱动,在当前的配置下,执行平台可执行文件,获取总执行时长。

平台能够编译的代码如c代码。

步骤s706,如果满足循环终止条件,则终止当前的循环。

如果当前获取的总执行时长能够达到用户指定的时长标准或者代码优化器模型判断当前已是最优状态,则输出平台能够编译的代码。如果当前获取的总执行时长不能达到用户指定的时长标准且代码优化器模型判断当前还不是最优状态,则转至执行步骤s704,从步骤s704继续往后执行。

通过上述步骤,不同网络层对应的优化处理后的运行代码通过自动化的方式生成,用户仅需提供自定义类型的网络层对应的最基本的计算逻辑描述即可,无需关注该逻辑在某个具体硬件运算平台上的优化过程。这样,一方面网络层的运算代码的开发工作量被降至最低,原本最为依赖人工经验和工作量的运行代码的优化过程,被本公开实施例中提供的优化遍集合和代码优化器自动完成;另一方面,自动化的优化过程能够在更大的优化空间中为运算代码寻找到更契合硬件运算平台特性的执行逻辑,在摆脱人工经验调优的同时,理论上能够获得的效率表现也更加优越。

通过上述步骤,便可以获取到各计算节点在优化平台配置下的最优执行代码。按照网络图优化单元103中生成的计算节点执行顺序序列,依次执行各节点对应的运行代码,便可获取到整个机器学习模型对应的执行效率,即总执行时长。

通过本公开的实施例,可以获取多个计算节点对应的多组样本平台配置信息,基于多组样本平台配置信息分别在硬件运算平台中控制实际运行各计算节点,以统计每组样本平台配置信息分别对应的总执行时长,最后可以基于多组样本平台配置信息和分别对应的总执行时长,确定较优的将多个计算节点分配到多个硬件运算平台的分配方式。通过本公开实施例提供的方法,避免了技术人员凭借个人的经验为每个计算节点的子运行代码分配硬件运算平台。本公开实施例更能保证分配的合理性,进而可以保证异构硬件设备能够以较短的整体执行时长快速运行机器学习模型对应的运行代码。

本公开又一示例性实施例提供了一种确定硬件运算平台分配方式的装置,如图8所示,该装置包括:

确定模块801,用于确定待运行的机器学习模型中包括的多个计算节点,其中,每个计算节点对应所述机器学习模型中的一个网络层;

获取模块802,用于获取所述多个计算节点对应的多组样本平台配置信息,其中,每组样本平台配置信息对应一种将所述多个计算节点分配到多个预设的硬件运算平台的分配方式;

执行模块803,用于对于每组样本平台配置信息,基于所述样本平台配置信息控制将所述多个计算节点分配到各硬件运算平台,控制所述各硬件运算平台执行分配到的各计算节点,统计所述各硬件运算平台执行所述多个计算节点的总执行时长,作为所述样本平台配置信息对应的总执行时长;

所述确定模块801,用于基于所述多组样本平台配置信息和分别对应的总执行时长,确定优化平台配置信息。

可选地,所述确定模块801,用于:

确定所述多个计算节点对应的所有样本平台配置信息的数目;

如果所述数目大于或者等于预设数目阈值,则基于所述多组样本平台配置信息和分别对应的总执行时长、以及预设的平台配置信息优化装置,确定优化平台配置信息;

如果所述数目小于所述预设数目阈值,则在所有样本平台配置信息中,确定对应的总执行时长最短的优化平台配置信息。

可选地,所述确定模块801,用于:

获取待训练的配置优化器模型;

基于所述多组样本平台配置信息和分别对应的总执行时长,对所述待训练的配置优化器模型进行训练,得到训练后的配置优化器模型;

基于所述训练后的配置优化器模型,确定优化平台配置信息。

可选地,所述获取模块802,还用于获取所述机器学习模型对应的运行代码;

所述装置还包括:

优化模块,用于基于所述优化平台配置信息,对所述运行代码进行优化处理。

可选地,所述优化模块,用于:

基于预设的硬件运算平台的类型、计算节点的类型和优化处理方式之间的对应关系,确定所述优化平台配置信息对应的至少一种优化处理方式;

基于所述至少一种优化处理方式,对所述运行代码进行优化处理。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

通过本公开的实施例,可以获取多个计算节点对应的多组样本平台配置信息,基于多组样本平台配置信息分别在硬件运算平台中控制实际运行各计算节点,以统计每组样本平台配置信息分别对应的总执行时长,最后可以基于多组样本平台配置信息和分别对应的总执行时长,确定较优的将多个计算节点分配到多个硬件运算平台的分配方式。通过本公开实施例提供的装置,避免了技术人员凭借个人的经验为每个计算节点的子运行代码分配硬件运算平台。本公开实施例更能保证分配的合理性,进而可以保证异构硬件设备能够以较短的整体执行时长快速运行机器学习模型对应的运行代码。

需要说明的是:上述实施例提供的确定硬件运算平台分配方式的装置在确定硬件运算平台分配方式时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的确定硬件运算平台分配方式的装置与确定硬件运算平台分配方式的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图9示出了本公开一个示例性实施例提供的计算机设备1900的结构示意图。该计算机设备1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)1910和一个或一个以上的存储器1920。其中,所述存储器1920中存储有至少一条指令,所述至少一条指令由所述处理器1910加载并执行以实现上述实施例所述的确定硬件运算平台分配方式的方法。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

再多了解一些
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1