CN114611714B - 模型处理方法、装置、系统、电子设备及存储介质 - Google Patents

模型处理方法、装置、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN114611714B
CN114611714B CN202210506631.5A CN202210506631A CN114611714B CN 114611714 B CN114611714 B CN 114611714B CN 202210506631 A CN202210506631 A CN 202210506631A CN 114611714 B CN114611714 B CN 114611714B
Authority
CN
China
Prior art keywords
model
data
data object
leaf node
node
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
CN202210506631.5A
Other languages
English (en)
Other versions
CN114611714A (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.)
Chengdu Shuzhilian Technology Co Ltd
Original Assignee
Chengdu Shuzhilian Technology Co Ltd
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 Chengdu Shuzhilian Technology Co Ltd filed Critical Chengdu Shuzhilian Technology Co Ltd
Priority to CN202210506631.5A priority Critical patent/CN114611714B/zh
Publication of CN114611714A publication Critical patent/CN114611714A/zh
Application granted granted Critical
Publication of CN114611714B publication Critical patent/CN114611714B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Abstract

本发明实施例提出一种模型处理方法、装置、系统、电子设备及存储介质,属于数据处理领域,方法包括:对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值,从而按前向传播计算的顺序,对运行信息进行解析,得到深度学习模型的树结构数据对象,进而将树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。从而,得到的数据包严格与前向传播计算顺序相关,且包含模型的所有计算函数,故而,能够改善目前模型转换方法易于丢失部分信息的问题。

Description

