写点什么

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

发布了 1270 篇内容, 共 841.1 次阅读, 收获喜欢 3539 次。

关注

评论

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

你需要知道的Symbols

不在线第一只蜗牛

前端 symbol

阿里云Redis与Tair压力测评

WizInfo

Centos7系统拒绝国外IP海外IP访问的几种方法

百度搜索:蓝易云

云计算 Linux centos 运维 服务器

C++中map的使用方法

智趣匠

从0到1:垃圾上门回收预约小程序开发笔记

CC同学

企业是如何做到持续规划的?

智达方通

全面预算管理 持续规划 年度计划流程

UINO优锘科技受邀在2023全球数字经济大会数字孪生赋能城市数字化转型论坛发表演讲

ThingJS数字孪生引擎

数字化转型 智慧城市 数字孪生 #web3D ThingJS

CentOS7系统GitLab安装部署教程。

百度搜索:蓝易云

git Linux gitlab 运维 云服务器

从0到100:定制公交预约小程序开发笔记

CC同学

从0-100:约拍小程序开发笔记

CC同学

centos7系统安装xrdp教程。

百度搜索:蓝易云

云计算 Linux centos 运维 xrdp

PyTorch: nn网络层-卷积层

timerring

PyTorch

IT行业都在用哪些进度跟踪工具

PingCode

IT 项目管理软件 项目进度管理

机器学习洞察 | 挖掘多模态数据机器学习的价值

亚马逊云科技 (Amazon Web Services)

机器学习

Docker学习路线3:安装设置

小万哥

Docker 容器 后端 开发 开发程序员

2023-07-12:RocketMQ如何做到消息不丢失?

福大大架构师每日一题

福大大架构师每日一题

生成式AI的发展、应用及影响 | 社区征文

Dec

年中技术盘点

没收入是表象,UMU CEO李东朔的出海经验:第一年破100国家

B Impact

你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】

极客小俊

JavaScript 前端开发 函数 前端基础 DOM操作

CentOS7安装MySQL8

百度搜索:蓝易云

MySQL Linux centos 运维 Web

新兴技术的影响与展望:生成式AI及更多思考|社区征文

小诚信驿站

年中技术盘点

云服务器vCPU与物理CPU关系?

百度搜索:蓝易云

运维 cpu 云服务器 vCPU

代码随想录 Day15 - 二叉树(二)

jjn0703

图加速数据湖分析-GeaFlow和Hudi集成

TuGraphAnalytics

数据湖 图计算 Hudi 数据湖分析 GeaFlow

倒计时 2 天|请收好 Kyligence 用户大会参会指南

Kyligence

数据分析 指标平台

AIGC 对程序员的影响 | 社区征文

sidiot

AI AIGC 年中技术盘点

Centos7系统路由追踪安装使用教程。

百度搜索:蓝易云

云计算 Linux centos 运维 云服务器

go 实现ringbuffer以及ringbuffer使用场景介绍

蓝胖子的编程梦

TCP 网络 epoll ringbuffer 环形缓冲区

小度全屋智能携大模型应用惊艳亮相中国建博会,智慧体验演绎未来家居新标准

新消费日报

代码随想录 Day14 - 二叉树(一)

jjn0703

Linux(CentOS7)安装最新版Python

百度搜索:蓝易云

Python 云计算 Linux centos7 运维

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