首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法研究中MPI和Spark会出现哪些问题

我们组主要从事互联网广告中ML,DM相关算法的研发工作,由于mahout,weka之类很难适用于目前的工作场景或者说得到比较好的结果,所以主要的工作内容是基于业务数据研发新的模型,并且最终提供可以实现的版本,支持公司业务。现在主要是用SAS、R、Matlab建模,然后通过C++,BLAS和MPI等实现,目前在生产环境中需要支持一个小型的MPI集群。

最近大Boss提出考虑要采用spark,以及其中的Mlib实现机器学习算法。希望能够兼顾整个产品的平台性,如果将来向外部客户提供解决方案的话,可以整体打包直接部署,而不用在目前的算法平台和产品环境中做迁移。尚学堂陈老师指出,目前用MPI开发,可能和Spark兼容性有问题,所以索性直接用Mlib做,然后部署起来风险最低,或者可以在Spark上开发算法。

笔者在实践中也发现了一些问题:

1. 我们的模型大多是做离线模型,然后在线部分通过增量学习的方式加以自学习。如果使用spark取代MPI集群,到底能够在哪些方面对一般的算法建模带来提升?比如说:效率、精度。

2. 我们组一半是机器学习专业,更熟悉C++,Python,Matlab;另一半是统计专业,更熟悉SAS, R, Python。现在后者建模,前者开发模型并且实现算法并行化。如果用了spark,是不是对目前的工作内容和分工会产生影响?

3. 如果只想老老实实做一些偏算法的设计和研发工作,Spark是不是一个必须具备的技能?个人针对以上问题有一些思考:

1. 以我的理解来看, MPI是分布式领域里的汇编语言,Hadoop是分布式领域里的C语言,Spark是分布式领域里的Java语言。从接口的易用性上,MPI Hadoop = Spark;性能方面,一个编写良好的的MPI程序肯定是比Hadoop和Spark快的,但是代码量巨大,非常繁琐。

Spark的接口比Hadoop简洁,表达力比Hadoop强,性能也比Hadoop好,在做Machine Learning / Data analytics 方面的工作,Spark是最好的选择。如果你们组人多,类似于百度,Google那样,有很多人力投入,可以用MPI精雕细琢,否则强烈建议Spark。Hadoop与Spark比的话,如果是一次性批量处理的任务,Spark没有明显优势,如果是迭代型(iterative)算法(大部分机器学习都是迭代的),那么Spark就有很大的优势。

2. 没影响,建模的那帮人还是用Matlab等建模,你则用Spark写出分布式的训练算法。

3. 针对最后一个问题,如果你想从事研发工作,而不是做research(毕竟做research的人时少数), 那么当下最好要掌握两个工具,一个是理论层面多了解机器学习的各种model,二是在代码方面,多写分布式的算法,”分布式+机器学习“,这种人才是现在各大公司急需的。MPI, Hadoop, Spark, GraphLab等分布式工具,你都需要去了解它们的思想,合理利用它们的特性,写出分布式的机器学习算法。所谓两手抓,两手都要硬。

我感觉楼上没有用过mllib, 也没有用Spark写过程序。首先, MLlib 内置了一些机器学习算法,的确门外汉都可以用,但是,当mllib里还没有你需要的model,你可以自己调用Spark的接口,写一个新的Model出来自己用,写得好的话,还可以贡献给mllib, 这定制性,这自由度,哪里是给门外汉用的?Spark都开源了,你想怎么改就怎么改,你想怎么提高性能就可以任意修改。

1. 开发效率会得到提升,运行效率略有下降(有些计算密集的,可以用BLAS之类的库来做,可以上MKL,CUDA。这些都和Spark没有冲突)。至于精度,我不太清楚题主在说什么。

2. 不会影响你们的分工。

实现。只不过实现算法并行化的时候,平台换成了Spark,语言可以是Scala,Java,Python,就分工结构来说,没有什么变化。不过,值得注意的是,Spark目前对于异步更新的算法支持不是很好(这是由其计算模式本身决定的),这可能会影响你们的发挥。另外就是,MLlib本身还不够成熟,很多工作需要自己完成,现成的可能不够用。

建模。Spark还能够提升建模人员的效率(主要是对于使用Python的人员)。就目前来说,Spark已经有IPython Notebook可用了,等SparkR更加成熟一些,选择就更多了。

3. 我觉得对于Spark的投入是很合适的。Spark非常适合做“偏算法的设计和研发工作”,需要做的投入也不算很多,而回报却异常丰厚。

Spark是一个非常优秀并且有潜力的项目。我相信学习一个有生命力的东西,也会让你自己更有活力,因为你总是能够感受到“无限”的可能。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180130A0CMYI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券