Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【干货】基于Apache Spark的深度学习

【干货】基于Apache Spark的深度学习

作者头像
WZEARW
发布于 2018-06-05 08:03:01
发布于 2018-06-05 08:03:01
3.3K0
举报
文章被收录于专栏:专知专知

【导读】本文主要介绍了基于Apache Spark深度学习。我们知道Spark是快速处理海量数据的框架,而深度学习一直以来都非常耗费硬件资源,因此使用在Spark框架上进行深度学习对于提升速度是非常有用的。本文介绍了Apache Spark内部结构和工作原理,以及一些实用Spark的深度学习库,并在最后介绍了相关DL pipelines库。想要学习基于Spark分布式深度学习库的读者可以了解下。

作者 | Favio Vázquez

编译 | 专知

参与 | Fan, Hujun

基于Apache Spark的深度学习

【导读】本文主要介绍了基于Apache Spark的深度学习。我们知道Spark是快速处理海量数据的框架,而深度学习一直以来都非常耗费硬件资源,因此使用在Spark框架上进行深度学习对于提升速度是非常有用的。本文介绍了Apache Spark内部结构和工作原理,以及一些实用Spark的深度学习库,并在最后介绍了相关DL pipelines库。想要学习基于Spark分布式深度学习库的读者可以了解下。

Apache Spark深度学习——第一部分



第一部分主要介绍:什么是Spark,Spark + DL的基础知识以及一些其它相关的内容。

Apache Spark的入门



如果你要在海量数据集上进行工作,那么你很有可能知道Apache Spark是什么。如果你不知道也没事! 我会告诉你它是什么。

由其创建者开发的Spark是用于大规模数据处理的快速且通用的工具。

快速意味着它比之前使用大数据(如经典MapReduce)的方法更快。加速的秘诀在于Spark在内存(RAM)上运行,这使得处理速度比在磁盘上快得多。

通用意味着它可以用于多种用途,如运行分布式SQL,创建数据管道,将数据存入数据库,运行机器学习算法,处理图形、数据流等等。

RDD(弹性分布式数据集)

Apache Spark最抽象和最开始会接触到的是弹性分布式数据集(RDD)。

RDD是可以并行操作的容错元素集合。您可以创建它们来并行化驱动程序中的现有集合,或者在外部存储系统中引用数据集。(例如共享文件系统HDFSHBase,或提供Hadoop InputFormat的任何数据源)

Spark非常重要且需要了解的一点是,所有的变换(我们一会就去定义它)都是懒惰的,这意味着他们不会马上计算结果。相反,他们只记得应用于某些基础数据集(例如,一个文件)的变换。变换仅在有行为需要将结果返回给驱动程序时才进行计算。

默认情况下,每次对其执行操作时,每个已转换的RDD都可能会重新计算。 但是,您也可以使用持久化(或缓存)方法将RDD保留在内存中,在这种情况下,Spark将保留群集中的元素,以便在下次查询时快速访问。还支持在磁盘上保存RDD,或在多个节点上复制RDD。

如果您想更多地了解Spark中RDD的转换和操作,请查看官方文档:

https://spark.apache.org/docs/latest/rdd-programming-guide.html#transformations

Dataframe

自Spark 2.0.0以来,DataFrame是由命名列组成的数据集。它在概念上等同于关系数据库中的表或R / Python中的dataframe,但在引擎盖下具有更丰富的优化。

我们不会在这里讨论数据集,但它们被定义为一个分布式数据集合,可以用JVM对象构建,然后使用功能转换进行操作。 它们仅在Scala和Java中可用(因为它们是键入的)。

DataFrame可以由各种来源构建而成,例如:结构化数据文件,Hive中的表,外部数据库或现有的RDD。

简而言之,Dataframes API是Spark创建者在框架中轻松处理数据的方式。 它们与Pandas Dataframes或R Dataframes非常相似,但有几个优点。当然,首先它们可以跨群集分布,所以它们可以处理大量数据,第二个是优化。

这是community采取的非常重要的一步。 2014年时,Spark与Scala或Java一起使用要快得多。并且由于性能的原因,整个Spark世界转向了Scala(是一种令人敬畏的语言)。 但对于DF API,这已不再是问题,现在您可以在R,Python,Scala或Java中使用spark来获得相同的性能。

Catalyst负责这种优化。你可以把它想象成一个向导,他会接受你的查询(哦,是的,你可以在Spark中运行类似SQL的查询)和你的行为,并创建一个优化的计划用于分配计算。

