[关闭]
@nataliecai1988 2017-08-10T07:57:15.000000Z 字数 5528 阅读 1933

英特尔BigDL设计思路解析:落地深度学习要具备工业级大数据分析流水线

大数据


作者:木环

深度学习蓬勃发展,开源界已有Caffe,MXNet,TensorFlow,Theano,Torch等主流框架;英特尔也开源了分布式深度学习库BigDL,它的特点是可以直接运行在现有的Apache Spark或Hadoop集群之上,并且其目标人群更偏向于大数据分析师们。InfoQ曾经撰文《Intel开源深度学习库BigDL:Non GPU on Spark》和《Intel开源了基于Apache Spark的分布式深度学习框架BigDL》,上个月InfoQ走进英特尔亚太研发有限公司,进一步学习和了解了BigDL,并对英特尔公司软件与服务事业部副总裁、系统技术及优化部门总经理Michael Greene和英特尔资深首席工程师、大数据技术全球CTO戴金权进行了采访,主要内容整理如下。

大数据是深度学习的序曲

数据规模的扩展推动了深度学习的发展。如下图Andrew Ng在《Machine Learning Yearning》一书中展示的图。当达到一定的数量后,传统算法的性能不再随着数量而获得提升;但是,大中型神经网络计算的性能依然会持续提升,并且与传统算法的性能优势差距越来越大。

image

随着Hadoop兴起和发展,如今Hadoop已经成为了“数据重力中心”(Center of Data Gravity),这为深度学习的研究奠定基础。Google曾经在2015年NIPS(Conference and Workshop on Neural Information Processing Systems,神经信息处理系统大会)上发表《Hidden Technical Debt in Machine Learning Systems》的演讲中表示,为了支撑机器学习和深度学习,需要做大量工作即搭建工业级复杂的大数据分析流水线。

image

幸运的是,开源社区中的Apache Hadoop/Spark平台推动大数据分析进入了民主化时代。Spark成为了业内进行大数据处理分析的主流计算框架,里面有非常多不同的组件提供各种各样的丰富的功能,从SQL的查询、流式的处理、机器学习、图像计算等等。

image

那么怎样才能让人工智能继大数据之后变成下一个民主化的技术浪潮呢?需要更易用、高效扩展、更低的成本和卓越的性能。

在戴金权看来,一方面深度学习社区每周都有新的技术突破,这非常令人激动并且也受到广泛关注;而另一方面,在真实的生产环境中“沉默的大多数”,事实上数据工程师们才是重度数据分析处理的大多数。不过,深度学习和大数据的社区是不完全匹配的,虽然数据工程师们不是深度学习专家,但是深度学习其他现有的软件框架、硬件架构并不友好,使用起来非常麻烦。简而言之,数据工程师们关心的是怎样更方便地适配到生产开发环境,并且真正应用解决问题(而不是demo的层面)。

BigDL技术概览

初衷:基于已有IT格局,重点面向大数据从业者

BigDL是英特尔在Spark上构建的一个面向Apache Spark的开源、分布式的深度学习框架,目标人群是大数据用户和数据科学家,其设计初心是为了让这些人更方便地应用深度学习,因此使用时无需修改、直接运行在现有Hadoop/Spark集群。

BigDL的设计出发点:可以重用现有的工具和基础架构;充分利用Hadoop/Spark集群上存储的数据,在大数据(Spark)程序或工作流之中增加深度学习功能。BigDL是在已定的IT技术栈之上,增加了对深度学习的支持,可以进行如数据清洗、数据仓库、特征工程、机器学习、图分析等应用。

BigDL的一些特性

image

源码地址https://github.com/intel-analytics/BigDLhttp://software.intel.com/bigdl
目前BigDL对深度学习支持如下:
- 张量,层:超过 100个(线性,卷积Conv2D、Conv3D,降维,循环)
- 损失函数:数十个
- 优化算法:SGD、Adagrad、Adam、Adamax、RMSProp、Adadelta
- 分布式训练/推理
- 保存和加载模型文件:包括Torch、Caffe、TensorFlow

Spark可以做很多事情,它提供的API相当于一个平台,BigDL与其结合使用可以在非常大的数据规模上面做如SQL Streaming等一些传统的数据分析工作。

image

目前比较全面支持Scala和Python两个语言。由于Java与Scala都运行在JVM上,两者之间基本能做到无缝的集成,即支持Scala就意味着支持了工程师们的语言Java;而Python是数据分析师们的语言。

image

