一种分布式机器学习方法和平台与流程

文档序号:11458957阅读:182来源:国知局
一种分布式机器学习方法和平台与流程

本申请涉及计算机技术,特别涉及一种分布式机器学习方法和平台。



背景技术:

大数据处理技术逐步发展,可以利用大数据构建在业务上应用的数据模型,并将该数据模型应用于对业务结果的预测。当数据量规模很小的时候,单台计算机的运算能力已足够;但是当数据量规模比较庞大的时候,就需要一个分布式的计算平台进行整套的建模过程。相关技术中,在分布式计算平台进行建模时,可以将建模过程包括的多个功能模块,分别部署在不同的设备上进行计算处理,但是,在将各个功能模块串接时,由于模块之间较为复杂的依赖关系,使得模块串接不流畅,比如,手动解析串联各模块,由此也使得数据处理的效率较低。



技术实现要素:

有鉴于此,本申请提供一种分布式机器学习方法和平台,以提高数据处理的效率。

具体地,本申请是通过如下技术方案实现的:

第一方面,提供一种分布式机器学习平台,所述平台包括:

逻辑构架模块,用于构建数据处理任务的执行逻辑,所述数据处理任务包括多个算法模块,每个所述算法模块包括:输入部分、算法部分、输出部分,且所述输入部分和输出部分具有相同的接口格式,以供所述多个算法模块之间根据所述接口格式进行串接;所述输入部分包括本算法模块与其他算 法模块之间的依赖信息;

算法执行模块,用于根据所述逻辑架构模块构建的执行逻辑,分别执行所述各个算法模块,且根据所述算法模块中的算法部分,调用资源层中的算法库进行运算。

第二方面,提供一种分布式机器学习方法,包括:

根据构建的数据处理任务的执行逻辑,分别执行所述数据处理任务中包括的多个算法模块;每个所述算法模块包括:输入部分、算法部分、输出部分,且所述输入部分和输出部分具有相同的接口格式;根据所述算法模块中的算法部分,调用资源层中的算法库进行运算;

根据所述算法模块中的输入部分包括的本算法模块与其他算法模块之间的依赖信息,以及所述接口格式,进行所述多个算法模块之间的串接。

本申请提供的分布式机器学习方法和平台,通过将建模过程包括的多个算法模块,分别部署在不同的设备上进行计算处理,并且,各个算法模块可以通过相同的接口格式,实现流畅的串接,从而提高了数据处理的效率,在应用分布式机器学习平台建模的例子中,提高了建模效率。

附图说明

图1是本申请一示例性实施例示出的一种分布式机器学习平台的框架;

图2是本申请一示例性实施例示出的一种算法模块的结构设计;

图3是本申请一示例性实施例示出的算法模块的串接示意图;

图4是本申请一示例性实施例示出的一种分布式机器学习方法的流程图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一 些方面相一致的装置和方法的例子。

本申请实施例提供了一种分布式机器学习平台,数据挖掘师可以使用该平台执行数据处理任务,例如,该数据处理任务可以是根据获取到的数据建立预测模型,并评估该预测模型的准确率。

图1示例了该分布式机器学习平台的框架,如图1所示,该平台包括逻辑构架模块11、算法执行模块12和资源层13。其中,在执行数据处理任务时,比如构建模型的过程中,将使用到各种算法,资源层13作为底层支撑,可以集成多种算法库,例如图1中示例的,r、python等单机版算法库,还有hadoop、odps、spark等分布式算法库,此外,还可以包括mllib、mahout、xlib等其他算法库,不再一一列举显示在图1中。

上述的资源层13相当于执行数据处理任务的底层支撑,例如,建模过程中的数据处理、特征选择、模型训练等都将使用到各种各样的算法,将调用资源层13中的算法库执行具体的处理。逻辑构架模块11用于构建数据处理任务的执行逻辑,例如,该数据处理任务可以包括多个算法模块,参见图1的示例,该分布式机器学习平台可以在逻辑构架模块11构建dag(directedacyclicgraph,有向无环图)执行逻辑,该dag执行逻辑可以表示数据处理任务的各个算法模块之间的调用关系。

