我是靠谱客的博主 健壮路灯,最近开发中收集的这篇文章主要介绍Intel开源深度学习库BigDL:Non GPU on Spark,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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是唯一的一个框架。

103030_U32T_3115904.png

BigDL可以直接运行在已有Spark集群之上,和Spark RDD, DataFrame/DataSet直接接口,不需要额外的集群数据加载,从而大大提高从数据抽取到深度学习建模的开发运行效率。用户不需要对他们的集群做任何改动,就可以直接运行BigDL。BigDL可以和其它的Spark的workload一起运行,非常方便的进行集成。

102904_sLEx_3115904.png103051_qR4K_3115904.png

BigDL库支持Spark 1.5、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中文站

作者 杜小芳

转载于:https://my.oschina.net/u/3115904/blog/859016

最后

以上就是健壮路灯为你收集整理的Intel开源深度学习库BigDL:Non GPU on Spark的全部内容,希望文章能够帮你解决Intel开源深度学习库BigDL:Non GPU on Spark所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部