上图展示了对Python的支持和使用方法。基于PySpare,开发者们可以通过BigDL中的Python API调用常见的Python库,如Numpy、Scipy、Pandas、Scikit-learn、Matplotlib等。

同时,BigDL的使用可以是单机、集群也可以是云,更换环境只需要修改几行配置代码即可。

image

在各方面的使用上,BigDL都是Real out of box,不需要安装依赖包等。只要可以运行Spark的环境就可以运行BigDL,堪称无痛使用。

除了Hadoop/Spark集群之外,BigDL还可以运行于其他大数据分析平台与公有云之上,如AWS、Azure、Alibaba、CDH与Cloudera、Databricks、Mesos等。以AWS为例,两者合作将BigDL共同部署到AWS EC2上,同时BigDL又与AWS EMR(Elastic MapReduce)直接继承,直接对使用者屏蔽集群的概念。

戴金权称BigDL本质上是一个标准的Spark应用,只要一个标准的Hadoop / Spark集群或者提供标准Hadoop / Spark服务的云就能运行。对于使用者而言,BigDL的使用类似与自行编写一个Spark应用。

BigDL 0.1于2017年发布,Intel称其提高了深度学习在数据科学家中的易用性:
• Python API的支持
• Jupyter Notebook的支持
• TensorBoard可视化的支持
• 更完备的RNN (Recurrent Neural Network)的支持
• 更健壮、更易扩展的大规模分布式训练

即将发布的0.2.0版本将包括:
• Functional API的支持(类似Keras)
• TensorFlow模型导入和定义的支持
• Spark ML Pipelines的原生支持
• Python包(pip安装)以及Windows平台的支持
• 导出模型到Caffe、TensoFlow或本地JVM运行
• 更高级的神经网络的支持

Bi-directional RNN, tree LSTM, Convolutional LSTM, 3D Convolution & pooling, 等等

落地:光有模型并不足够,要搭建端到端流水线

英特尔技术专家告诉InfoQ,现在BigDL已经被使用到生产环境中,规模因用户情况而异,集群节点可能是几个、十几个或几十个等;还有一些用户可能会上百,比如eBay有大概两百多节点。

下图是工业制造中的产品缺陷检测:

image

2015年,中国银联电子商务与电子支付国家实验室联合英特尔开展了基于神经网络的线上欺诈交易侦测模型研究。基于Spark的ML Pipeline进行机器学习流程的构建,采用英特尔BigDL分布式深度学习库提供的神经网络算法进行模型的训练与测试。

image

其实大部分银行本身都有一套欺诈交易侦测系统,只是研发程度不尽相同:有的是制定规则,例如个人短时间连续消费不能超过多少笔;有的是做决策。英特尔称其利用BigDL进行深度学习训练了10-20个独立的神经网络模型,经过Bagging集成测算比现有系统的准确率更高。

BigDL vs其他深度学习框架

BigDL和其他的深度学习框架其中一个不一样的地方是,它是专门为这样的大数据的运行环境所优化。一方面它在单点上利用英特尔的MKL库,多线程编程等等,可以得到非常高的性能。同时又充分利用了Spark架构,可以很方便在集群上进行横向扩展,可以很方便地跑在几十个甚至上百个节点上。

但是同时英特尔表示,BigDL也会与Spark ML整合。一方面是因为Spark ML可以在分布式机器学习和数据科学中非常广泛的使用;另外一方面的原因BigDL本身就是构建在Spark之上的深度学习库,因此需要与原生的Spark ML pipelines进行整合。此外,还可以把BigDL模型导出到Caffe、TensorFlow、Torch,开发者们甚至可以把它作为一个本地的Java程序在本地的JVM运行,与所有的JVM编程框架(如Storm)结合使用。未来,还会有更多高级的神经网络支持,如双向RNN、递归网络;增强3D图片处理能力。

谈谈大数据、云计算与人工智能

在戴金权看来,人工智能是一个比较宽泛的概念,一些规则系统、推理系统都算作早期的人工智能,这些年人工智能的发展很大程度是用深度学习、机器学习构建学习系统,扩建模型等。而这样的情况下,需要统一的大数据平台作为机器学习、深度学习应用的支撑;算法和模型固然重要,但是构建工业级的系统应用,就需大数据分析的整个平台。

从某种程度上来说,大数据平台和云计算架构非常类似,不管是基于公有云还是企业内部自建的平台,都需要横向扩展,实现资源调度和分享等。在很多云厂商的云计算服务中,数据存储、大数据的分析是非常重要的组成部分;而企业内部构建云也需要重点考虑如何构建数据的平台。

