分布式预测的方法、装置、系统、电子设备及存储介质与流程

文档序号:20773455发布日期:2020-05-19 20:31阅读:190来源:国知局
分布式预测的方法、装置、系统、电子设备及存储介质与流程

本公开实施例涉及大数据技术领域,具体涉及一种分布式预测的方法、装置、系统、电子设备及非暂态计算机可读存储介质。



背景技术:

大数据是一种超出了传统数据库软件工具能力范围的数据集合,具有四个特征:海量的数据规模、快速的数据流转、多样的数据类型和价值密度低。通常来讲,大数据无法用单台的计算机进行处理,须采用分布式计算架构。目前,大数据处理框架多采用spark(一种用于大规模数据处理的计算引擎)、hadoop(一种分布式处理基础框架)。

在传统的大数据场景下,通常基于spark+hadoop构建分布式计算存储集群。但是搭建spark+hadoop集群是一个较大工程,复杂度较高,对于一些公司、实验室或个人,期望基于简易的分布式环境来测试机器学习或深度学习模型,也有部分公司、实验室或个人基于自身业务构建分布式调度方案,但通常需要从底层进行编写,导致易用性及普适性相对较弱。为此,亟需设计更轻量级的、且接近于spark+hadoop集群处理的分布式方案。

上述对问题的发现过程的描述,仅用于辅助理解本公开的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

为了解决现有技术存在的至少一个问题,本公开的至少一个实施例提供了一种分布式预测的方法、装置、系统、电子设备及非暂态计算机可读存储介质。

第一方面,本公开实施例提供一种分布式预测的方法,应用于第一节点,所述第一节点中部署有dask框架,所述第一节点基于所述dask框架执行所述方法,所述方法包括:

获取预测任务对应的输入数据;

分片所述输入数据,得到多个分片数据;

基于所述多个分片数据,将所述预测任务拆分为多个子任务,其中,每个分片数据对应一个子任务;

分配所述分片数据对应的子任务给至少一个计算节点;

其中,所述计算节点中部署有所述dask框架且创建有容器;所述容器中设置有预先训练的模型,且所述模型基于所述dask框架执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。

在一些实施例中,在所述分配所述分片数据对应的子任务给至少一个计算节点后,所述方法还包括:

获取并存储合并结果;其中,所述合并结果为不同计算节点的子任务预测结果的合并结果。

在一些实施例中,所述基于所述多个分片数据,将所述预测任务拆分为多个子任务包括:

基于所述预先训练的模型,构建每个分片数据对应的子任务;

基于每个分片数据对应的子任务,构建任务图;其中,所述任务图中设置有每个分片数据对应的子任务的处理方式;

所述分配所述分片数据对应的子任务给至少一个计算节点包括:

基于所述任务图,分配所述分片数据对应的子任务给至少一个计算节点,且分配的子任务中携带有所述子任务的处理方式。

在一些实施例中,所述任务图中还包括:每个分片数据对应的子任务之间的依赖关系。

在一些实施例中,所述任务图中还包括:用于合并每个分片数据对应的子任务预测结果的子任务以及用于存储合并结果的子任务。

在一些实施例中,所述分配所述分片数据对应的子任务给至少一个计算节点后,所述方法还包括:

若任一计算节点的子任务处理失败,则记录失败的子任务,并将失败的子任务重新分配至可运行的计算节点。

在一些实施例中,所述分配所述分片数据对应的子任务给至少一个计算节点后,所述方法还包括:

记录已完成的子任务,基于记录的已完成的子任务,确定待完成的子任务,并将所述待完成的子任务分配给至少一个计算节点。

在一些实施例中,所述存储合并结果包括:将所述合并结果保存至对象存储系统。

在一些实施例中,所述方法还包括:

将所述第一节点的运行中间状态记录在redis数据库中。

在一些实施例中,所述第一节点和所述计算节点为pod节点;

在所述获取预测任务对应的输入数据前,所述方法还包括:

获取所述第一节点对应的dask镜像文件;

基于所述dask镜像文件,在所述第一节点中,部署所述dask框架。

第二方面,本公开实施例还提供一种分布式预测的方法,应用于计算节点,所述计算节点中部署有dask框架且创建有容器,所述容器中设置有预先训练的模型,所述计算节点基于所述dask框架执行所述方法,所述方法包括:

接收第一节点分配的分片数据对应的子任务;其中,所述第一节点中部署有dask框架,所述第一节点基于所述dask框架,获取预测任务对应的输入数据,并分片所述输入数据得到多个分片数据,基于所述多个分片数据将所述预测任务拆分为多个子任务,并分配所述分片数据对应的子任务给至少一个计算节点;

基于所述dask框架通过所述模型执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。

在一些实施例中,所述分配的分片数据对应的子任务中携带有所述子任务的处理方式;

所述通过所述模型执行分配的分片数据对应的子任务包括:

基于所述子任务的处理方式,通过所述模型执行分配的分片数据对应的子任务。

在一些实施例中,所述子任务的处理方式包括:所述分片数据的数据地址和所述子任务的预测结果的存储地址;

所述基于所述子任务的处理方式,通过所述模型执行分配的分片数据对应的子任务包括:

基于所述分片数据的数据地址,读取所述分片数据;

加载所述模型,通过所述模型基于所述分片数据进行预测;

基于所述预测结果的存储地址,存储所述模型的预测结果。

在一些实施例中,所述预测结果存储在对象存储系统。

在一些实施例中,所述方法还包括:

将所述计算节点的运行中间状态记录在redis数据库中。

在一些实施例中,所述方法还包括:

当所述子任务执行完成,向所述第一节点反馈所述子任务执行完成。

第三方面,本公开实施例还提供一种分布式预测的装置,应用于第一节点,所述第一节点中部署有dask框架,所述装置包括:

获取单元,用于获取预测任务对应的输入数据;

分片单元,用于分片所述输入数据,得到多个分片数据;

拆分单元,用于基于所述多个分片数据,将所述预测任务拆分为多个子任务,其中,每个分片数据对应一个子任务;

分配单元,用于分配所述分片数据对应的子任务给至少一个计算节点;

其中,所述计算节点中部署有所述dask框架且创建有容器;所述容器中设置有预先训练的模型,且所述模型基于所述dask框架执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。

第四方面,本公开实施例还提供一种分布式预测的装置,应用于计算节点,所述计算节点中部署有dask框架且创建有容器,所述容器中设置有预先训练的模型,所述装置包括:

接收单元,用于接收第一节点分配的分片数据对应的子任务;其中,所述第一节点中部署有dask框架,所述第一节点基于所述dask框架,获取预测任务对应的输入数据,并分片所述输入数据得到多个分片数据,基于所述多个分片数据将所述预测任务拆分为多个子任务,并分配所述分片数据对应的子任务给至少一个计算节点;

预测单元,用于基于所述dask框架通过所述模型执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。

第五方面,本公开实施例还提供一种分布式预测的系统,所述系统包括第一节点和多个计算节点;

所述第一节点中部署有dask框架,所述第一节点基于所述dask框架执行如第一方面任一实施例的方法步骤;

所述计算节点中部署有dask框架且创建有容器,所述容器中设置有预先训练的模型,所述计算节点基于所述dask框架执行如第二方面任一实施例的方法步骤。

第六方面,本公开实施例还提供一种电子设备,包括:处理器和存储器;所述处理器通过调用所述存储器存储的程序或指令,用于执行如第一方面任一实施例或第二方面任一实施例的方法步骤。

第七方面,本公开实施例还提供一种非暂态计算机可读存储介质,用于存储程序或指令,所述程序或指令使计算机执行如第一方面任一实施例或第二方面任一实施例的方法步骤。

可见,本公开实施例的至少一个实施例中,基于dask框架构建dask+容器的分布式预测方案,通过对数据进行分片,将数据处理过程分为多个子任务,进而将不同子任务分配到不同计算节点进行分布式计算,实现易用且更轻量级的大数据处理。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本公开实施例提供的一种分布式预测的系统的整体架构图;

图2是本公开实施例提供的一种中心节点的框图;

图3是本公开实施例提供的一种任务图的示意图;

图4是本公开实施例提供的一种电子设备的框图;

图5是本公开实施例提供的一种分布式预测的方法流程图;

图6为本公开实施例提供的另一种分布式预测的方法流程图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。基于所描述的本公开的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本公开保护的范围。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

