AI 从业者该如何选择深度学习开源框架丨硬创公开课

编者按:本文内容来自微软美国总部机器学习科学家彭河森博士在雷锋网(公众号:雷锋网)硬创公开课的分享,并由彭河森博士亲自整理成文。

正如程序语言一样,深度学习开源框架同样各有优劣和适用的场景,那么 AI 从业者该如何有针对性地选择这些平台来玩转深度学习?

本期公开课特邀了先后在谷歌、亚马逊、微软供职的机器学习科学家彭河森博士为大家讲述《MXNet火了,AI从业者该如何选择深度学习开源框架》。彭河森博士亲眼见证并深入参与了这三家巨头布局深度学习的过程。

嘉宾介绍

彭河森,埃默里大学统计学博士。现担任微软美国总部的机器学习科学家、微软必应广告部应用资深研究员,当前主要研究方向是自然语言处理和机器学习在广告和推荐系统中的应用。此外,彭河森博士曾是亚马逊最年轻的机器学习研究员,之前还供职于谷歌计量经济学部和中科院。

深度学习是一个非常热门的领域,现在市面上也有很多非常优秀的平台,相信大家在入行之初都在想,这么多平台应该怎么选择?

我先提两点,可能是一般测评没有考虑到的东西:

  • 一个是图像计算和符号求导,这是深度学习一个非常有意思且非常重要的副产物。
  •  另一个是深度学习框架的可触碰深度,这点直接关系到深度学习系统的发展未来和用户的自由度。

这两点对于初学者和从业人员都非常重要,我在后面详细讲述。

首先要恭喜 MXNet 近日获得了亚马逊的背书,MXNet 平台本身非常优秀,具有很多优良的性质:例如多节点模型训练,目前是我知道最全面的多语言支持。此外,也有评测说 MXNet 性能方面可以高出同行平台很多,我们将会在后面的讨论中提到。现在进入正题,我们该如何选择深度学习开源平台,参考标准应该是什么样的?

一、深度学习开源平台的 5 大参考标准

今天主要探讨的平台(或者软件)包括:Caffe, Torch, MXNet, CNTK, Theano, TensorFlow, Keras。

如何选择一个深度学习平台?我总结出了下面的这些考量标准。因人而异,因项目而异。可能你是做图像处理,也可能是自然语言处理,或是数量金融,根据你不同的需求,对平台做出的选择可能会不同。

标准1:与现有编程平台、技能整合的难易程度

无论是学术研究还是工程开发,在上马深度学习课题之前一般都已积累不少开发经验和资源。可能你最喜欢的编程语言已经确立,或者你的数据已经以一定的形式储存完毕,或者对模型的要求(如延迟等)也不一样。标准1 考量的是深度学习平台与现有资源整合的难易程度。这里我们将回答下面的问题:

  • 是否需要专门为此学习一种新语言?
  • 是否能与当前已有的编程语言结合?

标准 2: 和相关机器学习、数据处理生态整合的紧密程度

我们做深度学习研究最后总离不开各种数据处理、可视化、统计推断等软件包。这里我们要回答问题:

  • 建模之前,是否具有方便的数据预处理工具?当然大多平台都自身带了图像、文本等预处理工具。
  • 建模之后,是否具有方便的工具进行结果分析,例如可视化、统计推断、数据分析?

标准 3:通过此平台做深度学习之外,还能做什么?

上面我们提到的不少平台是专门为深度学习研究和应用进行开发的,不少平台对分布式计算、GPU 等构架都有强大的优化,能否用这些平台/软件做其他事情?

比如有些深度学习软件是可以用来求解二次型优化;有些深度学习平台很容易被扩展,被运用在强化学习的应用中。哪些平台具备这样的特点?

这个问题可以涉及到现今深度学习平台的一个方面,就是图像计算和自动化求导。

标准 4:对数据量、硬件的要求和支持

当然,深度学习在不同应用场景的数据量是不一样的,这也就导致我们可能需要考虑分布式计算、多 GPU 计算的问题。例如,对计算机图像处理研究的人员往往需要将图像文件和计算任务分部到多台计算机节点上进行执行。

当下每个深度学习平台都在快速发展,每个平台对分布式计算等场景的支持也在不断演进。今天提到的部分内容可能在几个月后就不再适用。