结语

英特尔称,打造BigDL的主要心力是在Spark大数据平台上能够更快、更容易应用深度学习解决方案,不仅仅是止步于设计一个深度学习框架。基于Spark平台而建的好处,是BigDL可以与其他组件方便地交互。

BigDL支持整个Hadoop生态圈内各种功能组件,如管理机器、引入数据、存储数据及分析工具等,并且支持不同开发语言。同理,英特尔称也希望将BigDL更方便地嵌入已有大数据生态中,使研发变得更方便,从而达到“深度学习民主化”。

英特尔在人工智能方面做了非常多的工作,端到端的人工智能的工作,从硬件层到软件,再到上层的各种各样的应用体验。包括从数据中心端到设备端,这样的端到端的人工智能工作。目标就是为了能够更好地推动人工智能计算的民主化,让更多人,让各行各业更方便、更快地使用人工智能技术。
{"class":"right"} —— 戴金权

QA问答

InfoQ:相比其他开源项目,BigDL有没有待改进的地方?英伟达专注于GPU,谷歌主攻TPU,当前的情况会不会给你们带来一定的发展局限?

戴金权:首先,英特尔目前专注的目标就是希望能够在现有大数据的集群上性能最好,所以我们主要集中在大规模的基于至强处理器的集群上进行优化。如果你今天去看所有大数据的集群,大都是这样的生产环境。当然,英特尔致力于很多硬件加速、硬件优化方面的工作,例如我们之后会有从某种程度来说更偏向于ASIC这样的一些产品,我们也会在之后把这些支持和优化加进来,只是说这可能是我们下一步工作的方向。

InfoQ:大数据或者深度学习,如果以后分析到很关键的数据,安全问题怎么考虑?鉴于攻击行为越来越多,英特尔在这方面有什么样的考虑?

戴金权:我觉得目前面临几方面的问题,大数据方面的安全本身就是一个非常重要的课题,英特尔在大数据安全方面,包括英特尔,包括英特尔和Cloudera合作,我们在开源社区里面有非常多的考虑。大家如果关注到的话,在Hadoop整个生态系统里,除了有数据处理,其实还有很多数据安全,数据如何管理的项目,以更好的来提供数据保护,这其实是英特尔一直做的事情。

InfoQ:现在人工智能等等不同的技术发展趋势很热门,英特尔如何看待?

Michael Greene:就像你所说的,我在英特尔和整个软件行业从事多年,这么多年以来英特尔研发软件的方式和方法从来没有变过,就是永远基于客户的需求,并为他们带来能够切实的解决方案。对我们来说,客户的需求永远是第一位的,这也是为什么我们会一直非常紧密的跟踪他们的需求,当然在这个过程中我们也会更紧密地追踪整个软件行业发展的趋势。人工智能和机器学习不仅是目前行业的趋势,也是绝大多数客户需求的技术方向,我们的客户都在向我们提出要求,希望能够有更好的认知引擎,能够有更好的产品定位,希望从大数据当中更快更好的获得洞察。这也是英特尔去开发、调整、升级软件的一个基础,是希望能够尽我们所能为客户带来最好的客户体验。今天戴金权肯定也为你们介绍了我们相关的软件和开发,包括最新的BigDL,BigDL的一个初衷就是希望能够让客户用更简单和高效的方式运用他们的大数据,做更好的分析性的解决方案。

InfoQ:英特尔之前给大家的印象是一家聚焦于硬件的公司,现在能说软件对于英特尔而言也越来越重要了吗?

Michael Greene:事实上一直以来软件对于英特尔都是非常重要的,因为软件对于我们客户是非常重要的,所以对于我们也是非常重要的。最早开始我们就寻求很多不同的方式去和软件开发商合作,比如最早在PC端,微软和开源社区Linux都是我们的合作伙伴,后来软件开发的重心从PC端迁移到云、数据中心,还有您提到的机器学习和AI,我们也会跟随这样的趋势,我们的软件开发也会有这样的重心的迁徙。

所以我还是要强调,软件对英特尔来说一直是非常重要的。当我们的客户或者我们的用户来买我们的处理器,不管是至强还是凌动,买的不是硅晶片,而是需要上面的软件能够运行。所以我们一直说英特尔的生命就在于软件和硬件的结合,这也是我们的热情所在,也是一直以来我们追寻的方向。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注