图1为本公开实施例提供的一种分布式预测的系统的整体架构图。图1中包括:分布式大数据服务器集群11、分布式第一存储设备12、分布式第二存储设备13以及其他用于分布式预测的设备,例如包括但不限于镜像库14和web服务器15。

其中,分布式大数据服务器集群11包括但不限于:多个计算节点111以及中心节点112(第一节点)。计算节点111用于执行大数据计算、分析等功能。中心节点112用于给多个计算节点111分配计算任务。

在一些实施例中,分布式第一存储设备12可以是一个或者多个,分布式第二存储设备13可以是一个或者多个。在一些实施例中,分布式第一存储设备12可以为对象存储设备,分布式第二存储设备13可以为redis设备。

本发明实施例中,分布式大数据服务器集群11为基于dask的k8s服务器集群。计算节点111为k8s服务器集群的dask计算节点。中心节点112为k8s服务器集群的dask中心节点。

其中,k8s为kubernetes的简称,是一个开源的容器服务编排程序,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful)。k8s在docker(容器引擎)技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

传统的应用部署方式是通过插件或脚本来安装应用。缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,不利于应用的升级、更新及回滚等操作。相比传统的应用部署方式,通过部署容器方式实现应用部署,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。由于容器与底层设施、机器文件系统解耦的,因此能在不同云、不同版本操作系统间进行迁移。

k8s中运行部署应用或服务的最小单元是pod,pod是一个或多个容器的组合,pod支持多个容器在一个pod中共享网络地址和文件系统,可以通过进程间通信和文件共享的方式组合完成服务。

dask是一个灵活的具有任务调度的python并行计算库。dask比spark更小,重量更轻,具有更少的功能,与其他库结合使用,尤其是数字python生态系统中的库。

可见,基于dask的k8s服务器集群相比现有的spark+hadoop集群,更轻量级。

在一些实施例中,dask中心节点为通过加载预先部署的k8s中心节点文件而生成的。在一些实施例中,k8s中心节点文件为基于dask分布式环境编写得到。在一些实施例中,k8s中心节点文件为k8sscheduleryaml文件。k8sscheduleryaml文件预先部署在web服务器15上或者其他预设服务器上。

在一些实施例中,k8s中心节点文件包括:dask镜像文件的地址及dask中心节点的配置信息。在一些实施例中,dask镜像文件以及机器学习相关库可预先存储到特定的镜像库14中。dask镜像文件的地址即为镜像库14中dask镜像文件的位置信息。在一些实施例中,dask中心节点的配置信息可以理解为创建容器之后需要执行的命令。

在一些实施例中,加载预先部署的k8s中心节点文件包括(1)至(3):

(1)基于dask镜像文件的地址,获取dask镜像文件。在一些实施例中,基于dask镜像文件的地址,从镜像库14中下载dask镜像文件。

(2)基于dask镜像文件和k8s中心节点文件,构建容器组。在一些实施例中,容器组即为pod。

(3)基于dask中心节点的配置信息,将容器组配置为dask中心节点。在一些实施例中,dask中心节点为daskschedulerpod。

在一些实施例中,dask中心节点的配置信息为dask中心节点的服务启动文件的地址。在一些实施例中,dask中心节点的服务启动文件可以为预先编写的dask中心节点的启动脚本。服务启动文件的地址也即启动脚本的存放位置。

在一些实施例中,基于dask中心节点的配置信息,将容器组配置为dask中心节点,包括(1)和(2):

(1)基于dask中心节点的配置信息,获取dask中心节点的服务启动文件。在一些实施例中,基于dask中心节点的启动脚本的地址,下载dask中心节点的启动脚本。

(2)基于dask中心节点的服务启动文件,将容器组配置为dask中心节点。在一些实施例中,下载dask中心节点的启动脚本后,在创建的容器组中执行启动脚本,实现dask中心节点的功能。

在一些实施例中,dask计算节点为通过加载预先部署的k8s计算节点文件而生成的。在一些实施例中,k8s计算节点文件为基于dask分布式环境编写得到。在一些实施例中,k8s计算节点文件为k8sworkeryaml文件。k8sworkeryaml文件预先部署在web服务器15上或者其他预设服务器上。