标准 5:深度学习平台的成熟程度

成熟程度的考量是一个比较主观的考量因素,我个人考量的因素包括:社区的活跃程度;是否容易和开发人员进行交流;当前应用的势头。

讲了 5 个参考标准后,接下来我们用上面的这些标准对各个深度学习平台进行评价:

二、深度学习平台评价

评判1:与现有编程平台、技能整合的难易程度

标准1 考量的是深度学习平台与现有资源整合的难易程度。这里我们将回答下面的问题:是否需要专门为此学习一种新语言?是否能与当前已有的编程语言结合?

这一个问题的干货在下面这个表格。这里我们按照每个深度学习平台的底层语言和用户语言进行总结,可以得到下表。

其中 Keras 通过 Theano, TensorFlow 作为底层进行建模。

我们可以看到这样的趋势:

  • 深度学习底层语言多是 C++ / C 这样可以达到高运行效率的语言。
  • 操作语言往往会切近实际,我们大致可以断定 Python 是未来深度学习的操作平台语言,微软在 CNTK 2.0 加入了对 Python 的支持。
  • 当然,还有不少平台可以通过脚本的方式配置网络并且训练模型。

从格局上来说,Python 作为深度学习建模的基本语言是可以确定的。如果你最喜欢编程语言是 Python,恭喜您,大多数平台都可以和你的技术无缝衔接。如果是 Java 也不用担心,不少平台也具有 Java 支持,Deeplearning4J 还是一个原生的 Java 深度学习平台。

标准 2: 和相关机器学习、数据处理生态整合的紧密程度

这里我们要提一下现在主要的数据处理工具,比较全面的数据分析工具包括 R 及其相关生态,Python 及其相关生态,小众一点的还包括 Julia 及其相关生态。

完成深度学习建模等任务之后,和生态的整合也尤为重要。

我们可以发现,上面和 Python, R, 整合较为紧密,这里 Keras 生态(TensorFlow, Theano), CNTK, MXNet, Caffe 等占有大量优势。

同时 Caffe 具有大量图像处理包,对数据观察也具有非常大的优势。

标准 3:通过此平台做深度学习之外,还能做什么?

下图是本次公开课的核心:

其实深度学习平台在创造和设计时的侧重点有所不同,我们按照功能可以将深度学习平台分为上面六个方面:

 CPU+GPU控制,通信:这一个最低的层次是深度学习计算的基本层面。

  • 内存、变量管理层:这一层包含对于具体单个中间变量的定义,如定义向量、矩阵,进行内存空间分配。
  • 基本运算层:这一层主要包含加减乘除、正弦、余弦函数,最大最小值等基本算数运算操作。
  • 基本简单函数:

         ○     包含各种激发函数(activation function),例如 sigmoid, ReLU 等。

         ○     同时也包含求导模块

  • 神经网络基本模块,包括 Dense Layer, Convolution Layer (卷积层), LSTM 等常用模块。
  • 最后一层是对所有神经网络模块的整合以及优化求解。

众多机器学习平台在功能侧重上是不一样的,我将他们分成了四大类:

1.    第一类是以 Caffe, Torch, MXNet, CNTK 为主的深度学习功能性平台。这类平台提供了非常完备的基本模块,可以让开发人员快速创建深度神经网络模型并且开始训练,可以解决现今深度学习中的大多数问题。但是这些模块很少将底层运算功能直接暴露给用户。

2.    第二类是以 Keras 为主的深度学习抽象化平台。Keras 本身并不具有底层运算协调的能力,Keras 依托于 TensorFlow 或者 Theano 进行底层运算,而 Keras 自身提供神经网络模块抽象化和训练中的流程优化。可以让用户享受快速建模的同时,具有很方便的二次开发能力,加入自身喜欢的模块。

3.    第三类是 TensorFlow。TensorFlow 吸取了已有平台的长处,既能让用户触碰底层数据,又具有现成的神经网络模块,可以让用户非常快速的实现建模。TensorFlow 是非常优秀的跨界平台。

4.    第四类是 Theano, Theano 是深度学习界最早的平台软件,专注底层基本的运算。 