图1示意了算法模块之间的dag逻辑,例如,算法模块1可以是对原始采集数据进行数据处理的模块,算法模块2可以是在对原始数据处理后进行特征分析的模块,可以进行特征选择或特征降维等,算法模块3可以是根据算法模块2得到的特征进行模型训练获得模型的模块,而算法模块n可以是对训练得到的模型进行效果预测的模块。上述例子仅是示意,实际应用中可以按照数据处理任务的特点划分多个算法模块,并通过搭建dag图表示该任务的执行过程。

算法执行模块12可以根据逻辑构架模块11构建的执行逻辑,分别执行各个算法模块,在执行算法模块时可以是通过调用资源层13中的算法库进行运算。本例子中,资源层13中包括单机版算法库和分布式算法库,尽可能的 使得资源层13中包括较为全面的多种类型的算法库,算法执行模块12在执行某个算法模块时,可以根据本次处理的数据量大小、对算法的准确性要求等因素,在资源层13中选择调用合适的算法库执行。比如,图1中示例了对于其中一个在逻辑构架模块11构建的算法模块,算法执行模块12可以从资源层13中的hadoop、odps和spark中选择一个算法库执行运算。

通过上述的描述,可以了解本例子的分布式机器学习平台的大体架构,即,逻辑构架模块11可以搭建数据处理任务的dag执行逻辑,表示出该数据处理任务包括的各个算法模块及其相互关系,而算法执行模块12可以根据逻辑构架模块11构建的执行逻辑,调用资源层13中的算法库执行各个算法模块。其中,本实施例中,将各个算法模块设计为统一的结构格式,以方便模块之间的串接和分布式部署。

图2示例了一个算法模块的结构设计,如图2所示,每个算法模块可以包括:输入部分21、算法部分22和输出部分23。输入部分21(input)作为算法部分(algorithm)的输入,输出部分23(output)作为算法部分的输出,该输入和输出具有相同的接口格式,其信息类型可以是如下三种的至少之一:数据(data)、模型(model)或结果(evaluation)。例如,数据可以是采样的数据、拆分后的数据等,模型可以是根据数据训练得到的某个模型,结果可以是根据模型预测得到的结果。

输入部分21还可以包括本算法模块与其他算法模块之间的依赖信息,例如,可以使用算法模块的模块标识表示所依赖的是哪个算法模块,比如,本模块依赖于上一个模块的数据、模型或结果。输入部分21所依赖的其他算法模块的数量可以为至少一个。算法部分22用于表示使用何种算法对输入数据21输入的信息进行处理。而输出部分23可以用于阐述该算法模块是否存在数据、模型或结果的产出。

如下通过一个例子,示意下算法模块的结构设计:

上述的例子,对算法模块的输入部分inputs、算法部分algorithm以及输出部分outputs都各自进行了标准定义,每一个算法模块都按照这种结构进行设计。例如,参见上面的例子中,输入inputs部分,依赖于的算法模块的taskid是‘10002’,并且,该算法模块‘10002’的数据、模型和结果,都作为本算法模块的输入。再参见上述例子的输出outputs部分,本算法模块的输出,包括数据和结果(true),没有输出模型(false)。本算法模块的算法部分algorithm中,使用的算法称是逻辑回归算法logisticregression。

此外,为了dag逻辑的清晰性,可以规定每个算法模块只能产出唯一一个数据、模型或结果,但可以引入多个数据、模型或结果。例如,在上面的例子中,输入部分inputs所依赖的算法模块只有taskid为‘10002’的算法模块,这个模块的数据、模型和结果作为本算法模块的输入。在其他的应用场景中,输入部分inputs所依赖的算法模块可以有更多个。

示例性的,如下示意一种多个输入的例子,参见该例子的输入部分inputs,本算法模块的输入依赖了三个,包括taskid分别为‘10002’、‘10003’和‘10004’的三个算法模块,将‘10002’输出的数据data、‘10003’输出的模型models以及‘10004’输出的结果evaluations,均作为本算法模块的输入。当然,实际应用中还可以是其他场景,例如,输入部分可以只有数据data和模型models,而没有结果evaluations,不再详举。

