CN115660049B - 模型处理方法、装置、电子设备以及存储介质 - Google Patents
模型处理方法、装置、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN115660049B CN115660049B CN202211365241.7A CN202211365241A CN115660049B CN 115660049 B CN115660049 B CN 115660049B CN 202211365241 A CN202211365241 A CN 202211365241A CN 115660049 B CN115660049 B CN 115660049B
- Authority
- CN
- China
- Prior art keywords
- operator
- processed
- data
- data format
- model
- 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
Abstract
本公开提供了一种模型处理方法,涉及人工智能技术领域,尤其涉及深度学习技术领域和计算机技术领域。具体实现方案为:按照层级结构,对待处理模型中的多个算子依序进行识别;在确定识别到启动算子的情况下,确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间是否匹配,启动算子为预定的用于启动数据格式转换的算子,标准数据格式与运行硬件单元相适配,运行硬件单元为用于运行启动算子的硬件单元;在确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配的情况下,在启动算子之前的待处理模型上添加第一转换算子。本公开还提供了一种模型处理装置、电子设备和存储介质。
Description
技术领域
本公开涉及人工智能技术领域,尤其涉及深度学习技术领域和计算机技术领域。具体地,涉及一种模型处理方法、装置、电子设备、存储介质和程序产品。
背景技术
深度学习模型包括多个算子,算子是深度学习模型中的基本计算单元。深度学习模型的训练和应用可在运行硬件单元例如图形处理器、中央处理器等上运行。算子、运行硬件单元与输入数据彼此之间的协作,成为深度学习模型运算性能的重要影响因素。
发明内容
本公开提供了一种模型处理方法、装置、电子设备、存储介质以及程序产品。
根据本公开的一方面,提供了一种数据处理方法,包括:按照层级结构,对待处理模型中的多个算子依序进行识别;在确定识别到启动算子的情况下,确定上述启动算子的输入数据的数据格式与上述启动算子的标准数据格式之间是否匹配,其中,上述启动算子为预定的用于启动数据格式转换的算子,上述标准数据格式与运行硬件单元相适配,上述运行硬件单元为用于运行上述启动算子的硬件单元;在确定上述启动算子的输入数据的数据格式与上述启动算子的标准数据格式之间不匹配的情况下,在上述启动算子之前的上述待处理模型上添加第一转换算子,其中,上述第一转换算子用于转换上述启动算子的输入数据的数据格式,以生成与上述启动算子的标准数据格式相匹配的目标数据。
根据本公开的另一方面,提供了一种模型处理装置,包括:识别模块,用于按照层级结构,对待处理模型中的多个算子依序进行识别;格式确定模块,用于在确定识别到启动算子的情况下,确定上述启动算子的输入数据的数据格式与上述启动算子的标准数据格式之间是否匹配,其中,上述启动算子为预定的用于启动数据格式转换的算子,上述标准数据格式与运行硬件单元相适配,上述运行硬件单元为用于运行上述启动算子的硬件单元;转换模块,用于在确定上述启动算子的输入数据的数据格式与上述启动算子的标准数据格式之间不匹配的情况下,在上述启动算子之前的上述待处理模型上添加第一转换算子,其中,上述第一转换算子用于转换上述启动算子的输入数据的数据格式,以生成与上述启动算子的标准数据格式相匹配的目标数据。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器;其中,上述存储器存储有可被上述至少一个处理器执行的指令,上述指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行如本公开的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行如本公开的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现如本公开的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示意性示出了根据本公开实施例的可以应用模型处理方法及装置的模型训练方法流程图;
图2示意性示出了根据本公开实施例的模型处理方法的流程图;
图3示意性示出了根据本公开实施例的识别启动算子的流程图;
图4示意性示出了根据本公开实施例的算子处理模式标识图;
图5示意性示出了根据本公开另一实施例的模型处理方法的流程示意图;
图6示意性示出了根据本公开实施例的模型处理装置的框图;以及
图7示意性示出了根据本公开实施例的适于实现模型处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开提供了一种模型处理方法、装置、电子设备、存储介质以及程序产品。
根据本公开的实施例,提供了一种模型处理方法,包括:按照层级结构,对待处理模型中的多个算子依序进行识别;在确定识别到启动算子的情况下,确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间是否匹配,其中,启动算子为预定的用于启动数据格式转换的算子,标准数据格式与运行硬件单元相适配,运行硬件单元为用于运行启动算子的硬件单元;以及在确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配的情况下,在启动算子之前的待处理模型上添加第一转换算子,其中,第一转换算子用于转换启动算子的输入数据的数据格式,以生成与启动算子的标准数据格式相匹配的目标数据。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
图1示意性示出了根据本公开实施例的可以应用模型处理方法及装置的模型训练方法流程图。
如图1所示,本公开实施例提供的模型处理方法,可以应用于模型训练的过程中。模型训练方法100可以包括操作S110~S140。
在操作S110,构建待处理模型。
在操作S120,获取训练样本。
根据本公开的实施例,训练样本包括输入数据和标签。
在操作S130,基于训练样本的输入数据,利用模型处理方法对待处理模型进行处理,得到目标模型。
在操作S140,利用训练样本训练目标模型,得到经训练的目标模型。
根据本公开的实施例,待处理模型包括多个算子。算子可以是待处理模型中完成计算功能的代码集合。算子可以包括用于计算的参数和计算操作指令等。按照计算类型不同,算子可以包括加法算子、乘法算子、卷积算子、反卷积算子、全连接算子、归一化算子、池化算子、线性整流函数激活算子等。
根据本公开的实施例,利用训练样本训练目标模型的实现,依赖于将算子部署于运行硬件单元上。算子在运行硬件单元上运行,输入数据的数据格式对运行硬件单元和算子均具有性能影响。利用本公开实施例提供的模型处理方法,能够将输入数据的数据格式进行转换,使得目标模型、运行硬件单元以及输入数据的数据格式彼此之间适配,能够在充分发挥运行硬件单元的特性的同时,提高目标模型的训练效率。
需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他环境或场景。
应注意,以下方法中各个操作的序号仅作为该操作的表示以便描述,而不应被看作表示该各个操作的执行顺序。除非明确指出,否则该方法不需要完全按照所示顺序来执行。
图2示意性示出了根据本公开实施例的模型处理方法的流程图。
如图2所示,该方法200包括操作S210~S230。
在操作S210,按照层级结构,对待处理模型中的多个算子依序进行识别。
在操作S220,在确定识别到启动算子的情况下,确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间是否匹配。
根据本公开的实施例,启动算子为预定的用于启动数据格式转换的算子,标准数据格式与运行硬件单元相适配,运行硬件单元为用于运行启动算子的硬件单元。
在操作S230,在确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配的情况下,在启动算子之前的待处理模型上添加第一转换算子。
根据本公开的实施例,第一转换算子用于转换启动算子的输入数据的数据格式,以生成与启动算子的标准数据格式相匹配的目标数据。
根据本公开的实施例,待处理模型包括深度学习模型。例如,按照网络结构分类,待处理模型可以包括以下至少一项:卷积神经网络模型、深度神经网络模型、循环神经网络模型。按照功能类型分类,待处理模型可以包括以下至少一项:语音处理模型、图像处理模型、视频处理模型、文字处理模型。
根据本公开的实施例,层级结构可以指待处理模型的多个算子的布局结构。例如,多个算子的层级结构指示了用于处理输入至待处理模型的输入数据的流程顺序。
以用于提取图像特征的模型作为待处理模型为例,待处理模型包括呈链式连接的第一卷积算子、第二卷积算子、第三卷积算子和全连接算子。按照层级结构,对待处理模型中的多个算子依序进行识别,可以包括:按照第一卷积算子、第二卷积算子、第三卷积算子和全连接算子的顺序识别。
根据本公开的实施例,启动算子为预定的用于启动数据格式转换的算子。可以从影响模型处理效率或者模型性能的多个算子中确定至少一个算子作为启动算子。也可以预先测量多个算子各自对模型的效率影响值或者性能影响值。按照影响值由高到低的顺序,对多个算子进行排序。将排在首位的算子作为启动算子。
根据本公开的实施例,在确定识别到启动算子的情况下,确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间是否匹配。在两者不匹配的情况下,在启动算子之前的待处理模型上添加第一转换算子。
根据本公开的实施例,输入数据的数据格式可以指:输入数据的排布方式或者布局方式。例如,数据格式包括NCHW(数量通道高度宽度)和NHWC(数量高度宽度通道)等第一种数据格式或者NZ(矩阵数据格式)和ND(向量数据格式)等第二种数据格式。
根据本公开的实施例,部分算子在相同运行硬件单元上采用不同数据格式会产生性能差异。以图形处理器GPU作为运行硬件单元为例,对于FP32数据类型的输入数据,仅支持NCHW数据格式,而对于FP16数据类型的输入数据,则支持NCHW和NHWC两种数据格式。
根据本公开的实施例,转换算子为算子的一种类型,用于转换数据格式。第一转换算子用于转换启动算子的输入数据的数据格式,以生成与启动算子的标准数据格式相匹配的目标数据。标准数据格式是与用于运行启动算子的运行硬件单元相适配的数据格式。
例如,对于启动算子,部署在GPU运行硬件单元上,标准数据格式为NHWC。而在启动算子的输入数据的数据格式为NCHW的情况下,可以在启动算子之前的待处理模型上添加第一转换算子,利用第一转换算子将输入数据的数据格式进行转换,生成标准数据格式的输入数据。
根据本公开的实施例,利用第一转换算子将启动算子的输入数据的数据格式进行转换,使输入数据的数据格式与标准数据格式相匹配,进而能够达到与运行硬件单元相适配。由此能够使得运行硬件单元的运行性能充分发挥,进而提高添加第一转换算子后的目标模型的运算效率。
根据一相关示例,对待处理模型不进行启动算子识别操作,只要在确定待处理模型的算子的输入数据与运行硬件单元所适配的标准数据格式之间不匹配的情况下,在该算子之前的待处理模型上添加转换算子,以使得运行硬件单元达到性能最优。
例如,按照层级结构,待处理模型依序包括算子A、算子B、启动算子C以及算子D。算子A、算子B、启动算子C以及算子D各自的输入数据的数据格式与标准数据格式均不匹配。按照相关示例,则依次在多个算子之前分别添加转换算子T。生成的新模型依序包括转换算子T、算子A、转换算子T、算子B、转换算子T、启动算子C、转换算子T以及算子D。
本公开实施例将启动算子作为预定的用于启动数据格式转换的算子。在待处理模型的启动算子之前的算子不做数据格式转换的处理,而在确定识别到启动算子的情况下,在确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配的情况下,才启动数据格式转换的操作,例如在启动算子之前的待处理模型上添加第一转换算子。则如上例,利用本公开实施例提供的模型处理方法,生成的新模型依序包括算子A、算子B、转换算子T、启动算子C、转换算子T以及算子D。
根据本公开的实施例,启动算子是从类型不同的多个算子中确定的一类算子。启动算子对模型的运算效率影响大。以运行硬件单元为GPU的Tensor Core为例,在启动算子为卷积算子的情况下,将启动算子的输入数据的数据格式与标准数据格式之间匹配,则提高了卷积算子的卷积计算的速度,充分发挥了算子性能。而对待处理模型的启动算子之前的算子进行数据格式转换的处理,且不对启动算子进行处理,则处理后的模型的性能几乎没有变化。
通过以上分析可知,与对待处理模型不进行启动算子识别操作的模型处理方法相比,利用本公开实施例提供的模型处理方法,可以在识别到启动算子的情况下,启动数据格式转换的操作,由此在提高模型整体运算效率的同时,简化处理过程。进而避免由过多的数据格式转换而导致模型性能下降。
根据另一相关示例,还可以设置算子具有自动转换数据格式的功能或者通过修改待处理模型的配置参数或者结构来与输入数据的数据格式相适配。
与上述相关示例相比,利用本公开实施例提供的模型处理方法,能够避免因算子具有自动转换数据格式的功能而引入额外转换代价或者占用大量人力的问题,实现自动调配,在提高模型的运算性能的同时,解放人力。
可以理解,上文对本公开的方法进行了说明,下面将结合具体实施例以及图3~图5对本公开提供的方法作进一步详细说明。
根据本公开的实施例,按照层级结构,对待处理模型中的多个算子依序进行识别,可以包括如下具体操作。
例如,按照层级结构,重复执行下述操作,直至识别到启动算子:
识别待处理模型中的当前层级算子的属性信息。基于当前层级算子的属性信息,确定当前层级算子是否为启动算子。在确定当前层级算子不是启动算子的情况下,将下一层级算子作为当前层级算子。
需要说明的是,待处理模型中的多个算子,也存在不包括启动算子的情况。在确定待处理模型中的多个算子不包括启动算子的情况下,可以认为待处理模型为与运行硬件单元适配的模型,可以直接在运行硬件单元上进行训练或者应用。
根据本公开的实施例,算子的属性信息可以包括以下至少一项:用于部署算子的运行硬件单元信息、算子的运算类型信息、算子的标识信息、算子的结构信息。
根据本公开的实施例,运行硬件单元包括以下至少一项:图形处理器、中央处理器、神经网络处理器。运行硬件单元信息可以包括运行硬件单元的标识信息、运行硬件单元的核信息、与运行硬件单元相适配的标准数据格式的信息。
根据本公开的实施例,启动算子为预先确定的算子,已预先确定启动算子的预定属性信息。将当前层级算子的属性信息与预定属性信息进行比对,在确定当前层级算子的属性信息与预定属性信息之间匹配的情况下,确定当前层级算子为启动算子。在确定当前层级算子的属性信息与预定属性信息之间不匹配的情况下,确定将下一层级算子作为当前层级算子,循环迭代。
根据本公开的实施例,本公开提供的模型处理方法,仅将层级结构中属性信息满足预定要求的第一个算子作为启动算子,利用上述方式识别启动算子,精准有效。
图3示意性示出了根据本公开实施例的识别启动算子的流程图。
如图3所示,按照层级结构,对待处理模型中的多个算子依序进行识别,可以具体包括操作S310~S360。
在操作S310,识别待处理模型中的当前层级算子的标识信息。
在操作S320,确定当前层级算子的标识信息与预定启动算子标识信息之间是否匹配。在确定当前层级算子的标识信息与预定启动算子标识信息之间匹配的情况下,执行操作S330,否则,执行操作S360。
在操作S330,确定当前层级算子的运行硬件单元信息。
根据本公开的实施例,运行硬件单元信息表征用于运行当前层级算子的运行硬件单元的信息。
在操作S340,确定运行硬件单元信息与预定运行硬件单元信息之间是否匹配。在确定运行硬件单元信息与预定运行硬件单元信息之间匹配的情况下,执行操作S350,否则,执行操作S360。
在操作S350,确定当前层级算子为启动算子。
在操作S360,将下一层级算子作为当前层级算子。
根据本公开的实施例,针对操作S350,在确定当前层级算子为启动算子的情况下,停止操作。针对操作S360,在确定当前层级算子不为启动算子的情况下,可以确定当前层级算子是否为待处理模型的最后一层级。在确定当前层级算子不为最后一层级的情况下,将下一层级算子作为当前层级算子,并执行操作S310。在确定当前层级算子为最后一层级的情况下,停止操作。由此利用上述方式,避免重复操作的死循环。
根据本公开的实施例,可以利用标识信息确定当前层级算子是否为启动算子。
与仅利用标识信息确定算子是否为启动算子相比,将标识信息与运行硬件单元信息相结合,确定算子是否为启动算子,充分体现了与运行硬件单元的适配要求,使得启动算子的识别结果精准、有效,避免将部署在无需考虑数据格式的运行硬件单元的算子作为启动算子,造成额外转换代价的问题。
根据本公开的实施例,可以仅考虑待处理模型中的启动算子,在确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配的情况下,在启动算子之前的待处理模型上添加第一转换算子。而对待处理模型的启动算子之前以及启动算子之后的算子不做数据格式匹配与否的识别操作。但是并不局限于此。还可以对待处理模型的启动算子之后的算子做数据格式匹配与否的识别操作,由此通过将其他算子的输入数据的数据格式与运行硬件单元达到适配,来提高模型的运算效率。
下面将详细介绍对待处理模型中的层级结构在启动算子之后的算子的处理。
根据本公开的实施例,在操作230后,模型处理方法还包括如下操作。
例如,将待处理模型中的层级结构在启动算子之后的算子作为待处理算子。确定待处理算子的处理模式。按照与待处理算子的处理模式相匹配的处理模式,处理待处理模型。
以用于提取图像特征的模型作为待处理模型为例,待处理模型包括呈链式连接的第一卷积算子、第二卷积算子、第三卷积算子和全连接算子。第一卷积算子为启动算子,则待处理算子包括第二卷积算子、第三卷积算子和全连接算子。
根据本公开的实施例,不同类型的算子,运算类型、结构复杂程度、适用部署的运行硬件单元均不同。可以按照算子的输入数据的数据格式对模型的影响程度,例如对模型的性能影响值或者对模型的处理效率影响值来确定待处理算子的处理模式。按照与待处理算子相匹配的处理模式,处理待处理模型。由此提高模型调优针对性、灵活性,进而充分发挥运行硬件单元的性能以及提高模型的运算效率。
根据本公开的实施例,可以基于待处理算子的属性信息,确定待处理算子的处理模式。
根据本公开的实施例,待处理算子的属性信息可以包括以下至少一项:用于部署算子的运行硬件单元信息、算子的运算类型信息、算子的标识信息、算子的结构信息。
根据本公开的实施例,属性信息可以包括标识信息。可以基于待处理算子的标识信息,从算子处理模式标识图中确定待处理算子的处理模式。
图4示意性示出了根据本公开实施例的算子处理模式标识图。
如图4所示,圆球表征算子,每个算子标识有标识信息,例如卷子算子Conv、归一化算子BN、线性整流函数激活算子Relu、池化算子Pool、加和算子Add等。利用直线与每个算子对应有处理模式,例如三角形框表征第一处理模式P1、方形框表征第二处理处理模式P2和五边形框表征第三处理模式P3。处理模式标识的形状与处理模式相匹配。可以基于待处理算子的标识信息,从算子处理模式标识图中确定处理模式标识。基于处理模式标识,确定待处理算子的处理模式。
根据本公开的实施例,可以基于待处理算子的属性信息,从算子处理模式标识图中确定待处理算子的处理模式。但是并不局限于此。还可以基于待处理算子的属性信息,从算子处理模式表中确定待处理算子的处理模式。算子处理模式表包括算子的属性信息例如标识信息与算子的处理模式之间的映射关系。
根据本公开的实施例,确定待处理算子的处理模式还可以包括如下操作。
例如,基于待处理算子的标识信息,从算子敏感度分类表中确定待处理算子的数据布局敏感度。算子敏感度分类表包括算子的标识信息与算子的数据布局敏感度之间的映射关系。在确定待处理算子的数据布局敏感度大于或者等于敏感度阈值的情况下,确定待处理算子是候选待处理算子。在确定待处理算子是候选待处理算子的情况下,确定待处理算子的处理模式。
根据本公开的实施例,算子敏感度分类表可以是预先构建的。可以基于算子的属性信息,来确定算子的数据布局敏感度。算子的属性信息可以包括以下至少一项:用于部署算子的运行硬件单元信息、算子的运算类型信息、算子的结构信息。
根据本公开的实施例,可以将待处理算子对模型的效率影响值或者性能影响值与数据布局敏感度相对应。影响值越高,则数据布局敏感度越高。
根据本公开的实施例,可以根据实际情况,自行确定敏感度阈值。在确定待处理算子的数据布局敏感度小于敏感度阈值的情况下,停止对待处理算子的操作。
例如,数据布局敏感度小于敏感度阈值的待处理算子,例如Relu,Elementwise_Add等。该类待处理算子部署在任一运行硬件单元上,针对任意数据格式的输入数据,其性能均保持一致,不会因为输入数据的数据格式不同而产生性能差异。
根据本公开的实施例,可以利用数据布局敏感度和敏感度阈值,来对多个待处理算子进行筛选,滤除数据布局敏感度小于敏感度阈值的待处理算子,进而减小后续处理量,提高模型处理效率。
根据本公开的实施例,可以在确定待处理算子是候选待处理算子的情况下,通过如下方式确定待处理算子的处理模式。
例如,在确定待处理算子是候选待处理算子的情况下,基于待处理算子的标识信息,从算子处理模式分类表中确定待处理算子的处理模式,其中,算子处理模式分类表中包括算子的标识信息与算子的处理模式之间的映射关系。
根据本公开的实施例,算子处理模式分类表可以根据实际情况预先构建。但是并不局限于此。还可以将算子处理模式分类表与算子敏感度分类表合为一个算子分类表。算子分类表通过列表的方式,同时体现包括算子的标识信息与算子的数据布局敏感度之间的映射关系以及算子的标识信息与算子的处理模式之间的映射关系。
根据本公开的实施例,处理模式包括第一处理模式。在处理模式为第一处理模式的情况下,按照与待处理算子的处理模式相匹配的处理模式,处理待处理模型,可以包括如下操作。
例如,基于待处理算子的处理模式,在确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间不匹配的情况下,在待处理算子之前的待处理模型上添加第二转换算子。第二转换算子用于转换待处理算子的输入数据的数据格式,以生成与待处理算子的标准数据格式相匹配的目标数据。
根据本公开的实施例,第一处理模式可以表征数据布局敏感度为最高级,例如重度敏感的待处理算子的处理模式。
需要说明的是,启动算子可以是从表征数据布局敏感度为最高级的多个算子中确定的。
根据本公开的实施例,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配,可以包括:基于用于运行待处理算子的运行硬件信息,确定待处理算子的标准数据格式;确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配。需要说明的是,下述第二处理模式中的确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配的方式与第一处理模式相同,在此不再赘述。
根据本公开的实施例,采用第一处理模式,针对数据布局敏感度较高的待处理算子,可以在确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间不匹配的情况下,在待处理算子之前的待处理模型上添加第二转换算子。以利用第二转换算子,将待处理算子的输入数据的格式进行转换,生成与待处理算子的标准数据格式相匹配的目标数据。由此来提高模型的运算性能。
根据本公开的实施例,第一处理模式可以表征数据布局敏感度为最高级,例如重度敏感的待处理算子的处理模式。但是并不局限于此。第一处理模式也可以表征数据布局敏感度为次级,例如轻微敏感的待处理算子的处理模式。还可以利用第二处理模式来表征数据布局敏感度为次级的待处理算子的处理模式。以适应不同类型的多种轻微敏感的待处理算子。
下述将详细介绍利用第二处理模式处理待处理模型。
根据本公开的实施例,第二处理模式还可以包括多个第二处理子模式。可以在确定处理模式采用第二处理模式的情况下,从多个第二处理子模式中确定目标第二处理子模式。
根据本公开的实施例,对第二处理模式进行细化,分为多个第二处理子模式,能够使得待处理模型的处理粒度细,进而提高待处理模型的优化程度。
根据本公开的实施例,从多个第二处理子模式中确定目标第二处理子模式,可以包括如下操作。
例如,确定待处理算子的函数类型。基于待处理算子的函数类型,确定待处理算子的输入数据的数据类型。基于待处理算子的输入数据的数据类型,从多个第二处理子模式中确定目标第二处理子模式。
根据本公开的实施例,待处理算子的函数类型可以指运算类型。输入数据的数据类型可以包括输入数据的数据数量、数据种类以及数据属性等。输入数据的数据类型与函数类型对应。
例如,处理模式为第二处理模式,例如数据布局敏感度为轻微敏感的待处理算子,可以包括ArgMax函数算子、Concat(通道特征拼接)融合算子以及Reduce(规约)算子等。Concat融合算子的输入数据的数据类型为两个输入数据。ArgMax函数算子的输入数据的数据类型包括用于限定输入数据的属性数据。
根据本公开的实施例,可以基于待处理算子的输入数据的数据类型,从多个第二处理子模式中确定目标第二处理子模式。由此在提高本公开提供的模型处理方法的广泛性的同时,提高模型处理方法的针对性。
根据本公开的实施例,在确定待处理算子的输入数据的数据类型为第一预定数据类型的情况下,可以采用与第一预定数据类型相匹配的目标第二处理子模式处理待处理模型。
例如,在确定待处理算子的输入数据的数据类型为第一预定数据类型的情况下,基于待处理算子的多个输入子数据各自的数据格式以及待处理算子的输出数据的数据格式,从待处理算子的多个输入分支中确定候选输入分支。在待处理模型上的候选输入分支上添加第三转换算子。第三转换算子用于转换待处理算子的候选输入分支上的输入子数据的数据格式。
根据本公开的实施例,第一预定数据类型为待处理算子的输入数据包括多个输入子数据的类型。对应的待处理算子可以包括Add(特征图相加)融合算子、Concat融合算子等。
根据本公开的实施例,多个输入子数据与多个输入分支一一对应。
根据本公开的实施例,基于待处理算子的多个输入子数据各自的数据格式以及待处理算子的输出数据的数据格式,从待处理算子的多个输入分支中确定候选输入分支,可以包括:基于待处理算子的多个输入子数据各自的数据格式以及待处理算子的输出数据的数据格式,确定多个输入子数据的数据格式是否需要转换。在确定目标输入子数据需要转换数据格式的情况下,从待处理算子的多个输入分支中确定与目标输入子数据相匹配的输入分支作为候选输入分支。
例如,在多个输入子数据各自的数据格式相同,且待处理算子的输出数据的数据格式与多个输入子数据各自的数据格式也相同的情况下,则不存在候选输入分支。在多个输入子数据各自的数据格式不相同的情况下,则基于待处理算子的输出数据的数据格式,从多个输入子数据中确定数据格式与待处理算子的输出数据的数据格式不匹配的目标输入子数据。将与目标输入子数据相对应的输入分支作为候选输入分支。
根据本公开的实施例,利用上述处理方式,能够对不同的待处理算子的输入数据,采用不同的方式进行调优,在对待处理模型精准调优的同时,提高调优效率。
根据本公开的实施例,在确定待处理算子的输入数据的数据类型为第二预定数据类型的情况下,可以采用与第二预定数据类型相匹配的目标第二处理子模式处理待处理模型。
例如,在确定待处理算子的输入数据的数据类型为第二预定数据类型的情况下,基于待处理算子的输入数据的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配。在确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间不匹配的情况下,在待处理算子之前的待处理模型上添加第四转换算子。第四转换算子用于转换待处理算子的输入数据的数据格式。
根据本公开的实施例,第二预定数据类型为待处理算子的输入数据包括用于限定输入数据的属性数据的类型。对应的待处理算子可以包括Broadcast_Add算子。
根据本公开的实施例,属性数据可以包括用于补充说明输入数据的数据,但是并不局限于此,还可以包括用于约束待处理算子对输入数据进行运算的数据。
例如,针对待处理算子为ArgMax函数算子,在进行运算的过程中,通常依赖输入数据的属性数据例如矩阵参数,例如张量的层级-轴(axis)进行运算。
例如,原始的三维矩阵的参数shape=[3,4,5],shape=[3,4,5]表征3个二维数组,每个二维数组有4个一维数组,每个一维数据长度为5。利用axis=0约束,得到的矩阵的shepe=[4,5],shepe=[4,5]表征4个一维数组,每个一维数组长度为5。
根据本公开的实施例,基于待处理算子的输入数据的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配,可以包括:调整待处理算子的输入数据的属性数据,得到调整后的属性数据。基于调整后的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配。
根据本公开的实施例,基于调整后的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配,可以包括:基于调整后的属性数据,确定是否可以实现数据格式的等效转换的效果。例如,可以通过调整后的属性数据,来等效完成输入数据的数据格式与待处理算子的标准数据格式之间匹配,而不需要执行在待处理模型的待处理算子之前添加第四转换算子的操作。但是也存在通过调整后的属性数据,仍无法完成等效变换的效果。在此情况下,则确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间不匹配,需要执行在待处理模型的待处理算子之前添加第四转换算子的操作。
例如,调整待处理算子的输入数据的属性数据,可以是指将属性数据进行对应变换。例如,输入数据的数据格式与维度数据相对应。利用矩阵参数axis对输入数据的通道维度进行规约操作。在输入数据的数据格式为NHWC的情况下,axis为-1或3。调整axis为1来确定输入数据的数据格式是否与标准数据格式NCHW相匹配。
根据本公开的实施例,利用对属性数据进行调整,基于调整后的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配,可以简化待处理模型的网络结构,进而提高待处理模型的运算效率。
图5示意性示出了根据本公开另一实施例的模型处理方法的流程示意图。
如图5所示,第一待处理模型510包括堆叠的卷积算子Conv、归一化算子BN、线性整流函数激活算子Relu和池化算子Pool等。按照层级结构,对待处理模型510中的多个算子依序进行识别,识别到卷积算子Conv为启动算子。卷积算子Conv的运行硬件单元为GPU的Tensor Core,与GPU的Tensor Core相适配的标准数据格式为NHWC。确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配。在启动算子之前的待处理模型上添加第一转换算子T1,得到第二待处理模型520。在第一转换算子T1将输入数据的数据格式转换为适配的标准数据格式的情况下,卷积算子Conv得到输出数据,输出数据作为归一化算子BN的输入数据,依序进行传递。
将第二待处理模型中的归一化算子BN、线性整流函数激活算子Relu和池化算子Pool等算子作为待处理算子。基于待处理算子的标识信息,确定待处理算子的数据布局敏感度。确定归一化算子BN的数据布局敏感度大于敏感度阈值,为候选待处理算子。并确定归一化算子BN的处理模式为第一处理模式。归一化算子BN的运行硬件单元也为GPU的TensorCore,归一化算子BN的输入数据的数据格式与标准数据格式相匹配,无需进行输入数据的格式转换。类似地,确定线性整流函数激活算子Relu的数据布局敏感度小于敏感度阈值,不做处理。确定池化算子Pool的数据布局敏感度大于敏感度阈值,为候选待处理算子。并确定池化算子Pool的处理模式为第一处理模式。池化算子Pool的运行硬件单元为GPU的CudaCore,池化算子Pool的输入数据的数据格式与标准数据格式之间不匹配,需进行输入数据的格式转换,则在池化算子Pool之前的待处理模型520上添加第二转换算子T2。在确定待处理模型520中的多个待处理算子各自均已按照相匹配的处理模式处理完毕的情况下,得到处理后模型530。
图6示意性示出了根据本公开实施例的模型处理装置的框图。
如图6所示,模型处理装置600,包括:识别模块610、格式确定模块620、转换模块630。
识别模块610,用于按照层级结构,对待处理模型中的多个算子依序进行识别。
格式确定模块620,用于在确定识别到启动算子的情况下,确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间是否匹配,其中,启动算子为预定的用于启动数据格式转换的算子,标准数据格式与运行硬件单元相适配,运行硬件单元为用于运行启动算子的硬件单元。
转换模块630,用于在确定启动算子的输入数据的数据格式与启动算子的标准数据格式之间不匹配的情况下,在启动算子之前的待处理模型上添加第一转换算子,其中,第一转换算子用于转换启动算子的输入数据的数据格式,以生成与启动算子的标准数据格式相匹配的目标数据。
根据本公开的实施例,识别模块包括:第一识别子模块。
第一识别子模块,用于按照层级结构,重复执行下述操作,直至识别到启动算子。
根据本公开的实施例,第一识别子模块包括:属性识别单元、第一确定单元以及第二确定单元。
属性识别单元,用于识别待处理模型中的当前层级算子的属性信息。
第一确定单元,用于基于当前层级算子的属性信息,确定当前层级算子是否为启动算子。
第二确定单元,用于在确定当前层级算子不是启动算子的情况下,将下一层级算子作为当前层级算子。
根据本公开的实施例,识别模块包括:第二识别子模块。
第二识别子模块,用于按照层级结构,重复执行下述操作,直至识别到启动算子。
根据本公开的实施例,第二识别子模块包括:标识识别单元、硬件识别单元、第三确定单元以及第四确定单元。
标识识别单元,用于识别待处理模型中的当前层级算子的标识信息。
硬件识别单元,用于在确定当前层级算子的标识信息与预定启动算子标识信息之间匹配的情况下,确定当前层级算子的运行硬件单元信息,其中,运行硬件单元信息表征用于运行当前层级算子的运行硬件单元的信息。
第三确定单元,用于在确定运行硬件单元信息与预定运行硬件单元信息之间匹配的情况下,确定当前层级算子为启动算子。
第四确定单元,用于在确定当前层级算子的标识与预定启动算子标识之间不匹配或者运行硬件单元信息与预定运行硬件单元信息之间不匹配的情况下,将下一层级算子作为当前层级算子。
根据本公开的实施例,模型处理装置还包括,在转模块之后:算子确定模块、模式确定模块以及处理模块。
算子确定模块,用于将待处理模型中的层级结构在启动算子之后的算子作为待处理算子。
模式确定模块,用于确定待处理算子的处理模式。
处理模块,用于按照与待处理算子的处理模式相匹配的处理模式,处理待处理模型。
根据本公开的实施例,处理模式包括第一处理模式。
根据本公开的实施例,处理模块包括:第一转换子模块。
第一转换子模块,用于基于待处理算子的处理模式,在确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间不匹配的情况下,在待处理算子之前的待处理模型上添加第二转换算子,其中,第二转换算子用于转换待处理算子的输入数据的数据格式,以生成与待处理算子的标准数据格式相匹配的目标数据。
根据本公开的实施例,处理模式包括第二处理模式。
根据本公开的实施例,处理模块包括:第一确定子模块以及第二转换子模块。
第一确定子模块,用于在确定待处理算子的输入数据的数据类型为第一预定数据类型的情况下,基于待处理算子的多个输入子数据各自的数据格式以及待处理算子的输出数据的数据格式,从待处理算子的多个输入分支中确定候选输入分支,其中,第一预定数据类型为待处理算子的输入数据包括多个输入子数据的类型。
第二转换子模块,用于在待处理模型上的候选输入分支上添加第三转换算子,其中,第三转换算子用于转换待处理算子的候选输入分支上的输入子数据的数据格式。
根据本公开的实施例,处理模式包括第二处理模式。
根据本公开的实施例,处理模块包括:第二确定子模块以及第三转换子模块。
第二确定子模块,用于在确定待处理算子的输入数据的数据类型为第二预定数据类型的情况下,基于待处理算子的输入数据的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配,其中,第二预定数据类型为待处理算子的输入数据包括用于限定输入数据的属性数据的类型。
第三转换子模块,用于在确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间不匹配的情况下,在待处理算子之前的待处理模型上添加第四转换算子,其中,第四转换算子用于转换待处理算子的输入数据的数据格式。
根据本公开的实施例,第二确定子模块包括:调整单元以及个数确定单元。
调整单元,用于调整待处理算子的输入数据的属性数据,得到调整后的属性数据。
格式确定单元,用于基于调整后的属性数据,确定待处理算子的输入数据的数据格式与待处理算子的标准数据格式之间是否匹配。
根据本公开的实施例,处理模块,还包括:第三确定子模块以及第四确定子模块。
第三确定子模块,用于确定待处理算子的函数类型。
第四确定子模块,用于基于待处理算子的函数类型,确定待处理算子的输入数据的数据类型。
根据本公开的实施例,模式确定模块,包括:模式确定子模块。
模式确定子模块,用于在确定待处理算子是候选待处理算子的情况下,确定待处理算子的处理模式。
根据本公开的实施例,模式确定模块,还包括:敏感度确定子模块以及候选算子确定子模块。
敏感度确定子模块,用于基于待处理算子的标识信息,从算子敏感度分类表中确定待处理算子的数据布局敏感度,其中,算子敏感度分类表包括算子的标识信息与算子的数据布局敏感度之间的映射关系。
候选算子确定子模块,用于在确定待处理算子的数据布局敏感度大于或者等于敏感度阈值的情况下,确定待处理算子是候选待处理算子。
根据本公开的实施例,模式确定子模块包括:模式确定单元。
模式确定单元,用于在确定待处理算子是候选待处理算子的情况下,基于待处理算子的标识信息,从算子处理模式分类表中确定待处理算子的处理模式,其中,算子处理模式分类表中包括算子的标识信息与算子的处理模式之间的映射关系。
根据本公开的实施例,运行硬件单元包括以下至少一项:图形处理器、中央处理器、神经网络处理器。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
根据本公开的实施例,一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如本公开实施例的方法。
根据本公开的实施例,一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如本公开实施例的方法。
根据本公开的实施例,一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如本公开实施例的方法。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如模型处理方法。例如,在一些实施例中,模型处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的模型处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行模型处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以是分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (28)
1.一种模型处理方法,包括:
按照层级结构,对待处理模型中的多个算子依序进行识别;
在确定识别到启动算子的情况下,确定所述启动算子的输入数据的数据格式与所述启动算子的标准数据格式之间是否匹配,其中,所述启动算子为预定的用于启动数据格式转换的算子,所述标准数据格式与运行硬件单元相适配,所述运行硬件单元为用于运行所述启动算子的硬件单元;以及
在确定所述启动算子的输入数据的数据格式与所述启动算子的标准数据格式之间不匹配的情况下,在所述启动算子之前的所述待处理模型上添加第一转换算子,其中,所述第一转换算子用于转换所述启动算子的输入数据的数据格式,以生成与所述启动算子的标准数据格式相匹配的目标数据。
2.根据权利要求1所述的方法,其中,所述按照层级结构,对待处理模型中的多个算子依序进行识别,包括:
按照层级结构,重复执行下述操作,直至识别到所述启动算子:
识别所述待处理模型中的当前层级算子的属性信息;
基于所述当前层级算子的属性信息,确定所述当前层级算子是否为所述启动算子;以及
在确定所述当前层级算子不是所述启动算子的情况下,将下一层级算子作为所述当前层级算子。
3.根据权利要求2所述的方法,其中,所述按照层级结构,对待处理模型中的多个算子依序进行识别,包括:
按照层级结构,重复执行下述操作,直至识别到所述启动算子:
识别所述待处理模型中的当前层级算子的标识信息;
在确定所述当前层级算子的标识信息与预定启动算子标识信息之间匹配的情况下,确定所述当前层级算子的运行硬件单元信息,其中,所述运行硬件单元信息表征用于运行所述当前层级算子的运行硬件单元的信息;
在确定所述运行硬件单元信息与预定运行硬件单元信息之间匹配的情况下,确定所述当前层级算子为所述启动算子;以及
在确定所述当前层级算子的标识与所述预定启动算子标识之间不匹配或者所述运行硬件单元信息与所述预定运行硬件单元信息之间不匹配的情况下,将下一层级算子作为所述当前层级算子。
4.根据权利要求1所述的方法,还包括,在所述在确定所述启动算子的输入数据的数据格式与所述启动算子的标准数据格式之间不匹配的情况下,在所述启动算子之前的所述待处理模型上添加转换算子之后:
将所述待处理模型中的层级结构在所述启动算子之后的算子作为待处理算子;
确定所述待处理算子的处理模式;以及
按照与所述待处理算子的处理模式相匹配的处理模式,处理所述待处理模型。
5.根据权利要求4所述的方法,其中,所述处理模式包括第一处理模式;
所述按照与所述待处理算子的处理模式相匹配的处理模式,处理所述待处理模型,包括:
基于所述待处理算子的处理模式,在确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间不匹配的情况下,在所述待处理算子之前的所述待处理模型上添加第二转换算子,其中,所述第二转换算子用于转换所述待处理算子的输入数据的数据格式,以生成与所述待处理算子的标准数据格式相匹配的目标数据。
6.根据权利要求4所述的方法,其中,所述处理模式包括第二处理模式;
所述按照与所述待处理算子的处理模式相匹配的处理模式,处理所述待处理模型,包括:
在确定所述待处理算子的输入数据的数据类型为第一预定数据类型的情况下,基于所述待处理算子的多个输入子数据各自的数据格式以及所述待处理算子的输出数据的数据格式,从所述待处理算子的多个输入分支中确定候选输入分支,其中,所述第一预定数据类型为所述待处理算子的输入数据包括多个输入子数据的类型;以及
在所述待处理模型上的所述候选输入分支上添加第三转换算子,其中,所述第三转换算子用于转换所述待处理算子的所述候选输入分支上的输入子数据的数据格式。
7.根据权利要求4所述的方法,其中,所述处理模式包括第二处理模式;
所述按照与所述待处理算子的处理模式相匹配的处理模式,处理所述待处理模型,包括:
在确定所述待处理算子的输入数据的数据类型为第二预定数据类型的情况下,基于所述待处理算子的输入数据的属性数据,确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间是否匹配,其中,所述第二预定数据类型为所述待处理算子的输入数据包括用于限定所述输入数据的属性数据的类型;以及
在确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间不匹配的情况下,在所述待处理算子之前的所述待处理模型上添加第四转换算子,其中,所述第四转换算子用于转换所述待处理算子的输入数据的数据格式。
8. 根据权利要求7所述的方法,其中,所述基于所述待处理算子的输入数据的属性数据,确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间是否匹配,包括:
调整所述待处理算子的输入数据的属性数据,得到调整后的属性数据;以及
基于所述调整后的属性数据,确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间是否匹配。
9. 根据权利要求6-8中任一项所述的方法,其中,所述按照与所述待处理算子的处理模式相匹配的处理模式,处理所述待处理模型,还包括:
确定所述待处理算子的函数类型;以及
基于所述待处理算子的函数类型,确定所述待处理算子的输入数据的数据类型。
10.根据权利要求4所述的方法,其中,所述确定所述待处理算子的处理模式,包括:
在确定所述待处理算子是候选待处理算子的情况下,确定所述待处理算子的处理模式。
11. 根据权利要求10所述的方法,其中,所述确定所述待处理算子的处理模式,还包括:
基于所述待处理算子的标识信息,从算子敏感度分类表中确定待处理算子的数据布局敏感度,其中,所述算子敏感度分类表包括算子的标识信息与算子的数据布局敏感度之间的映射关系;以及
在确定所述待处理算子的数据布局敏感度大于或者等于敏感度阈值的情况下,确定所述待处理算子是所述候选待处理算子。
12.根据权利要求10所述的方法,其中,
所述在确定所述待处理算子是候选待处理算子的情况下,确定所述待处理算子的处理模式,包括:
在确定所述待处理算子是所述候选待处理算子的情况下,基于所述待处理算子的标识信息,从算子处理模式分类表中确定所述待处理算子的处理模式,其中,所述算子处理模式分类表中包括算子的标识信息与算子的处理模式之间的映射关系。
13.根据权利要求1所述的方法,其中,所述运行硬件单元包括以下至少一项:图形处理器、中央处理器、神经网络处理器。
14.一种模型处理装置,包括:
识别模块,用于按照层级结构,对待处理模型中的多个算子依序进行识别;
格式确定模块,用于在确定识别到启动算子的情况下,确定所述启动算子的输入数据的数据格式与所述启动算子的标准数据格式之间是否匹配,其中,所述启动算子为预定的用于启动数据格式转换的算子,所述标准数据格式与运行硬件单元相适配,所述运行硬件单元为用于运行所述启动算子的硬件单元;以及
转换模块,用于在确定所述启动算子的输入数据的数据格式与所述启动算子的标准数据格式之间不匹配的情况下,在所述启动算子之前的所述待处理模型上添加第一转换算子,其中,所述第一转换算子用于转换所述启动算子的输入数据的数据格式,以生成与所述启动算子的标准数据格式相匹配的目标数据。
15.根据权利要求14所述的装置,其中,所述识别模块包括:
第一识别子模块,用于按照层级结构,重复执行下述操作,直至识别到所述启动算子:
其中,所述第一识别子模块包括:
属性识别单元,用于识别所述待处理模型中的当前层级算子的属性信息;
第一确定单元,用于基于所述当前层级算子的属性信息,确定所述当前层级算子是否为所述启动算子;以及
第二确定单元,用于在确定所述当前层级算子不是所述启动算子的情况下,将下一层级算子作为所述当前层级算子。
16.根据权利要求15所述的装置,其中,所述识别模块包括:
第二识别子模块,用于按照层级结构,重复执行下述操作,直至识别到所述启动算子:
其中,所述第二识别子模块包括:
标识识别单元,用于识别所述待处理模型中的当前层级算子的标识信息;
硬件识别单元,用于在确定所述当前层级算子的标识信息与预定启动算子标识信息之间匹配的情况下,确定所述当前层级算子的运行硬件单元信息,其中,所述运行硬件单元信息表征用于运行所述当前层级算子的运行硬件单元的信息;
第三确定单元,用于在确定所述运行硬件单元信息与预定运行硬件单元信息之间匹配的情况下,确定所述当前层级算子为所述启动算子;以及
第四确定单元,用于在确定所述当前层级算子的标识与所述预定启动算子标识之间不匹配或者所述运行硬件单元信息与所述预定运行硬件单元信息之间不匹配的情况下,将下一层级算子作为所述当前层级算子。
17.根据权利要求14所述的装置,还包括,在所述转换模块之后:
算子确定模块,用于将所述待处理模型中的层级结构在所述启动算子之后的算子作为待处理算子;
模式确定模块,用于确定所述待处理算子的处理模式;以及
处理模块,用于按照与所述待处理算子的处理模式相匹配的处理模式,处理所述待处理模型。
18.根据权利要求17所述的装置,其中,所述处理模式包括第一处理模式;
所述处理模块包括:
第一转换子模块,用于基于所述待处理算子的处理模式,在确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间不匹配的情况下,在所述待处理算子之前的所述待处理模型上添加第二转换算子,其中,所述第二转换算子用于转换所述待处理算子的输入数据的数据格式,以生成与所述待处理算子的标准数据格式相匹配的目标数据。
19.根据权利要求17所述的装置,其中,所述处理模式包括第二处理模式;
所述处理模块包括:
第一确定子模块,用于在确定所述待处理算子的输入数据的数据类型为第一预定数据类型的情况下,基于所述待处理算子的多个输入子数据各自的数据格式以及所述待处理算子的输出数据的数据格式,从所述待处理算子的多个输入分支中确定候选输入分支,其中,所述第一预定数据类型为所述待处理算子的输入数据包括多个输入子数据的类型;以及
第二转换子模块,用于在所述待处理模型上的所述候选输入分支上添加第三转换算子,其中,所述第三转换算子用于转换所述待处理算子的所述候选输入分支上的输入子数据的数据格式。
20.根据权利要求17所述的装置,其中,所述处理模式包括第二处理模式;
所述处理模块包括:
第二确定子模块,用于在确定所述待处理算子的输入数据的数据类型为第二预定数据类型的情况下,基于所述待处理算子的输入数据的属性数据,确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间是否匹配,其中,所述第二预定数据类型为所述待处理算子的输入数据包括用于限定所述输入数据的属性数据的类型;以及
第三转换子模块,用于在确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间不匹配的情况下,在所述待处理算子之前的所述待处理模型上添加第四转换算子,其中,所述第四转换算子用于转换所述待处理算子的输入数据的数据格式。
21. 根据权利要求20所述的装置,其中,所述第二确定子模块包括:
调整单元,用于调整所述待处理算子的输入数据的属性数据,得到调整后的属性数据;以及
格式确定单元,用于基于所述调整后的属性数据,确定所述待处理算子的输入数据的数据格式与所述待处理算子的标准数据格式之间是否匹配。
22. 根据权利要求19-21中任一项所述的装置,其中,所述处理模块,还包括:
第三确定子模块,用于确定所述待处理算子的函数类型;以及
第四确定子模块,用于基于所述待处理算子的函数类型,确定所述待处理算子的输入数据的数据类型。
23.根据权利要求17所述的装置,其中,所述模式确定模块,包括:
模式确定子模块,用于在确定所述待处理算子是候选待处理算子的情况下,确定所述待处理算子的处理模式。
24. 根据权利要求23所述的装置,其中,所述模式确定模块,还包括:
敏感度确定子模块,用于基于所述待处理算子的标识信息,从算子敏感度分类表中确定待处理算子的数据布局敏感度,其中,所述算子敏感度分类表包括算子的标识信息与算子的数据布局敏感度之间的映射关系;以及
候选算子确定子模块,用于在确定所述待处理算子的数据布局敏感度大于或者等于敏感度阈值的情况下,确定所述待处理算子是所述候选待处理算子。
25.根据权利要求23所述的装置,其中,所述模式确定子模块包括:
模式确定单元,用于在确定所述待处理算子是所述候选待处理算子的情况下,基于所述待处理算子的标识信息,从算子处理模式分类表中确定所述待处理算子的处理模式,其中,所述算子处理模式分类表中包括算子的标识信息与算子的处理模式之间的映射关系。
26.根据权利要求14所述的装置,其中,所述运行硬件单元包括以下至少一项:图形处理器、中央处理器、神经网络处理器。
27. 一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-13中任一项所述的方法。
28.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211365241.7A CN115660049B (zh) | 2022-11-02 | 2022-11-02 | 模型处理方法、装置、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211365241.7A CN115660049B (zh) | 2022-11-02 | 2022-11-02 | 模型处理方法、装置、电子设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115660049A CN115660049A (zh) | 2023-01-31 |
CN115660049B true CN115660049B (zh) | 2023-07-25 |
Family
ID=84994445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211365241.7A Active CN115660049B (zh) | 2022-11-02 | 2022-11-02 | 模型处理方法、装置、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115660049B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866590A (zh) * | 2019-10-22 | 2020-03-06 | Oppo广东移动通信有限公司 | 数据处理方法及装置、电子设备、存储介质 |
CN111783124A (zh) * | 2020-07-07 | 2020-10-16 | 矩阵元技术(深圳)有限公司 | 基于隐私保护的数据处理方法、装置和服务器 |
CN112328674A (zh) * | 2020-11-17 | 2021-02-05 | 深圳力维智联技术有限公司 | 跨数据格式的模型转化加速方法及装置 |
CN112487075A (zh) * | 2020-12-29 | 2021-03-12 | 中科院计算技术研究所大数据研究院 | 一种集成关系型和非关系型数据库数据转换的算子 |
CN113065665A (zh) * | 2021-03-04 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种模型算子对比方法、系统及存储介质 |
CN113449841A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 插入转换算子的方法和装置 |
CN113449857A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
WO2022141513A1 (zh) * | 2020-12-31 | 2022-07-07 | 华为技术有限公司 | 模型处理方法和装置 |
CN114862656A (zh) * | 2022-05-18 | 2022-08-05 | 北京百度网讯科技有限公司 | 基于多gpu的分布式深度学习模型训练代价的获取方法 |
CN114997418A (zh) * | 2022-06-17 | 2022-09-02 | 上海富数科技有限公司广州分公司 | 数据处理方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10643144B2 (en) * | 2015-06-05 | 2020-05-05 | Facebook, Inc. | Machine learning system flow authoring tool |
-
2022
- 2022-11-02 CN CN202211365241.7A patent/CN115660049B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866590A (zh) * | 2019-10-22 | 2020-03-06 | Oppo广东移动通信有限公司 | 数据处理方法及装置、电子设备、存储介质 |
CN113449841A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 插入转换算子的方法和装置 |
CN113449857A (zh) * | 2020-03-27 | 2021-09-28 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
CN111783124A (zh) * | 2020-07-07 | 2020-10-16 | 矩阵元技术(深圳)有限公司 | 基于隐私保护的数据处理方法、装置和服务器 |
CN112328674A (zh) * | 2020-11-17 | 2021-02-05 | 深圳力维智联技术有限公司 | 跨数据格式的模型转化加速方法及装置 |
CN112487075A (zh) * | 2020-12-29 | 2021-03-12 | 中科院计算技术研究所大数据研究院 | 一种集成关系型和非关系型数据库数据转换的算子 |
WO2022141513A1 (zh) * | 2020-12-31 | 2022-07-07 | 华为技术有限公司 | 模型处理方法和装置 |
CN113065665A (zh) * | 2021-03-04 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种模型算子对比方法、系统及存储介质 |
CN114862656A (zh) * | 2022-05-18 | 2022-08-05 | 北京百度网讯科技有限公司 | 基于多gpu的分布式深度学习模型训练代价的获取方法 |
CN114997418A (zh) * | 2022-06-17 | 2022-09-02 | 上海富数科技有限公司广州分公司 | 数据处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
ALT:Boosting Deep Learning Performance by Breaking the Wall between Graph and Operator Level Optimizations;Zhiying Xu,Jiafan Xu;《arXiv:2201.12415v4》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115660049A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113255694B (zh) | 训练图像特征提取模型和提取图像特征的方法、装置 | |
CN112949710B (zh) | 一种图像的聚类方法和装置 | |
EP4050570A2 (en) | Method for generating image classification model, roadside device and cloud control platform | |
US20230162477A1 (en) | Method for training model based on knowledge distillation, and electronic device | |
CN113222942A (zh) | 多标签分类模型的训练方法和预测标签的方法 | |
CN113360700B (zh) | 图文检索模型的训练和图文检索方法、装置、设备和介质 | |
CN115690443A (zh) | 特征提取模型训练方法、图像分类方法及相关装置 | |
CN115660049B (zh) | 模型处理方法、装置、电子设备以及存储介质 | |
CN115809688B (zh) | 一种模型调试方法、装置、电子设备及存储介质 | |
US20230005171A1 (en) | Visual positioning method, related apparatus and computer program product | |
CN113792804B (zh) | 图像识别模型的训练方法、图像识别方法、装置及设备 | |
CN114863450B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN113627526B (zh) | 车辆标识的识别方法、装置、电子设备和介质 | |
CN116246127A (zh) | 图像模型训练方法、图像处理方法、装置、介质及设备 | |
CN113516185B (zh) | 模型训练的方法、装置、电子设备及存储介质 | |
CN116016686A (zh) | 待优化节点的确定方法、装置、电子设备和介质 | |
CN113032251B (zh) | 应用程序服务质量的确定方法、设备和存储介质 | |
CN114707638A (zh) | 模型训练、对象识别方法及装置、设备、介质和产品 | |
CN114897147A (zh) | 骨干网络的生成方法、装置、设备以及存储介质 | |
CN113903071A (zh) | 人脸识别方法、装置、电子设备和存储介质 | |
CN113792876A (zh) | 骨干网络的生成方法、装置、设备以及存储介质 | |
CN113963186A (zh) | 目标检测模型的训练方法、目标检测方法及相关装置 | |
CN113052175B (zh) | 目标检测方法、装置、电子设备及可读存储介质 | |
CN113312354B (zh) | 数据表的识别方法、装置、设备和存储介质 | |
CN112966606B (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 |