CN109375912B - 模型序列化方法、装置及存储介质 - Google Patents
模型序列化方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109375912B CN109375912B CN201811216816.2A CN201811216816A CN109375912B CN 109375912 B CN109375912 B CN 109375912B CN 201811216816 A CN201811216816 A CN 201811216816A CN 109375912 B CN109375912 B CN 109375912B
- Authority
- CN
- China
- Prior art keywords
- model
- type
- nodes
- serialization
- function
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出一种模型序列化方法、装置及存储介质,该方法包括获取待发布的模型结构;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数和输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。通过本发明能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种模型序列化方法、装置及存储介质。
背景技术
通常构建一个完整的机器学习流程包括:数据处理、特征工程、模型训练、模型预测,以及模型评估等。离线训练完成后产出模型包,在线预测阶段加载模型包完成线上预测,模型结构的快照,模型的保存格式以及预测方法的描述即是模型序列化。在模型序列化之后,只需要调用所载入的序列化模型,既可以完成线上预测,可以有效降低线上预测开发复杂度,以及避免离线在线预测不一致的风险。
相关技术中,采用Spark ML框架进行模型序列化,其中Spark ML框架采用Pipeline模式保存整个Workflow,模型包中记录Transfomer类型的节点和Estimator类型的节点,同时,Spark ML框架支持单个Estimator模型保存,最终,使用对象序列化输出到指定路径;或者,采用Mleap技术进行模型序列化,Mleap技术是基于Spark和Tensorflow的上层封装和改进,通过复写模型包转换为MleapModel完成模型加载和解析。
这些方式下,只支持pipeline结构,而不支持DAG复杂结构如模型组合和嵌套等结构,模型序列化方法不够灵活,适用效果不佳。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种模型序列化方法,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
本发明的另一个目的在于提出一种模型序列化装置。
本发明的另一个目的在于提出一种非临时性计算机可读存储介质。
本发明的另一个目的在于提出一种计算机程序产品。
为达到上述目的,本发明第一方面实施例提出的模型序列化方法,包括:获取待发布的模型结构,所述模型结构包括多个节点,各节点与算法模型相对应;对所述模型结构中第一类型的节点,以及所述第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,所述输入参数调整后的数据类型为数组类型,所述输出参数调整后的数据类型为数组类型,所述第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在所述模型训练阶段进行数据转换;根据所述模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
本发明第一方面实施例提出的模型序列化方法,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
为达到上述目的,本发明第二方面实施例提出的模型序列化装置,包括:获取模块,用于获取待发布的模型结构,所述模型结构包括多个节点,各节点与算法模型相对应;调整模块,用于对所述模型结构中第一类型的节点,以及所述第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,所述输入参数调整后的数据类型为数组类型,所述输出参数调整后的数据类型为数组类型,所述第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在所述模型训练阶段进行数据转换;序列化处理模块,用于根据所述模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
本发明第二方面实施例提出的模型序列化装置,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
为达到上述目的,本发明第三方面实施例提出的非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器被执行时,使得移动终端能够执行一种模型序列化方法,所述方法包括:获取待发布的模型结构,所述模型结构包括多个节点,各节点与算法模型相对应;对所述模型结构中第一类型的节点,以及所述第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,所述输入参数调整后的数据类型为数组类型,所述输出参数调整后的数据类型为数组类型,所述第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在所述模型训练阶段进行数据转换;根据所述模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
本发明第三方面实施例提出的非临时性计算机可读存储介质,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
为达到上述目的,本发明第四方面实施例提出的计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行一种模型序列化方法,所述方法包括:获取待发布的模型结构,所述模型结构包括多个节点,各节点与算法模型相对应;对所述模型结构中第一类型的节点,以及所述第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,所述输入参数调整后的数据类型为数组类型,所述输出参数调整后的数据类型为数组类型,所述第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在所述模型训练阶段进行数据转换;根据所述模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
本发明第四方面实施例提出的计算机程序产品,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一实施例提出的模型序列化方法的流程示意图;
图2为本发明实施例中待发布的模型结构示意图;
图3为本发明实施例中标记后待发布的模型结构示意图;
图4为本发明实施例中删除后待发布的模型结构示意图;
图5是本发明另一实施例提出的模型序列化方法的流程示意图;
图6是本发明一实施例提出的模型序列化装置的结构示意图;
图7是本发明另一实施例提出的模型序列化装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1是本发明一实施例提出的模型序列化方法的流程示意图。
本实施例以模型序列化方法被配置为模型序列化装置中来举例说明。
本实施例中模型序列化方法可以被配置在模型序列化装置中,模型序列化装置可以设置在服务器中,或者也可以设置在电子设备中,本发明实施例对此不作限制。
本实施例以模型序列化方法被配置在电子设备中为例。
本发明实施例具体用于对可视化的机器学习平台的模型进行部署的过程中,其中的模型可以由用户在可视化的机器学习平台的用户界面(User Interface,UI),以控件拖拽方式所构建的,该模型的构建可以是在离线状态下进行。
其中,电子设备例如智能手机、平板电脑、个人数字助理、电子书等具有各种操作系统的硬件设备。
需要说明的是,本发明实施例的执行主体,在硬件上可以例如为服务器或者电子设备中的中央处理器(Central Processing Unit,CPU),在软件上可以例如为服务器或者电子设备中的模型训练类服务,对此不作限制。
通常构建一个完整的机器学习流程包括:数据处理、特征工程、模型训练、模型预测,以及模型评估等。离线训练完成后产出模型包,在线预测阶段加载模型包完成线上预测,模型结构的快照,模型的保存格式以及预测方法的描述即是模型序列化。在模型序列化之后,只需要调用所载入的序列化模型(序列化模型用于描述算法模型的结构和参数),既可以完成线上预测,可以有效降低线上预测开发复杂度,以及避免离线在线预测不一致的风险。
相关技术中,采用Spark ML框架进行模型序列化,其中Spark ML框架采用Pipeline模式保存整个Workflow,模型包中记录Transfomer类型的节点和Estimator类型的节点,同时,Spark ML框架支持单个Estimator模型保存,最终,使用对象序列化输出到指定路径;或者,采用Mleap技术进行模型序列化,Mleap技术是基于Spark和Tensorflow的上层封装和改进,通过复写模型包转换为MleapModel完成模型加载和解析。
这些方式下,只支持pipeline结构,而不支持DAG复杂结构如模型组合和嵌套等结构,模型序列化方法不够灵活,适用效果不佳。
为了解决上述技术问题,本发明实施例中提供一种模型序列化方法,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
本发明实施例中的模型序列化方法能够同时支持Spark和TensorFlow计算平台,支持平台扩展,同时,实现在Spark ML框架的Pipeline基础上增加了有向无环图(Directedacyclic graph,DAG)结构模型的保存功能。
参见图1,该方法包括:
S101:获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应。
其中,待发布的模型结构为可视化的机器学习平台中的模型结构,该待发布的模型结构为用户在可视化的机器学习平台的用户界面(User Interface,UI),以控件拖拽方式所构建的,该模型的构建可以是在离线状态下进行。
参见图2,图2为本发明实施例中待发布的模型结构示意图,其中,模型结构包括多个节点21,各节点与算法模型相对应。
其中,各节点对应有算法模型,该算法模型用于基于预测数据进行线上预测。不同节点所对应的算法模型执行的任务不同或者相同,参见图2中,各节点所执行的任务包括:kdd_data、特征提取、样本拆分、逻辑回归、CBDT、模型组合等。
本发明实施例在具体执行的过程中,可以在获取待发布的模型结构的同时,对待发布的模型结构采用Json结构体表示,以便于后续数据的读取和存储。
例如,采用Json结构体表示待发布的模型结构:
本发明实施例在具体执行的过程中,为了在技术上实现在模型训练阶段进行数据转换,在获取待发布的模型结构之后,还可以根据对应的任务类型,从模型结构的各节点中确定出第一类型的节点和第二类型的节点;其中,第一类型包括Estimator类型,第二类型包括Transformer类型,将非第一类型和第二类型的节点,从模型结构中删除,非第一类型和第二类型的节点包括Auxiliarier类型的节点。
其中Estimator类型和Transformer类型为Spark ML框架中节点的类型。
其中,任务为上述示例的kdd_data、特征提取、样本拆分、逻辑回归、CBDT、模型组合等,任务类型为前述kdd_data、特征提取、样本拆分、逻辑回归、CBDT、模型组合等中各任务具体所归属的类型。
本发明实施例中,可以分别基于训练阶段、预测阶段、保存阶段,根据各节点在各个阶段所执行的任务来进行任务类型的划分。
参见表1,表1为本发明实施例中任务类型划分示意。
表1
节点类型 | 训练阶段 | 预测阶段 | 保存阶段 |
Estimator类型 | 训练模型 | 数据转换 | 保存参数 |
Transformer类型 | 数据转换 | 数据转换 | 保存模型 |
Auxiliarier类型 | 训练模型/数据转换 | 数据转换 | 不做保存 |
其中,Estimator类型的节点用于在模型训练阶段进行模型训练,Transformer类型的节点用于在模型训练阶段进行数据转换,Auxiliarier类型用于在模型训练阶段进行训练模型/数据转换,以此类推。
本发明实施例在具体执行的过程中,为了使得模型序列化方法实施例的表述更为直观,还可以在根据对应的任务类型,从模型结构的各节点中确定出第一类型的节点和第二类型的节点之后,对上述图2中各个节点对应的任务类型进行标记,参见图3,图3为本发明实施例中标记后待发布的模型结构示意图,其中,针对每一个节点,采用不同形式的边框对各节点的任务类型进行标记,例如,采用实线边框标记Estimator类型,采用虚线边框标记Transformer类型的节点,采用点画线标记uxiliarier类型的节点。
S102:对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换。
本发明实施例在具体执行的过程中,可以对第一类型的节点和第二类型的节点,均获取目标函数;对目标函数,根据预设结构数据,将输入参数和输出参数调整为将预设结构数据作为元素的数组类型;其中,目标函数包括第一函数和第二函数,第一函数用于进行模型训练,第二函数用于进行数据转换或者模型预测。
其中的第一函数例如为Fit函数,第二函数例如为Transform函数。
其中的预设结构数据为Dataframe结构的数据。
相关技术中,在Spark ML框架中的Pipeline模型中,每个Estimator类型的节点或者Transformer类型的节点对应的算法模型中,Fit函数和Transform函数的输入参数均为Dataframe结构,返回值只有一个Dataframe结构或Transformer结构,这种方式下,会导致模型序列化不支持DAG模型。
本发明实施例中,为了实现有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,根据预设结构数据,将Fit函数和Transform函数的输入参数和输出参数调整为将预设结构数据作为元素的数组类型,使得Fit函数和Transformer函数均接收并返回一个数组类型的数据,例如,实现新的Fit函数和Transfrom函数所接收和返回的数据的对比如下表2所示。
表2
其中,Array[BundleFlow]为数组类型的数据。
本发明实施例在具体执行的过程中,为了简化DAG模型结构并保证DAG模型结构预测顺序的正确性,可以在对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整之后,将非第一类型和第二类型的节点,从模型结构中删除,非第一类型和第二类型的节点包括Auxiliarier类型的节点。参见图4,图4为本发明实施例中删除后待发布的模型结构示意图,其中,针对每一个节点,采用不同形式的边框对各节点的任务类型进行标记,其中,图4中仅包含有:Estimator类型的节点和Transformer类型的节点。
S103:根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
其中,参见图2,图2为本发明实施例中待发布的模型结构示意图,其中,模型结构还包括每个节点21之间的有向关系,各节点21之间的有向关系经由各节点之间的连线22表示,方向均为由上到下。
本发明实施例在具体执行的过程中,对上述的图4中所示的模型结构进行保存,以及将图4中的模型结构对应的struct.json文件、Estimator节点的模型包model.pb,model.pb中包含节点参数model.json,Transformer节点的模型包,Transformer节点的模型包保存节点所有参数model.json,作为有向无环图结构的序列化模型。
本实施例中,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
图5是本发明另一实施例提出的模型序列化方法的流程示意图。
参见图5,该方法包括:
S501:获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应。
其中,待发布的模型结构为可视化的机器学习平台中的模型结构,该待发布的模型结构为用户在可视化的机器学习平台的用户界面(User Interface,UI),以控件拖拽方式所构建的,该模型的构建可以是在离线状态下进行。
参见图2,图2为本发明实施例中待发布的模型结构示意图,其中,模型结构包括多个节点21,各节点与算法模型相对应。
其中,各节点对应有算法模型,该算法模型用于基于预测数据进行线上预测。不同节点所对应的算法模型执行的任务不同或者相同,参见图2中,各节点所执行的任务包括:kdd_data、特征提取、样本拆分、逻辑回归、CBDT、模型组合等。
本发明实施例在具体执行的过程中,可以在获取待发布的模型结构的同时,对待发布的模型结构采用Json结构体表示,以便于后续数据的读取和存储。
例如,采用Json结构体表示待发布的模型结构:
S502:对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换。
本发明实施例在具体执行的过程中,可以对第一类型的节点和第二类型的节点,均获取目标函数;对目标函数,根据预设结构数据,将输入参数和输出参数调整为将预设结构数据作为元素的数组类型;其中,目标函数包括第一函数和第二函数,第一函数用于进行模型训练,第二函数用于进行数据转换或者模型预测。
其中的第一函数例如为Fit函数,第二函数例如为Transform函数。
其中的预设结构数据为Dataframe结构的数据。
相关技术中,在Spark ML框架中的Pipeline模型中,每个Estimator类型的节点或者Transformer类型的节点对应的算法模型中,Fit函数和Transform函数的输入参数均为Dataframe结构,返回值只有一个Dataframe结构或Transformer结构,这种方式下,会导致模型序列化不支持DAG模型。
本发明实施例中,为了实现有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,根据预设结构数据,将Fit函数和Transform函数的输入参数和输出参数调整为将预设结构数据作为元素的数组类型,使得Fit函数和Transformer函数均接收并返回一个数组类型的数据,例如,实现新的Fit函数和Transfrom函数所接收和返回的数据的对比如下表2所示。
表2
其中,Array[BundleFlow]为数组类型的数据。
本发明实施例在具体执行的过程中,为了简化DAG模型结构并保证DAG模型结构预测顺序的正确性,可以在对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整之后,将非第一类型和第二类型的节点,从模型结构中删除,非第一类型和第二类型的节点包括Auxiliarier类型的节点。参见图4,图4为本发明实施例中删除后待发布的模型结构示意图,其中,针对每一个节点,采用不同形式的边框对各节点的任务类型进行标记,其中,图4中仅包含有:Estimator类型的节点和Transformer类型的节点。
S503:根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
其中,参见图2,图2为本发明实施例中待发布的模型结构示意图,其中,模型结构还包括每个节点21之间的有向关系,各节点21之间的有向关系经由各节点之间的连线22表示,方向均为由上到下。
本发明实施例在具体执行的过程中,对上述的图4中所示的模型结构进行保存,以及将图4中的模型结构对应的struct.json文件、Estimator节点的模型包model.pb,model.pb中包含节点参数model.json,Transformer节点的模型包,Transformer节点的模型包保存节点所有参数model.json,作为有向无环图结构的序列化模型。
S504:在线上加载有向无环图结构的序列化模型。
由于Spark ML框架采用Dataframe结构的数据做参数,Dataframe结构的数据又依赖于Spark ML框架环境,因此,本发明实施例中为了执行线上预测,提供一个本地化的预测函数,具体地,可以利用隐式转换为Spark ML算法,添加预测函数,将该预测函数配置为接收本地化的Dataframe结构的数据,使得Pipeline模型可以通过使用预测函数预测本地化数据;而后,提供模型包解析API,经由该模型包解析API解析模型快照,复现模型结构,并通过反射机制生成Transformer类实例API,并将该Transformer类实例API作为目标实例应用程序编程接口API。
S505:调用目标实例应用程序编程接口API和预测函数,运行有向无环图结构的序列化模型以执行线上预测过程。
其中,目标实例API,是采用反射机制对有向无环图结构进行描述得到的。
本发明实施例中,预测函数的输入参数与用于执行线上预测过程的系统匹配。因此,支持Spark和TensorFlow计算平台,支持平台扩展。
本发明实施例在具体执行的过程中,生成有向无环图结构的序列化模型对应的执行脚本;运行对应的执行脚本;基于所运行的执行脚本调用目标实例应用程序编程接口API和预测函数以执行线上预测过程。
本发明实施例在具体执行的过程中,为了支持TenforFlow模型,可以在基于Scala任务管理框架中,引入了Jython,通过Jython执行脚本向TenforFlow提交任务执行得到模型,并通过freeze_graph.py保存模型,在线上预测过程中通过Jython执行脚本调用TenforFlow函数接口完成模型的反序列化以及模型预测任务。
本实施例中,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
图6是本发明一实施例提出的模型序列化装置的结构示意图。
参见图6,该装置600包括:获取模块601、调整模块602,以及序列化处理模块603,其中,
获取模块601,用于获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应。
调整模块602,用于对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换。
序列化处理模块603,用于根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
可选地,一些实施例中,调整模块602,具体用于:
对第一类型的节点和第二类型的节点,均获取目标函数;
对目标函数,根据预设结构数据,将输入参数和输出参数调整为将预设结构数据作为元素的数组类型;
其中,目标函数包括第一函数和第二函数,第一函数用于进行模型训练,第二函数用于进行数据转换或者模型预测。
可选地,一些实施例中,参见图7,还包括:
第一确定模块604,用于针对模型结构的各节点,分别确定其在模型训练阶段所对应的任务类型。
第二确定模块605,用于根据对应的任务类型,从模型结构的各节点中确定出第一类型的节点和第二类型的节点;
其中,第一类型包括Estimator类型,第二类型包括Transformer类型。
可选地,一些实施例中,参见图7,还包括:
删除模块606,用于将非第一类型和第二类型的节点,从模型结构中删除,非第一类型和第二类型的节点包括Auxiliarier类型的节点。
可选地,一些实施例中,参见图7,还包括:
加载模块607,用于在线上加载有向无环图结构的序列化模型;
调用模块608,用于调用目标实例应用程序编程接口API和预测函数,运行有向无环图结构的序列化模型以执行线上预测过程;
其中,目标实例API,是采用反射机制对有向无环图结构进行描述得到的。
可选地,一些实施例中,预测函数的输入参数与用于执行线上预测过程的系统匹配,调用模块608,具体用于:
生成有向无环图结构的序列化模型对应的执行脚本;
运行对应的执行脚本;
基于所运行的执行脚本调用目标实例应用程序编程接口API和预测函数以执行线上预测过程。
需要说明的是,前述图1-图5实施例中对模型序列化方法实施例的解释说明也适用于该实施例的模型序列化装置600,其实现原理类似,此处不再赘述。
上述模型序列化装置600中各个模块的划分仅用于举例说明,在其它实施例中,可将模型序列化装置600按照需要划分为不同的模块,以完成上述模型序列化装置600的全部或部分功能。
本实施例中,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,当存储介质中的指令由终端的处理器执行时,使得终端能够执行一种模型序列化方法,方法包括:
获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;
对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;
根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
本实施例中的非临时性计算机可读存储介质,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
为了实现上述实施例,本发明还提出一种计算机程序产品,当计算机程序产品中的指令被处理器执行时,执行一种模型序列化方法,方法包括:
获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;
对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;
根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
本实施例中的计算机程序产品,通过获取待发布的模型结构,模型结构包括多个节点,各节点与算法模型相对应;对模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,输入参数调整后的数据类型为数组类型,输出参数调整后的数据类型为数组类型,第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在模型训练阶段进行数据转换;根据模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型,能够有效支持有向无环图的结构中模型组合和嵌套结构的应用需求,拓展模型序列化的应用场景,提升适用性效果。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (13)
1.一种模型序列化方法,其特征在于,包括以下步骤:
获取待发布的模型结构,所述模型结构包括多个节点,各节点与算法模型相对应;
对所述模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,Fit函数和Transform函数的输入参数调整后的数据类型为将预设结构数据作为元素的数组类型,Fit函数和Transform函数的输出参数调整后的数据类型为将预设结构数据作为元素的数组类型,所述第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在所述模型训练阶段进行数据转换,所述预设结构数据为dataframe结构的数据;
根据所述模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
2.根据权利要求1所述的模型序列化方法,其特征在于,所述对所述模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,包括:
对所述第一类型的节点和所述第二类型的节点,均获取目标函数;
对所述目标函数,根据预设结构数据,将输入参数和输出参数调整为将所述预设结构数据作为元素的数组类型;
其中,所述目标函数包括第一函数和第二函数,所述第一函数用于进行模型训练,所述第二函数用于进行数据转换或者模型预测。
3.如权利要求1所述的模型序列化方法,其特征在于,在所述获取待发布的模型结构之后,还包括:
针对所述模型结构的各节点,分别确定其在所述模型训练阶段所对应的任务类型;
根据所述对应的任务类型,从所述模型结构的各节点中确定出所述第一类型的节点和所述第二类型的节点;
其中,所述第一类型包括Estimator类型,所述第二类型包括Transformer类型。
4.如权利要求3所述的模型序列化方法,其特征在于,所述根据所述对应的任务类型,从所述模型结构的各节点中确定出所述第一类型的节点和所述第二类型的节点之后,还包括:
将非所述第一类型和所述第二类型的节点,从所述模型结构中删除,所述非所述第一类型和所述第二类型的节点包括Auxiliarier类型的节点。
5.如权利要求1-4任一项所述的模型序列化方法,其特征在于,所述得到有向无环图结构的序列化模型之后,还包括:
在线上加载所述有向无环图结构的序列化模型;
调用目标实例应用程序编程接口API和预测函数,运行所述有向无环图结构的序列化模型以执行线上预测过程;
其中,所述目标实例API,是采用反射机制对所述有向无环图结构进行描述得到的。
6.如权利要求5所述的模型序列化方法,其特征在于,所述预测函数的输入参数与用于执行所述线上预测过程的系统匹配,所述调用目标实例应用程序编程接口API和预测函数,运行所述有向无环图结构的序列化模型以执行线上预测过程,包括:
生成所述有向无环图结构的序列化模型对应的执行脚本;
运行所述对应的执行脚本;
基于所运行的执行脚本调用所述目标实例应用程序编程接口API和所述预测函数以执行所述线上预测过程。
7.一种模型序列化装置,其特征在于,包括:
获取模块,用于获取待发布的模型结构,所述模型结构包括多个节点,各节点与算法模型相对应;
调整模块,用于对所述模型结构中第一类型的节点,以及第二类型的节点,进行输入参数和输出参数的数据类型调整,以将调整后的输入参数和输出参数作为对应算法模型的参数,其中,Fit函数和Transform函数的输入参数调整后的数据类型为将预设结构数据作为元素的数组类型,Fit函数和Transform函数的输出参数调整后的数据类型为数组类型,所述第一类型的节点用于在模型训练阶段进行模型训练,第二类型的节点用于在所述模型训练阶段进行数据转换,所述预设结构数据为dataframe结构的数据;
序列化处理模块,用于根据所述模型结构中各节点之间的有向关系,对各节点对应的算法模型进行序列化处理,得到有向无环图结构的序列化模型。
8.根据权利要求7所述的模型序列化装置,其特征在于,所述调整模块,具体用于:
对所述第一类型的节点和所述第二类型的节点,均获取目标函数;
对所述目标函数,根据预设结构数据,将输入参数和输出参数调整为将所述预设结构数据作为元素的数组类型;
其中,所述目标函数包括第一函数和第二函数,所述第一函数用于进行模型训练,所述第二函数用于进行数据转换或者模型预测。
9.如权利要求7所述的模型序列化装置,其特征在于,还包括:
第一确定模块,用于针对所述模型结构的各节点,分别确定其在所述模型训练阶段所对应的任务类型;
第二确定模块,用于根据所述对应的任务类型,从所述模型结构的各节点中确定出所述第一类型的节点和所述第二类型的节点;
其中,所述第一类型包括Estimator类型,所述第二类型包括Transformer类型。
10.如权利要求9所述的模型序列化装置,其特征在于,还包括:
删除模块,用于将非所述第一类型和所述第二类型的节点,从所述模型结构中删除,所述非所述第一类型和所述第二类型的节点包括Auxiliarier类型的节点。
11.如权利要求7-10任一项所述的模型序列化装置,其特征在于,还包括:
加载模块,用于在线上加载所述有向无环图结构的序列化模型;
调用模块,用于调用目标实例应用程序编程接口API和预测函数,运行所述有向无环图结构的序列化模型以执行线上预测过程;
其中,所述目标实例API,是采用反射机制对所述有向无环图结构进行描述得到的。
12.如权利要求11所述的模型序列化装置,其特征在于,所述预测函数的输入参数与用于执行所述线上预测过程的系统匹配,所述调用模块,具体用于:
生成所述有向无环图结构的序列化模型对应的执行脚本;
运行所述对应的执行脚本;
基于所运行的执行脚本调用所述目标实例应用程序编程接口API和所述预测函数以执行所述线上预测过程。
13.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的模型序列化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216816.2A CN109375912B (zh) | 2018-10-18 | 2018-10-18 | 模型序列化方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216816.2A CN109375912B (zh) | 2018-10-18 | 2018-10-18 | 模型序列化方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109375912A CN109375912A (zh) | 2019-02-22 |
CN109375912B true CN109375912B (zh) | 2021-09-21 |
Family
ID=65401023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811216816.2A Active CN109375912B (zh) | 2018-10-18 | 2018-10-18 | 模型序列化方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109375912B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110956272B (zh) * | 2019-11-01 | 2023-08-08 | 第四范式(北京)技术有限公司 | 实现数据处理的方法和系统 |
CN111310934B (zh) * | 2020-02-14 | 2023-10-17 | 北京百度网讯科技有限公司 | 一种模型生成方法、装置、电子设备和存储介质 |
CN111708520B (zh) * | 2020-06-16 | 2023-08-29 | 北京百度网讯科技有限公司 | 应用构建方法、装置、电子设备及存储介质 |
CN113792067B (zh) * | 2021-11-16 | 2022-02-11 | 全景智联(武汉)科技有限公司 | 一种基于递归算法的sql自动生成系统与方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677752A (zh) * | 2015-12-30 | 2016-06-15 | 深圳先进技术研究院 | 一种流式计算和批处理计算相结合处理系统及方法 |
CN105868019A (zh) * | 2016-02-01 | 2016-08-17 | 中国科学院大学 | 一种Spark平台性能自动优化方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495427B2 (en) * | 2010-06-04 | 2016-11-15 | Yale University | Processing of data using a database system in communication with a data processing framework |
US9684493B2 (en) * | 2014-06-02 | 2017-06-20 | International Business Machines Corporation | R-language integration with a declarative machine learning language |
US9699205B2 (en) * | 2015-08-31 | 2017-07-04 | Splunk Inc. | Network security system |
US20170316094A1 (en) * | 2016-04-29 | 2017-11-02 | Sparkflows, Inc. | Browser based, pluggable, workflow driven big data pipelines and analytics system |
-
2018
- 2018-10-18 CN CN201811216816.2A patent/CN109375912B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677752A (zh) * | 2015-12-30 | 2016-06-15 | 深圳先进技术研究院 | 一种流式计算和批处理计算相结合处理系统及方法 |
CN105868019A (zh) * | 2016-02-01 | 2016-08-17 | 中国科学院大学 | 一种Spark平台性能自动优化方法 |
Non-Patent Citations (4)
Title |
---|
"Big Data: Tutorial and guidelines on information and process fusion for analytics algorithms with MapReduce";Sergio Ramírez-Gallego等;《Information Fusion》;20171010;第42卷;第51-61页 * |
"Spark的Ml pipeline";Spark学习技巧;《https://cloud.tencent.com/developer/article/1032906》;20180131;第1-4页 * |
"基于Spark的大数据清洗框架设计与实现";金翰伟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160715(第07期);I138-675 * |
"基于Spark的流程化机器学习分析方法";赵玲玲 等;《计算机系统应用》;20161215;第25卷(第12期);第162-168页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109375912A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109375912B (zh) | 模型序列化方法、装置及存储介质 | |
CN111079942B (zh) | 执行机器学习的分布式系统及其方法 | |
US20120011458A1 (en) | Visualizing Expressions for Dynamic Analytics | |
US11144330B2 (en) | Algorithm program loading method and related apparatus | |
US20140156849A1 (en) | Map-reduce workflow processing apparatus and method, and storage media storing the same | |
CN111026568A (zh) | 数据和任务关系构建方法、装置、计算机设备及存储介质 | |
US9405578B2 (en) | Intelligent application back stack management | |
US9424260B2 (en) | Techniques for data assignment from an external distributed file system to a database management system | |
US8619022B1 (en) | Updating a task-management system by manipulating physical objects | |
US10277667B2 (en) | Method and apparatus for executing application based on open computing language | |
CN103136043B (zh) | 一种异步io的迁移方法、系统和网络节点 | |
US20220138557A1 (en) | Deep Hybrid Graph-Based Forecasting Systems | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
CN115438768A (zh) | 模型推理方法、装置、计算机设备及存储介质 | |
US20220351436A1 (en) | Digital Content Editing using a Procedural Model | |
US10310823B2 (en) | Program development support system and program development support software | |
US10740937B1 (en) | Freeform gradient style transfer | |
WO2018145227A1 (en) | Managing data records in object-based cloud storage systems | |
CN109150993B (zh) | 一种获取网络请求切面的方法、终端装置及存储介质 | |
CN111327472B (zh) | 用于获取目标网络的方法及装置 | |
CN102063308A (zh) | 一种用于地震勘探资料处理流程控制的方法 | |
CN111079390A (zh) | 一种复选框列表的选择状态确定方法以及装置 | |
CN111858234A (zh) | 一种任务执行方法、装置、设备、介质 | |
CN114528045B (zh) | 插件操作方法、装置、计算机设备和存储介质 | |
CN115222041B (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 |