开源深度学习库BigDL在阿里云E-MapReduce上的实践

简介: 近些年来机器学习中的子领域深度学习成为一个热门的话题。本文要介绍Intel开源的深度学习框架BigDL,它也是在Spark上的一个算法库,提供了全面的深度学习算法支持,包括数值计算(Tensor)和高阶神经网络等。

近些年来机器学习中的子领域深度学习成为一个热门的话题,特别是在围棋领域,谷歌的AlphaGo也使用了深度学习的技术。

在大数据领域,Spark MLlib是一个很流行的机器学习算法库,如果你想用Spark来做深度学习训练,MLlib还无法很好的支持。本文要介绍Intel开源的深度学习框架BigDL,他也是在Spark上的一个算法库,提供了全面的深度学习算法支持,包括数值计算(Tensor)和高阶神经网络等。

因为BigDL是在Spark上运行的,借助Spark平台的分布式扩展性,可以方便的扩展到上百或上千个节点。同时BigDL利用了Intel MKL等先进的数学计算库,基于Intel CPU计算能力可能取得媲美GPU的性能。

BigDL的使用场景

BigDL可能使用在下列场景中:

  1. 直接在Hadoop或Spark平台上使用深度学习进行大数据分析,同时数据是存储在HDFS、HBase、Hive等文件系统或数据库上;
  2. 希望在Spark程序或工作流中加入深度学习功能;
  3. 利用现有的 Hadoop/Spark 集群来运行深度学习程序,然后将代码与其他的Spark应用场景进行动态共享,例如ETL、数据仓库(Spark SQL)、功能引擎、经典机器学习(MLlib)、图分析(GraphX)等。

E-MapReduce

阿里云的EMR服务提供了全面的开源大数据组件的支持,比如Hadoop、Spark、HBase等。EMR提供了一个完整的Spark运行环境,所以BigDL也可以很方便的在EMR集群内运行。

BigDL安装

当前EMR还未直接支持BigDL,所以需要我们自己在EMR节点上编译和安装BigDL组件。在不久的未来,EMR上可能会直接安装BigDL,这样EMR用户就可以和Spark MLlib一样直接使用BigDL了。

  1. 通过SSH登录EMR Master节点,参考EMR文档
  2. 环境准备(我们假设EMR环境上的Spark是2.0.x)

    1. 下载并安装Maven
    2. 因为BigDL所在的Maven库需要用HTTPS连接,为了让OpenJDK支持,需要额外安装包:sudo yum install nss
  3. 参考BigDL build文档编译:

    1. git clone https://github.com/intel-analytics/BigDL.git
    2. cd BigDL
    3. bash make-dist.sh -P spark_2.0

如果上述过程执行成功,Build得到的BigDL/dist目录里有我们需要的运行环境,包括作业提交脚本和jar包等。

运行一个BigDL的样例

在BigDL在EMR的Master节点上安装好之后,我们可以来运行一个简单的深度学习算法(详情请参考BigDL官方文档)。这是一个在MNIST数据集上的LeNet-5模型训练算法,模型可以用来识别手写的数字。

  1. 数据准备,从http://yann.lecun.com/exdb/mnist/下载训练模型数据和测试数据特征文件以及label文件,并且解压缩放到本地的./data/mnist目录
  2. 创建模型的checkpoint目录./model/lenet_model
  3. 训练:
./dist/bin/bigdl.sh -- \
spark-submit \
--master yarn \
--executor-cores 2 \
--total-executor-cores 16 \
--driver-class-path dist/lib/bigdl-0.2.0-SNAPSHOT-jar-with-dependencies.jar \
--class com.intel.analytics.bigdl.models.lenet.Train \
dist/lib/bigdl-0.2.0-SNAPSHOT-jar-with-dependencies.jar \
-f ./data/mnist \
-b 128 \
--checkpoint ./model/lenet_model > traing.log

