CN112380023B - 分布式模型计算控制方法及装置 - Google Patents
分布式模型计算控制方法及装置 Download PDFInfo
- Publication number
- CN112380023B CN112380023B CN202110059590.5A CN202110059590A CN112380023B CN 112380023 B CN112380023 B CN 112380023B CN 202110059590 A CN202110059590 A CN 202110059590A CN 112380023 B CN112380023 B CN 112380023B
- Authority
- CN
- China
- Prior art keywords
- cluster
- model
- computing
- data
- calculation
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种分布式模型计算控制方法及装置,通过集群执行程序建立多个集群计算容器,并将模型计算指令所对应的Json数据的目标用户计算模型以及目标用户计算模型的关联依赖文件添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用。接着,分别通过每个集群计算容器执行至少一个对应的集群计算任务,并调用目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。采用以上设计,通过多个集群计算容器同时进行模型计算,能够有效提高用户计算模型的计算速度和计算性能,降低硬件成本。
Description
技术领域
本申请涉及集群计算技术领域,具体而言,涉及一种分布式模型计算控制方法及装置。
背景技术
目前,金融风控行业正处在风口浪尖上,而想要做到风控的精准性,大数据和计算模型是必不可少的手段。传统计算模型和大数据计算是分离的两部分,大数据为计算模型提供数据支撑,计算模型根据大数据进行风控检测。
目前,模型计算过程大多是单机部署和单机计算,例如大多利用单台服务器的中央处理器或者图形处理器资源进行计算,计算性能存在瓶颈,若要提升性能将会导致硬件成本非常高昂。
发明内容
基于现有设计的不足,本申请提供一种分布式模型计算控制方法及装置,能够有效提高用户计算模型的计算速度和计算性能,降低硬件成本。
根据本申请的第一方面,提供一种分布式模型计算控制方法,应用于与分布式计算集群通信连接的服务器,所述服务器中预先配置有用户计算模型以及所述用户计算模型的关联依赖文件,所述方法包括:
在接收到模型计算指令时,向预设数据表中添加所述模型计算指令所对应的Json数据,并设置该Json数据的执行状态为未执行状态;
每隔预设时间间隔扫描所述预设数据表,在扫描到所述预设数据表中存在执行状态为未执行状态的Json数据,且不存在执行状态为正在执行状态的集群执行程序时,根据该Json数据的数据内容在分布式计算集群中调用集群执行程序;
通过所述集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用,其中,每个集群计算容器用于同时执行至少一个集群计算任务,每个所述集群计算任务与一个计算区间的待计算数据集一一对应;
分别通过每个集群计算容器执行至少一个对应的集群计算任务,调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。
在第一方面的一种可能的设计中,所述方法还包括:
在分布式计算集群中调用集群执行程序的之后,设置该Json数据的执行状态为正在执行状态;以及
在调用所述目标用户计算模型对每个集群计算任务的计算区间的数据集进行模型计算之后,且在该Json数据对应的所有集群计算任务的计算区间的数据集计算完毕时,设置该Json数据的执行状态为执行完成状态。
在第一方面的一种可能的设计中,所述根据该Json数据的数据内容在分布式计算集群中调用集群执行程序的步骤,包括:
从该Json数据的数据内容中获得对应的数据源表名、用户计算模型的模型文件名以及结果表表名;
根据所述数据源表名配置集群执行程序脚本的数据源调用接口,根据所述用户计算模型的模型文件名配置所述集群执行程序脚本的模型文件接口,并根据所述结果表表名配置所述集群执行程序脚本的输出结果路径;
根据所述数据源表名所对应的待计算数据集的数据大小确定所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小;
根据配置的所述集群执行程序脚本在分布式计算集群中调用集群执行程序。
在第一方面的一种可能的设计中,所述通过所述集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用的步骤,包括:
通过所述集群执行程序根据所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器;
通过所述集群执行程序根据所述模型文件接口获取所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件,并添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用。
在第一方面的一种可能的设计中,还包括:
在通过所述集群执行程序根据所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器之后,通过所述集群执行程序根据所述集群执行程序脚本中的数据源表名获取待计算数据集;
通过partition函数将所述待计算数据集分割为多个不同计算区间的待计算数据集;
根据每个集群计算容器的内存大小配置每个集群计算容器所对应执行的集群计算任务,并为每个集群计算任务分配至少一个计算区间的待计算数据集。
在第一方面的一种可能的设计中,所述调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算的步骤,包括:
在每个集群计算任务中,将该集群计算任务的计算区间的待计算数据集转换为所述目标用户计算模型对应的预设表格型数据结构的目标数据集;
根据所述目标用户计算模型的模型入口函数对所述目标数据集进行统一命名,并调用所述目标用户计算模型分别对每个目标数据集进行模型计算;
将每个目标数据集的计算结果输出到所述输出结果路径下。
在第一方面的一种可能的设计中,所述方法还包括:
调用预设模型上传协议,获取上传的用户计算模型以及所述用户计算模型的关联依赖文件,并配置所述用户计算模型的输入参数的数据结构为预设表格型数据结构;
配置所述用户计算模型的统一命名的模型入口函数。
根据本申请的第二方面,提供一种分布式模型计算控制装置,应用于与分布式计算集群通信连接的服务器,所述服务器中预先配置有用户计算模型以及所述用户计算模型的关联依赖文件,所述装置包括:
添加模块,用于在接收到模型计算指令时,向预设数据表中添加所述模型计算指令所对应的Json数据,并设置该Json数据的执行状态为未执行状态;
调用模块,用于每隔预设时间间隔扫描所述预设数据表,在扫描到所述预设数据表中存在执行状态为未执行状态的Json数据,且不存在执行状态为正在执行状态的集群执行程序时,根据该Json数据的数据内容在分布式计算集群中调用集群执行程序;
建立模块,用于通过所述集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用,其中,每个集群计算容器用于同时执行至少一个集群计算任务,每个所述集群计算任务与一个计算区间的待计算数据集一一对应;
计算模块,用于分别通过每个集群计算容器执行至少一个对应的集群计算任务,调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。
基于上述任一方面,本申请通过集群执行程序建立多个集群计算容器,并将模型计算指令所对应的Json数据的目标用户计算模型以及目标用户计算模型的关联依赖文件添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用。接着,分别通过每个集群计算容器执行至少一个对应的集群计算任务,并调用目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。采用以上设计,通过多个集群计算容器同时进行模型计算,能够有效提高用户计算模型的计算速度和计算性能,降低硬件成本。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的分布式模型计算控制系统的应用场景示意图;
图2示出了本申请实施例所提供的分布式模型计算控制方法的流程示意图;
图3示出了本申请实施例所提供的分布式模型计算控制原理示意图;
图4示出了现有技术中的模型计算示意图;
图5示出了本申请实施例所提供的分布式模型计算控制装置的功能模块示意图;
图6示出了本申请实施例所提供的用于执行上述的分布式模型计算控制方法的服务器的组件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请实施例的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其它操作,也可以从流程图中移除一个或多个操作。
图1示出了本申请实施例所提供的分布式模型计算控制系统10的应用场景示意图。本实施例中,分布式模型计算控制系统10可以包括服务器100以及与服务器100通信连接的用户终端200。
用户终端200可以包括但不限于智能手机、平板计算机、膝上型计算机、个人电脑、工作站等,在此不作详细限定。
在一种可能的实施方式中,服务器100可以是单个服务器,也可以是一个服务器组。服务器组可以是集中式的,也可以是分布式的(例如,服务器100可以是分布式系统)。
可以理解,在其它可能的实施方式中,该分布式模型计算控制系统10也可以仅包括图1所示组成部分的其中一部分或者还可以包括其它的组成部分。
图2示出了本申请实施例提供的分布式模型计算控制方法的流程示意图,本实施例中,该分布式模型计算控制方法可以由图1中所示的服务器100执行。应当理解,在其它实施例中,本实施例的分布式模型计算控制方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该分布式模型计算控制方法的详细步骤介绍如下。
步骤S110,在接收到模型计算指令时,向预设数据表中添加模型计算指令所对应的Json数据,并设置该Json数据的执行状态为未执行状态。
步骤S120,每隔预设时间间隔扫描预设数据表,在扫描到预设数据表中存在执行状态为未执行状态的Json数据,且不存在执行状态为正在执行状态的集群执行程序时,根据该Json数据的数据内容在分布式计算集群中调用集群执行程序。
步骤S130,通过集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及目标用户计算模型的关联依赖文件添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用。
步骤S140,分别通过每个集群计算容器执行至少一个对应的集群计算任务,调用目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。
本实施例中,针对步骤S110,模型计算指令可以由用户终端200根据用户请求生成。例如,用户可以选择请求本次模型计算所关联的目标用户计算模型以及目标用户计算模型的关联依赖文件,以及本次需要计算的源数据集等信息,即可通过用户终端200生成模型计算指令。此时,服务器100可以向预设数据表中添加模型计算指令所对应的Json(JavaScript Object Notation,JS 对象简谱) 数据,并设置该Json数据的执行状态为未执行状态。其中,目标用户计算模型可以是指用于对数据源提供的待计算数据集按照一定计算规则输出对应计算结果的任意定义的计算模型,例如可以是深度学习模型、决策树模型、数据挖掘模型等,其关联依赖文件可以是指该目标用户计算模型在计算过程中需要依赖的相关文件,例如训练样本集、模型参数更新信息等,在此不作详细限定。
本实施例中,Json数据是一种轻量级的数据交换格式,可以基于ECMAScript (欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,可以有效地提升网络传输效率。
本实施例中,针对步骤S120,预设时间间隔可以根据实际设计需求进行自定义,在此不作详细限定。例如,可以设置每隔1分钟扫描预设数据表。其中,预设数据表中还可以维护集群执行程序的状态,例如未执行状态、正在执行状态以及执行完成状态等。不同的状态可以用不同的数据标签来表示,例如未执行状态实用01表示,正在执行状态使用10表示,执行完成状态使用11表示,但不限于此。
本实施例中,每个集群计算容器可以用于同时执行至少一个集群计算任务,每个集群计算任务与一个计算区间的待计算数据集一一对应。
基于上述设计,本实施例通过集群执行程序建立多个集群计算容器,并将模型计算指令所对应的Json数据的目标用户计算模型以及目标用户计算模型的关联依赖文件添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用。接着,分别通过每个集群计算容器执行至少一个对应的集群计算任务,并调用目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。采用以上设计,通过多个集群计算容器同时进行模型计算,能够有效提高用户计算模型的计算速度和计算性能,降低硬件成本。
在一种可能的设计中,为了实时维护该Json数据的执行状态,可以在分布式计算集群中调用集群执行程序的之后,设置该Json数据的执行状态为正在执行状态。并且,在调用目标用户计算模型对每个集群计算任务的计算区间的数据集进行模型计算之后,且在该Json数据对应的所有集群计算任务的计算区间的数据集计算完毕时,设置该Json数据的执行状态为执行完成状态。
在一种可能的设计中,针对步骤S120,该Json数据的数据内容中可以包括数据源表名、用户计算模型的模型文件名以及结果表表名。其中,数据源表名可以是指待计算数据集所在的数据表的名称,用户计算模型的模型文件名可以是指用户计算模型的模型文件的名称,结果表表名可以是计算结果保存的数据表的名称。基于此,步骤S120可以通过以下子步骤S121-子步骤S124具体实施,详细描述如下。
子步骤S121,从该Json数据的数据内容中获得对应的数据源表名、用户计算模型的模型文件名以及结果表表名。
子步骤S122,根据数据源表名配置集群执行程序脚本的数据源调用接口,根据用户计算模型的模型文件名配置集群执行程序脚本的模型文件接口,并根据结果表表名配置集群执行程序脚本的输出结果路径。
子步骤S123,根据数据源表名所对应的待计算数据集的数据大小确定集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小。
子步骤S124,根据配置的集群执行程序脚本在分布式计算集群中调用集群执行程序。
例如,假设用户上传了一个用户计算模型的模型文件model.py,该用户计算模型的计算还依赖于“Py测试脚本_脚本附件_pkl1.pkl”和“Py测试脚本_脚本附件_pkl2.pkl”两个相关依赖文件。同时,数据源表名为:data_source_tb,最终输出结果保存在结果表表名result_tb中,则Json数据为:
{
"model_file": "model.py",
"source":"data_source_tb",
"target": "result_tb",
"param_list": [
{"file_name": "Py测试脚本_脚本附件_pkl1.pkl"},
{"file_name": "Py测试脚本_脚本附件_pkl2.pkl"}
]
}。
在此基础上,配置的集群执行程序脚本的示例性内容则为:
spark-submit --master yarn --deploy-mode cluster \
--driver-memory 1g \
--num-executors 100 \
--executor-memory 4g \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=/service/anaconda3/bin/python3 \
--conf spark.yarn.appMasterEnv.ARROW_LIBHDFS_DIR=/service/anaconda3/lib \
--conf spark.executorEnv.ARROW_LIBHDFS_DIR=/service/anaconda3/lib \
--py-files \
path/model.py,\
path/Py测试脚本_脚本附件_pkl1.pkl,\
path/Py测试脚本_脚本附件_pkl2.pkl \
path/spark.py data_source_tb result_tb
示例性地,以上集群执行程序脚本的内容的含义如下:
提交运行集群执行程序Spark.py程序,将预设数据表中该Json数据的执行状态设置为正在执行状态,并指定资源调度器为Yarn,运行模式为集群模式。仅为一种可能的示例,根据数据源表名所对应的待计算数据集的数据大小可以灵活进行以下设置:Spark.py程序的Driver端内存大小为1G,启动集群计算容器Container的数量为100个,每个Container的内存大小为4G,并设置Anaconda环境信息。同时,将该Json数据所对应的目标用户计算模型以及目标用户计算模型的关联依赖文件到集群执行程序运行的临时空间以供多个集群计算容器共享调用,并提示Spark.py程序:数据源为 data_source_tb,最终计算结果保存在result_tb中。其中,spark.py为预先编译的集群执行程序,负责读取数据源调用接口,模型文件接口,并保存模型计算的输出结果。
如此,可以基于以上集群执行程序脚本在分布式计算集群中调用集群执行程序。
在一种可能的设计中,针对步骤S130,可以通过以下子步骤S131-子步骤S132具体实施,详细描述如下。
子步骤S131,通过集群执行程序根据集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器。
例如,以上述示例为例,可以建立100个内存大小为4G的集群计算容器。
子步骤S132,通过集群执行程序根据模型文件接口获取所对应的目标用户计算模型以及目标用户计算模型的关联依赖文件,并添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用。
例如,参照图3所示,数据源Data source、用户计算模型User defined model以及用户计算模型User defined model的关联依赖文件(图3中未示出)可以添加到集群执行程序运行的临时空间以供多个集群计算容器(例如图3中的Container 1、Container 2、Container N等)共享调用。
此外,在通过集群执行程序根据集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器之后,本实施例还可以通过集群执行程序Spark cluster根据集群执行程序脚本中的数据源表名获取待计算数据集。然后,通过partition函数将待计算数据集分割为多个不同计算区间的待计算数据集(例如图3中的Data source Partition 1、Data source Partition 2、Data source Partition N等)。
在此基础上,可以根据每个集群计算容器Container 1、Container 2、ContainerN的内存大小配置每个集群计算容器Container 1、Container 2、Container N所对应执行的集群计算任务task1、task2、taskN,并为每个集群计算任务task1、task2、taskN分配至少一个计算区间的待计算数据集,例如分别分配Data source Partition 1、Data sourcePartition 2、Data source Partition N。
在此基础,作为一种可能的示例,针对步骤S140,可以通过以下子步骤S141-子步骤S143具体实施,详细描述如下。
子步骤S141,在每个集群计算任务中,将该集群计算任务的计算区间的待计算数据集转换为目标用户计算模型对应的预设表格型数据结构的目标数据集。
子步骤S142,根据目标用户计算模型的模型入口函数对目标数据集进行统一命名,并调用目标用户计算模型分别对每个目标数据集进行模型计算。
子步骤S143,将每个目标数据集的计算结果输出到输出结果路径下。
本实施例中,考虑到计算过程需要进行统一化,以便于后续进行数据调用和数据存储等操作,在每个用户计算模型的上传过程中,需要调用预设模型上传协议,获取上传的用户计算模型以及用户计算模型的关联依赖文件,并配置用户计算模型的输入参数的数据结构为预设表格型数据结构,同时,配置用户计算模型的统一命名的模型入口函数。
例如,针对用户自定义的任意一个用户计算模型,可以通过统一的预设模型上传协议进行上传,并且该用户计算模型内部会接收一个预设表格型数据结构PandasDataFrame,经用户计算模型计算后输出一个Pandas DataFrame的结果,并提供一个统一命名的模型入口函数func。例如,该预设模型上传协议可以允许用户上传任何自定义的用户计算模型及相关依赖文件到服务器100的指定路径下,用户计算模型,输入参数和输出结果都必须基于该预设表格型数据结构Pandas DataFrame的,并提供一个统一命名的模型入口函数为每个数据集按照统一的规范进行命名,以便于后续区分和数据调取等操作。
如上所述,可以在每个集群计算任务中调用目标用户计算模型分别对每个目标数据集进行模型计算,得到对应的结果集,将每个目标数据集的结果集输出到前述配置的输出结果路径下。该集群计算任务的计算区间的待计算数据集和结果集都是以PandasDataFrame的数据结构存在的,可以支持各种保存方式,例如数据库,Parquet格式的数据文件等。例如图3所示,可以将各个结果集Result set 1、Result set 1、Result set N作为按照Pandas DataFrame的数据结构保存在前述配置的输出结果路径result_tb下。
在上述描述的基础上,请参阅图4,按照现有技术中采用的单台服务器的中央处理器或者图形处理器资源进行计算的方式,具体描述如下。
现假设数据集有1000万条(line1、line2、......、lineN),每条数据集在用户计算模型User defined model中的计算过程会耗费0.01s,则现有技术的方案至少需要耗费1000万*0.01s = 10万秒 = 27.8 小时,才能得到全部的结果集(result1、result2、......、resultN)。且单台服务器100不可能一次性加载全部数据到内存中,只能循环加载并处理数据,导致十分耗时。例如可以估算大概需要28小时,在这28小时过程中,假设计算失败或服务器宕机,则重新计算时则需要知道上一次计算的位置,或全部重新计算,进一步耗费计算时间,增加开发成本。如果想提升性能,只能一味纵向增加服务器性能,成本很高。
现以本实施例提供的计算方案计算,假设数据集存在100个分区,则每个分区是10万条数据,则集群计算任务task的数量也为100。根据集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小可以启动100个Container,每个Container只同时执行一个task,则100个Container刚好执行同时执行100个task,则一个task的耗时为:10万*0.01s=1000s=0.278小时。并且,可以一次性加载所有数据集到内存中,开发成本低,且在整个过程中可以自动为失败的task分配新的Container重新执行计算,从而在提升性能的同时降低开发成本和硬件成本,无需一味纵向增加服务器100性能。
基于同一发明构思,请参阅图5,示出了本申请实施例提供的分布式模型计算控制装置110的功能模块示意图,本实施例可以根据上述方法实施例对分布式模型计算控制装置110进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。比如,在采用对应各个功能划分各个功能模块的情况下,图5示出的分布式模型计算控制装置110只是一种装置示意图。其中,分布式模型计算控制装置110可以包括添加模块111、调用模块112、建立模块113以及计算模块114,下面分别对该分布式模型计算控制装置110的各个功能模块的功能进行详细阐述。
添加模块111,用于在接收到模型计算指令时,向预设数据表中添加模型计算指令所对应的Json数据,并设置该Json数据的执行状态为未执行状态。可以理解,该添加模块111可以用于执行上述步骤S110,关于该添加模块111的详细实现方式可以参照上述对步骤S110有关的内容。
调用模块112,用于每隔预设时间间隔扫描预设数据表,在扫描到预设数据表中存在执行状态为未执行状态的Json数据,且不存在执行状态为正在执行状态的集群执行程序时,根据该Json数据的数据内容在分布式计算集群中调用集群执行程序。可以理解,该调用模块112可以用于执行上述步骤S120,关于该调用模块112的详细实现方式可以参照上述对步骤S120有关的内容。
建立模块113,用于通过集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及目标用户计算模型的关联依赖文件添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用,其中,每个集群计算容器用于同时执行至少一个集群计算任务,每个集群计算任务与一个计算区间的待计算数据集一一对应。可以理解,该建立模块113可以用于执行上述步骤S130,关于该建立模块113的详细实现方式可以参照上述对步骤S130有关的内容。
计算模块114,用于分别通过每个集群计算容器执行至少一个对应的集群计算任务,调用目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算。可以理解,该计算模块114可以用于执行上述步骤S140,关于该计算模块114的详细实现方式可以参照上述对步骤S140有关的内容。
在一种可能的设计中,添加模块111具体还可以用于:
在分布式计算集群中调用集群执行程序的之后,设置该Json数据的执行状态为正在执行状态;以及
在调用目标用户计算模型对每个集群计算任务的计算区间的数据集进行模型计算之后,且在该Json数据对应的所有集群计算任务的计算区间的数据集计算完毕时,设置该Json数据的执行状态为执行完成状态。
在一种可能的设计中,调用模块112具体可以用于:
从该Json数据的数据内容中获得对应的数据源表名、用户计算模型的模型文件名以及结果表表名;
根据数据源表名配置集群执行程序脚本的数据源调用接口,根据用户计算模型的模型文件名配置集群执行程序脚本的模型文件接口,并根据结果表表名配置集群执行程序脚本的输出结果路径;
根据数据源表名所对应的待计算数据集的数据大小确定集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小;
根据配置的集群执行程序脚本在分布式计算集群中调用集群执行程序。
在一种可能的设计中,建立模块113具体可以用于:
通过集群执行程序根据集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器;
通过集群执行程序根据模型文件接口获取所对应的目标用户计算模型以及目标用户计算模型的关联依赖文件,并添加到集群执行程序运行的临时空间以供多个集群计算容器共享调用。
在一种可能的设计中,建立模块113具体可以用于:
在通过集群执行程序根据集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器之后,通过集群执行程序根据集群执行程序脚本中的数据源表名获取待计算数据集;
通过partition函数将待计算数据集分割为多个不同计算区间的待计算数据集;
根据每个集群计算容器的内存大小配置每个集群计算容器所对应执行的集群计算任务,并为每个集群计算任务分配至少一个计算区间的待计算数据集。
在一种可能的设计中,计算模块114具体可以用于:
在每个集群计算任务中,将该集群计算任务的计算区间的待计算数据集转换为目标用户计算模型对应的预设表格型数据结构的目标数据集;
根据目标用户计算模型的模型入口函数对目标数据集进行统一命名,并调用目标用户计算模型分别对每个目标数据集进行模型计算;
将每个目标数据集的计算结果输出到输出结果路径下。
在一种可能的设计中,分布式模型计算控制装置110还可以包括配置模块1110,配置模块1110可以用于调用预设模型上传协议,获取上传的用户计算模型以及用户计算模型的关联依赖文件,并配置用户计算模型的输入参数的数据结构为预设表格型数据结构,同时配置用户计算模型的统一命名的模型入口函数。
基于同一发明构思,请参阅图6,示出了本申请实施例提供的用于执行上述分布式模型计算控制方法的服务器100的结构示意框图,该服务器100可以包括分布式模型计算控制装置110、机器可读存储介质120和处理器130。
本实施例中,机器可读存储介质120与处理器130均位于服务器100中且二者分离设置。然而,应当理解的是,机器可读存储介质120也可以是独立于服务器100之外,且可以由处理器130通过总线接口来访问。可替换地,机器可读存储介质120也可以集成到处理器130中,例如,可以是高速缓存和/或通用寄存器。
分布式模型计算控制装置110可以包括存储在机器可读存储介质120的软件功能模块(例如图5中所示的添加模块111、调用模块112、建立模块113以及计算模块114),当处理器130执行分布式模型计算控制装置110中的软件功能模块时,以实现前述方法实施例提供的分布式模型计算控制方法。
由于本申请实施例提供的服务器100是上述服务器100执行的方法实施例的另一种实现形式,且服务器100可用于执行上述方法实施例提供的分布式模型计算控制方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。
以上所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。通常在附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,在附图中提供的本申请的实施例的详细描述并非旨在限制本申请的保护范围,而仅仅是表示本申请的选定实施例。因此,本申请的保护范围应以权利要求的保护范围为准。此外,基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下可获得的所有其它实施例,都应属于本申请保护的范围。
Claims (6)
1.一种分布式模型计算控制方法,其特征在于,应用于与分布式计算集群通信连接的服务器,所述服务器中预先配置有用户计算模型以及所述用户计算模型的关联依赖文件,所述方法包括:
在接收到模型计算指令时,向预设数据表中添加所述模型计算指令所对应的Json数据,并设置该Json数据的执行状态为未执行状态;
每隔预设时间间隔扫描所述预设数据表,在扫描到所述预设数据表中存在执行状态为未执行状态的Json数据,且不存在执行状态为正在执行状态的集群执行程序时,根据该Json数据的数据内容在分布式计算集群中调用集群执行程序;
通过所述集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用,其中,每个集群计算容器用于同时执行至少一个集群计算任务,每个所述集群计算任务与一个计算区间的待计算数据集一一对应,所述目标用户计算模型是指用于对数据源提供的待计算数据集按照一定计算规则输出对应计算结果的任意定义的计算模型,包括深度学习模型、决策树模型、数据挖掘模型,其关联依赖文件是指该目标用户计算模型在计算过程中需要依赖的相关文件,包括训练样本集、模型参数更新信息;
分别通过每个集群计算容器执行至少一个对应的集群计算任务,调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算,所述根据该Json数据的数据内容在分布式计算集群中调用集群执行程序的步骤,包括:
从该Json数据的数据内容中获得对应的数据源表名、用户计算模型的模型文件名以及结果表表名;
根据所述数据源表名配置集群执行程序脚本的数据源调用接口,根据所述用户计算模型的模型文件名配置所述集群执行程序脚本的模型文件接口,并根据所述结果表表名配置所述集群执行程序脚本的输出结果路径;
根据所述数据源表名所对应的待计算数据集的数据大小确定所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小;
根据配置的所述集群执行程序脚本在分布式计算集群中调用集群执行程序;
所述调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算的步骤,包括:
在每个集群计算任务中,将该集群计算任务的计算区间的待计算数据集转换为所述目标用户计算模型对应的预设表格型数据结构的目标数据集;
根据所述目标用户计算模型的模型入口函数对所述目标数据集进行统一命名,并调用所述目标用户计算模型分别对每个目标数据集进行模型计算;
将每个目标数据集的计算结果输出到所述输出结果路径下;
所述方法还包括:
调用预设模型上传协议,获取上传的用户计算模型以及所述用户计算模型的关联依赖文件,并配置所述用户计算模型的输入参数的数据结构为预设表格型数据结构;
配置所述用户计算模型的统一命名的模型入口函数,该预设模型上传协议允许用户上传任何自定义的用户计算模型及相关依赖文件到服务器的指定路径下,用户计算模型,输入参数和输出结果均基于该预设表格型数据结构,并提供一个统一命名的模型入口函数为每个数据集按照统一的规范进行命名,以便于区分和数据调取操作。
2.根据权利要求1所述的分布式模型计算控制方法,其特征在于,所述方法还包括:
在分布式计算集群中调用集群执行程序的之后,设置该Json数据的执行状态为正在执行状态;以及
在调用所述目标用户计算模型对每个集群计算任务的计算区间的数据集进行模型计算之后,且在该Json数据对应的所有集群计算任务的计算区间的数据集计算完毕时,设置该Json数据的执行状态为执行完成状态。
3.根据权利要求1所述的分布式模型计算控制方法,其特征在于,所述通过所述集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用的步骤,包括:
通过所述集群执行程序根据所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器;
通过所述集群执行程序根据所述模型文件接口获取所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件,并添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用。
4.根据权利要求1所述的分布式模型计算控制方法,其特征在于,还包括:
在通过所述集群执行程序根据所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器之后,通过所述集群执行程序根据所述集群执行程序脚本中的数据源表名获取待计算数据集;
通过partition函数将所述待计算数据集分割为多个不同计算区间的待计算数据集;
根据每个集群计算容器的内存大小配置每个集群计算容器所对应执行的集群计算任务,并为每个集群计算任务分配至少一个计算区间的待计算数据集。
5.一种分布式模型计算控制装置,其特征在于,应用于与分布式计算集群通信连接的服务器,所述服务器中预先配置有用户计算模型以及所述用户计算模型的关联依赖文件,所述装置包括:
添加模块,用于在接收到模型计算指令时,向预设数据表中添加所述模型计算指令所对应的Json数据,并设置该Json数据的执行状态为未执行状态;
调用模块,用于每隔预设时间间隔扫描所述预设数据表,在扫描到所述预设数据表中存在执行状态为未执行状态的Json数据,且不存在执行状态为正在执行状态的集群执行程序时,根据该Json数据的数据内容在分布式计算集群中调用集群执行程序;
建立模块,用于通过所述集群执行程序建立多个集群计算容器,并将该Json数据所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用,其中,每个集群计算容器用于同时执行至少一个集群计算任务,每个所述集群计算任务与一个计算区间的待计算数据集一一对应,所述目标用户计算模型是指用于对数据源提供的待计算数据集按照一定计算规则输出对应计算结果的任意定义的计算模型,包括深度学习模型、决策树模型、数据挖掘模型,其关联依赖文件是指该目标用户计算模型在计算过程中需要依赖的相关文件,包括训练样本集、模型参数更新信息;
计算模块,用于分别通过每个集群计算容器执行至少一个对应的集群计算任务,调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算;
所述调用模块具体用于:
从该Json数据的数据内容中获得对应的数据源表名、用户计算模型的模型文件名以及结果表表名;
根据所述数据源表名配置集群执行程序脚本的数据源调用接口,根据所述用户计算模型的模型文件名配置所述集群执行程序脚本的模型文件接口,并根据所述结果表表名配置所述集群执行程序脚本的输出结果路径;
根据所述数据源表名所对应的待计算数据集的数据大小确定所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小;
根据配置的所述集群执行程序脚本在分布式计算集群中调用集群执行程序;
所述调用所述目标用户计算模型对每个集群计算任务的计算区间的待计算数据集进行模型计算的方式,包括:
在每个集群计算任务中,将该集群计算任务的计算区间的待计算数据集转换为所述目标用户计算模型对应的预设表格型数据结构的目标数据集;
根据所述目标用户计算模型的模型入口函数对所述目标数据集进行统一命名,并调用所述目标用户计算模型分别对每个目标数据集进行模型计算;
将每个目标数据集的计算结果输出到所述输出结果路径下;
以及所述调用模块具体还用于:
调用预设模型上传协议,获取上传的用户计算模型以及所述用户计算模型的关联依赖文件,并配置所述用户计算模型的输入参数的数据结构为预设表格型数据结构;
配置所述用户计算模型的统一命名的模型入口函数,该预设模型上传协议允许用户上传任何自定义的用户计算模型及相关依赖文件到服务器的指定路径下,用户计算模型,输入参数和输出结果均基于该预设表格型数据结构,并提供一个统一命名的模型入口函数为每个数据集按照统一的规范进行命名,以便于区分和数据调取操作。
6.根据权利要求5所述的分布式模型计算控制装置,其特征在于,所述调用模块具体用于:
通过所述集群执行程序根据所述集群执行程序脚本中集群计算容器的数量以及每个集群计算容器的内存大小建立多个集群计算容器;
通过所述集群执行程序根据所述模型文件接口获取所对应的目标用户计算模型以及所述目标用户计算模型的关联依赖文件,并添加到所述集群执行程序运行的临时空间以供所述多个集群计算容器共享调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110059590.5A CN112380023B (zh) | 2021-01-18 | 2021-01-18 | 分布式模型计算控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110059590.5A CN112380023B (zh) | 2021-01-18 | 2021-01-18 | 分布式模型计算控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380023A CN112380023A (zh) | 2021-02-19 |
CN112380023B true CN112380023B (zh) | 2021-04-06 |
Family
ID=74581961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110059590.5A Active CN112380023B (zh) | 2021-01-18 | 2021-01-18 | 分布式模型计算控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380023B (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107621978A (zh) * | 2017-09-29 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种并行计算环境下的高可用任务处理控制模型 |
CN111679860B (zh) * | 2020-08-12 | 2020-11-03 | 上海冰鉴信息科技有限公司 | 分布式信息处理方法及装置 |
-
2021
- 2021-01-18 CN CN202110059590.5A patent/CN112380023B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112380023A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210216875A1 (en) | Method and apparatus for training deep learning model | |
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
US11445008B2 (en) | Data processing methods, electronic devices, and storage media | |
US20220357990A1 (en) | Method for allocating data processing tasks, electronic device, and storage medium | |
US20130219226A1 (en) | Distributed testing within a serial testing infrastructure | |
CN110647332A (zh) | 基于容器云的软件部署方法和装置 | |
CN111176818B (zh) | 分布式预测的方法、装置、系统、电子设备及存储介质 | |
US20200394049A1 (en) | Support for third-party kernel modules on host operating systems | |
CN113050940A (zh) | 小程序的预览方法、相关装置及计算机程序产品 | |
US20210224108A1 (en) | Method for executing task by scheduling device, and computer device and storage medium | |
CN112395736A (zh) | 一种分布交互仿真系统的并行仿真作业调度方法 | |
CN113377665A (zh) | 基于容器技术的测试方法、装置、电子设备及存储介质 | |
CN115454629A (zh) | 基于云原生技术的ai算法与微服务调度方法及其装置 | |
CN111679860B (zh) | 分布式信息处理方法及装置 | |
WO2019117767A1 (en) | Method, function manager and arrangement for handling function calls | |
CN112380023B (zh) | 分布式模型计算控制方法及装置 | |
Gupta et al. | Deployment of Multi-Tier Application on Cloud and Continuous Monitoring using Kubernetes | |
CN117234582A (zh) | 一种项目代码处理方法、装置、电子设备及存储介质 | |
CN116662039A (zh) | 基于共享内存的工业信息并行检测方法、装置及介质 | |
CN116248526A (zh) | 部署容器平台的方法、装置及电子设备 | |
CN114168209A (zh) | 硬件操作方法及装置、存储介质及电子设备 | |
CN114020454A (zh) | 一种内存管理方法、装置、设备及介质 | |
CN113708971A (zh) | 一种Openstack云平台的部署方法及相关装置 | |
CN115292053B (zh) | 移动端cnn的cpu、gpu、npu统一调度方法 | |
Morman et al. | The Future of GNU Radio: Heterogeneous Computing, Distributed Processing, and Scheduler-as-a-Plugin |
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 |