`
kavy
  • 浏览: 864777 次
  • 性别: 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这个平台,这也是很大一个看点。

 

让我们期待它的发布!

分享到:
评论

相关推荐

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

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

    Mlbase-Evan Spark and Ameet Talwalker UC Berkeley

    Mlbase-Evan Spark and Ameet Talwalker UC Berkeley Mlbase-Evan Spark and Ameet Talwalker UC Berkeley

    大数据分析

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

    php入门留言板 php+access PHP语言基础

    【PHP】php入门留言板 php+access PHP语言基础 【实例简介】php入门留言板 php access php入门留言板 让你轻松学会php 基本语言结构.php连 access数据库的语法以及功能.php access 【核心代码】 文件清单 ├── admin.php ├── detail.php ├── images │ ├── arrow2.gif │ ├── arrow.gif │ ├── bg.gif │ ├── bottom-bg.gif │ ├── column.gif │ ├── dished_x.gif │ ├── favicon.ico │ ├── layout-bodybg.gif │ ├── layout-footer.gif │ ├── layout-top.gif │ ├── li-right.gif │ └── Thumbs.db ├── inc │ ├── config.php │ ├── conn.php │ └── data.mdb ├── index.php ├── sty

    关于C语言的学习代码和C语言的刷题代码.zip

    C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。 [5] C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。

    安卓图片上传和文件上传带jsp服务端源码.zip

    android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台

    物资管理系统项目源码.rar

    物资管理系统项目源码.rar是一个综合性的软件开发包,旨在为高校学生提供一个完整的框架和参考实现,以便他们能够进行毕业设计或课程设计。这个压缩包包含了多个关键组件,如用户认证、库存管理、订单处理、报表生成等模块,每个模块都配备了详细的文档和代码实例,确保学生可以快速理解并开始构建自己的物资管理系统。该系统采用了现代的软件架构理念,比如MVC模式,使得前后端分离,便于维护和升级。同时,它支持多种数据库系统,如MySQL、SQLite等,提供了数据持久化的灵活性。在安全性方面,系统实现了基于角色的访问控制,保障了操作的权限划分。此外,它还考虑了用户体验,界面友好,操作直观。对于即将步入职场的软件工程专业的学生而言,通过分析和扩展这个源码包中的项目,不仅可以锻炼他们的编程实践能力,还能帮助他们理解企业级应用的开发流程和标准。无论是作为学习资源还是实践平台,物资管理系统项目源码.rar都是一个宝贵的资料,有助于学生将理论知识转化为实际操作技能,为他们日后的职业发展奠定坚实的基础。问问助手:解决方案编制助手重新回答||

    可二次开发程序员表白代码.rar

    “可二次开发程序员表白代码.rar”是一个专为计算机专业的学生和编程爱好者设计的源码文件包,它旨在帮助用户通过编写和定制专属的表白程序来表达他们的情感。这个文件包不仅适合作为毕业设计或课程设计项目,而且也是一个绝佳的实践工具,用于提升编程技能和理解软件开发的全过程。该源码文件包含有多个模块,每个模块都经过精心设计,易于理解和修改,以适应不同的个性化需求。用户可以在这些模板的基础上进行二次开发,添加自己的创意元素,如特定的文本信息、背景音乐、动画效果等,使得表白程序更具个性和情感色彩。此外,源码文件包还附带详细的文档说明和注释,为初学者提供了丰富的学习资源。通过阅读和实践这些材料,学生能够深入理解编程语言的本质,提高解决实际问题的能力,并学会如何将理论知识应用到实际项目中。总之,“可二次开发程序员表白代码.rar”不仅是一个富有创意和技术挑战的项目,它还鼓励用户发挥想象力,用技术的方式传达爱意,是一份融合了情感与科技、教育与娱乐的独特礼物。问问助手:资深编程大师重新回答||

    数字同轴全息显微术中孪晶图像去除的神经网络方法matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    返回键退出程序的两种方式.zip

    android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台

    浮动窗口.zip

    android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台

    二维码扫描案例.zip

    android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台

    基于matlab的CDMA

    写出所有n=5的m序列发生器的特征多项式,画出电路结构,仿真生成m序列并运算,画出其自相关和互相关曲线。

    基于单片机的智能家居环境监控系统的设计,单片机能够检测家居环境并显示,根据数据智能预警

    当今家居生活中面临各种环境与健康安全问题,如空气湿度过低,容易让人患上呼吸系统的疾病;CO、甲醛等有害气体危害人体健康;天燃气泄漏引起的爆炸事故频发等。人们对高品质生活环境的追求越来越强烈,所以居住环境的各种参数得到了大家的广泛重视。随着智能化与信息化的快速发展,我们可以利用现代科技对家居环境进行监测及调整,使我们的居住体验更加美好。 本设计完成一个可以监测温湿度、有害气体以及非法入侵的智能家居监控系统,包括主控模块、传感器模块、显示模块、报警驱动模块等。 系统的控制核心是STC89C52单片机,通过DHT11传感器来监测室内温湿度,烟雾传感器MQ-2监测有害气体烟雾浓度,HC-SR501传感器用来监测人体信号,按键电路可以设置监测数据上下限阈值及人体红外监测布防状态,当超过阈值时,蜂鸣器和LED灯声光报警,同时通过继电器驱动相应电器,实时对家居环境进行调控。此外,通过LCD1602液晶屏显示实时温湿度、烟雾浓度等信息供人们实时了解家庭环境状况,从而保证家庭生活环境的安全与舒适。

    网易推出的AI智能翻译平台,支持音频、文档、图片、字幕等.txt

    网易推出的AI智能翻译平台,支持音频、文档、图片、字幕等.txt

    NC65 UAP65 主子单据开发 带审批流 详细笔记

    NC65 UAP65 主子单据开发 带审批流 详细笔记,共同学习,共同进步。

    机械臂的碰撞检测研究.pdf

    机械臂的碰撞检测研究.pdf

    c语言-c语言编程基础之leetcode题解第23题合并K个升序链表.zip

    c语言 c语言_c语言编程基础之leetcode题解第23题合并K个升序链表

    Swift代码转换指南(Swift Swift Code Convension Guide .)

    【Swift】说明:Swift Swift代码转换指南。 (Swift Swift Code Convension Guide .) 文件列表: CODE_OF_CONDUCT.md LICENSE 【Swift】说明:Swift Swift代码转换指南。

Global site tag (gtag.js) - Google Analytics