spark和deeplearning的关系,想做大数据处理分析,是该专注于学spark还是深度学习呢? 举报 理由 举报 取消 我刚读研一,自己对大数据的处理分析比较感兴趣,导师让我看深度学习方面的论文和deeplearning4j方面的算法源代码,但是自己不知道如何把spark和深度学习结合起来,以后还是想出来工作的不做研究,我该怎么做呢,对了,学习spark需要hadoop基础,我现在没有这方面基础,只有java基础。 2017年11月25日 10 条回复 1158 次浏览 Deep,Learning,Spark,大数,学习,据分析,数据,机器,深度
回复 ( 10 )
没啥关系。Spark只是一个框架而已,在上面跑什么都可以。
把Spark和DL结合起来的项目不少,基本都是基于Parameter Server架构,worker算了gradient然后传到driver去aggregate。不过感觉没啥人用,只是玩儿玩儿。
Deeplearning4j on Spark
答主不太清楚工业上spark在深度学习中的应用,而且spark究竟适不适合深度学习,现在回答也为时尚早。但是目前来看,深度学习并不适合分布式结构。(并不是说DL不适合分布式计算,而是说DL不适合在spark这样的cluster上运行,因为DL的运算一般需要多次迭代一些小运算,比如算两组参数的点积再取其sigmoid函数,这种运算方式使得DL在GPU上会有更好的表现)
但是现在有一些用spark做深度学习的例子,比如前两天有人在databricks上用spark+tensorflow训练MNIST数据:Deep Learning with Spark and TensorFlow
这里说使用spark的优点在于可以更快更有效的调整训练参数,还可以并行运算多个neural network architectures… 也就是说spark起的是个fine-tune的作用,神经网络都是用tensorflow实现的…
另一个应用是把spark和caffe结合使用,通过一个叫做SparkNet的框架(支持java和scala)。这篇ICLR2016的paper介绍了这个框架:
此项目在Github上的地址:
值得一提的是,这个框架居然是UC Berkeley AMPLab开发的!没错,是apache spark的老爹!所以说这个模块会不会在spark 1.7中看见呢( ̄▽ ̄)
总而言之,目前spark在深度学习中大多起辅助作用,很大程度上依赖其他框架。但是谁也说不好将来会怎样,毕竟spark刚发布时根本写不了神经网络算法,而现在已经有很多实现方法了。如果题主很在意就业的话,建议先把spark搞懂,现在Spark Mllib那些东西还够用;深度学习方面,可以看看CS231n这种课,学习一下神经网络。至于Hadoop,个人感觉和spark没太大关系,也不清楚题主的基础如何,个人感觉只要你明白Hadoop那套map reduce的机制就够了。
一条一条说吧。
0)学习spark 按我的理解不需要hadoop 基础吧,只需要理解Map-Reduce 编程模型就行啦(顺便了解一下函数式编程思想吧)。
1)Spark只是一个分布式机器学习工具,而处理你当前的问题Spark不一定是最好的工具,我觉得还是根据自己要处理的问题选择合适的工具吧,碰到钉子找锤子,而不是拿着锤子去试能不能订某个钉子。
2)Spark 不等于大数据分析,大数据分析还包含很多其他的东西。根据题主的描述,题主的实验室可能更偏向机器学习一点吧(当然也可能偏系统方向,这个我不确定),所以我觉得题主还是专注到机器学习上吧,当你遇到大规模数据的时候,自然需要了解和使用一些常见的计算框架,到时候再学也来的急,这些工具很多,不局限于Spark. 最后,如果本身比较感兴趣,先学学Spark 还是可以的。技多不压身啊。
题主想出来工作的话,就要着重体会一下什么叫,把一个东西学到可以用为止就行了。
Yahoo刚开源了CaffeOnSpark,可以了解一下
还有就是题主为什么一定要在Spark上搞深度学习呢?
Deeplearning4j的开发公司skymind来我们公司介绍过他们的产品,我们也跟他们讨论了市场上比较主流的deep learning开源框架,所以这里就简单介绍下我所了解的。
如果你只是做research,caffe和tensorflow已经能满足你的需求了。Tensorflow不能支持spark;caffe可以,另外skymind开发的deeplearning4j也可以支持spark。dl4j商用的比较多,其他两个更偏向于research,模型开发完不需要做后续的比如实时计算之类的话就足够了。
dl4j使用的语言是scala和java,对spark兼容性更好一些,依赖的库是自己写的NDA,我调查的是还在完善中,但是他们所说是已经基本涵盖了所有的基本算法。tf和caffe是用c++和python接口,依赖于numpy,scipy库。
caffe用途主要在于图像处理,user case超级多,社区也比较完善,文档比较全;tf案例也比较多,文档也比较多;但是dl4j的案例就比较少,文档比较简单;开发团队是商业团队,团队的工作主要是技术支持。据他们介绍鹅厂,最大的保险公司等用到他们的产品,他们不对业务做任何的干涉,只是设计到技术,所以他们也不清楚现在被用在那些领域,但是从他们的官网上可以看到,有一些金融领域的反欺诈,市场营销领域被用到。
中间还提到了keras框架,这个框架是基于theano和tensorflow的深度学习库,但没太明白是干嘛的。以下是中英文文档介绍,可以自己看一下。
写的有点乱,想到哪里写哪里,希望对你有帮助。
如有问题,可以留言,我会过来继续完善,tks。
spark是个分布式计算系统,用以解决大规模数据计算问题,熟练掌握它以后可以做架构师,而深度学习是个算法框架,可以做到数据的特征的自动提取,常用于图像处理、语音识别、文本识别等领域,熟练掌握可以做算法工程师
这得看题主将来是想找更偏重算法还是更偏重系统开发的工作?当然两者都擅长是最好了,但是Spark好像不太适合deep learning,题主可以尝试一下别的框架,例如tensorflow,caffe。ps,我觉得你应该听你导师的,逃!!!
caffeOnSpark , tensorflowOnSpark
直接上spark,或者python scikit-learn