深度学习框架PyTorch和TensorFlow如何选择

人工智能

621人已加入

描述

     它哪里都好,就是不好用。

  科技领域一直存在着一种「教派之争」。无论是关于不同操作系统、云服务提供商还是深度学习框架的利弊之争,只要喝上几杯啤酒,事实就会被抛到一边,人们就开始就像争夺圣杯一样,为他们支持的技术而战。

  关于 IDE 的讨论似乎没有尽头,有些人喜欢 VisualStudio,有些人喜欢 IntelliJ,还有一些人更偏爱普通的旧编辑器,如 Vim。总有人说,爱用的文本编辑器往往会反映出用户的性格,这听起来似乎有点荒唐。

  在 AI 技术兴起后,深度学习框架 PyTorch 和 TensorFlow 两大阵营似乎也爆发了类似的「战争」。这两个阵营背后都有大量的支持者,并且他们都有充足的理由来说明为什么他们所喜欢的框架是最好的。

  话虽如此,但数据显示出一个再明显不过的事实。TensorFlow 是目前应用最广泛的深度学习框架。它每个月在 StackOverflow 上收到的问题几乎是 PyTorch 的两倍。

  但另一方面,PyTorch 最近的发展势头很好,TensorFlow 的用户一直没有增长。在这篇文章发表之前,PyTorch 一直在稳步获得关注。

  为了完整起见,下图还展示了与 TensorFlow 几乎同时发布的 Keras。显然,Keras 近年来的表现不尽人意,简单来说是因为 Keras 有点简单,对于大多数深度学习从业者的需求来说太慢了。

  python

  PyTorch 的热度仍在增长,而 TensorFlow 的增长已经停滞。图表来自 StackOverflow trends。

  TensorFlow 的 StackOverflow 流量可能不会快速下降,但它仍然是在下降。所以人们有充分的理由认为,这种下降趋势在未来几年将会更加明显,特别是在 Python 领域。

  PyTorch 是更 python 化的框架

  谷歌主导开发的 TensorFlow 是 2015 年底出现在深度学习派对上的首批框架之一。然而就像任何软件一样,第一个版本使用起来总是相当麻烦。

  这也正是 Meta(Facebook)开始研发 PyTorch 的原因,作为一种与 TensorFlow 功能相似,但操作起来更加便捷的技术。

  TensorFlow 的研发团队很快就注意到了这一点,并在 TensorFlow 2.0 大版本更新中采用了许多 PyTorch 上最受欢迎的特性。

  一个好的经验法则是用户可以在 TensorFlow 中做任何 PyTorch 能做的事情。它将花费两倍的精力来编写代码。即使在今天,它也不是那么直观,而且感觉很不 python。

  另一方面,对于喜欢使用 Python 的用户来说,PyTorch 的使用体验非常自然。

  PyTorch 有更多可用的模型

  许多公司和学术机构不具备构建大型模型所需的强大计算能力。然而在机器学习方面,规模才是王道;模型越大,性能越好。

  在 HuggingFace 的帮助下,工程师可以使用大型、经过训练的和调优的模型,只需几行代码就可以将它们合并到他们的工作流程管道中。然而,这些模型中的 85% 只能与 PyTorch 一起使用,这令人惊讶。只有大约 8% 的 HuggingFace 模型是 TensorFlow 独有的。其余部分可共用于两个框架。

  这意味着如今的很多用户如果打算使用大模型,那么他们最好远离 TensorFlow,不然就需要投入大量的计算资源来训练模型。

  PyTorch 更适合学生和研究使用

  PyTorch 在学术界更受欢迎。这么说并非没有依据:四分之三的研究论文使用的是 PyTorch。甚至在那些一开始使用 TensorFlow 的研究人员中 —— 记住,在深度学习方面它出现的更早 —— 大多数人现在也已经转向使用 PyTorch 了。

  这种令人惊讶的趋势会持续下去,尽管谷歌在 AI 研究中有着举足轻重的地位,并且一直主要使用 TensorFlow。

  更顺理成章的是,研究影响教学,决定着学生将会学到什么。一个使用 PyTorch 发表了大部分论文的教授将更倾向于在讲座中使用它。他们不仅可以更轻松地讲授和回答有关 PyTorch 的问题,也可能对 PyTorch 的成功抱有更强烈的信念。

  因此,大学生对 PyTorch 的了解可能比 TensorFlow 多得多。而且,考虑到今天的大学生就是明天的打工人,那么这一趋势的走向就可想而知……

  PyTorch 的生态系统发展得更快

  到头来,只有当参与到生态系统中时,软件框架才重要。PyTorch 和 TensorFlow 都有相当发达的生态系统,包括除了 HuggingFace 之外的训练模型的存储库、数据管理系统、故障预防机制等等。

  值得一提的是,到目前为止,TensorFlow 的生态系统仍然比 PyTorch 稍微发达一点。但请记住,PyTorch 是后来才出现的,并且仅仅在过去几年中就有了相当多的用户增长量。因此,PyTorch 的生态系统可能会未来的某一天超过 TensorFlow。

  TensorFlow 的基础设施部署更好

  尽管 TensorFlow 代码编写起来很麻烦,但一旦编写完成,它的部署要比 PyTorch 容易得多。TensorFlow services 和 TensorFlow Lite 等工具部署到云、服务器、移动和物联网设备的过程顷刻间能完成。

  另一方面,在部署发布工具方面,PyTorch 一直是出了名的慢。话虽如此,它最近一直在加速缩小与 TensorFlow 的差距。

  目前还很难预测,但 PyTorch 很有可能在未来几年赶上甚至超过 TensorFlow 的基础设施部署。

  TensorFlow 代码可能还会存在一段时间,因为在部署后切换框架的成本很高。然而,可想而知,新的深度学习应用程序将越来越多地使用 PyTorch 进行编写和部署。

  TensorFlow 并不全是 Python

  TensorFlow 并没有销声匿迹。只是不像以前那么炙手可热了。

  核心原因在于,许多使用 Python 进行机器学习的人正在转向 PyTorch。

  需要注意的是,Python 并不是机器学习的唯一语言。它是机器学习的代表性编程语言,这也是 TensorFlow 开发人员将支持集中在 Python 上的唯一原因。

  现在,TensorFlow 也可以与 JavaScript、Java 和 C++ 一起使用。社区也开始开发支持其他语言,如 Julia、Rust、Scala 和 Haskell 等。

  另一方面,PyTorch 极度以 Python 为中心 —— 这就是为什么它给人的感觉如此 Python 化。即使它有一个 C++ API,但它对其他语言的支持程度还不及 TensorFlow 的一半。

  可以想象,PyTorch 将在 Python 中取代 TensorFlow。另一方面,TensorFlow 凭借其卓越的生态系统、部署功能以及对其他语言的支持,仍将是深度学习领域的一员大将。

  对 Python 的喜爱程度决定了下一个项目是选择 TensorFlow 还是 PyTorch。

  编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分