BigDL

最近更新时间:2017-12-21 21:18:18

BigDL介绍

Intel开源的深度学习框架 BigDL是在Spark上的一个机器学习算法库,提供了全面的深度学习算法支持,包括数值计算(Tensor)和高阶神经网络等。

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

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

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

KMR介绍

KMR (Kingsoft MapReduce) 是金山云携手Intel打造的数据分析平台, 提供了一个全面的开源大数据组件的支持,包括Spark, HDFS, Hive等,同时采用英特尔至强处理器E5 v4产品家族的硬件平台,BigDL可以在KMR集群上方便快捷地运行。

安装相关依赖

BigDL 运行需要Python2.7和Jupyter Notebook。对于新用户我们推荐安装 Anaconda,它包含了Python, Jupyter以及其他科学计算模块。

  1. 下载并安装Anaconda
    wget https://repo.continuum.io/archive/Anaconda2-4.4.0-Linux-x86_64.sh
    bash Anaconda2-4.4.0-Linux-x86\_64.sh
  2. 安装完成后,创建一个Python 2.7的环境

    conda create --name py27 python=2.7

    这个命令创建了一个名为py27的Python环境,我们可以通过

    source activate py27

    启动这个环境

  3. 验证所在环境是python 2.7

    python --version
  4. 相关依赖安装完毕,我们可以在Python2.7的环境里面安装BigDL了

安装BigDL

目前BigDL还未集成到KMR上,需要通过下载BigDL的安装包来安装相关组件。

  1. 点击此处下载基于Spark1.6的BigDL v0.2.0安装包 (更多安装包可访问https://bigdl-project.github.io/master/#release-download/)
  2. 将安装包解压

运行BigDL样例

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

-1. 将 BigDL-Tutorials 克隆到本地目录或者下载zip包在本地解压

    git clone -b branch-0.2 https://github.com/intel-analytics/BigDL-Tutorials.git
    或
    wget https://github.com/intel-analytics/BigDL-Tutorials/archive/branch-0.2.zip

-2. 在BigDL-Tutorials目录下创建start_notebook.sh,设置相应的SPARK_HOME (Spark安装目录) 和BigDL_HOME(BigDL解压目录),同时修改--conf里面对应你BigDL目录里面的文件名 ,具体jar包名称根据你下载的实际文件修改。

    #setup pathes
    SPARK_HOME=/usr/hdp/2.5.0.0-1245/spark/
    BigDL_HOME=<path/to/BigDL>
    BigDL_VERSION=0.2.0

    export PYSPARK_DRIVER_PYTHON=jupyter
    export PYSPARK_DRIVER_PYTHON_OPTS="notebook --notebook-dir=./ --ip=* --no-browser"

    source ${BigDL_HOME}/bin/bigdl.sh
    ${SPARK_HOME}/bin/pyspark \
      --master local[4] \
      --driver-memory 4g \
      --properties-file ${BigDL_HOME}/conf/spark-bigdl.conf \
      --py-files ${BigDL_HOME}/lib/bigdl-${BigDL_VERSION}-python-api.zip \
      --jars ${BigDL_HOME}/lib/bigdl-SPARK_1.6-${BigDL_VERSION}-jar-with-dependencies.jar \
      --conf spark.driver.extraClassPath=${BigDL_HOME}/lib/bigdl-SPARK_1.6-${BigDL_VERSION}-jar-with-dependencies.jar \
      --conf spark.executor.extraClassPath=${BigDL_HOME}/lib/bigdl-SPARK_1.6-${BigDL_VERSION}-jar-with-dependencies.jar

-3. 运行start_notebook.sh,这将会运行Jupyter Notebook服务

| bash start\_notebook.sh |
| --- |

-4. 打开浏览器,访问 http://localhost:8888,进入notebooks/neural_networks 子目录,打开cnn.ipynb,点击菜单栏Cell->Run all运行

-5. 程序将会下载数据集并进行训练,等待一段时间之后可以获得训练的loss和accuracy等结果

    Figure 1 第一层convolution的weight

    Figure 2第二层convolution的weight

    Figure 3 loss和 Top1 accuracy

总结

本文是深度学习框架BigDL的入门介绍,目的是在KMR上运行一个真实的深度学习算法。当然,你也可以基于BigDL框架实现自己的深度学习算法。更多文档,例程和源码,敬请访问 BigDL 开源网站

金山云,开启您的云计算之旅

立即注册