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

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 近些年来机器学习中的子领域深度学习成为一个热门的话题。本文要介绍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实践文章。

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
4天前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
27 5
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
揭秘人工智能:深度学习的奥秘与实践
在本文中,我们将深入浅出地探索深度学习的神秘面纱。从基础概念到实际应用,你将获得一份简明扼要的指南,助你理解并运用这一前沿技术。我们避开复杂的数学公式和冗长的论述,以直观的方式呈现深度学习的核心原理和应用实例。无论你是技术新手还是有经验的开发者,这篇文章都将为你打开一扇通往人工智能新世界的大门。
|
7天前
|
机器学习/深度学习 算法 TensorFlow
深度学习中的自编码器:从理论到实践
在这篇文章中,我们将深入探讨深度学习的一个重要分支——自编码器。自编码器是一种无监督学习算法,它可以学习数据的有效表示。我们将首先介绍自编码器的基本概念和工作原理,然后通过一个简单的Python代码示例来展示如何实现一个基本的自编码器。最后,我们将讨论自编码器的一些变体,如稀疏自编码器和降噪自编码器,以及它们在实际应用中的优势。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
揭秘AI:深度学习的奥秘与实践
本文将深入浅出地探讨人工智能中的一个重要分支——深度学习。我们将从基础概念出发,逐步揭示深度学习的原理和工作机制。通过生动的比喻和实际代码示例,本文旨在帮助初学者理解并应用深度学习技术,开启AI之旅。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出深度学习:从理论到实践的探索之旅
在人工智能的璀璨星空中,深度学习如同一颗耀眼的新星,以其强大的数据处理能力引领着技术革新的浪潮。本文将带您走进深度学习的核心概念,揭示其背后的数学原理,并通过实际案例展示如何应用深度学习模型解决现实世界的问题。无论您是初学者还是有一定基础的开发者,这篇文章都将为您提供宝贵的知识和启发。
37 5
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
52 7
|
15天前
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
38 5
|
16天前
|
机器学习/深度学习 自然语言处理 语音技术
深入探索深度学习中的兼容性函数:从原理到实践
深入探索深度学习中的兼容性函数:从原理到实践
28 3
|
6天前
|
机器学习/深度学习 存储 人工智能
探索深度学习的奥秘:从理论到实践的技术感悟
本文深入探讨了深度学习技术的核心原理、发展历程以及在实际应用中的体验与挑战。不同于常规摘要,本文旨在通过作者个人的技术实践经历,为读者揭示深度学习领域的复杂性与魅力,同时提供一些实用的技术见解和解决策略。
19 0
|
16天前
|
机器学习/深度学习 自然语言处理 算法
深度学习在图像识别中的应用及实践
本文将探讨深度学习在图像识别领域的应用,并分享一个使用Python和Keras库实现的简单代码示例。我们将介绍深度学习的原理、常用模型以及如何在实际应用中解决问题。通过阅读本文,您将了解深度学习在图像识别中的潜力,并学会如何构建一个简单的神经网络模型。
19 0

相关产品

  • 开源大数据平台 E-MapReduce