模型处理方法、装置、系统、电子设备及存储介质
技术领域
本发明涉及数据处理领域,具体而言,涉及一种模型处理方法、装置、系统、电子设备及存储介质。
背景技术
深度学习作为机器学习中的一个重要分支,大量运用于各行各业中。深度学习模型作为一类应对复杂、高维度、非结构化的数据机器学习任务的模型,具有模型结构复杂、参数量大、高度模块化等特点。由于深度学习应用广阔,在实际工程应用中,同一个模型通常在不同的计算平台上应用。然而,由于框架和编程语言等不同,深度学习模型在不同计算平台上应用时,需要进行转换。
深度学习模型的转换涉及到模型解析、存储和翻译。然而,目前的深度学习模型转换的处理方法,存在丢失模型的部分信息的问题。
发明内容
有鉴于此,本发明的目的在于提供一种模型处理方法、装置、系统、电子设备及存储介质,其能够改善目前实现深度学习模型转换的处理方法,易于丢失模型部分信息的问题。
为了实现上述目的,本发明实施例采用的技术方案如下。
第一方面,本发明实施例提供一种模型处理方法,所述方法包括:
对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,所述运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值;
按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象;
其中,所述树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个所述非叶节点的数据对象包括该非叶节点的子节点信息;
将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
进一步,所述方法还包括:
根据目标平台的支持属性,按序对所述存储包和所述数据表进行翻译,得到与所述目标平台适配的目标模型。
进一步地,所述对源平台的深度学习模型进行运行记录封装,得到第一处理模型的步骤,包括:
为源平台的深度学习模型的所有计算函数绑定记录函数;
以所述记录函数的名称空间代替所述深度学习模型的框架的名称空间,得到第一处理模型。
进一步地,所述按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象的步骤,包括:
将所述运行信息中的各个数据,按照所述前向传播计算的顺序写入记录列表;
根据所述记录列表,利用所述调用栈信息,解析出所述深度学习模型的树结构信息,所述树结构信息包括叶节点、非叶节点和各个节点名称;
结合所述记录列表,解析出每个所述非叶节点的数据对象,所述非叶节点的数据对象包括计算图和输入输出定义;
结合所述记录列表,解析出每个所述叶节点的数据对象,所述叶节点的数据对象包括操作类型、参数、返回值和输入输出定义。
进一步地,所述结合所述记录列表,解析出每个所述非叶节点的数据对象的步骤,包括:
针对每个所述非叶节点,利用第一解析算法,将所述记录列表中所述非叶节点的数据和该非叶节点的子节点的数据作为输入,解析出所述非叶节点的计算图;
根据所述记录列表中所述非叶节点的实参副本和返回值,得到所述非叶节点的输入输出定义。
进一步地,所述结合所述记录列表,解析出每个所述叶节点的数据对象的步骤,包括:
针对每个所述叶节点,根据所述记录列表中所述叶节点的函数名,获取所述叶节点的操作类型;
根据所述记录列表中所述叶节点的计算函数,获取所述叶节点的参数;
根据所述记录列表中所述叶节点的计算函数和返回值,获取所述叶节点的输入输出定义。
进一步地,所述将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表的步骤,包括:
将所述树结构数据对象转换为二进制数据,得到待存数据对象;
利用存储算法,根据所述待存数据对象,遍历所述深度学习模型的树结构的每一个节点,得到每个所述节点的节点信息;
其中,所述叶节点的节点信息包括名称、操作类型、参数和输入输出定义,所述非叶节点的节点信息包括名称、子节点、计算图和输入输出定义;
将每个所述节点的节点信息,以键-值数据表的方式进行存储,得到数据表,将所述树结构数据对象打包成存储包。
进一步地,所述根据目标平台的支持属性,按序对所述数据表进行翻译,得到与所述目标平台适配的目标模型的步骤,包括;
利用读取算法,从所述数据表和所述存储包中读取出所述深度学习模型的节点信息;
利用所述目标平台提供的提取函数接口,从所述节点信息中提取出每个所述非叶节点的计算函数;
针对每个所述计算函数,根据符合所属非叶节点输入定义的参数表和模型参数,计算出符合所述非叶节点输出定义的张量表;
利用与所述目标平台适配的转换算法,根据所述张量表依次对每个所述非叶节点进行处理,得到目标模型。
进一步地,所述转换算法包括有向图拓扑排序算法;
所述利用与所述目标平台适配的转换算法,根据所述张量表依次对每个所述非叶节点进行处理,得到目标模型的步骤,包括:
利用有向图拓扑排序算法,对所述非叶节点的子节点进行排序;
按照排序结果,利用与所述目标平台适配的转换算法,根据所述张量表依次对每个所述非叶节点进行翻译,得到目标模型。
第二方面,本发明实施例提供一种模型处理装置,包括解析模块和存储模块;
所述解析模块,用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,所述运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值;
所述解析模块,还用于按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象;
其中,所述树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个所述非叶节点的数据对象包括该非叶节点的子节点信息;
所述存储模块,用于将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
第三方面,本发明实施例提供一种模型处理系统,包括通信连接的第一设备和第二设备,所述第一设备安装有源平台;
所述第一设备,用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,并按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象;
其中,所述运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值,所述树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个所述非叶节点的数据对象包括该非叶节点的子节点信息;
所述第一设备,还用于将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表;
所述第二设备,还用于接收所述第一设备发送的存储包和所述数据表。
进一步地,所述第二设备安装有目标平台;
所述第二设备,还用于根据目标平台的支持属性,按序对所述存储包和所述数据表进行翻译,得到与所述目标平台适配的目标模型。
第四方面,本发明实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器可执行所述计算机程序以实现如第一方面所述的模型处理方法。
第五方面,本发明实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的模型处理方法。
本发明实施例提供的模型处理方法、装置、系统、电子设备及存储介质,通过对深度学习模型进行运行记录封装,从而在模型进行前向传播计算时,记录计算时的运行信息,按序对运行信息进行解析,得到深度学习模型的树结构的每个节点的数据对象,进而将数据对象转换为二进制以字典数据进行存储,使得数据表中记录有每个节点的信息,存储包存储每个节点的信息,严格与前向传播计算顺序相关,从而完整记录深度学习模型的信息,改善目前的深度学习模型转换的处理方法易于丢失部分信息的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的电子设备的方框示意图之一。
图2示出了本发明实施例提供的模型处理方法的流程示意图之一。
图3示出了本发明实施例提供的模型处理方法的流程示意图之二。
图4示出了图2或图3中步骤S101的部分子步骤的流程示意图。
图5示出了图2或图3中步骤S103的部分子步骤的流程示意图。
图6示出了一种深度学习模型的树结构的示意图。
图7示出了图2或图3中步骤S105的部分子步骤的流程示意图。
图8示出了图3中步骤S107的部分子步骤的流程示意图。
图9示出了本发明实施例提供的模型处理系统的方框示意图。
图10示出了本发明实施例提供的模型处理装置的方框示意图。
图11示出了本发明实施例提供的电子设备的方框示意图之二。
附图标记:100-电子设备;110-模型处理系统;120-第一设备;130-第二设备;140-模型处理装置;150-解析模块;160-存储模块;170-翻译模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
深度学习作为机器学习中的一个重要分支,大量运用于各行各业中。深度学习模型作为一类应对复杂、高维度、非结构化的数据机器学习任务的模型,具有模型结构复杂、参数量大、高度模块化等特点。一般的,一个完整的深度学习模型,包括计算图、模块的树节点、各节点的输入输出类型、各节点的算子类型和参数等组成部分。
由于框架和编程语言等不同,深度学习模型在不同计算平台上应用时,需要进行转换。在不同的变成语言和深度学习框架下,深度学习模型的各个组成部分有着不同的表征和存储方式。这意味着,使用不同变成语言或深度学习框架而开发训练出的深度学习模型之间,无法直接转换。然而,由于深度学习应用广阔,在实际工程应用中,同一个模型通常在不同的计算平台上应用。
例如,开发人员常用Python语言与PyTorch、TensorFlow等深度学习框架进行模型的开发与训练,但在部署时,往往需要将模型运行在C++等编译型语言和TensorRT等高效的深度学习推理框架的计算环境中。又例如,习惯使用不同编程语言或深度学习框架的研究者或工程师,往往需要将他人开发的、使用不熟悉或无法接触的平台的模型,转化为自己熟悉的、可使用的平台能运行的模型。
深度学习模型的转换涉及到模型解析、模型存储和模型翻译。而现有的深度学习模型转换方法具有以下不足:
第一,大多数具有封闭性,即某一源平台只对相关联的目标平台具有完善的转换功能实现,而对其他平台支持情况不佳。例如,使用PyTorch开发的模型,能被较好地转化为同一团队开发的libtorch的C++运行时的模型,但对其他运行时平台的转换却不完善,例如缺少算子支持、模型层次结构丢失等。
第二,现有的深度学习模型转换方法不能完整地存储并翻译模型的完整语义结构,导致转换后丢失模型的部分信息。例如,ONNX不能支持模型模块的树结构层次,而是把所有模块均拆分为基本算子节点。再如,由于模型参数存储方式的限制,ONNX不能支持将模型的一部分作为组件提取出来,与其他模块重新连接,而这对模型开发而言是重要的功能。
基于上述考虑,本发明实施例提供一种模型处理方案,以改善目前的深度学习模型转换方法所存在的模型部分信息丢失、具有封闭性等问题。以下,将对该方案进行详细介绍。
本发明实施例提供的模型处理方法,可以应用于如图1所示的电子设备100,该电子设备100部署有源平台和目标平台,通过源平台进行模型开发和训练,得到深度学习模型。电子设备100对源平台上的深度学习模型进行解析,得到深度学习模型完整的树结构数据对象,并将树结构数据对象转为二进制数据,以字典数据的方式进行存储,得到存储包和数据表,从而基于该存储包和数据表,进行与目标平台适配的模型翻译,得到与目标平台适配的目标模型,实现将源平台上的深度学习模型转换到目标平台进行应用。
其中,电子设备100可以但不限于是:个人计算机、笔记本电脑、iPad和服务器,服务器可以是独立的服务器也可以是服务器集群。源平台和目标平台的编程语言可以一样,也可以不一样。
为了更详细地介绍模型处理方法,在一个实施例中,参照图2,提供一种模型处理方法,该方式包括以下步骤。本实施例中,以该方法应用于图1中的电子设备100进行举例说明。
S101,对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对第一处理模型进行前向传播计算,得到运行信息。
其中,运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值。
运行记录封装指的是深度学习模型运行时,会额外记录深度学习模型的运行信息,且不会影响深度学习模型的运算逻辑和计算结果。
在本文中,计算函数特指深度学习框架中,深度学习模型前向传播计算所调用的函数。深度学习框架的其他函数,如反向传播、参数检查和异常处理等所调用的函数,不属于计算函数。
通过计算函数的函数名,可以确定此函数是叶节点还是非叶节点。详细为:如果某个计算函数名字能映射到某个算子类型,则是该算子类型的叶节点,否则,就是非叶节点。
S103,按前向传播计算的顺序,对运行信息进行解析,得到深度学习模型的树结构数据对象。
其中,树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个非叶节点的数据对象包括该非叶节点的子节点信息。
由于运行信息中包含了深度学习模型的每个计算函数的函数名,故而,可以根据计算函数的函数名确定出非叶节点和叶节点,从而可以确定出深度学习模型的树结构,进而可以结合运行信息得到深度学习模型的树结构数据对象。
应当理解的是,当深度学习模型为森林模型时,树结构不止一个。
S105,将树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
数据表记录有树结构数据对象的信息,存储包存储有所有的树结构对象。将树结构数据对象转换为二进制数据,能够便于读取数据表和存储包。
与现有的模型转换方法相比,本发明是通过对深度学习模型进行运行记录封装,从而在模型进行前向传播计算时,自动记录计算时的运行信息,无需手动定义树结构和计算图,使得不会丢失深度学习模型前向传播计算的顺序和运行信息。从而按序对运行信息进行解析后,能够得到深度学习模型的树结构的每个节点的数据对象,即深度学习模型完整的数据对象。将数据对象转换为二进制以字典数据进行存储,使得数据表中记录有每个节点的信息,存储包存储每个节点的信息,严格与前向传播计算顺序相关,在一定程度上能够保证对数据表和存储包进行翻译得到的深度学习模型,与源平台的深度学习模型一致。故而,能够改善目前的深度学习模型转换的处理方法易于丢失部分信息的问题。
为了描述完整的深度学习模型的转换过程,参照图3,本实施例提供的模型处理方法还包括步骤S107,该步骤在S105之后执行。
S107,根据目标平台的支持属性,按序对数据表进行翻译,得到与目标平台适配的目标模型。
其中,支持属性包括但不限于是:编程语言和深度学习框架。目标平台应当支持字符串、有序列表、集合、图和树等常见抽象数据类型的实现。
由于数据表与源平台的深度学习模型的前向传播计算的顺序严格相关,故而翻译出的目标模型严格遵循深度学习模型的前向传播计算顺序,并包含源平台的深度学习模型的所有计算函数及其相关信息。故而,得到目标模型与源平台的深度学习模型一致。
在本实施例中,源平台的深度学习模型的数据对象都为抽象数据类型,包括但不限于是:张量类型、叶节点类型和非叶节点类型。
张量类型是深度学习模型中部分模型参数、输入输出、中间变量的抽象数据类型。张量也可以理解为一个多维数组,可以包括维度、数据类型和数据。
维度是整型数数组,描述了多维数组各维度的长度,维度中的元素大于0,代表当前维度的长度。
数据类型是枚举类型,描述张量中元素的数据类型,包括:bool、int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16(半精度浮点数)、float(单精度浮点数)、double(双精度浮点数)、complex64、complex128等。
数据是字节型数组,Data数组存储了张量实际的数据。数组长度满足:
Figure M_220509134304363_363012001
。其中,
Figure M_220509134304503_503666002
表示指数组长度,
Figure M_220509134304535_535817003
表示数组的数据类型,
Figure M_220509134304567_567632004
表示数组的第i个维度,
Figure M_220509134304598_598860005
表示维度的长度,
Figure M_220509134304630_630127006
表示操作符计算此数据类型的字节长度。
张量类型提供的数据接口,是通过数组序号对单个元素进行查询和修改。例如,对一个维度(Dimensions)为[10, 5]的单精度浮点数类型的张量,用数组序号(2, 3)进行访问,可以获取张量Data的第(2*10+3)个元素。
叶节点是深度学习模型树结构中的原子模块,不可再拆分为其他节点。一个叶节点是一种算子的实例,也就是说,叶节点的算子类型代表了其内部的计算过程。叶节点的输入和输出都是不定数量的张量。叶节点的类属性也包含了操作涉及的所有模型参数。叶节点类型包括:名称、算子类型、参数、输入定义和输出定义等类属性。
叶节点的名称是字符串,即数据类型是字符串。
算子类型(OpType)是枚举类型,为当前计算平台支持的一种算子。常见的算子包括全连接层、(一、二、三维)卷积层、激活函数层(Sigmoid、ReLU等)、各种张量操作(求和、求最大值、求均值、插值等)。
参数(Parameters)是字典类型,字典的键为此算子的参数的名称,值为一个张量类型、整型、浮点型、布尔型或字符串类型的对象或数组。
输入定义(InputDef)是一个集合,包含了所有合法的输入张量的数量和各张量的合法数据类型、维度。
输出定义(OutputDef)是一个集合,包含了所有合法的输出张量的数量和各张量的合法数据类型、维度。
叶节点的数据接口包括了它的各个类属性所应有的接口。例如,叶节点的参数(字典类型)包括了键值对的增删查改。
深度学习模型的一个非叶节点主要是定义了该非叶节点包含的叶节点和非叶节点的计算过程。非叶节点本身不包含模型参数,因此,非叶节点类型包括名称、子节点、计算图、输出定义和输入定义。
名称、输入定义和输出定义与叶节点的一致。子节点的数据类型是集合,是该非叶节点的子节点的集合,集合中的元素为叶节点和/或非叶节点。
计算图的数据类型是有向图,表达该非叶节点内各个子节点的计算顺序,并包含一个输入节点、一个输出节点和若干中间节点。中间节点为对子节点集合中元素的引用(一个子节点可以被引用任意次数)。一条由节点
Figure M_220509134304661_661380001
指向节点
Figure M_220509134304692_692622002
的有向边,即是指节点
Figure M_220509134304723_723434003
的输出是节点
Figure M_220509134304758_758033004
的输入。计算图中包含两个特殊的节点:输入节点和输出节点,输入节点没有父节点,即舒服节点的输出即为此计算图的输入,输出节点没有子节点,输出节点的输入即此计算图的输出。
一个合法的非叶节点类型对象必须满足以下条件:子节点集合中所有节点都是合法的;子节点集合中所有节点的名字不重复;计算图是无环图;对任意符合输入定义的输入,计算图的任意中间节点N的输入,都是符合N的输入定义的,计算图输出节点的输入,是符合输出定义的。
非叶节点的数据接口包括了它的各个类属性所应有的接口。例如,非叶节点的计算图的数据接口包括了节点与边的增删查改。
在上述基础上,以下,对上述步骤S101至S107进行展开介绍,以便于理解。
在一种实施方式中,对于步骤S101,参照图4,可以通过以下步骤实现S101中的对源平台的深度学习模型进行运行记录封装,得到第一处理模型。
S101-1,为源平台的深度学习模型的所有计算函数绑定记录函数。
一个计算函数绑定一个记录函数,以使该记录函数能够记录绑定的计算函数的计算结果和运行信息。
S101-2,以记录函数的名称空间代替深度学习模型的框架的名称空间,得到第一处理模型。
函数的名称空间,也称为命名空间或名字空间,是指存放名字与值的关系的空间。
原本的深度学习模型的框架的名称空间为各个计算函数的名称空间,绑定记录函数后,由各个记录函数的名称空间代替深度学习模型的框架的名称空间,从而完成深度学习模型的运行记录封装。
例如,对一个希望绑定的目标函数namespace::functionT,可以在新的名字空间中构造记录函数namespacecallback::functionT。此记录函数具有与目标函数相同的函数声明,但其实现方式是:将参数输入到目标函数进行计算,再记录函数调用的运行信息,最后返回目标函数的计算结果。这意味着,记录函数总是具有与目标函数相同的计算结果,但记录函数会额外地记录运行信息。
故而,第一处理模型进行前向传播计算时,在各个记录函数的作用下,得到运行信息。
为了更详细地介绍得到深度学习模型的额树结构数据对象的过程,参照图5,为步骤S103的部分子步的流程示意图,包括如下步骤。
S103-1,将运行信息中的各个数据,按照前向传播计算的顺序写入记录列表。
应当理解的是,由于一个计算函数绑定有一个记录函数,一个记录函数会产生该计算函数的运行信息,因此,运行信息包括每个计算函数的调用栈信息、函数名、函数参数和返回值。
运行信息中的调用栈信息包含了从主函数到当前计算函数的所有函数调用层次,在本实施例中,只按序保留记录函数(即属于名字空间)的调用,且保留后的记录函数的调用(即为stack)按序记入记录列表。
计算函数的函数名可以记作Name。函数参数(包括名称、实参的内存地址、实参的类型和实参的值)可以记录为一个字典,键为参数名称,值为实参的内存地址、类型和值,在记录列表中可以记为Arguments。函数的返回值的内存地址、类型和值,在记录列表中记作Return。
例如,下表1为一个7个节点的深度学习模型的记录列表,该深度学习模型的树结构如图6所示。
表1
Figure P_220509134304805_805017001
表1中#开头的符号代表内存地址,用于辨识程序运行时不同的张量变量。在实际应用时,可以通过多种方式实现上述步骤S103-1。
例如,可以根据上述逻辑,编写记录算法,将运行信息输入记录算法,即可生成记录列表。又如,根据上述逻辑,设定预设的记录列表规则,按照记录列表规则,生成记录列表。在这里,不作具体的限定。
S103-2,根据记录列表,利用调用栈信息,解析出深度学习模型的树结构信息。
其中,树结构信息包括叶节点、非叶节点和各个节点名称。并且,各个节点的Name以其在记录列表中的序号所转换成的字符串命名,从而保证不重复。
根据记录列表中调用栈信息,可以通过多种方式解析出深度学习模型的树结构信息,即树结构,对于解析出树结构的过程不作具体的限定。
例如,依序调用记录列表中的信息,构建树结构。又如,将记录列表输入解析树算法(ParseTree算法)中,生成树结构。或者用其他的递归算法,输入记录列表,也可以生成树结构得到叶节点、非叶节点和各节点的名称。
其中,ParseTree算法可以如下表2所示。
表2
Figure P_220509134304851_851802001
上述表2中的ParseTree算法中,
Figure M_220509134304929_929936001
是判断
Figure M_220509134304982_982151002
是否为
Figure M_220509134305029_029055003
的前缀的函数。如果下面的条件成立,则isPrefix函数返回True,否则返回False,条件为:
Figure M_220509134305044_044682004
S103-3,结合记录列表,解析出每个非叶节点的数据对象。
其中,非叶节点的数据对象包括计算图和输入输出定义。
更为详细地,可以为:针对每个非叶节点,利用第一解析算法,将记录列表中非叶节点的数据和该非叶节点的子节点的数据作为输入,解析出非叶节点的计算图,进而根据记录列表中非叶节点的实参副本和返回值,得到非叶节点的输入输出定义。
可以根据实际应用情况,来配置不同的第一解析算法,本实施例不作具体的限定。在一种实施方式中,第一解析算法可以如下表3所示。
表3
Figure P_220509134305139_139841001
S103-4,结合记录列表,解析出每个叶节点的数据对象。
其中,叶节点的数据对象包括操作类型、参数、返回值和输入输出定义。
更为详细地,可以为:针对每个叶节点,根据记录列表中叶节点的函数名,获取叶节点的操作类型,从而根据记录列表中叶节点的计算函数,获取叶节点的参数,进而根据记录列表中叶节点的计算函数和返回值,获取叶节点的输入输出定义。
通过上述步骤S103-1至S103-4,能够严格按照前向传播计算的顺序,将运行信息解析出深度学习模型的树结构,进而得到树结构数据对象,实现完整地解析深度学习模型,从而有助于降低深度学习模型转换过程中,丢失部分信息的问题。
在对树结构数据对象进行存储的过程中,涉及到序列化、存储和反序列化。序列化是指将深度学习模型的树结构数据对象转换为二进制数据文件的过程,存储是指二进制数据文件的存储、检索和读取等方法,而反序列化是指将二进制数据文件实例化为内存中的数据对象的过程。
进一步地,为了更好地理解上述步骤S105的处理逻辑,在一种实施方式中,参照图7,S105可以包括以下步骤。
S105-1,将树结构数据对象转换为二进制数据,得到待存数据对象。
待存数据对象就是序列化中的二进制数据文件,在本实施例中,称为待存数据对象。待存数据对象与树结构数据对象完全一致,仅仅是表达方式为二进制数据。
S105-2,利用存储算法,根据待存数据对象,遍历深度学习模型的树结构的每一个节点,得到每个节点的节点信息。
其中,叶节点的节点信息包括名称、操作类型、参数和输入输出定义,非叶节点的节点信息包括名称、子节点、计算图和输入输出定义。
S105-3,将每个节点的节点信息,以键-值数据表的方式进行存储,得到数据表,将树结构数据对象打包成存储包。
步骤S105-2至S105-3实际是在同一个过程中完成中,存储方式遍历树结构,得到每个节点的节点信息,并以键-值数据表的方式进行存储,从而得到数据表。为了充分保障数据的完整性,再将树结构数据对象打包成存储包。
由于叶节点和非叶节点的数据不相同,故而存储算法可以包括存储叶节点的第一存储算法,和存储非叶非叶节点的第二存储算法。在实际应用中,第一存储算法和第二存储算法可以根据开发者的便利性进行配置,不作唯一限定。
应当理解的是,可以一个节点有一个主键和多个次键(即每个节点拥有一个单独的逐渐),主键表征节点,次键表征节点信息,且次键还包括值类型和值。实际应用中,可根据实际情况配置合适的数据表,本实施例中不作为具体的限定。
在一种实施方式中,第一存储算法可以如表4所示,第二存储算法可以如表5所示。
表4
Figure P_220509134305202_202859001
表5
Figure P_220509134305265_265381001
为了更好地理解数据表的形式,以一个7节点的深度学习模型(见图6)为例,对该深度学习模型的树结构数据对象采用上述步骤S105-1至S105-3,得到的数据表可以形如下表6所示。应当理解的是,该数据表只是一种举例,而非唯一限定。在实际应用中,可根据实际需要而设置不同的数据表格式。
表6
Figure P_220509134305327_327870001
Figure P_220509134305392_392322001
上述步骤S105-1至S105-3的过程,包含了对模型的序列化和存储过程。此过程的输出,是一个保存了模型完整信息的数据表T和一个指向模型树结构根节点的主键Kroot
根据步骤S105-1至S105-3能够得到数据表和存储包之后,若要进行模型的读取和反序列化,则可以通过读取算法完成。读取算法可以包括第一读取算法和第二读取算法,第一读取算法读取加载数据表中的叶节点,第二读取算法读取加载数据表中的非叶节点。其中,第一读取算法可以如下表7所示,第二读取算法可以如下表8所示。应当理解的是,由于编程语言、开发工具以及开发者习惯等不同,可以有不同形式的读取算法。
表7
Figure P_220509134305486_486076001
表8
Figure P_220509134305533_533882001
概括地讲,上述存储算法和读取算法,使用键-值数据库数据表的Get与Set接口。存储算法中,Set (K, V)接口提供的是:为数据表插入一条键为K、值为V的新记录的功能,添加时K应当不存在于表中。Get(K)->V接口提供的是:用键K获取K所在记录存储的值V的功能。
上述深度学习模型的树结构数据对象的存储方法,模型树结构、计算图的存储,是与模型参数相对分离的。深度学习模型的一大特点是模型参数体积非常大,而树结构和计算图等内容体积小。对模型结构进行读取和操作,是不需要模型参数的。本发明的存储方案能避免不必要的模型参数数据读取。
并且,通过数据表的方式,实现模型的树结构的扁平化存储,利于模型或模块的复用。本方案中,深度学习模型的每个节点都是数据库中单独的一条数据,使用者可以方便地提取单一节点或以某个节点为根的子树。
一个完整的模型转换过程,包括解析、存储和翻译。上述内容中,已详细介绍了以下过程:对深度学习模型进行解析得到树结构数据对象,并将树结构数据对象存储,得到数据表和存储包。接下来,介绍模型翻译过程,即更为详细地介绍步骤S107。
模型翻译是模型解析的逆过程,模型翻译方法将数据库中读取的模型的前向传播计算过程,转化为目标计算平台的程序。一般来讲,翻译过程中,目标平台的编程语言需要支持:常见的条件分支语句、FOR循环、WHILE循环等控制流语句,以及字符串、有序列表、集合、图、树等常见抽象数据类型的实现。目标平台的深度学习框架需要支持模型各个叶节点算子类型(OpType)对应的计算函数。
在一种实施方式中,参照图8,S107可以包括以下子步骤。
S107-1,利用读取算法,从数据表和所述存储包中读取出深度学习模型的节点信息。
其中,读取算法可以为上述提供的读取算法,也可以是自行配置的读取算法。
S107-2,利用目标平台提供的提取函数接口,从节点信息中提取出每个非叶节点的计算函数。
提取函数接口,与配置的提取函数相关,提取函数可以灵活设置。
例如,提取函数的接口可以包括:etFunc(op_type)接口。 etFunc(op_type)函数,根据非叶节点的枚举类型,返回对应的计算函数(函数指针或引用)。
S107-3,针对每个计算函数,根据符合所属非叶节点输入定义的参数表和模型参数,计算出符合非叶节点输出定义的张量表。
计算张量表的方式可以灵活设置,本实施例中不作具体的限定。例如,可以在目标平台设置Func(Input,Parameters)接口。对于框架定义的任意计算函数,Func(Input,Parameters)函数根据符合对应非叶节点输入定义的参数表和模型参数,计算出并返回符合对应非叶节点输出定义的张量表。
S107-4,利用与目标平台适配的转换算法,根据张量表依次对每个非叶节点进行处理,得到目标模型。
其中,转换算法可以包括有向图拓扑排序算法。以使得,上述步骤S107-4可以通过以下方式实现:利用有向图拓扑排序算法,对非叶节点的子节点进行排序,按照排序结果,利用与目标平台适配的转换算法,根据张量表依次对每个非叶节点进行翻译,得到目标模型。
在实际应用中,可以根据开发者的喜好与习惯,配置不同的转换算法。转换算法也可以是可以接受输入、进行前向传播计算的深度学习模型。例如,转换算法可以如下表9所示。在进行实施时,只需将伪代码用目标平台的变成语言与深度学习框架实现下表9中的转换算法,即可实现深度学习模型进行转换,编译为目标平台可执行的程序(该程序即为目标模型的实现)。
应当理解的是,在编程语言、开发工具、开发者习惯和喜好的不同下,转换算法可以不同的程序表现形式。因此,下述表9中的转换算法并非唯一的程序表现形式,即并非唯一限定。
表9
Figure P_220509134305612_612087001
表9中的TopoSort(M.Graph)即为有向图拓扑排序算法,在一种实施方式中,有向图拓扑排序算法可以如表10所示。
表10
Figure P_220509134305690_690678001
通过上述步骤S107-1至S107-4,可以将数据表转换为目标模型,且目标模型与源平台的深度学习模型一致。通过查看存储包能够对目标模型进行验证。
通过上述步骤S101至S107及其子步骤,可以实现深度学习模型的解析、存储和翻译,即实现源平台的深度学习模型转换为目标平台的目标模型。
通过步骤S101至S103及子步骤,能够直接从源平台的深度学习模型的前向传播计算中,解析出模型树结构与计算图,来得到完整的深度学习模型的树结构数据对象,无需手动定义其树结构与计算图,能够提高深度学习模型的数据完整性。
通过步骤S105及其子步骤,按序遍历树结构并以键-值方式进行存储,严格遵循并保持模型的树结构,有助于保证转换前后一致性,并便于人为地对模型结构进行修改、模块的复用。同时,模型参数与其他属性分离存储,在不需要模型参数时,能够大大加快模型的读取速度和传输速度。
通过步骤S107及其子步骤,模型翻译时,只需要依据数据表调用计算函数即可完成模型转换,无需将模型转化为目标平台深度学习框架的模型表征,从而大大简化模型翻译过程,进而可以避免很多兼容性问题,例如,算子定义的差异、树结构与计算图的表征方式差异等。从而,能够在一定程度上避免模型翻译时的模型信息丢失,进而能够使转换后的目标模型与原深度学习模型尽可能保持一致。
基于上述模型处理方法的发明构思,在一个实施例中,参照图9,提供一种模型处理系统110,该系统包括通信连接的第一设备120和第二设备130,第一设备120安装有源平台。
第一设备120,用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对第一处理模型进行前向传播计算,得到运行信息,并按前向传播计算的顺序,对运行信息进行解析,得到深度学习模型的树结构数据对象。
其中,运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值,树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个非叶节点的数据对象包括该非叶节点的子节点信息。
第一设备120,还用于将树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
第二设备130,还用于接收所述第一设备120发送的存储包和数据表。
上述模型处理系统110中,第一设备120采用上述深度学习模型处理方法中步骤S101和S103的方法对深度学习模型进行解析,从而在模型进行前向传播计算时,自动记录计算时的运行信息,无需手动定义树结构和计算图,使得不会丢失深度学习模型前向传播计算的顺序和运行信息。并采用上述步骤S105的方法,将数据对象转换为二进制以字典数据进行存储,存储严格与前向传播计算顺序相关。故而,第二设备130能够得到第一设备120中深度学习模型的完整的计算信息。从而,能够改善目前的深度学习模型转换的处理方法易于丢失部分信息的问题。
进一步,第二设备130安装有目标平台。
第二设备130,还用于根据目标平台的支持属性,按序对存储包和数据表进行翻译,得到与目标平台适配的目标模型。即第二设备130采用上述步骤S107的方法进行模型翻译。
关于模型处理系统110的具体限定可以参见上文中对于指令格式转换方法的限定,在此不再赘述。
在一个实施例中,参照图10,本发明还提供一种模型处理装置140,包括解析模块150和存储模块160。
解析模块150,用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对第一处理模型进行前向传播计算,得到运行信息。
其中,运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值。
解析模块150,还用于按前向传播计算的顺序,对运行信息进行解析,得到深度学习模型的树结构数据对象。
其中,树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个非叶节点的数据对象包括该非叶节点的子节点信息。
存储模块160,用于将树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
上述模型处理装置140中,解析模块150对深度学习模型进行运行记录封装,从而记录模型进行前向传播计算的运行信息,并按序对运行信息进行解析,能够得到深度学习模型的树结构的每个节点的数据对象。存储模块160按序遍历树结构,以将数据对象转换为二进制以字典数据进行存储,使存储严格与前向传播计算顺序相关,从而数据表能够完整记录深度学习模型的信息。故而,能够改善目前易于丢失模型部分信息的问题。
进一步地,还包括翻译模块170,翻译模块170用于根据目标平台的支持属性,按序对数据表进行翻译,得到与目标平台适配的目标模型。
关于模型处理装置140的具体限定可以参见上文中对于指令格式转换方法的限定,在此不再赘述。上述模型处理装置140中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备100中的处理器中,也可以以软件形式存储于电子设备100中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种电子设备100,该电子设备100可以是服务器,其内部结构图可以如图11所示。该电子设备100包括通过系统总线连接的处理器、存储器和通信接口。其中,该电子设备100的处理器用于提供计算和控制能力。该电子设备100的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备100的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备100的数据库存储有数据表,该计算机程序被处理器执行时以实现一种模型处理方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备100的限定,具体的电子设备100可以包括比图11中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的模型处理装置140可以实现为一种计算机程序的形式,计算机程序可在如图11所示的电子设备100上运行。电子设备100的存储器中可存储组成该模型处理装置140的各个程序模块,比如,图10所示的解析模块150和存储模块160。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的指令格式转换方法中的步骤。
例如,图11所示的电子设备100可以通过如图10所示的模型处理装置140中的解析模块150执行步骤S101和S103。电子设备100可通过存储模块160执行步骤S105。电子设备100可通过翻译模块170执行步骤S107。
在一个实施例中,提供了一种电子设备100,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对第一处理模型进行前向传播计算,得到运行信息,运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值按前向传播计算的顺序,对运行信息进行解析,得到深度学习模型的树结构数据对象;树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个非叶节点的数据对象包括该非叶节点的子节点信息;将树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据目标平台的支持属性,按序对数据表进行翻译,得到与目标平台适配的目标模型。
在一个实施例中,提供了一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对第一处理模型进行前向传播计算,得到运行信息,运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值;按前向传播计算的顺序,对运行信息进行解析,得到深度学习模型的树结构数据对象;树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个非叶节点的数据对象包括该非叶节点的子节点信息;将树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据目标平台的支持属性,按序对数据表进行翻译,得到与目标平台适配的目标模型。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种模型处理方法,其特征在于,所述方法包括:
对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,所述运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值;
按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象;
其中,所述树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个所述非叶节点的数据对象包括该非叶节点的子节点信息;
将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表;
所述方法还包括:
根据目标平台的支持属性,按序对所述数据表进行翻译,得到与所述目标平台适配的目标模型。
2.根据权利要求1所述的模型处理方法,其特征在于,所述对源平台的深度学习模型进行运行记录封装,得到第一处理模型的步骤,包括:
为源平台的深度学习模型的所有计算函数绑定记录函数;
以所述记录函数的名称空间代替所述深度学习模型的框架的名称空间,得到第一处理模型。
3.根据权利要求1所述的模型处理方法,其特征在于,所述按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象的步骤,包括:
将所述运行信息中的各个数据,按照所述前向传播计算的顺序写入记录列表;
根据所述记录列表,利用所述调用栈信息,解析出所述深度学习模型的树结构信息,所述树结构信息包括叶节点、非叶节点和各个节点名称;
结合所述记录列表,解析出每个所述非叶节点的数据对象,所述非叶节点的数据对象包括计算图和输入输出定义;
结合所述记录列表,解析出每个所述叶节点的数据对象,所述叶节点的数据对象包括操作类型、参数、返回值和输入输出定义。
4.根据权利要求3所述的模型处理方法,其特征在于,所述结合所述记录列表,解析出每个所述非叶节点的数据对象的步骤,包括:
针对每个所述非叶节点,利用第一解析算法,将所述记录列表中所述非叶节点的数据和该非叶节点的子节点的数据作为输入,解析出所述非叶节点的计算图;
根据所述记录列表中所述非叶节点的实参副本和返回值,得到所述非叶节点的输入输出定义。
5.根据权利要求3所述的模型处理方法,其特征在于,所述结合所述记录列表,解析出每个所述叶节点的数据对象的步骤,包括:
针对每个所述叶节点,根据所述记录列表中所述叶节点的函数名,获取所述叶节点的操作类型;
根据所述记录列表中所述叶节点的计算函数,获取所述叶节点的参数;
根据所述记录列表中所述叶节点的计算函数和返回值,获取所述叶节点的输入输出定义。
6.根据权利要求1所述的模型处理方法,其特征在于,所述将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表的步骤,包括:
将所述树结构数据对象转换为二进制数据,得到待存数据对象;
利用存储算法,根据所述待存数据对象,遍历所述深度学习模型的树结构的每一个节点,得到每个所述节点的节点信息;
其中,所述叶节点的节点信息包括名称、操作类型、参数和输入输出定义,所述非叶节点的节点信息包括名称、子节点、计算图和输入输出定义;
将每个所述节点的节点信息,以键-值数据表的方式进行存储,得到数据表,将所述树结构数据对象打包成存储包。
7.根据权利要求1所述的模型处理方法,其特征在于,所述根据目标平台的支持属性,按序对所述数据表进行翻译,得到与所述目标平台适配的目标模型的步骤,包括;
利用读取算法,从所述数据表和所述存储包中读取出所述深度学习模型的节点信息;
利用所述目标平台提供的提取函数接口,从所述节点信息中提取出每个所述非叶节点的计算函数;
针对每个所述计算函数,根据符合所属非叶节点输入定义的参数表和模型参数,计算出符合所述非叶节点输出定义的张量表;
利用与所述目标平台适配的转换算法,根据所述张量表依次对每个所述非叶节点进行处理,得到目标模型。
8.根据权利要求7所述的模型处理方法,其特征在于,所述转换算法包括有向图拓扑排序算法;
所述利用与所述目标平台适配的转换算法,根据所述张量表依次对每个所述非叶节点进行处理,得到目标模型的步骤,包括:
利用有向图拓扑排序算法,对所述非叶节点的子节点进行排序;
按照排序结果,利用与所述目标平台适配的转换算法,根据所述张量表依次对每个所述非叶节点进行翻译,得到目标模型。
9.一种模型处理装置,其特征在于,包括解析模块、存储模块和翻译模块;
所述解析模块,用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,所述运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值;
所述解析模块,还用于按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象;
其中,所述树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个所述非叶节点的数据对象包括该非叶节点的子节点信息;
所述存储模块,用于将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表;
所述翻译模块,用于根据目标平台的支持属性,按序对所述数据表进行翻译,得到与所述目标平台适配的目标模型。
10.一种模型处理系统,其特征在于,包括通信连接的第一设备和第二设备,所述第一设备安装有源平台;
所述第一设备,用于对源平台的深度学习模型进行运行记录封装,得到第一处理模型,并对所述第一处理模型进行前向传播计算,得到运行信息,并按所述前向传播计算的顺序,对所述运行信息进行解析,得到所述深度学习模型的树结构数据对象;
其中,所述运行信息包括调用栈信息,以及每个计算函数的函数名、函数参数和返回值,所述树结构数据对象包括每个非叶节点的数据对象和每个叶节点的数据对象,每个所述非叶节点的数据对象包括该非叶节点的子节点信息;
所述第一设备,还用于将所述树结构数据对象转换为二进制数据,以字典数据的方式进行存储,得到存储包和数据表;
所述第二设备,还用于接收所述第一设备发送的存储包和所述数据表;
所述第二设备安装有目标平台;
所述第二设备,还用于根据目标平台的支持属性,按序对所述存储包和所述数据表进行翻译,得到与所述目标平台适配的目标模型。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器可执行所述计算机程序以实现如权利要求1至8中任一项所述的模型处理方法。
12.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的模型处理方法。
CN202210506631.5A 2022-05-11 2022-05-11 模型处理方法、装置、系统、电子设备及存储介质 Active CN114611714B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210506631.5A CN114611714B (zh) 2022-05-11 2022-05-11 模型处理方法、装置、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210506631.5A CN114611714B (zh) 2022-05-11 2022-05-11 模型处理方法、装置、系统、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN114611714A CN114611714A (zh) 2022-06-10
CN114611714B true CN114611714B (zh) 2022-09-02