在一些实施例中,k8s计算节点文件包括:dask镜像文件的地址及dask计算节点的配置信息。在一些实施例中,dask镜像文件以及机器学习相关库可预先存储到特定的镜像库14中。dask镜像文件的地址即为镜像库14中dask镜像文件的位置信息。在一些实施例中,dask计算节点的配置信息可以理解为创建容器之后需要执行的命令。

在一些实施例中,加载预先部署的k8s计算节点文件包括(1)至(3):

(1)基于dask镜像文件的地址,获取dask镜像文件。在一些实施例中,基于dask镜像文件的地址,从镜像库14中下载dask镜像文件。

(2)基于dask镜像文件和k8s计算节点文件,构建容器组。在一些实施例中,容器组即为pod。

(3)基于dask计算节点的配置信息,将容器组配置为dask计算节点。在一些实施例中,dask计算节点为daskworkerpod。

在一些实施例中,dask计算节点的配置信息为dask计算节点的服务启动文件的地址。在一些实施例中,dask计算节点的服务启动文件可以为预先编写的dask计算节点的启动脚本。服务启动文件的地址也即启动脚本的存放位置。

在一些实施例中,基于dask计算节点的配置信息,将容器组配置为dask计算节点,包括(1)和(2):

(1)基于dask计算节点的配置信息,获取dask计算节点的服务启动文件。在一些实施例中,基于dask计算节点的启动脚本的地址,下载dask计算节点的启动脚本。

(2)基于dask计算节点的服务启动文件,将容器组配置为dask计算节点。在一些实施例中,下载dask计算节点的启动脚本后,在创建的容器组中执行启动脚本,实现dask计算节点的功能。

在一些实施例中,中心节点112用于获取输入数据。在一些实施例中,输入数据为分布式第一存储设备12的输入数据。在一些实施例中,输入数据可以为文件字节流。在一些实施例中,中心节点112基于输入数据,构建任务图,构建的任务图包括多个子任务。进一步地,中心节点112分配多个子任务至不同计算节点111。在一些实施例中,中心节点112存储合并结果;其中,合并结果为不同计算节点的子任务计算结果的合并结果。

中心节点112通过对数据进行任务图构建,将数据处理过程分为多个子任务,进而将不同子任务分配到不同计算节点进行分布式计算,并将分布式计算结果进行合并后存储,实现易用且更轻量级的大数据处理。

图2为本公开实施例提供的一种中心节点20的框图。在一些实施例中,中心节点20可以实现为图1中的中心节点112或者中心节点112的一部分。如图2所示,中心节点20可划分为多个单元,例如可包括但不限于:获取单元201、构建单元202、分配单元203和存储单元204。

获取单元201,用于获取预测任务对应的输入数据。在一些实施例中,获取单元201获取分布式第一存储设备12的输入数据。分布式第一存储设备12可以为对象存储设备。输入数据可以为对象存储设备中的文件字节流。

构建单元202,用于基于输入数据,构建任务图;任务图包括多个子任务。在一些实施例中,构建单元202可以分片输入数据,得到多个分片数据。在一些实施例中,构建单元202可基于多个分片数据,将预测任务拆分为多个子任务,其中,每个分片数据对应一个子任务。在一些实施例中,构建单元202可基于预先训练的模型,构建每个分片数据对应的子任务。在一些实施例中,构建单元202可基于每个分片数据对应的子任务,构建任务图。

在一些实施例中,可以预先训练不同类型的模型,完成不同的大数据处理功能,例如,模型为预测模型,用于完成大数据预测功能,构建的任务图即为预测任务图。

在一些实施例中,每个分片数据对应的子任务可包括:读取分片数据、加载预测模型和得到预测结果。构建单元202基于每个分片数据对应的子任务构建的任务图例如图3所示。

在一些实施例中,构建单元202构建的任务图可包括每个分片数据对应的子任务之间的依赖关系。例如图3中,读取分片数据和加载预测模型之间存在依赖关系,只有读取分片数据后,才加载预测模型,进而通过加载预测模型对分片数据进行预测,得到预测结果,从而完成对分片数据的处理。

