AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

  • 2017-02-03
  • 本文字数:1803 字

    阅读完需:约 6 分钟

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,以及可视化支持。

2017-02-03 18:004535
用户头像
Tina InfoQ高级编辑

发布了 1655 篇内容, 共 1327.1 次阅读, 收获喜欢 4003 次。

关注

评论

发布
暂无评论
发现更多内容

安如泰山 华为云发布制品仓库CodeArts Artifact

路过的憨憨

RocketMQ源码-broker 消息接收流程(写入commitLog)

小小怪下士

Java 程序员 RocketMQ 后端 消息中间件

点击量破百万!阿里内产微服务进阶讲义,简直是Java开发者的福音

Java你猿哥

Java 面试 面经 Java工程师

OpenHarmony关系型数据库[1]

白晓明

关系型数据库 OpenHarmony

网心科技荣获“深圳市自主创新百强中小企业”称号

网心科技

专精特新

简单好用的剪切板工具:Paste激活版

真大的脸盆

Mac 软件 mac剪切板工具 剪切板工具

机器学习算法(四): 基于支持向量机的分类预测

汀丶人工智能

数据挖掘 机器学习 SVM

入选Gartner低代码魔力象限 |『华为云Astro』低调的背后

路过的憨憨

分布式日志系统的设计和实践

Java你猿哥

Java 分布式 后端 分布式日志

深入解析线程池,就这一篇

Java你猿哥

Java 线程池 线程池工作原理 Java工程师 线程池状态

quarkus2.13.7搭建与基础开发环境配置总结

刘一江

GraalVM Quarkus java

某头部零售集团的数据云平台“多租户安全”实践 | 奇点云技术分享

奇点云

数据安全 多租户技术 奇点云

5年Java经验字节社招:半月3次面试,成功拿到Offer

Java你猿哥

Java 面试 面经 校招 春招

灵魂一问:SELECT COUNT(*) 会造成全表扫描吗?

Java你猿哥

Java MySQL sql ssm

强大的克隆备份软件:EaseUS Todo Backup直装激活版

真大的脸盆

Mac Mac 软件 备份软件 克隆工具

ZBC新一轮流动性收益计划迎来新通缩,APR高达100%

股市老人

SRE是什么,与传统运维有什么不同?

不思jo

SRE #运维

性能最大提升60%,阿里云第八代企业级实例ECSg8i正式上线

云布道师

阿里云 ECS

华为云低代码平台Astro|通过零代码快速搭建打卡小程序

路过的憨憨

彩印图文版《Elasticsearch实战》文档,阿里内部共享,堪称精品

做梦都在改BUG

Java Elastic Search

旺链科技荣获“高新技术企业证书”殊荣

旺链科技

区块链 区块链+ 高新技术企业

ChatGPT编程秀-3:适合面向ChatGPT编程的架构

仝键

JavaScript 架构 java ChatGPT

通信系统综合仿真

timerring

通信系统 通信系统仿真

通透!阿里P8撰写《深入解析Java虚拟机HotSpot 》让我涨薪70%

Java你猿哥

Java 后端 Java虚拟机 jvm调优

某厂Java一面:一道JVM面试题引发的“栈帧”血案

Java你猿哥

Java 面试 JVM Java虚拟机

九科企业级超级自动化平台引入ChatGPT,新技术助推产品能力全面提升

九科Ninetech

DPU 厂商北中网芯加入龙蜥社区,共建网络通信与安全

OpenAnolis小助手

开源 龙蜥社区 DPU CLA 北中网芯

Intel开源深度学习库BigDL:Non GPU on Spark_语言 & 开发_Tina_InfoQ精选文章