前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【2017深度学习框架大事记】PyTorch成TensorFlow最大竞争对手,微软、亚马逊、Facebook 合作联盟对抗谷歌

【2017深度学习框架大事记】PyTorch成TensorFlow最大竞争对手,微软、亚马逊、Facebook 合作联盟对抗谷歌

作者头像
新智元
发布2018-03-20 16:38:11
9530
发布2018-03-20 16:38:11
举报
文章被收录于专栏:新智元新智元
来源:towardsdatascience.com

作者:Indra den Bakker

编译:刘小芹

【新智元导读】2017年,深度学习框架领域出现了许多新变化。TensorFlow仍然是最受欢迎的深度学习框架,但使用动态图的更高效的PyTorch作为后起之秀,已经成为TensorFlow的最大竞争对手。第一个被广泛采用的深度学习框架Theano“功成身退”,宣布停止开发和维护。此外,微软和亚马逊联合推出Gluon,微软、亚马逊和Facebook等联合发布ONNX格式,深度学习框架也呈现出合作联盟、对抗谷歌的趋势。

深度学习的图景在不断变化。Theano是第一个被广泛采用的深度学习框架,由Yoshua Bengio领导的MILA创建和维护。但情况已经发生改变。今年9月,MILA宣布,在发布Theano的最新版本后,2018年将终止Theano的开发和维护。这个消息并不令人感到意外。在过去的几年里,出现了不同的开源Python深度学习框架,这些框架通常是由大型科技公司开发或支持的,而且有些引起了很大的关注。

2017年开源深度学习框架图景

目前,从GitHub的star和fork数量,以及Stack Overflow活跃度来看,谷歌的TensorFlow似乎是最常用的深度学习框架。有人预计,伴随着TensorFlow的推出,谷歌将主导这个市场多年。但是,看起来其他框架确实也吸引了越来越多的充满热情的用户群。值得一提的是PyTorch的开发和发展。PyTorch是在2017年1月由Facebook推出的。它是经典机器学习库Torch框架的一个端口,Torch二进制文件包装于GPU加速的Python。

除了GPU加速和内存使用的高效外,PyTorch受欢迎的主要因素是动态计算图的使用。已经有其他一些不太知名的深度学习框架使用动态计算图,例如Chainer。动态图的优点在于,图(graph)是由run定义(“define by run”),而不是传统的“define and run”。特别是,在输入可以变化的情况下,例如文本这样的非结构化数据,这非常有用而且高效。

图:PyTorch动态计算图 - 来源:http://pytorch.org/about/

其他科技巨头也坐不住了。微软开发了名为CNTK的内部深度学习框架,在2017年正式推出2.0版本,并将其重新命名为微软认知工具包(Microsoft Cognitive Toolkit)。 2017年,Facebook还推出了Caffe2。它将成为众所周知的Caffe框架的继承者。Caffe框架最初是伯克利视觉和学习中心开发的,现在仍然非常受欢迎,这是由于它的社区性质,它是计算机视觉的应用程序,以及它的Model Zoo ——一系列预训练的模型。不过,Caffe2似乎还没有跟上Caffe的脚步。

另一个流行的深度学习框架是MXNet,由微软和亚马逊共同支持。MXNet的历史已经有一段时间了,但是当MXNet作为一个深度学习框架被提及时,我经常听到人们说“那是一个R语言的深度学习框架吧?”。是的,但不止。MXNet实际上支持许多语言,包括C ++,Python,JavaScript,Go,以及R。MXNet最为突出的是它的可扩展性和性能。

这些只是众多可选择的框架中的一小部分。其他开源的深度学习框架还有Deeplearning4j和Dlib(基于C ++)。而且在2017年,谷歌旗下的DeepMind发布了Sonnet(一个建立在TensorFlow上的高级面向对象的库)。其他值得一提的框架还有H20.ai和Spark。