在一些实施例中,构建单元202构建的任务图可包括每个分片数据对应的子任务、每个分片数据对应的子任务之间的依赖关系、用于合并每个分片数据对应的子任务预测结果的子任务以及用于存储合并结果的子任务。

图3为一种任务图的示意图,图3中的箭头表示依赖关系。构建单元202分片输入数据,得到分片数据a、分片数据b和分片数据c。进而构建单元202可基于多个分片数据,将预测任务拆分为多个子任务,每个分片数据对应一个子任务。

对于分片数据a,对应的子任务为:读取分片数据a、加载预测模型和得到预测结果。

对于分片数据b,对应的子任务为:读取分片数据b、加载预测模型和得到预测结果。

对于分片数据c,对应的子任务为:读取分片数据c、加载预测模型和得到预测结果。

图3中,构建单元202还构建了:用于合并预测结果的子任务以及用于存储合并结果的子任务。

在一些实施例中,构建单元202构建任务图可基于daskdelayed对象进行构建,构建的任务图可称为延迟计算任务图。

分配单元203,用于分配分片数据对应的子任务给至少一个计算节点111。在一些实施例中,分配单元203在分配子任务至计算节点111时,同时将与子任务对应的依赖关系指示给计算节点111。在一些实施例中,分配单元203基于任务图,分配分片数据对应的子任务给至少一个计算节点,且分配的子任务中携带有子任务的处理方式。其中,子任务的处理方式可包括但不限于:分片数据的数据地址和子任务的预测结果的存储地址。

在一些实施例中,中心节点20还可包括合并单元,用于合并不同计算节点的子任务预测结果,得到合并结果。在一些实施例中,用于存储合并结果的子任务可由中心节点20执行。

在一些实施例中,中心节点20还可包括记录单元,用于记录失败的子任务。在一些实施例中,分配单元203分配多个子任务至不同计算节点111后,若任一计算节点的子任务处理失败,则记录单元记录失败的子任务。

在一些实施例中,记录单元还用于记录已完成的子任务,并保存已完成的子任务的预测结果。在一些实施例中,记录单元将已完成的子任务的预测结果进行临时存储并发送给分布式第一存储设备12,由分布式第一存储设备12进行存储。第一存储设备12例如为对象存储设备。

在一些实施例中,分配单元203确定记录单元记录失败的子任务后,将失败的子任务重新分配至可运行的计算节点。在一些实施例中,可运行的计算节点包括空闲的计算节点和正在处理其他任务的计算节点。

在一些实施例中,若中心节点20计算失败,则记录单元删除已完成的子任务的计算结果,并且构建单元202基于未完成的子任务,重新构建任务图,分配单元203基于重新构建的任务图分配不同计算节点。在一些实施例中,若中心节点20计算失败,则记录单元仅删除临时存储的已完成的子任务的计算结果,不删除对象存储设备存储的已完成的子任务的计算结果。

在一些实施例中,中心节点20还可包括运行中间状态记录单元,用于记录中心节点20和每个计算节点的运行中间状态。在一些实施例中,运行中间状态为节点运行过程中的状态,例如包括但不限于:starting(启动中)、waiting(等待)、running(处理)、fail(失败)、success(成功)。

在一些实施例中,运行中间状态记录单元将中心节点20和每个计算节点的运行中间状态发送给分布式第二存储设备13,由分布式第二存储设备13进行存储。在一些实施例中,分布式第二存储设备13为redis设备。

在一些实施例中,运行中间状态记录单元将中心节点20的运行中间状态记录在中心节点日志,且将每个计算节点的运行中间状态记录在计算节点日志。

在一些实施例中,运行中间状态记录单元可进一步划分为中心节点运行中间状态记录子单元和计算节点运行中间状态记录子单元。其中,中心节点运行中间状态记录子单元属于中心节点20,计算节点运行中间状态记录子单元属于计算节点。

在一些实施例中,中心节点运行中间状态记录子单元将中心节点20的运行中间状态发送给redis设备进行存储。在一些实施例中,中心节点运行中间状态记录子单元将中心节点20的运行中间状态记录在中心节点日志。

在一些实施例中,计算节点运行中间状态记录子单元将计算节点的运行中间状态发送给redis设备进行存储。在一些实施例中,计算节点运行中间状态记录子单元将计算节点的运行中间状态记录在计算节点日志。

