Intel开源深度学习库BigDL:Non GPU on Spark

Intel开源了基于Apache Spark的分布式深度学习框架BigDL。BigDL借助现有的Spark集群来运行深度学习计算,并简化存储在Hadoop中的大数据集的数据加载。算法

BigDL适用的应用场景主要为如下三种:数据库

  1. 直接在Hadoop/Spark框架下使用深度学习进行大数据分析(即将数据存储在HDFS、HBase、Hive等数据库上);编程

  2. 在Spark程序中/工做流中加入深度学习功能;小程序

  3. 利用现有的 Hadoop/Spark 集群来运行深度学习程序,而后将代码与其余的应用场景进行动态共享,例如ETL(Extract、Transform、Load,即一般所说的数据抽取)、数据仓库(data warehouse)、功能引擎、经典机器学习、图表分析等。服务器

运行于Spark集群上  网络

Spark是被工业界验证过的,并有不少部署的大数据平台。BigDL针对那些想要将机器学习应用到已有Spark或Hadoop集群的人。多线程

对于直接支持已有Spark集群的深度学习开源库,BigDL是惟一的一个框架。架构

BigDL能够直接运行在已有Spark集群之上,和Spark RDD, DataFrame/DataSet直接接口,不须要额外的集群数据加载,从而大大提升从数据抽取到深度学习建模的开发运行效率。用户不须要对他们的集群作任何改动,就能够直接运行BigDL。BigDL能够和其它的Spark的workload一块儿运行,很是方便的进行集成。框架

BigDL库支持Spark 1.五、1.6和2.0版本。BigDL库中有把Spark RDDs转换为BigDL DataSet的方法,而且能够直接与Spark ML Pipelines一块儿使用。机器学习

Non GPU on Spark  

BigDL目前的测试结果是基于单节点Xeon服务器的(即,与主流GPU至关的CPU),在Xeon上的结果代表,比开箱即用的开源Caffe,Torch或TensorFlow速度上有“数量级”的提高,最高可达到48倍的提高(Orders of magnitude ,up-to 48X today)。并且可以扩展到数十个Xeon服务器。

为何建立一个默认状况下不使用GPU加速的深度学习框架?对于英特尔来讲,它是促进下一代CPU机器学习的策略的一部分。

Spark传统上不是一个GPU加速的产品,虽然目前IBM和Databricks(于去年末)有在本身的集群上增长支持GPU加速的Spark服务;其实使用GPU也将是一种趋势。从另外一方面来讲,BigDL是给开发者的一个福利,理论上,使用现有软件会比移植到GPU架构上的工做量小不少。好比说英特尔采用GPU-a PCIe附加卡的形式封装了Xeon Phi处理器,由Xeon Phi插件卡组成的系统能够经过简单地更换或添加卡来升级或扩展,而不用更换整个机架。

性能上的优化措施  

与使用GPU加速来加速过程的其余机器学习框架不一样,BigDL使用英特尔数学内核库(Intel MKL)来获得最高性能要求。在性能提升策略上,它还针对每一个Spark task使用了多线程编程。

对于模型训练,BigDL使用了在多个执行器中执行单个Spark任务的同步小批量SGD(Stochastic Gradient Descent)。每一个执行器运行一个多线程引擎并处理一部分微批次数据。在当前版本中,全部的训练和验证数据都存储到存储器中。

BigDL使用Scala开发,并参考了Torch的模型。像Torch同样,它有一个使用Intel MKL库进行计算的Tensor类。Intel MKL(Math Kernel Library)是由一系列为计算优化过的小程序所组成的库,这些小程序从FFT(快速傅立叶变换)到矩阵乘法均有涉及,经常使用于深度学习模型训练。Module是另外一个从Torch借鉴而来的概念,它的灵感来自Torch的nn package。Module表明单独的神经网络层、Table和Criterion。

易用性上的优化  

BigDL的API是参考torch设计的,为用户提供几个模块:

  1. Module: 构建神经网络的基本组件,目前提供100+的module,覆盖了主流的神经网络模型。

  2. Criterion:机器学习里面的目标函数,提供了十几个,经常使用的也都包含了。

  3. Optimizer:分布式模型训练。包括经常使用的训练算法(SGD,Adagrad),data partition的分布式训练。

用户只需定义好模型和目标函数,就能够放到Optimizer里面去训练。对于数据预处理,BigDL提供了一个叫Transformer的接口封装,而且提供了不少图像、天然语言处理方面的预处理算法的实现。另外还提供不少示例程序,让用户了解怎么使用BigDL。例如怎么训练模型,怎么和Spark其它模块一块儿工做。

BigDL提供了一个AWS EC2镜像和一些示例,好比使用卷积神经网络进行文本分类,还有图像分类以及如何将在Torch或Caffe中预训练过的模型加载到Spark中进行预测计算。来自社区的请求主要包括提供对Python的支持,MKL-DNN(MKL的深度学习扩展),faster-rcnn,以及可视化支持。

 

转自infoq中文站

做者 杜小芳

相关文章
相关标签/搜索