2017年深度学习框架之争——看谁主沉浮?

451 阅读7分钟
原文链接: click.aliyun.com

在过去的两年多时间里,各大公司或研究机构推出自己的深度学习框架,比如Caffe 、 TensorFlow 等, 并且关于深度学习相关的框架也在随着时间不断地发生变化。 Theano 是第一个被广泛使用的深度学习框架,该框架是由深度学习领域中的大牛 Yoshua Bengio 牵头、 MILA 创建。 然而,在今年的九月份,MILA 宣布在 2018 年更新完最后一版本 Theano 后,将不再继续开发该框架。这一消息来得并不是很出人意外。在过去的几年里,一些不同的开源 Python 深度学习框架被引入,这些深度学习框架通常是由一家大的科技公司或者来自于多家公司联合开发的。

7a4b6e98a852159462a45e8c6ceadcfc884046bb

与此同时,谷歌公司开发的TensorFlow 似乎成为了最为常用的深度学习框架,一些专家预计,谷歌的TensorFlow 将会主导深度学习框架市场很多年。然而,一些其它类型的深度学习框架也逐渐吸引了越来越多的用户,最值得注意的是 PyTorch 深度学习框架。 PyTorch 是由Facebook 公司于 2017 年 1 月份开发的深度学习框架,该框架是用 C 语言实现、 Lua 语言进行封装,并用 Python 语言完成 GPU 加速。除了 GPU 加速以及高效的内存使用外, PyTorch 受到欢迎的其它原因是其动态计算图的使用,这类动态的计算图已经被其它不主流的深度学习框架使用,比如 Chainer 。使用这些动态计算图的优点是图是通过运行起来才定义的,而不像传统的 “ 定义并运行 ” 模式,尤其是输入可变的情况下具有很大的优势,比如像文本一样的非结构化数据等。

ba8c7f5451a6f9ddbfc16526e9ac437c1dac9155

其它的科技巨头也没有坐以待毙,微软公司开发了一款内部深度学习框架CNTK ,并与 2017 年正式推出其第 2.0 版本并重命名为Microsoft Cognitive Toolkit 。同年,Facebook 也推出了 Caffe2 ,该框架是众所知周的Caffe 框架的继承人。原始的Caffe 框架是由伯克利大学视觉和学习中心开发,依然被广泛应用于计算机视觉领域,并且还有一些成熟的模型参数能够在Model Zoo 中找到,这些模型参数能够用来迁移学习、初始化部分网络参数。目前所知, Caffe2 还没有跟上 Caffe 的脚步。

另外一个流行的深度学习框架是MXNet ,该框架由微软和亚马逊两大巨头资助。MXNet 已经推出有一段时间了,但当提到深度学习框架 MXNet 时,经常有人会误认为该框架只是针对于 R 语言的。其实 MXNet 支持多种语言,不仅包含 R 语言,还包含其它的语言,比如 C++ 、 Python 、 JavaScript 及 Go 等。 MXNet 的优势在于其可扩展性及其高性能。

以上这些只是选择了一些应用较为广泛的深度学习框架来介绍,还有一些其它的开源深度学习框架比如Deeplearning4j 和 Dlib (基于 C++ 语言)。此外,谷歌的 DeepMind 于 2017 年发布的 Sonnet (基于 TensorFlow 运行的一个高层次面向对象的库)。值得一提的其它深度学习框架还有 H2o.ai 和 Spark 。

0d70134872c9d45ce05a61a3a765b0608d32965b

在所有的深度学习框架外,还有些框架的接口需要详细介绍。最为人知以及应用最为广泛的应用界面毫无疑问是Keras ,Keras 是用 Python 写的一个高层次的深度学习应用程序接口( API ),由谷歌公司的研究员 François Chollet  创造出来。此外,谷歌公司于 2017 年宣布 Keras 已经被选定为 TensorFlow 的高级 API ,这也意味着 Keras 将被包含于下一次发布的 TensorFlow 版本中。除了 TensorFlow 外, Keras 也能被用在 Theano 或 CNTK 中。

Keras 的强大在于它只需简单地叠加多个层就能够创建一个深度学习模型,当使用 Keras 时,用户不必在层后面做数学运算。这看起来像是一个理想的快速原型制造机,并且 Keras 也成为了 Kaggle 竞赛中的热门工具。

因此,目前在一方面有高层次的Keras API ,能够让你轻易地构建先进的深度学习模型;在另外一方面,有低层次的 TensorFlow 框架,能够让建模时变得更加灵活,这两个项目都由谷歌公司支持。正如预期的那样,其它公司也不甘人后,微软和亚马逊共同宣布其Gluon API ,Gluon 是一个高层次的 Python 深度学习界面,目前支持 MXNet 框架,不久将支持微软的 CNTK 框架。 Gluon 是 Keras 的直接竞争对手,虽然 AWS (亚马逊公司旗下云计算服务平台)声称它们强力支持所有的深度学习框架,但是 AWS 当然会支持 Gluon 在 AI 领域的竞争中获胜。

77ad8b991a441ded4e1db8f66510895600aea652

出人意料的是,TensorFlow 框架的最大竞争对手竟然似乎是 PyTorch ,社区中不断增长对 PyTorch 框架的研究兴趣,比如在最近的 Kaggle 竞赛中,用户经常选择使用 PyTorch 框架作为其部分解决方案,同时也在最新的研究论文中被使用。在谷歌公司 2017年10月发布的最新TensorFlow版本 中,引入了一个“ 运行后定义 ” 的界面。谷歌公司希望这次版本的发布能够赢回那些喜欢 PyTorch 及其动态图的用户。

对于最流行的深度学习课程fast.ai 的开发者而言,这次变化来得太晚了。 fast.ai 于 9 月份宣布将从Keras和TensorFlow转向PyTorch 。fast.ai 的创始者及 Kaggle 的首席科学家 Jeremy Howard 认为, PyTorch 将能够继续保持领先的势头,时间会证明这个观点是否正确。

目前存在这么多深度学习框架,一些新手在选择一个深度学习框架时会具有面临一些挑战。坦率地说,即使是经验丰富的研究人员和开发人员都难以跟上最新进展的脚步。为了应对这个问题,微软和Facebook 发布开源项目ONNX (开放神经网络交流),该项目旨在为涉及不同编程框架的神经网络创建一种共享的模型表示机制。比如,它允许你建立一个PyTorch 模型并使用 MXNet 框架运行模型。

c5536801191e94cc70da209883a570fd4f18aa67

OXXN 项目从一开始就支持 Caffe2 、 Microsoft Cognitive Toolkit 、 MXNet 以及 PyTorch ,但对于其它的开源项目也已增加了一个转化器,比如 TensorFlow 等。

2017 年有许多令人兴奋的发展,这类似于深度学习和人工智能领域的高速发展。很难去预测明年会发生一些什么事情,但是我们可能会看到一些框架的合并。虽然,一些大型科技公司肯定希望使用并推广自己开发的技术栈,但很高兴看到由不同科技巨头支持的不同深度学习框架相互推动,加快创新。后续将从速度、内存使用、可移植性和可扩展性等方面详细地比较不同的深度学习框架,敬请期待。

作者信息

       

Indra den Bakker ,数据科学家、 深度学习导师 。

Linedin :www.linkedin.com/in/indraden…

本文由北邮@爱可可-爱生活 老师推荐, 阿里云云栖社区 组织翻译。

文章原标题《Battle of the Deep Learning frameworks — Part I: 2017, even more frameworks and interfaces 》,作者: Indra den Bakker ,译者:海棠,审阅:。

文章为简译,更为详细的内容,请查看原文