在一些实施例中,中心节点日志还记录有:每个计算节点的监听状态。在一些实施例中,计算节点日志还记录有:每个计算节点的资源使用状态以及子任务数量。

通过中心节点日志和计算节点日志,便于中心节点及时了解dask服务器集群的工作情况。

存储单元204,用于存储合并结果;其中,合并结果为不同计算节点的子任务预测结果的合并结果。

在一些实施例中,存储单元204将合并结果发送给分布式第一存储设备12,由分布式第一存储设备12进行存储。在一些实施例中,分布式第一存储设备12为对象存储设备。

在一些实施例中,中心节点20中各单元的划分仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如获取单元201、构建单元202、分配单元203和存储单元204可以实现为一个单元;获取单元201、构建单元202、分配单元203或存储单元204也可以划分为多个子单元。可以理解的是,各个单元或子单元能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。

图4是本公开实施例提供的一种电子设备的结构示意图。如图6所示,电子设备包括:至少一个处理器401、至少一个存储器402和至少一个通信接口403。电子设备中的各个组件通过总线系统404耦合在一起。通信接口403,用于与外部设备之间的信息传输。可理解,总线系统404用于实现这些组件之间的连接通信。总线系统404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图4中将各种总线都标为总线系统404。

可以理解,本实施例中的存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。

在一些实施方式中,存储器402存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。

其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。实现本公开实施例提供的分布式预测的方法的程序可以包含在应用程序中。

在本公开实施例中,处理器401通过调用存储器402存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器401用于执行本公开实施例提供的分布式预测的方法各实施例的步骤。

本公开实施例提供的分布式预测的方法可以应用于处理器401中,或者由处理器401实现。处理器401可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本公开实施例提供的分布式预测的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成方法的步骤。

图5为本公开实施例提供的分布式预测的方法流程图。该方法应用于第一节点,所述第一节点中部署有dask框架,所述第一节点基于所述dask框架执行所述方法。在一些实施例中,第一节点可以为图1所示的中心节点112。如图5所示,分布式预测的方法包括步骤501至504。

在一些实施例中,所述方法首先执行准备步骤:获取第一节点对应的dask镜像文件;基于所述dask镜像文件,在所述第一节点中,部署所述dask框架。在执行准备步骤后,执行如下步骤501至504。

501、获取预测任务对应的输入数据。在一些实施例中,获取分布式第一存储设备的输入数据。分布式第一存储设备可以为对象存储设备。输入数据可以为对象存储设备中的文件字节流。

502、分片所述输入数据,得到多个分片数据。

503、基于所述多个分片数据,将所述预测任务拆分为多个子任务,其中,每个分片数据对应一个子任务。

在一些实施例中,基于预先训练的模型,构建每个分片数据对应的子任务;进而基于每个分片数据对应的子任务,构建任务图;其中,所述任务图中设置有每个分片数据对应的子任务的处理方式。子任务的处理方式可包括但不限于:分片数据的数据地址和子任务的预测结果的存储地址。

在一些实施例中,所述任务图中还可包括:每个分片数据对应的子任务之间的依赖关系。在一些实施例中,所述任务图中还可包括:用于合并每个分片数据对应的子任务预测结果的子任务以及用于存储合并结果的子任务。

504、分配所述分片数据对应的子任务给至少一个计算节点。在一些实施例中,基于构建的任务图,分配所述分片数据对应的子任务给至少一个计算节点,且分配的子任务中携带有所述子任务的处理方式。

其中,所述计算节点中部署有所述dask框架且创建有容器;所述容器中设置有预先训练的模型,且所述模型基于所述dask框架执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。在一些实施例中,第一节点和计算节点均为pod节点。

在一些实施例中,在步骤504所述分配所述分片数据对应的子任务给至少一个计算节点后,所述方法还包括:获取并存储合并结果;其中,所述合并结果为不同计算节点的子任务预测结果的合并结果。在一些实施例中,将所述合并结果保存至对象存储系统。

在一些实施例中,在步骤504所述分配所述分片数据对应的子任务给至少一个计算节点后,所述方法还包括:

若任一计算节点的子任务处理失败,则记录失败的子任务,并将失败的子任务重新分配至可运行的计算节点。