用Keras直接构建模型— source: https://github.com/keras-team/keras

除了这些框架之外,我们还有一些包装在一个或多个框架中的接口(interface)。对于深度学习来说,最为人熟知和广泛使用的接口无疑是Keras。Keras是一个高级深度学习API,用Python编写,由谷歌的深度学习研究员François Chollet开发。谷歌在2017年宣布,Keras已被选为TensorFlow的高级API。这意味着Keras将被包含在下一个TensorFlow版本中。除了TensorFlow,Keras也可以使用Theano或者CNTK作为后端。

Keras的功能强大,因为它用非常直接的方式,即通过堆叠多个层来创建深度学习模型。使用Keras时,用户不必进行layers背后的数学运算。这似乎是快速原型设计的一种理想选择。Keras也是Kaggle比赛的热门工具。

那么,一方面我们现在拥有了高级的Keras API,可以让你轻松地构建简单而高级的深度学习模型;另一方面我们还有低级的TensorFlow框架,能为构建模型提供更大的灵活性。这两者都由谷歌支持。但是竞争并没有停止——2017年10月,微软和亚马逊的AWS联合宣布推出Gluon API。Gluon是一个封装了MXNet的高级Python深度学习接口,未来它还将支持微软的CNTK。Gluon是Keras的直接竞争对手,尽管AWS声称他们强烈支持所有深度学习框架,但显然,他们会打着AI民主化的口号押注于Gluon。

用Gluon堆叠卷积层和密集层以及参数初始化

令人惊讶的是,如今TensorFlow的最大竞争对手似乎是PyTorch。社区对PyTorch的兴趣越来越高涨,例如,Kaggle的最新竞赛中,参赛者经常选择使用PyTorch作为其解决方案的一部分,PyTorch也被用在最新的研究论文中。而TensorFlow终于引入动态图机制是在2017年10月发布的Eager Execution,这是TensorFlow的“define-by-run”接口。谷歌希望通过这次发布,赢回那些喜欢上PyTorch以及它的动态图的用户。

但对于广受欢迎的深度学习课程fast.ai的开发者来说,这个改变来得太迟了。今年9月,fast.ai宣布从Keras&TensorFlow转换到PyTorch。fast.ai的创始研究员、Kaggle的前总裁兼首席科学家Jeremy Howard认为PyTorch将能够保持领先地位。只有时间能告诉我们答案了。

有这么多深度学习框架,对于新入门者来说,选择哪个框架可能是有挑战性的问题。坦白说,即使是经验丰富的研究人员和开发人员,也很难跟上深度学习框架最新的发展。对此,一个好消息是开放神经网络交换(ONNX)格式的发布。ONNX于9月8日由微软和Facebook联合发布,并在12月发布了V1版本。ONNX是一个表示深度学习模型的开放格式。它使用户可以更轻松地在不同框架之间转移模型。例如,它允许用户构建一个PyTorch模型,然后使用MXNet运行该模型来进行推理。

开放神经网络交换(ONNX)的Github页面

ONNX由微软、亚马逊和Facebook等公司共同发起,宣布支持ONNX的公司还有AMD、ARM、华为、 IBM、英特尔、Qualcomm等。谷歌不在这个阵营中并不令人惊讶。ONNX从一开始就支持Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch,但与其他开源项目一样,社区也已经为TensorFlow添加了一个转换器。

小结

2017年深度学习框架方面有很多令人兴奋的发展,就跟快速发展的深度学习和人工智能一样。很难预测新的一年会发生什么。我们可能会看到一些整合,不过,大科技公司肯定会想使用和推广自己的技术栈。我们很高兴看到由不同技术巨头支持的不同框架,它们互相推动,促进更快的创新。这是我对2017年深度学习框架竞争观察的第一部分,在第二部分中,我将根据不同的度量标准,例如速度、内存使用、可移植性和可伸缩性等,来对比不同的框架性能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档