Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

为什么适用于Python的TensorFlow正在缓慢消亡

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

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

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

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

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

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

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

图片


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。

原文链接:
https://thenextweb.com/news/why-tensorflow-for-python-is-dying-a-slow-death
工程TensorFlowPyTorch
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

Julia技术

Julia 是MIT设计的一个面向科学计算的高性能动态高级程序设计语言,项目大约于2009年中开始,2018年8月JuliaCon2018 发布会上发布Julia 1.0。据介绍,Julia 目前下载量已经达到了 200 万次,且 Julia 社区开发了超过 1900 多个扩展包。这些扩展包包含各种各样的数学库、数学运算工具和用于通用计算的库。除此之外,Julia 语言还可以轻松使用 Python、R、C/C++ 和 Java 中的库,这极大地扩展了 Julia 语言的使用范围。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

数据管理技术

数据管理是利用计算机硬件和软件技术对数据进行有效的收集、存储、处理和应用的过程,其目的在于充分有效地发挥数据的作用。

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

推荐文章
暂无评论
暂无评论~