在一些实施例中,在步骤504所述分配所述分片数据对应的子任务给至少一个计算节点后,所述方法还包括:

记录已完成的子任务,基于记录的已完成的子任务,确定待完成的子任务,并将所述待完成的子任务分配给至少一个计算节点。

在一些实施例中,所述方法还包括:将所述第一节点的运行中间状态记录在redis数据库中。

图6为本公开实施例提供的分布式预测的方法流程图。该方法应用于计算节点,所述计算节点中部署有dask框架且创建有容器,所述容器中设置有预先训练的模型,所述计算节点基于所述dask框架执行所述方法,所述方法包括步骤601和602:

601、接收第一节点分配的分片数据对应的子任务;其中,所述第一节点中部署有dask框架,所述第一节点基于所述dask框架,获取预测任务对应的输入数据,并分片所述输入数据得到多个分片数据,基于所述多个分片数据将所述预测任务拆分为多个子任务,并分配所述分片数据对应的子任务给至少一个计算节点。

在一些实施例中,分配的分片数据对应的子任务中携带有所述子任务的处理方式。所述子任务的处理方式可包括但不限于:所述分片数据的数据地址和所述子任务的预测结果的存储地址。

602、基于所述dask框架通过所述模型执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。在一些实施例中,所述预测结果存储在对象存储系统。

在一些实施例中,通过所述模型执行分配的分片数据对应的子任务包括:基于所述子任务的处理方式,通过所述模型执行分配的分片数据对应的子任务。

在一些实施例中,通过所述模型执行分配的分片数据对应的子任务包括:基于所述分片数据的数据地址,读取所述分片数据;加载所述模型,通过所述模型基于所述分片数据进行预测;基于所述预测结果的存储地址,存储所述模型的预测结果。

在一些实施例中,所述方法还可包括:将所述计算节点的运行中间状态记录在redis数据库中。在一些实施例中,所述方法还包括:当所述子任务执行完成,向所述第一节点反馈所述子任务执行完成。

本公开实施例还提供一种分布式预测的装置,应用于第一节点,所述第一节点中部署有dask框架,所述装置包括:

获取单元,用于获取预测任务对应的输入数据;

分片单元,用于分片所述输入数据,得到多个分片数据;

拆分单元,用于基于所述多个分片数据,将所述预测任务拆分为多个子任务,其中,每个分片数据对应一个子任务;

分配单元,用于分配所述分片数据对应的子任务给至少一个计算节点;

其中,所述计算节点中部署有所述dask框架且创建有容器;所述容器中设置有预先训练的模型,且所述模型基于所述dask框架执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。

本实施例公开的分布式预测的装置中各单元的具体描述与应用于第一节点的分布式预测方法实施例相似,不再赘述。

本公开实施例还提供一种分布式预测的装置,应用于计算节点,所述计算节点中部署有dask框架且创建有容器,所述容器中设置有预先训练的模型,所述装置包括:

接收单元,用于接收第一节点分配的分片数据对应的子任务;其中,所述第一节点中部署有dask框架,所述第一节点基于所述dask框架,获取预测任务对应的输入数据,并分片所述输入数据得到多个分片数据,基于所述多个分片数据将所述预测任务拆分为多个子任务,并分配所述分片数据对应的子任务给至少一个计算节点;

预测单元,用于基于所述dask框架通过所述模型执行分配的分片数据对应的子任务,基于所述分片数据进行预测得到预测结果。

本实施例公开的分布式预测的装置中各单元的具体描述与应用于计算节点的分布式预测方法实施例相似,不再赘述。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员能够理解,本公开实施例并不受所描述的动作顺序的限制,因为依据本公开实施例,某些步骤可以采用其他顺序或者同时进行(例如在一些实施例中,“将中心节点和每个计算节点的运行状态发送给分布式第二存储设备”;“将中心节点的运行状态记录在中心节点日志,且将每个计算节点的运行状态记录在计算节点日志”,可同时进行)。另外,本领域技术人员能够理解,说明书中所描述的实施例均属于可选实施例。

本公开实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如分布式预测的方法各实施例的步骤,为避免重复描述,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。

本领域的技术人员能够理解,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

虽然结合附图描述了本公开的实施方式,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

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