来源 | AI前线
(相关资料图)
作者 | AriAri Joury
译者 | 核子可乐
策划 | 刘燕
【导读】 曾经与 PyTorch 并驾齐驱,TensorFlow 如今怎么就不行了?
科技领域的派系之争从未休止,各种各样的操作系统、云服务商乃至深度学习框架都有各自的支持者和反对者。几杯小酒下肚,从业人士们总爱拾起话题、挑动争端,搞搞“抛开事实不谈”的娱乐插曲。没错,人们会打心里支持自己喜爱的技术,甚至愿意牺牲人缘加以捍卫。
还记得关于 IDE 的热烈讨论吧,有些人支持 VisualStudio,也有人将神圣一票投给 IntelliJ,平淡老派的 Vim 仍不乏拥护者。这样的争论永无止尽,甚至成了从业者衡量他人的重要线索和攻讦素材。
堪称深度学习双雄的 PyTorch 和 TensorFlow 当然也逃离不了这样的命运。 两个阵营都有大批支持者,双方也掌握着丰富详实的证据,足以证明为什么自己喜欢的深度学习框架能够“打爆”对方。
但如果单从数据来看,那这个争议甚至没有存在的价值。截至目前,TensorFlow 仍是应用范围最广的深度学习框架,每月在 Stack Overflow 上收到的相关问题数量几乎是 PyTorch 的两倍。
但从另一方面来看,TensorFlow 自 2018 年以来几乎就没有继续增长。PyTorch 受到的关注度则一直稳步提升,至今仍在保持。
为了证明所言非虚,下图所示为 TensorFLow、PyTorch 以及 Keras 三款框架的发展历程。但可以看到, Keras 已经基本陷入难以逆转的回落 。最简单的解释是,Keras 过于简单且性能不佳,难以满足多数深度学习从业者的现实需求。
PyTorch 仍在增长,TensorFlow 则基本陷入原地踏步。图片基于 Stack Overflow 趋势数据。
当然,TensorFlow 在 Stack Overflow 上的流量可能不会快速下降,但也已经开始下降。而且我们有理由相信,这 种下降将在未来几年中,特别是在 Python 领域变得更加明显 。
PyTorch 感觉更有 Python 范
由谷歌开发的 TensorFlow,大约是 2015 年底加入深度学习狂欢的首批老成员。然而,其初代版本的使用难度很高 — 但这也没什么,毕竟很多软件的首个版本都不够成熟。
正因为如此,Meta 才决定开发 PyTOrch,希望能以更低的上手门槛提供与 TensorFlow 几乎相同的功能。
TensorFlow 开发团队很快意识到了这个问题,并在 TensorFlow 2.0 中引入了 PyTorch 那边不少广受欢迎的设计。
首先得夸一句,PyTorch 能实现的在 TensorFlow 中也完全可以实现,只要你能容忍花两倍精力编写代码。时至今日,TensorFlow 使用起来也不够直观,让人感觉很没有 Python 那个“范儿”。
至于 PyTorch,只要大家喜欢用 Python,那就一定会喜欢上这套强大的深度学习框架。
PyTorch 提供更多模型选项
很多企业和学术机构都不具备构建大模型所需要的充裕算力。而要命的是,机器学习向来以规模为王 — 模型体量越大,往往越能带来令人印象深刻的效能表现。
借助 HuggingFace,工程师们只需编写几行代码,就能把经过训练和调优的大型模型整合到自己的管道当中。这时 PyTorch 的一大优势就体现出来了— 这些模型中约有 85% 可以跟 PyTorch 配套使用。目前只有约 8% 的 HuggingFace 模型属于 TensorFlow 独占,其余部分基本都是跨阵营兼容。
也就是说,如果您打算使用大模型,那要么远离 TensorFlow,要么就得投入大量计算资源来训练自己的模型。
PyTorch 对教育和研究类场景更友好
PyTorch 在学术界备有赞誉,其中的道理并不能理解。有四分之三的研究论文使用的都是 PyTorch,而且即使是那些早期从 TensorFlow 的研究人员(请注意,TensorFlow 在这方面是具备先发优势的),其中大部分如今也已经迁移到了 PyTorch。
必须承认,谷歌自己在 AI 研究领域就独成一套颇具份量的体系,而且主要使用 TensorFlow;但这种向 PyTorch 转型的趋势已成现实且持续加快。
另外要强调一点,学术研究会直接影响到教学习惯,给年轻的预备队们灌输技术喜好。用 PyTorch 发论文的教授们,当然更倾向在课堂上使用 PyTorch。他们也更乐意和擅长回答跟 PyTorch 有关的问题,这自然会左右学生们的工具选择。
因此,与 TensorFlow 相比,大学生们往往更了解 PyTorch。而且随着他们慢慢成长并走向产业,PyTorch 阵营将变得愈发强大。
PyTorch 的生态系统增速更快
归根结底,软件框架的重要意义其实是参与者社群的反映和体现。PyTorch 和 TensorFlow 都有相当发达的生态系统,包括除 HuggingFace 以外的各类训练艺术形式仓库、数据管理系统、故障预防机制等。
值得一提的是,截至目前,TensorFlow 的生态系统还是要比 PyTorch 略强一些。但 PyTorch 亮相得更晚,而且过去几年来的增长之势坚定有力。因此可以预见, PyTorch 生态系统可能会在不久的将来全面超越 TensorFlow。
TensorFlow 的部署基础设施更强
虽然 TensorFlow 的编码难度更高,但只要编写完成,其部署难度却远低于 PyTorch。TensorFlow Serving 和 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,但 PyTorch 所能支持的其他语言数量还不到 TensorFlow 的一半。
可以想见,PyTorch 在 Python 世界中肯定会超越 TensorFlow。但另一方面,TensorFlow 凭借其令人印象深刻的生态系统、部署功能和对其他语言的广泛支持,仍将在深度学习领域长久占据重要的一席之地。
说到这里,该选 TensorFlow 还是 PyTorch 应该有了明确的答案 — 专情于 Python 就选 PyTorch,反之则选 TensorFlow。