`
kavy
  • 浏览: 891388 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spark生态圈之——MLBase分布式机器学习系统

 
阅读更多

MLBase背景

MLBase是Spark生态圈里的一部分,专门负责机器学习这块(除它之外,还有负责图计算的GraphX、SQL ad-hoc查询的Shark、具备容错性查询能力的BlinkDB等)。看了MLBase的论文后,我是迫不及待想要分享一下这个ML系统。虽然对具体ML算法了解不多,但是对比类似的系统,比如Weka,Mahout而言,我感到MLBase的构想有更进一步的创新和独到之处。而且更重要的是,Spark上支持python算法包这件事情,我现在考虑的是:能打通策略组同学写的算法程序能依赖各节点上已经分配好的或自动依赖的函数库,而MLBase非常值得关注,他的实现本身其实很符合我们想要做的事,下面会具体说。

之前在youtube上,AMP实验室对MLBase有个介绍,并且说会在今年夏天release MLlib和MLI两个部分,在冬天发布ML Optimizer,从MLlib,MLI到ML Optimizer,是针对不同程度的算法科学家使用的不同抽象程度的接口。且MLlib会在Spark0.8版本里自带,现在我使用的Spark是0.7.2版本的。更多这三者的介绍请参考他的官网,里面一共也就这么点介绍。其实我蛮担心一个问题,就是Spark0.8发布后,开发机上不具备联网编译能力,到时候是不是又要想个办法在别的地方先编译一下Spark再拷进去,太囧了。


MLbase处理数据

MLbase想要让机器学习的门槛更低,让一些可能并不了解ML的用户也能使用MLbase这个工具来处理自己的数据,这份数据可以小,也可以是大数据。那MLBase怎么做到这件事呢?一方面,MLbase提供了一套类Pig的语言,他是声明式的。这件事其实是我们想做的,因为我在之前一篇文章中说,想要在Spark之上加一层DSL,MLBase的做法看上去恰恰很符合这点。比如说,我们要做分类,我们只需要写这么几行scala代码

 

var X = load("some_data", 2 to 10)
var y = load("some_data", 1)
var (fn-model, summary) = doClassify(X, y)

大致意思是,X是需要分类的数据集,y是从这个数据集里取的一个分类标签,第三步就是doClassify()这件事。这样的处理有两个主要好处:第一,每一步数据处理很清楚,可以很容易地可视化出来;第二,对用户来说,用ML算法处理这件事非常透明,我不用管我用的是什么分类方法,是SVM还是AdaBoost,SVM用的kernel是线性的还是RBF的,original和scaled的参数又是调成多少,等等这些事情不需要我们考虑。那么这又引出第二个问题,MLBase是怎么做的?

 

MLbase架构核心

MLbase有一个新颖的优化器,会选择它认为最适合的已经在内部实现好了的机器学习算法和相关参数,来处理用户输入的数据,并返回模型或别的帮助分析的结果。总体上的处理流程如下图:

用户输入的类Pig的Task,比如doClassify(X, y),或者还可以做协同过滤doCollabFilter(X, y),还可以做一些图计算findTopKDegreeNodes(G, k = 1000)之类的事情,先会传给Parser处理,然后交给LLP。LLP是logical learning plan,即是逻辑上的一个学习选择过程,在这个过程里选择该用什么ML算法,他的特征提取应该用什么做,参数应该选什么,数据集怎么拆子数据集的策略等事情,LLP决定之后交给Optimizer。优化器是MLbase的核心,简单说他会把数据拆分成若干份,对每一份使用不同的算法和参数来运算出结果,看哪一种搭配方式得到的结果最优(注意这次最优结果是初步的),优化器做完这些事之后就交给PLP。PLP是physical
learning plan
,即物理(实际上)要执行的计划,他会让MLbase的master把任务分配给具体slave去最后执行之前选好的算法方案,把结果计算出来返回,同时返回这次计算的学习模型。

总结一些,这个流程是Task -> Parser -> LLP -> Optimizer -> PLP -> Execute -> Result/Model,即先从逻辑上,在已有的算法里选几个适合这个场景的套餐,让优化器都去做一遍,把认为当时最优的套餐给实际执行的部分去执行,返回结果。具体LLP,优化器内部包含的内容,执行过程我就不具体写了,论文中有介绍一些,这里就关注一下他的思想,下面再贴一个图吧。

 

更激动人心的是,MLbase并不止于把结果返回给用户,他还有后续工作要做。大致做法是,在LLP、优化器部分,他会存储一些中间结果和特征,然后会后续继续搜寻和测试结果更好的算法和相关参数,并且会通知用户(具体也不知道后续通知是怎么个形式,文中只说会 inform the user about it )。除此之外,LLP内部实现的算法,是可以扩充的,MLbase考虑到了他的可扩展性,就是想让ML专家增加新的ML算法得到MLbase里去,应该是按照MLI,MLlib这些接口(第一张图)来扩充。大体上最关键的就是这几点:会自动找算法;自己会选择和优化;可以扩充。

 

MLbase特性总结

本文主要介绍了MLbase能做的事,并把最关键的实现方式简单介绍了一下,希望可以让读者感受到MLBase的设计思想和独到的地方。总的来说,Mlbase的核心是他的优化器,把声明式的task转化成复杂的学习计划,产出最优的模型和计算结果。与Weka,mahout不同的是,

    首先MLbase是分布式的,Weka是一个单机的系统;

    其次,Mlbase是自动化的,Weka和mahout都需要使用者具备机器学习技能,来选择自己想要的算法和参数来做处理;

    再者,MLbase提供了不同抽象程度的接口,让算法可以扩充,让会ML的与不会ML的人都可以使用他;

    最后,他可以基于Spark这个平台,这也是很大一个看点。

 

让我们期待它的发布!

分享到:
评论

相关推荐

    Spark生态圈介绍

    这些组件分别处理 SparkCore 提供内存计算框架、SparkStreaming 的实时处理应用、Spark SQL 的即席查询、MLlib 或 MLbase 的机器学习和 GraphX 的图处理。 Spark 的设计理念是使用 Scala 语言进行实现的,这是一种...

    Mlbase-Evan Spark and Ameet Talwalker UC Berkeley

    从提供的文件信息中,我们可以提取有关MLbase、Spark、分布式计算、大数据、机器学习、深度学习等关键知识点。下面将详细介绍这些概念和相关技术。 首先,MLbase是由Evan Sparks和Ameet Talwalkar于加州大学伯克利...

    开源的分布式内存文件系统 Tachyon.zip

    MLBase,基于分布式系统的机器学习系统;Akaros,一个多核和大型SMP系统的操作系统;Sparrow,一个低延迟计算集群调度系统。Tachyon可运行在如下任意平台上: 标签:分布式 文件系统

    Spark最佳学习路径-黄忠

    通过这一部分的学习,学习者将获得对Spark整个生态系统的全面认识。 总的来说,Spark作为现代大数据处理的一个重要工具,它的学习路径涉及广泛的知识点,包括技术背景理解、环境搭建、编程实践和生态系统认知等。...

    Spark概述1.0.docx

    ### Spark概述 ...通过对RDD的深入理解以及Spark生态系统的整体把握,用户能够更加高效地利用Spark来解决实际问题。未来,随着Spark技术的不断发展和完善,其在大数据领域的应用前景将会更加广阔。

    Matei Zaharia:Spark的现状和未来

    Spark生态系统中已经出现了基于Spark的不同项目,如BlinkDB、Shark(SQL)、Spark Streaming(实时处理)、GraphX(图处理)和MLbase(机器学习基础)等。 5. Spark的未来规划 Matei Zaharia在演讲中提出了未来...

    对分布式数据挖掘解决方案的思考.pdf

    5. 分布式计算技术的发展:分布式数据挖掘的发展与分布式计算技术、云计算技术、Hadoop生态圈、内存数据库和非结构化数据库等新技术的兴起有着密切的关系。这些技术为应对大数据时代的数据分析和处理提供了强大的...

    Spark 在KaiwuDB中的应用与实践.pdf

    Spark的生态系统,即BDAS(Berkeley Data Analytics Stack),包括了多个关键组件: - **Spark Core**:提供了基础的内存计算框架,是其他所有组件的基础。 - **Spark SQL**:使得用户可以用SQL语句进行交互式查询...

    大数据软件平台.pdf

    因此,Spark引入了更丰富的编程模型,包括更多操作符,如SparkStreaming、GraphX、SparkSQL和MLbase等,不仅限于map和reduce。此外,Spark还强调内存管理,通过减少数据移动来提高复杂分析的性能,从而实现了对...

    Julia for Data Science.pdf

    Julia拥有多个专门的机器学习库,例如MLBase、ScikitLearn.jl等,这些库提供了许多实用的机器学习算法,使得构建复杂的机器学习模型变得简单快捷。无监督学习中的聚类分析和降维技术,以及监督学习中的回归分析、...

    大数据时代的数据挖掘及应用 (1).pdf

    在大数据时代背景下,数据挖掘技术的应用和...数据挖掘技术的发展已经超越了单一学科的界限,与数据库技术、统计学、机器学习、人工智能、云计算和可视化等多个学科交叉融合,共同推动了数据挖掘理论和实践的不断进步。

    大数据分析

    Machine Learning on Spark with MLbase.............................................................................. 78 References..........................................................................

Global site tag (gtag.js) - Google Analytics