本实施例中,还对各个算法模块输出的信息类型也进行统一定义,例如,对于数据data,可以将中间结果的数据暂存在本地或分布式系统上,使用一个schema文件即可在不同的算法模块之间传递数据。对于模型models,可以用pmml(predictivemodelmarkuplanguage,预测模型标记语言)表达模型参数,pmml是一种事实标准语言,用于呈现数据挖掘模型,并且pmml可以用于不同的算法模块之间共享预测分析模型。对于结果evaluations,可以使用json的形式存放模型评估的结果数据,并且,该结果数据还可以进行可视化展示。

可以看到,本申请将数据处理任务分成了多个独立的算法模块,并且这些算法模块具有统一的接口格式,这种特点使得可以将这些算法模块进行分布式部署,并且该统一接口格式将用于方便各个算法模块之间的流畅串接。例如,参见图3的示例,该图3示例了三个算法模块g1、g2和g3,其中,g1输出的数据和模型、以及g2输出的数据和结果,都可以作为g3的输入,而g3输出的模型又可以作为其他模块的输入。在该过程中,g1、g2与g3的串接,由于g1(或g2)的输出与g3的输入具有相同的格式定义,都是数据、模型或结果,很容易实现模块之间的串接,不会产生接口标准方面的冲突。因此,通过相同的接口格式,各模块拼接即可组装为一个完整的dag逻辑以供执行。

在采用本例子的分布式机器学习平台进行建模时,可以将建模过程包括的多个算法模块,分别部署在不同的设备上进行计算处理,并且,各个算法模块可以通过相同的接口格式,实现流畅的串接,从而提高了数据处理的效率,在应用分布式机器学习平台建模的例子中,即提高了建模效率。

图4示例了使用本申请的分布式机器学习平台执行的分布式机器学习方法,如图4所示,该方法可以包括:

在步骤401中,根据构建的数据处理任务的执行逻辑,分别执行所述数据处理任务中包括的多个算法模块;每个所述算法模块包括:输入部分、算法部分、输出部分,且所述输入部分和输出部分具有相同的接口格式;根据所述算法模块中的算法部分,调用资源层中的算法库进行运算。

在步骤402中,根据所述算法模块中的输入部分包括的本算法模块与其他算法模块之间的依赖信息,以及所述接口格式,进行所述多个算法模块之间的串接。

上述的401和402的执行顺序并不限制,例如,分布式机器学习平台可以一边执行dag逻辑中的算法模块,一边将各个算法模块进行串接。此外,在根据算法模块进行算法库的调用时,可以是根据算法模块中的算法部分algorithm,调用资源层中的算法库进行运算。并且,本实施例的机器学习平台可以将分布在不同位置的同一算法进行封装,并根据数据量、算法运算要求等因素,选择合适的算法库执行algorithm的运算。

例如,逻辑回归算法logisticregression的训练模块在r、python中均有提供单机版算法库,同时在mahout、mllib上也存在分布式算法库,但是无论是单机版还是分布式算法库,算法本身的参数并无太大差异,本例子的机器学习平台可以将这些算法库进行统一封装。并且,平台的算法执行模块可以根据数据量大小、算法的稳定性、准确性要求等因素,评估选择合适的算法库运行。例如,如果数据量较小,可以选择单机版算法库,数据量较大时,可以选择分布式算法库以提高处理速度。

此外,数据处理任务中使用到的算法类型可以有多种,例如,数据处理 方面的算法、特征工程方面的算法、模型训练评估方面的算法。在数据处理方面,可以进行数据采样处理、数据拆分处理、缺失值处理等,在特征工程方面,可以进行特征重要性计算、特征交叉计算、特征离散化处理、特征选择等,在模型训练评估方面,可以进行模型训练、模型参数表达的pmml智能组装、模型的预测和评估、模型参数的智能寻优等。

本申请实施例的分布式机器学习平台,可以实现多种算法库的共享,尽可能包括较为全面的多种算法库;还可以构建dag逻辑清晰的表达模型的建模过程以及各个算法模块的关联;并且,通过设计统一的算法模块接口格式,使得各个算法模块既可以相对独立的分布式部署,又可以保证模块之间的顺畅串接,从而提高数据处理效率。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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