所以对平台选择可以对照上图按照自己的需求选用:

  • 如果任务目标非常确定,只需要短平快出结果,那么第 1 类平台会适合你。
  • 如果您需要进行一些底层开发,又不想失去现有模块的方便,那么第 2、3 类平台会适合你。
  • 如果你有统计、计算数学等背景,想利用已有工具进行一些计算性开发,那么第 3, 4 类会适合你。

这里我介绍下深度学习的一些副产品,其中一个比较重要的功能就是符号求导。

图计算和符号求导:深度学习对开源社区的巨大贡献

大家可能会有疑问:我能训练出来深度学习模型就蛮好的了,为什么需要接触底层呢?

这里我先介绍下深度学习的一些副产品,其中一个比较重要的功能就是符号求导。符号求导英文是 Symbolic Differentiation,现在有很多有关的文献和教程可以使用。

符号求导是什么意思?

以前我们做机器学习等研究,如果要求导往往需要手动把目标函数的导数求出来。最近一些深度学习工具,如 Theano, 推出了自动化符号求导功能,这大大减少了开发人员的工作量。

当然,商业软件如 MatLab, Mathematica 在多年前就已具有符号计算的功能,但鉴于其商业软件的限制,符号计算并没有在机器学习应用中被大量采用。

深度学习由于其网络的复杂性,必须采用符号求导的方法才能解决目标函数过于复杂的问题。另外一些非深度学习问题,例如:二次型优化等问题,也都可以用这些深度学习工具来求解了。

更为优秀的是,Theano 符号求导结果可以直接通过 C程序编译,成为底层语言,高效运行。

这里我们给一个 Theano 的例子:

>>> import numpy
>>> import theano
>>> import theano.tensor as T
>>> from theano import pp
>>> x = T.dscalar('x')
>>> y = x ** 2
>>> gy = T.grad(y, x)
>>> f = theano.function([x], gy)
>>> f(4)

8

上面我们通过符号求导的方法,很容易的求出 y 关于 x 的导数在 4 这个点的数值。

标准 4:对数据量、硬件的要求和支持

对于多 GPU 支持和多服务器支持,我们上面提到的所有平台都声称自己能够完成任务。同时也有大量文献说某个平台的效果更为优秀。我们这里把具体平台的选择留给在座各位,提供下面这些信息:

首先想想你想要干什么。现在深度学习应用中,需要运用到多服务器训练模型的场景往往只有图像处理一个,如果是自然语言处理,其工作往往可以在一台配置优秀的服务器上面完成。如果数据量大,往往可以通过 hadoop 等工具进行数据预处理,将其缩小到单机可以处理的范围内。

本人是比较传统的人,从小就开始自己折腾各种科学计算软件的编译。现在主流的文献看到的结果是,单机使用 GPU 能比 CPU 效率提高数十倍左右。

但是其实有些问题,在 Linux 环境下,编译 Numpy 的时候将线性函数包换为 Intel MLK 往往也可以得到类似的提高。

当然现在很多评测,往往在不同硬件环境、网络配置情况下,都会得到不一样的结果。

就算在亚马逊云平台上面进行测试,也可能因为网络环境、配置等原因,造成完全不同的结果。所以对于各种测评,基于我的经验,给的建议是:take it with a grain of salt,自己要留个心眼。前面我们提到的主要工具平台,现在都对多 GPU、多节点模型训练有不同程度的支持,而且现在也都在快速的发展中,我们建议听众自己按照需求进行鉴别。

标准 5:深度学习平台的成熟程度

对于成熟程度的评判往往会比较主观,结论大多具有争议。我在这里也只列出数据,具体如何选择,大家自己判断。

这里我们通过 Github 上面几个比较受欢迎的数量来判断平台的活跃程度。这些数据获取于今天下午(2016-11-25)。我们用黑体标出了每个因子排名前三的平台:

  • 第一个因子是贡献者数量,贡献者这里定义非常宽泛,在 Github issues 里面提过问题的都被算作是 Contributor,但是还是能作为一个平台受欢迎程度的度量。我们可以看到 Keras, Theano, TensorFlow 三个以 Python 为原生平台的深度学习平台是贡献者最多的平台。
  • 第二个因子是 Pull Request 的数量,Pull Request 衡量的是一个平台的开发活跃程度。我们可以看到 Caffe 的 Pull Request 最高,这可能得益于它在图像领域得天独厚的优势,另外 Keras 和 Theano 也再次登榜。

 

