天天看点

英特尔开源BigDL,可直接在Spark框架下运行深度学习

英特尔开源BigDL,可直接在Spark框架下运行深度学习

雷锋网获悉。近日,英特尔开源了基于

apache spark 框架的分布式深度学习库 bigdl。通过使用bigdl,用户可以将他们的深度学习应用程序作为标准的 spark

程序发布(即将基于bigdl的深度学习代码直接嵌入已有的spark程序中),同时,bigdl还简化了基于hadoop框架的数据加载过程。

据团队在github平台上的介绍,bigdl具有如下三大特点:

1. 丰富的深度学习支持。

bigdl的源代码基于scala语言实现,同时从torch框架中汲取了诸多先进的理念。比如像torch一样,bigdl也为用户实现了一个tensor类,该类基于英特尔mkl库实现,可以进行各种常见的高阶数学运算。另外,受到

torch 框架下的神经网络包(这里指 nn 包,neural network package)

的启发,bigdl还提出了module类的概念,同时还模仿torch实现了table类和criterion类。

雷锋网注:这里mkl库的全称是“math kernel library”,即英特尔的数学核心函数库,其中包含了诸多常规数学计算的最优实现,包括快速傅里叶变换和矩阵乘法等,这些计算在深度学习领域的模型训练中有着非常广泛的应用。

2. 极高的性能表现。

bigdl基于一种同步小批量的随机梯度下降法(stochastic

gradient descent,sgd)对模型进行训练,该方法的能够支持单个 spark

任务的跨平台运行,每个平台的执行器(executor)都可以执行一个多线程引擎并处理其中一小部分的批量数据。

正式由于引入了英特尔mkl和多线程,使得bigdl库在英特尔 xeon 服务器上的表现要优于caffe、torch 或 tensorflow 等其他的开源框架,甚至达到了主流gpu的运算速度。

3. 强大的扩展能力。

bigdl 可以通过利用 apache spark 框架、同步的随机梯度下降算法,和 spark 框架下的 all-reduce 通信进行有效的扩展,以“大数据的规模”执行数据分析任务。外媒报道称,bigdl 可一次支持几十个 xeon 服务器的扩展。

根据上述特点,团队在github平台上给出了如下三点bigdl最适合的应用场景:

1. 直接在hadoop/spark框架下进行大数据分析(即将数据存储在hdfs、hbase、hive等数据库上); 2. 在spark程序中/工作流中加入深度学习功能; 3. 利用现有的 hadoop/spark 集群来运行深度学习程序,然后将代码与其他的应用场景进行动态共享,例如etl(extract、transform、load,即通常所说的数据抽取)、数据仓库(data warehouse)、功能引擎、经典机器学习、图表分析等。

值得一提的是,bigdl提供了一个基于亚马逊aws

ec2服务器实现的完整镜像,并附带诸多可以直接运行的用例:包括使用卷积神经网络实现的文本分类用例、图像分类用例,以及将 torch/caffe

目前,社区讨论中的大多数用户都表示希望 bigdl 的后续版本加入对 python 的支持,以及开发基于mkl的深度学习扩展包。

本文作者:恒亮

继续阅读