Family

ID=81869072

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210506631.5A Active CN114611714B (zh) 2022-05-11 2022-05-11 模型处理方法、装置、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114611714B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116362316B (zh) * 2023-05-29 2023-12-12 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201811477D0 (en) * 2018-07-12 2018-08-29 Prodo Tech Ltd Runtime analysis
CN110674295A (zh) * 2019-09-11 2020-01-10 成都数之联科技有限公司 一种基于深度学习的数据标注系统
CN112183712A (zh) * 2019-07-03 2021-01-05 安徽寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品
CN112819153A (zh) * 2020-12-31 2021-05-18 杭州海康威视数字技术股份有限公司 一种模型转化方法及装置
WO2021167792A1 (en) * 2020-02-17 2021-08-26 Optum, Inc. Demographic-aware federated machine learning
CN113780536A (zh) * 2021-10-29 2021-12-10 平安科技(深圳)有限公司 一种云端深度学习模型转换方法、系统、设备及介质
CN113947207A (zh) * 2020-07-15 2022-01-18 杭州海康威视数字技术股份有限公司 应用于模型转换的管理方法、系统、装置及电子设备
CN113986234A (zh) * 2021-09-19 2022-01-28 苏州浪潮智能科技有限公司 一种跨平台模型推理的方法、系统、存储介质及设备
CN114115857A (zh) * 2021-10-29 2022-03-01 北京邮电大学 一种机器学习模型自动化生产线构建方法及系统
CN114356704A (zh) * 2021-12-27 2022-04-15 北京大学深圳研究院 一种面向云网端流式数据的软件定义方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7225395B2 (ja) * 2018-11-27 2023-02-20 レイセオン カンパニー 動的再構成訓練コンピュータアーキテクチャ
US20220129781A1 (en) * 2020-10-27 2022-04-28 Optum Services (Ireland) Limited Method, apparatus and computer program product for improving interpretability of software black-box machine learning model outputs

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201811477D0 (en) * 2018-07-12 2018-08-29 Prodo Tech Ltd Runtime analysis
CN112183712A (zh) * 2019-07-03 2021-01-05 安徽寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品
CN110674295A (zh) * 2019-09-11 2020-01-10 成都数之联科技有限公司 一种基于深度学习的数据标注系统
WO2021167792A1 (en) * 2020-02-17 2021-08-26 Optum, Inc. Demographic-aware federated machine learning
CN113947207A (zh) * 2020-07-15 2022-01-18 杭州海康威视数字技术股份有限公司 应用于模型转换的管理方法、系统、装置及电子设备
CN112819153A (zh) * 2020-12-31 2021-05-18 杭州海康威视数字技术股份有限公司 一种模型转化方法及装置
CN113986234A (zh) * 2021-09-19 2022-01-28 苏州浪潮智能科技有限公司 一种跨平台模型推理的方法、系统、存储介质及设备
CN113780536A (zh) * 2021-10-29 2021-12-10 平安科技(深圳)有限公司 一种云端深度学习模型转换方法、系统、设备及介质
CN114115857A (zh) * 2021-10-29 2022-03-01 北京邮电大学 一种机器学习模型自动化生产线构建方法及系统
CN114356704A (zh) * 2021-12-27 2022-04-15 北京大学深圳研究院 一种面向云网端流式数据的软件定义方法和系统