另外,这些平台在应用场景上有侧重:

  • 自然语言处理,当然要首推 CNTK,微软MSR(A) 多年对自然语言处理的贡献非常巨大,CNTK 的不少开发者也是分布式计算牛人,其中所运用的方法非常独到。
  • 当然,对于非常广义的应用、学习,Keras/TensorFlow/Theano 生态可能是您最好的选择。
  • 对于计算机图像处理,Caffe 可能是你的不二选择。

 关于深度学习平台的未来:

  • 微软在对 CNTK 很有决心,Python API 加的好,大家可以多多关注。
  • 有观点认为深度学习模型是战略资产,应该用国产软件,防止垄断。我认为这样的问题不用担心,首先 TensorFlow 等软件是开源的,可以通过代码审查的方法进行质量把关。另外训练的模型可以保存成为 HDF5 格式,跨平台分享,所以成为谷歌垄断的概率非常小。
  • 很有可能在未来的某一天,大家训练出来一些非常厉害的卷积层(convolution layer),基本上能非常优秀地解决所有计算机图像相关问题,这个时候我们只需要调用这些卷积层即可,不需要大规模卷积层训练。另外这些卷积层可能会硬件化,成为我们手机芯片的一个小模块,这样我们的照片拍好的时候,就已经完成了卷积操作。

本文作者:亚峰

本文转自雷锋网禁止二次转载,原文链接

时间: 2025-01-05 01:58:00

AI 从业者该如何选择深度学习开源框架丨硬创公开课的相关文章

预告:MXNet火了,AI从业者该如何选择深度学习开源框架丨硬创公开课

近日 MXNet 被亚马逊AWS 正式选成为官方深度学习平台,使得前者再次火遍整个 AI 圈. 除了 MXNet 外,谷歌.微软.亚马逊.百度等巨头都围绕深度学习搭建了自己的开源平台.目前研究人员正在使用的深度学习框架不尽相同,有 TensorFlow.CNTK.MXNet.Torch .Caffe.Theano.Deeplearning4j 等. 正如程序语言之争一样,深度学习开源框架同样各有优劣和适用的场景,那么 AI 从业者该如何有针对性地选择这些平台来玩转深度学习? 本期公开课特邀先后在

深度学习入门者选择开源框架丨硬创公开课群友问答

在上周公开课<AI 从业者该如何选择深度学习开源框架丨硬创公开课>中,微软机器学习科学家彭河森博士详细讲述了各大开源框架适用的场景,课程结束后,我们特地整理了深度学习入门者较为关注的几个问答: 想学习深度学习开源框架,比如TensorFlow,Caffe,需要掌握哪些 Linux 知识? Linux 方面的知识我认为主要在系统配置方面,这里推荐一下 Docker,Docker 是一个容器虚拟机,可以让虚拟机中的程序和硬件更紧密的结合在一起,同时省去了配置 CUDA,BLAS/LAPACK 等环

预告:深度学习新星:GANs的诞生与走向(主讲人冯佳时 )丨硬创公开课

在大数据和人工智能界,常有这么个说法"谁掌握了数据,谁就占据AI高地." 但是"掌握数据"往往意味着巨大成本.首先海量数据经常被大型企业垄断,给原始数据标记也需要耗费巨大资金. 所以,基于数据而习得"特征"的深度学习技术受到狂热追捧,而其中GANs模型训练方法更加具有激进意味:它生成数据本身. GANs是"生成对抗网络"(Generative Adversarial Networks)的简称,由2014年还在蒙特利尔读博士的I

探讨医疗人工智能之眼科AI的真实应用场景(肽积木CEO柏文洁)丨硬创公开课

雷锋网按:目前全球范围内大约有 4.15 亿的糖尿病患者,单是中国就有 1.1 亿左右,而糖尿病视网膜病变致盲问题也愈发受到人们的关注. 据悉,只要在发病初期定期进行眼底检查,失明风险可下降 94.4%.但由于眼底病灶微小,部分医生经验不足等原因,使得诊断中可能出现漏诊.误诊的情况,因此,借助 AI 辅助诊断是未来的一大趋势. 那么如何将人工智能应用在眼底检测当中,雷锋网(公众号:雷锋网)邀请医疗影像公司肽积木CEO柏文洁做了一期以<探讨医疗人工智能之眼科AI的真实应用场景>为主题的公开课,从

