MLBase:Spark生态圈里的分布式机器学习系统

1 篇文章 0 订阅
0 篇文章 0 订阅

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这个平台,这也是很大一个看点。


让我们期待它的发布!


(全文完)


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tachyon是一个分布式内存文件系统,可以在集群以访问内存的速度来访问存在tachyon的文件。把Tachyon是架构在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件。主要职责是将那些不需要落地到DFS的文件,落地到分布式内存文件系统中,来达到共享内存,从而提高效率。同时可以减少内存冗余,GC时间等。        特性:类 Java 的文件 API兼容性:实现 Hadoop 文件系统接口可插入式的底层文件系统内建 Raw 原生表的支持基于 Web 的 UI 提供命令行接口Tachyon 架构:与 HDFS 的比较:        Hadoop足够快吗?美国加州大学伯克利分校的AMPLab基于Hadoop的核心组件开发出一个更快的版本Tachyon。AMPLab从底层重建了Hadoop平台,“没有最快,只有更快”。        AMPLab在大数据领域最知名的产品是Spark,它是一个内存中并行处理的框架,Spark的创造者声称:使用Shark运行并行处理Job速度要比MapReduce快100倍。又因为Spark是在内存运行,所以Shark可与Druid或者SAP's HANA系统一较高下。Spark也为ClearStory下一代分析和可视化服务提供处理引擎。如果你喜欢用Hive作为Hadoop的数据仓库,那么你一定会喜欢Shark,因为它代表了“Hive on Spark”。       AMPLab的最新目标就是Hadoop分布式文件系统(HDFS),不过HDFS在可用性和速度方面一直受人诟病,所以AMPLab创建了Tachyon( 在High Scalability上非常夺目,引起了Derrick Harris的注意)。       当然,AMPLab并不是第一个对HDFS提出质疑的组织,同时也有很多商业版本可供选择,像Quantcast就自己开发了开源文件系统,声称其在运行大规模文件系统时速度更快、更高效。诚然,AMPLab所做的工作就是打破现有商业软件的瓶颈限制。如果碰巧破坏了现状,那么就顺其自然吧!不过,对于用户来说,AMPLab只是为那些寻找合适工具的人员提供了一种新的选择,AMPLab的合作伙伴和赞助商包括谷歌,Facebook,微软和亚马逊网络服务,它们当然非常乐意看到这些新技术,如果很有必要的话。       AMPLab的其他项目包括PIQL,类似于一种基于键/值存储的SQL查询语言;MLBase,基于分布式系统机器学习系统;Akaros,一个多核和大型SMP系统的操作系统;Sparrow,一个低延迟计算集群调度系统。Tachyon可运行在如下任意平台上: 标签:分布式  文件系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值