手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2017-02-04] 来源:infoq.com  作者:杜小芳 [字体: ]
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.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,以及可视化支持。

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-02/140180.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款