预告:AI将如何重塑安防科技(格灵深瞳CEO赵勇主讲)丨硬创公开课

AI 技术的成熟,使得由人工智能来自动消化海量监控视频数据成为可能.目前,人工智能已经逐步渗透到安防行业,最终将会把以视频网络为核心的安防产业,重塑为以结构化数据为核心,以精确情报生产为目标的智慧物联网产业. 作为智能安防的先行者,格灵深瞳在近 4 年间推出多款应用于安防的 AI 产品,包括基于三维计算机视觉技术的皓目行为分析仪.威目视图大数据分析平台.威目车辆特征识别系统,以及全新产品"深瞳人眼摄像机".在本期雷锋网硬创公开课上,格灵深瞳 CEO 赵勇博士将基于自己多年的研究和行业经

商汤科技曹旭东:为何深度学习几乎成了计算机视觉研究的标配?| 硬创公开课

联合编辑 宗仁 黄鑫雷锋网(公众号:雷锋网)雷锋网雷锋网 今年夏天,雷锋网将在深圳举办一场盛况空前的"全球人工智能与机器人峰会"(简称CCF-GAIR).大会现场,谷歌,DeepMind,Uber,微软等巨头的人工智能实验室负责人将莅临深圳,向我们零距离展示国外人工智能震撼人心.撬动地球的核心所在.如果你不想错过这个大会的盛世狂欢,请点击文末购买我们的早鸟票. 本次CVPR 2016上,深度学习几乎成了如今计算机视觉研究的标配,人脸识别.图像识别.视频识别.行人检测.大规模场景识别的相

预告:第50期:硬创公开课特别版! 语音识别建模技术解析:AI浪潮下的技术演进

兜兜转转,硬创公开课从今年三月开始到现在,从第1期坚持到了第50期. 公众号粉丝从几十人增加到了如今的数千人,微信群总是处于爆满状态,每次新课开启之前工作人员最头痛的就是怎么把新来的想听公开课的朋友加到群里. 公开课能做到如今的规模更多的是承蒙各位朋友厚爱.有了各位嘉宾的悉心准备,以及群友.粉丝们的热情参与.转发,硬创公开课才能够越做越好. 现在我们要做第50期了,我们将以一个完全颠覆以往的形式来进行!本期公开课将登陆斗鱼直播平台! | 本期简介 作为新一轮AI浪潮下落地最为成熟的技术之一,语音

预告:带你走进 AI界 “中国互联网的黄埔军校” | 硬创公开课

微软亚洲研究院成立于1998年,位于中国北京,是微软在美国本土以外最大的基础研究机构.目前,微软亚洲研究院拥有20个研究及工程团队,主要从事自然用户界面.新一代多媒体.以数字为中心的计算.互联网搜索与在线广告以及计算机科学基础五大领域的研究. <人物>2016年7月18日发表了题为<中国互联网的黄埔军校>封面文章,引起热议,开头这样写道: 微软亚洲研究院是百度总裁.阿里云之父.金山软件CEO.小米总裁的摇篮,这里走出的500多人活跃在中国IT产业的各大企业,100多人执教于中国一流

AI用于医学影像,你需要知道这些 | 硬创公开课

图像识别技术已经可以认出人脸,也能用于自动驾驶中,那它用于医学影像,识别病变中又如何呢?在<国内人工智能+医学影像公司大盘点>一文中,雷锋网介绍了国内将深度学习等人工智能技术用于医学影像的众多公司,它可以削减读片时间,降低误诊的概率,推荐治疗方案,协助医生诊断. 本期硬创公开课,雷锋网请到其中一家公司DeepCare的创始人兼CTO丁鹏博士,为我们讲讲人工智能应用于医学影像的那些事儿. 嘉宾简介: 丁鹏,DeepCare创始人兼CTO,博士毕业于美国达特茅斯学院(Dartmouth Colle