Also Published As

Publication number Publication date
CN114611714A (zh) 2022-06-10

Similar Documents

Publication Publication Date Title
McKinney Python for data analysis
KR101911793B1 (ko) 컴퓨터 프로그램을 나타내는 데이터플로우 그래프 내의 데이터세트 객체의 관리
Seibel Practical common lisp
Pagán et al. Querying large models efficiently
JP2021530766A (ja) データウェアハウスへの発行
JP2006228200A (ja) リレーションシップモデリング
Allamanis et al. Smartpaste: Learning to adapt source code
CN114611714B (zh) 模型处理方法、装置、系统、电子设备及存储介质
Mossakowski et al. Hets user guide-version 0.99
Sundnes Introduction to scientific programming with Python
US7788246B2 (en) Linguistic structure for data flow diagrams
CN116483850A (zh) 数据处理方法、装置、设备以及介质
US9244706B2 (en) Command line shell command generation based on schema
Cukic Functional programming in C++
Milovanovic et al. An interactive tool for UML class model evolution in database applications
McGrath Python in easy steps: Covers Python 3.7
US20230004477A1 (en) Providing a pseudo language for manipulating complex variables of an orchestration flow
CN113655996B (zh) 一种基于需求模型的企业级系统生成方法
RU2605387C2 (ru) Способ и система для хранения данных графов
JP7059757B2 (ja) Api処理方法、端末、api処理プログラム
CN107577476A (zh) 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质
Sacerdoti Coen A plugin to export Coq libraries to XML
Picheta Nim in action
CN115904353B (zh) 一种用户界面的目标源文件的生成方法及系统
US20240143928A1 (en) Generation of interactive utterances of code tasks

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