(更多的参数请参考BigDL文档

这是在Spark上的作业,可以通过WebUI看到作业运行进度:
_2017_04_05_17_37_27

最后,测试训练结果:

./dist/bin/bigdl.sh -- \
spark-submit \
--master yarn \
--executor-cores 2 \
--total-executor-cores 16 \
--class com.intel.analytics.bigdl.models.lenet.Test \
dist/lib/bigdl-0.2.0-SNAPSHOT-jar-with-dependencies.jar \
-f ./data/mnist \
--model ./model/lenet_model \
-b 128 > test.log

traing.log和test.log文件分别包含了训练的过程和测试的结果。我们可以用分析工具(比如Linux Shell工具或微软的Excel)来分析结果数据,来更好的了解训练模型。

这是某次使用Lenet-5训练MNIST的结果:
_2017_04_05_18_02_18

_2017_04_05_18_02_26

总结

本文是深度学习框架BigDL的入门介绍,目的是在EMR上运行一个真实的深度学习算法。当然,你看可以基于BigDL框架实现自己的深度学习算法,或者使用EMR notebook(Apache Zeppelin或交互式工作台)直接使用分析和训练模型。你可以关注E-MapReduce产品博客获取更多的Spark和BigDL实践文章。

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
1月前
|
SQL 分布式计算 关系型数据库
阿里云E-MapReduce Trino专属集群外连引擎及权限控制踩坑实践
本文以云厂商售后技术支持的角度,从客户的需求出发,对于阿里云EMR-Trino集群的选型,外连多引擎的场景、Ldap以及Kerberos鉴权等问题进行了简要的实践和记录,模拟客户已有的业务场景,满足客户需求的同时对过程中的问题点进行解决、记录和分析,包括但不限于Mysql、ODPS、Hive connector的配置,Hive、Delta及Hudi等不同表格式读取的兼容,aws s3、阿里云 oss协议访问异常的解决等。
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
3月前
|
安全 机器人 数据安全/隐私保护
基于钉钉的阿里云管理实践(四)之续费充值
在阿里云资源的运营过程中,及时续费和充值是保障服务不中断的关键行动。借助钉钉及其集成的阿里云管理功能,用户可以方便地接收到续费通知,并完成充值过程。本教程将为您详细介绍从收到续费提醒信息到完成充值的全过程。
100 2
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
716 2
|
26天前
|
SQL 存储 API
阿里云实时计算Flink的产品化思考与实践【下】
本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。
110656 79
阿里云实时计算Flink的产品化思考与实践【下】
|
3月前
|
弹性计算 运维 监控
基于钉钉的阿里云管理实践(三)之运维管控
随着移动互联网的发展,使用移动设备进行云资源管理变得越来越普及。钉钉作为一款企业沟通和协作工具,其集成的阿里云控制台小程序让用户能够在移动端进行便捷的云资源管理操作。本教程将为您介绍如何在钉钉的阿里云控制台小程序内访问并操作阿里云资源。
115 1
|
3月前
|
人工智能 自然语言处理 开发者
书生·浦语2.0开源,阿里云魔搭首发
书生·浦语2.0开源,阿里云魔搭首发
62 0
|
1月前
|
弹性计算 网络协议 关系型数据库
网络技术基础阿里云实验——企业级云上网络构建实践
实验地址:<https://developer.aliyun.com/adc/scenario/65e54c7876324bbe9e1fb18665719179> 本文档指导在阿里云上构建跨地域的网络环境,涉及杭州和北京两个地域。任务包括创建VPC、交换机、ECS实例,配置VPC对等连接,以及设置安全组和网络ACL规则以实现特定服务间的互访。例如,允许北京的研发服务器ECS-DEV访问杭州的文件服务器ECS-FS的SSH服务,ECS-FS访问ECS-WEB01的SSH服务,ECS-WEB01访问ECS-DB01的MySQL服务,并确保ECS-WEB03对外提供HTTP服务。
|
1月前
|
云安全 人工智能 安全
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。

相关产品

  • 开源大数据平台 E-MapReduce