这个过程并不那么简单,但作为一名程序员你甚至不会注意到它。 现在,它一直在帮助你。

深度学习和Apache Spark



如果您想深入了解深度学习,请继续阅读以下文章:

https://towardsdatascience.com/a-weird-introduction-to-deep-learning-7828803693b0

https://towardsdatascience.com/my-journey-into-deep-learning-c66e6ef2a317

为什么想在Apache Spark做深度学习?



这是我在开始研究这个问题之前自问的问题。 答案分为两部分:

1、 Apache Spark是一个以简单和陈述的方式在集群中分布计算的框架。正在成为各行各业的标准,因此将深度学习的惊人进步加入其中将是一件好事。

2、 深度学习的有些部分计算量很大,很重! 而分配这些进程可能是解决这个问题的又一个问题,Apache Spark是我可以想到分发它们的最简单方法。

这里有几种可以使用Apache Spark进行深度学习的方法,我在此列出它们:

1、 Elephas:基于Keras和PySpark的分布式深度学习框架

https://github.com/maxpumperla/elephas

2、 Yahoo! Inc.: TensorFlowOnSpark:

https://github.com/yahoo/TensorFlowOnSpark

3、 CERN分布式Keras(Distributed Keras) (Keras + Spark) :

https://github.com/cerndb/dist-keras

4、 Qubole (tutorial Keras + Spark):

https://www.qubole.com/blog/distributed-deep-learning-keras-apache-spark/

5、 Intel Corporation: BigDL(Apache Spark的分布式深度学习库):

https://github.com/intel-analytics/BigDL

Deep Learning Pipeline



但是我将关注的这些文章的是Deep Learning Pipelines。

https://github.com/databricks/spark-deep-learning

Deep Learning Pipelines是由Databricks创建的开源代码库,提供高级API以便使用Apache Spark对Python进行可伸缩深度学习。

这是一项非常棒的工作,在合并到官方API中之前不会很长时间,所以值得一看。

与我之前列出的相比,这个库的一些优点是:

1、 延续Spark和Spark MLlib的精神,它提供了易于使用的API,通过几行代码,就可以进行深度学习。

2、 它侧重于易用性和集成性,但不牺牲性能。

3、 它由Apache Spark(也是主要贡献者)的创建者构建,因此它更有可能被合并为官方API。

4、 它是用Python编写的,因此它将与所有着名的库集成在一起,现在它使用TensorFlow和Keras这两个主要的库来做DL

在下一篇文章中,我将全面关注DL pipelines库以及如何从头开始使用它。您将看到的一件事情就是在简单的Pipeline上进行Transfer Learning,如何使用预先训练好的模型来处理“少量”数据,并能够预测事情,以及如何通过使您创建的深度学习模型可用于SQL等等,从而为您公司中的每个人提供支持。

此外,我还将在Deep Cognition Platform上创建一个环境,从而可以在笔记本上使用此库工作,以便测试所有内容。 如果您没有一个可用的帐户,请创建一个免费帐户:

http://deepcognition.ai/

关于Spark上的pipelines简要介绍,请看:

https://spark.apache.org/docs/latest/ml-pipeline.html

参考链接:

https://towardsdatascience.com/deep-learning-with-apache-spark-part-1-6d397c16abd

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 专知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Spark的机器学习实践 (二) - 初识MLlib
MLlib是Spark的机器学习(ML)库。 其目标是使实用的机器学习可扩展且简单。 从较高的层面来说,它提供了以下工具:
JavaEdge
2019/04/09
3.8K0
基于Spark的机器学习实践 (二) - 初识MLlib
送你一份不正经的深度学习简述(附论文)
来源:机器之心 本文共3798字,建议阅读8分钟。 本文一反常态用讲故事的方式进行介绍,让你对深度学习产生新的认识。 作为人工智能领域里最热门的概念,深度学习会在未来对我们的生活产生显著的影响,或许现
数据派THU
2018/06/12
9340
TensorFlow On Spark 开源项目分析
原文:http://sparkdata.org/?p=423&utm_source=tuicool&utm_medium=referral 作者:京东大数据技术保障团队 概述 自Google发布Ten
小莹莹
2018/04/19
6.9K0
TensorFlow On Spark 开源项目分析
Medium网友分享了一篇帖子 介绍了他的深度学习心路历程
Medium网友Favio Vázquez分享了他是如何学习深度学习并利用它来解决数据科学问题的。这是一个非正式的帖子,但内容很有趣。以下是他分享的内容。 关于我和深度学习的一点介绍 我的专业是物理和
AiTechYun
2018/03/06
9870
Medium网友分享了一篇帖子 介绍了他的深度学习心路历程
基于Apache Spark以BigDL搭建可扩展的分布式深度学习框架
内容来源:2017 年 9 月 9 日,英特尔机器学习工程师张尧在“Cloudera数据科学峰会—一场纯技术非商业的交流会”进行《在Apache Spark之上以BigDL搭建可扩展的分布式深度学习框架》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。 阅读字数:2703 | 7分钟阅读 摘要 在这次演讲中,我们将演示大数据用户和数据科学家如何使用BigDL以分布式方式对海量数据进行深度学习分析(如图像识别、对象检测、NLP等)。这可以让他们使用已有
IT大咖说
2018/06/04
8230
一文读懂Apache Spark
本文介绍了Apache Spark的四个主要版本,包括Spark 1.x、Spark 2.x、Spark 3.x和Spark 4.x,以及每个版本所包含的特性和改进。同时,文章还介绍了Spark在大数据处理、机器学习、图计算和流处理等领域的应用情况。最后,文章展望了Spark未来的发展方向,包括结构化流处理和深度学习的支持等。
企鹅号小编
2017/12/28
2K0
Apache Submarine
Hadoop Submarine这个项目是很少被人知道的,因为想去了解他的这个群体本身就非常的小。但是它其实在尝试解决一个很关键的问题,就是如何更高效的让分布式的DL负载跑在不同的资源框架下。
Fayson
2019/11/06
2.7K0
Apache Submarine
Spark DataFrame简介(一)
本片将介绍Spark RDD的限制以及DataFrame(DF)如何克服这些限制,从如何创建DataFrame,到DF的各种特性,以及如何优化执行计划。最后还会介绍DF有哪些限制。
用户1217611
2020/06/19
1.9K0
Spark DataFrame简介(一)
基于Spark的异构分布式深度学习平台
文/张伟德,曲宁,刘少山 导读:本文介绍百度基于Spark的异构分布式深度学习系统,把Spark与深度学习平台PADDLE结合起来解决PADDLE与业务逻辑间的数据通路问题,在此基础上使用GPU与FPGA异构计算提升每台机器的数据处理能力,使用YARN对异构资源做分配,支持Multi-Tenancy,让资源的使用更有效。 深层神经网络技术最近几年取得了巨大的突破,特别在语音和图像识别应用上有质的飞跃,已经被验证能够使用到许多业务上。如何大规模分布式地执行深度学习程序,使其更好地支持不同的业务线成为当务之急。
用户1737318
2018/06/06
2K0
深度学习简述
作为人工智能领域里最热门的概念,深度学习会在未来对我们的生活产生显著的影响,或许现在已经是了,从 AlphaGo 到 iPhone X 上的人脸识别(FaceID),背后都有它的身影。关于深度学习,我们能够看到很多优秀的介绍、课程和博客,本文将列举其中的精华部分,而且,你会发现这是一篇「不一样」的文章。 不一样在哪儿呢?可能是本文没有按照「正常」的深度学习博客结构:从数学讲起,然后介绍论文、实现,最后讲应用。我希望用讲故事的方式来介绍深度学习,这可能要比只介绍信息和公式要更加平易近人一些。 我为
朱晓霞
2018/04/18
8590
深度学习简述
异类框架BigDL,TensorFlow的潜在杀器!
【导读】你能利用现有的 Spark 集群构建深度学习模型吗?如何分析存储在 HDFS、Hive 和 HBase 中 tb 级的数据吗?企业想用深度学习模型,可是要考虑的问题又很多,怎么破?这篇文章中,我们将给大家讲讲大数据+深度学习下,BigDL 框架的利弊与应用教程,为什么有了 TF、PyTorch,还是会考虑用 BigDL?
AI科技大本营
2019/07/03
1.6K0
异类框架BigDL,TensorFlow的潜在杀器!
Intel-analytics三大深度学习开源库: DL应用直接用于Spark或Hadoop集群
【新智元导读】本文带来Github上账号为intel-analytics发布的三大深度学习库的介绍。 BigDL 什么是BigDL? BigDL是一个基于Apache Spark分布式深度学习库;使用BigDL,用户可以将他们的深度学习应用程序作为标准的Spark程序,它可以直接运行在现有的Spark或Hadoop集群之上。 1)非常丰富的深度学习支持。模仿Torch,BigDL提供对深度学习的全方位支持,包括数值计算(通过Tensor)和高层次神经网络。此外,用户通过BigDL可以把Caffe和Torch
新智元
2018/03/26
1.1K0
「技术选型」深度学习软件选择
深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
架构师研究会
2020/09/08
9640
「技术选型」深度学习软件选择
【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习
大数据和深度学习结合之路——在Hadoop上实现分布式深度学习(本质理解:搭好环境后可运行深度学习程序)
Francek Chen
2025/01/22
2010
【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习
Spark新愿景:让深度学习变得更加易于使用
01 前 言 Spark成功的实现了当年的承诺,让数据处理变得更容易,现在,雄心勃勃的Databricks公司展开了一个新的愿景:让深度学习变得更容易。 当然牛好吹,也是要做些实际行动的,所有便有了spark-deep-learning(https://github.com/databricks/spark-deep-learning)项目。这件事情已经有很多人尝试做了,但显然太浅了,DB公司则做的更深入些。 02 原 理 要做深度学习,肯定不能离开TensorFlow, MXNet之类的。 spark
用户1332428
2018/03/08
2K0
LP love tensorflow & spark
昨天看到一篇文章激发起了我很多兴趣点,文章的题目是 Spark Love Tensorflow,心想何止如此,LP love tensorflow & spark,之前谜之Love Tensorflow,花了三年的时候把它收入麾下,19年开始接触spark,同样激发出不少火花,同时学习了scala语言(人生太短,python吧),也想花二到三年的时间将spark拿下。
MachineLP
2020/03/21
1.6K0
Spark与深度学习框架——H2O、deeplearning4j、SparkNet
深度学习因其高准确率及通用性,成为机器学习中最受关注的领域。这种算法在2011—2012年期间出现,并超过了很多竞争对手。最开始,深度学习在音频及图像识别方面取得了成功。此外,像机器翻译之类的自然语言处理或者画图也能使用深度学习算法来完成。深度学习是自1980年以来就开始被使用的一种神经网络。神经网络被看作能进行普适近似(universal approximation)的一种机器。换句话说,这种网络能模仿任何其他函数。例如,深度学习算法能创建一个识别动物图片的函数:给一张动物的图片,它能分辨出图片上的动物是一只猫还是一只狗。深度学习可以看作是组合了许多神经网络的一种深度结构。
博文视点Broadview
2020/06/11
1.9K0
Spark与深度学习框架——H2O、deeplearning4j、SparkNet
雅虎开源CaffeOnSpark:基于Hadoop/Spark的分布式深度学习
在基于Hadoop集群的大规模分布式深度学习一文中,雅虎介绍了其集Caffe和Spark之长开发CaffeOnSpark用于大规模分布式深度学习,并向github.com/BVLC/caffe贡献了部分代码。现在,雅虎机器学习团队又在这篇tumblr文章上宣布将整个CaffeOnSpark开源作为Spark的深度学习包。 Github:yahoo/CaffeOnSpark(Apache 2.0 license) 许多现有的DL框架需要一个分离的集群进行深度学习,而一个典型的机器学习管道需要创建一个复杂的程序
用户1737318
2018/06/06
4730
大数据技术Spark学习
Spark SQL 是 Spark 用来处理结构化数据的一个模块,它提供了一个编程抽象叫做 DataFrame,并且作为分布式 SQL 查询引擎的作用。 我们已经学习了 Hive,它是将 Hive SQL 转换成 MapReduce 然后提交到集群上执行,大大简化了编写 MapReduce 的程序的复杂性,由于 MapReduce 这种计算模型执行效率比较慢。所以 Spark SQL 的应运而生,它是将 Spark SQL 转换成 RDD,然后提交到集群执行,执行效率非常快!
黑泽君
2019/05/10
5.7K0
大数据技术Spark学习
Pyspark学习笔记(六)DataFrame简介
  在Spark中, DataFrame 是组织成 命名列[named colums]的分布时数据集合。它在概念上等同于关系数据库中的表或R/Python中的数据框,但在幕后做了更丰富的优化。DataFrames可以从多种来源构建,例如:结构化数据文件、Hive中的表、外部数据库或现有RDD.
TeeyoHuang
2021/09/14
2.3K0
Pyspark学习笔记(六)DataFrame简介
相关推荐
基于Spark的机器学习实践 (二) - 初识MLlib
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档