英特尔开源分布式深度学习库BigDL:支持高性能大数据分析

jopen 8年前
   <p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/a04bfa6739df94cddaf6ceb1ef580f44.jpg" /></p>    <p>近日,英特尔开源了一个运行在 Apache Spark 上的分布式深度学习库 BigDL,其可以利用已有的 Spark 集群来运行深度学习计算,并且还能简化从 Hadoop 的大数据集的数据加载。</p>    <h3>开源地址: <a href="/misc/goto?guid=4958998297386144277" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL </a>  </h3>    <p>据介绍,在 Xeon 服务器上的测试表明,BigDL 相比于 Caffe、Torch 或 TensorFlow 等开源框架实现了显著的速度提升。其速度可与主流的 GPU 相媲美,而且 BigDL 也能扩展到多达数十个 Xeon 服务器。</p>    <p>BigDL 库支持 Spark 1.5、1.6 和 2.0,并且允许将深度学习嵌入到已有的基于 Spark 的程序中。其中包含了将 Spark RDD(Resilient Distributed Datasets,弹性分布式数据集)转换成 BigDL 定义的 Dataset 的方法,并且也可以直接运用到 Spark ML Pipelines 上。</p>    <p>为了进行模型训练,BigDL 应用了一个同步小批量随机梯度下降(synchronous mini-batch SGD),该过程在跨多个执行器(executor)的单个 Spark 任务中执行。每一个执行器都执行一个多线程引擎并处理一部分微批量数据(micro-batch data)。在当前的版本中,所有的训练和验证数据都会加载到内存(memory)中。</p>    <p>BigDL 是用 Scala 实现的,并且模仿了 Torch。类似于 Torch,它也提供了一个 Tensor 类,其使用了 Intel MKL 库进行计算。Intel MKL 是英特尔的数学核心函数库(Math Kernel Library)的缩写,其中包含了一系列为计算优化过的历程,其中包括 FFT(快速傅立叶变换)和矩阵乘法等等,这些计算在深度学习模型训练中有广泛的应用。另外受到 Torch 的 nn 包(https://github.com/torch/nn)的启发,BigDL 借鉴了 Torch,提出了 Module 的概念,用于表示单个神经网络层、Table 和 Criterion。</p>    <p>BigDL 还提供了一个 AWS EC2 镜像和一些案例,其中包括:文本分类(使用卷积神经网络)、图像分类、以及将 Torch 或 Caffe 中预训练的模型加载到 Spark 中用于预测计算的方法。目前社区讨论区上大多数用户请求 BigDL 支持 Python,以及开发 MKL-DNN(MKL 的深度学习扩展)。</p>    <p>以下是 BigDL GitHub 项目的 README.md 介绍:</p>    <h3><strong>BigDL:在 Apache Spark 上的分布式深度学习</strong></h3>    <p>BigDL 是什么?</p>    <p>BigDL 是一个用于 Apache Spark 的分布式深度学习库。使用 BigDL,用户可以像编写标准 Spark 程序一样编写深度学习应用,并且可以直接将其运行在已有的 Spark 或 Hadoop 集群上。BigDL 有哪些优点呢?</p>    <p>丰富的深度学习支持。类似 Torch,BigDL 提供了全面的深度学习支持,包括数值计算(通过 Tensor)和高层面的神经网络;此外,用户还可以使用 BigDL 将预训练的 Caffe 或 Torch 模型加载到 Spark 程序中。</p>    <p>极高的性能。为了实现高性能,BigDL 在每一个 Spark 任务中都使用了 Intel MKL 和多线程编程。从而使得 BigDL 在单节点 Xeon(与主流 GPU 媲美)上能够实现比当前开源的 Caffe、Torch 或 TensorFlow 快几个数量级的表现。</p>    <p>有效的扩展。BigDL 可以利用 Apache Spark(一种超快的分布式数据处理框架)以及同步 SGD 的有效实现和在 Spark 上的 all-reduce 通信来进行有效地扩展,从而可在「大数据规模」上执行数据分析。</p>    <p>为什么选择 BigDL?</p>    <p>如果你满足以下条件,你就应该使用 BigDL 来编写你的深度学习程序:</p>    <p>你想在数据存储(比如以 HDFS、HBase、Hive 等方式)于的同一个大数据(Hadoop/Spark)集群上进行大量数据的分析。</p>    <p>你想为你的大数据(Spark)程序和/或工作流添加深度学习功能(不管是训练还是预测)。</p>    <p>你想使用已有的 Hadoop/Spark 集群来运行你的深度学习应用,然后将其动态地共享给其它工作负载(如 ETL、数据仓库、特征工程、经典机器学习、图分析等等)。</p>    <p>如何使用 BigDL?</p>    <p>要学习如何在 Linux 或 macOS 上安装和编译 BigDL,你可以查看: <a href="/misc/goto?guid=4958998297487626199" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL/wiki/Build-Page </a>  </p>    <p>要学习如何运行 BigDL 程序(作为本地 Java 程序或 Spark 程序),你可以查看: <a href="/misc/goto?guid=4958998297589496644" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL/wiki/Getting-Started </a>  </p>    <p>要在 EC2 上尝试 BigDL,你可以查看: <a href="/misc/goto?guid=4958998297697194216" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL/wiki/Running-on-EC2 </a></p>    <p>要学习如何使用 BigDL 在几分钟内创建一个实用的神经网络,你可以查看教程: <a href="/misc/goto?guid=4958998297799276529" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL/wiki/Tutorials </a>  </p>    <p>了解更多细节,请查阅文档(包含教程、案例、编程指南等): <a href="/misc/goto?guid=4958998297899710636" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL/wiki/Documents </a>  </p>    <p>支持</p>    <p>更多关于 BigDL 的问题和讨论,请加入 BigDL 谷歌讨论组( <a href="/misc/goto?guid=4958998298008123569" rel="nofollow,noindex"> https://groups.google.com/forum/#!forum/bigdl-user-group </a> ) 或订阅邮件列表(请发邮件至: bigdl-user-group+subscribe@googlegroups.com )</p>    <p>你也可以在 GitHub 问题页面报告错误或提交你想要的新功能: <a href="/misc/goto?guid=4958998298122474391" rel="nofollow,noindex"> https://github.com/intel-analytics/BigDL/issues </a></p>    <p>来自: http://www.jiqizhixin.com/article/2149</p>