搜索
首页科技周边人工智能被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

May 04, 2023 am 08:16 AM
谷歌tensorflowmeta

很喜欢有些网友的一句话:

「这孩子实在不行,咱再要一个吧。」

谷歌还真这么干了。

养了七年的TensorFlow终于还是被Meta的PyTorch干趴下了,在一定程度上。

谷歌眼见不对,赶紧又要了一个——「JAX」,一款全新的机器学习框架。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

最近超级火爆的DALL·E Mini都知道吧,它的模型就是基于JAX进行编程的,从而充分地利用了谷歌TPU带来的优势。

TensorFlow的黄昏和PyTorch的崛起

2015年,谷歌开发的机器学习框架——TensorFlow问世。

当时,TensorFlow只是Google Brain的一个小项目。

谁也没有想到,刚一问世,TensorFlow就变得非常火爆。

优步、爱彼迎这种大公司在用,NASA这种国家机构也在用。而且还都是用在他们各自最为复杂的项目上。

而截止到2020年11月,TensorFlow的下载次数已经达到了1.6亿次。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

不过,谷歌好像并没有十分在乎这么多用户的感受。

奇奇怪怪的界面和频繁的更新都让TensorFlow对用户越来越不友好,并且越来越难以操作。

甚至,就连谷歌内部,也觉得这个框架在走下坡路。

其实谷歌如此频繁的更新也实属无奈,毕竟只有这样才能追得上机器学习领域快速地迭代。

于是,越来越多的人加入了这个项目,导致整个团队慢慢失去了重点。

而原本让TensorFlow成为首选工具的那些闪光点,也被埋没在了茫茫多的要素里,不再受人重视。

这种现象被Insider形容为一种「猫鼠游戏」。公司就像是一只猫,不断迭代出现的新需求就像是一只只老鼠。猫要时刻保持警惕,随时扑向老鼠。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

这种困局对最先打入某一市场的公司来说是避不开的。

举个例子,就搜索引擎来说,谷歌并不是第一家。所以谷歌能够从前辈(AltaVista、Yahoo等等)的失败中总结经验,应用在自身的发展上。

可惜到了TensorFlow这里,谷歌是被困住的那一个。

正是因为上面这些原因,原先给谷歌卖命的开发者,慢慢对老东家失去了信心。

昔日无处不在的TensorFlow渐渐陨落,败给了Meta的后起之秀——PyTorch。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

2017年,PyTorch的测试版开源。

2018年,Facebook的人工智能研究实验室发布了PyTorch的完整版本。

值得一提的是,PyTorch和TensorFlow都是基于Python开发的,而Meta则更注重维护开源社区,甚至不惜大量投入资源。

而且,Meta关注到了谷歌的问题所在,认为不能重蹈覆辙。他们专注于一小部分功能,并把这些功能做到最好。

Meta并没有步谷歌的后尘。这款首先在Facebook开发出来的框架,慢慢成为了行业标杆。

一家机器学习初创公司的研究工程师表示,「我们基本都用PyTorch。它的社群和开源做得是最出色的。不仅有问必答,给的例子也很实用。」

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

面对这种局面,谷歌的开发者、硬件专家、云提供商,以及任何和谷歌机器学习相关的人员在接受采访时都说了一样的话,他们认为TensorFlow失掉了开发者的心。

经历了一系列的明争暗斗,Meta最终占了上风。

有专家表示,谷歌未来继续引领机器学习的机会正慢慢流失。

PyTorch逐渐成为了寻常开发者和研究人员的首选工具。

从Stack Overflow提供的互动数据上看,在开发者论坛上有关PyTorch的提问越来越多,而关于TensorFlow的最近几年一直处于停滞状态。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

就连文章开始提到的优步等等公司也转向PyTorch了。

甚至,PyTorch后来的每一次更新,都像是在打TensorFlow的脸。

谷歌机器学习的未来——JAX

就在TensorFlow和PyTorch打得热火朝天的时候,谷歌内部的一个「小型黑马研究团队」开始致力于开发一个全新的框架,可以更加便捷地利用TPU。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

2018年,一篇题为《Compiling machine learning programs via high-level tracing》的论文,让JAX项目浮出水面,作者是Roy Frostig、Matthew James Johnson和Chris Leary。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

从左至右依次是这三位大神

而后,PyTorch原始作者之一的Adam Paszke,也在2020年初全职加入了JAX团队。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

JAX提供了一个更直接的方法用于处理机器学习中最复杂的问题之一:多核处理器调度问题。

根据所应用的情况,JAX会自动地将若干个芯片组合而成一个小团体,而不是让一个去单打独斗。

如此带来的好处就是,让尽可能多的TPU片刻间就能得到响应,从而燃烧我们的「炼丹小宇宙」。

最终,相比于臃肿的TensorFlow,JAX解决了谷歌内部的一个心头大患:如何快速访问TPU。

下面简单介绍一下构成JAX的Autograd和XLA。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

Autograd主要应用于基于梯度的优化,可以自动区分Python和Numpy代码。

它既可以用来处理Python的一个子集,包括循环、递归和闭包,也可以对导数的导数进行求导。

此外,Autograd支持梯度的反向传播,这也就这意味着它可以有效地获取标量值函数相对于数组值参数的梯度,以及前向模式微分,并且两者可以任意组合。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

XLA(Accelerated Linear Algebra)可以加速TensorFlow模型而无需更改源代码。

当一个程序运行时,所有的操作都由执行器单独执行。每个操作都有一个预编译的GPU内核实现,执行器会分派到该内核实现。

举个栗子:

<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_fn</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">x</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">y</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">z</span>):<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">tf</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">reduce_sum</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">x</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">y</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">z</span>)

在没有XLA的情况下运行,该部分会启动三个内核:一个用于乘法,一个用于加法,一个用于减法。

而XLA可以通过将加法、乘法和减法「融合」到单个GPU内核中,从而实现优化。

这种融合操作不会将由内存产生的中间值写入y*z内存x+y*z;相反,它将这些中间计算的结果直接「流式传输」给用户,同时将它们完全保存在GPU中。

在实践中,XLA可以实现约7倍的性能改进和约5倍的batch大小改进。

此外,XLA和Autograd可以任意组合,甚至可以利用pmap方法一次使用多个GPU或TPU内核进行编程。

而将JAX与Autograd和Numpy相结合的话,就可以获得一个面向CPU、GPU和TPU的易于编程且高性能的机器学习系统了。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

显然,谷歌这一次吸取了教训,除了在自家全面铺开以外,在推进开源生态的建设方面,也是格外地积极。

2020年DeepMind正式投入JAX的怀抱,而这也宣告了谷歌亲自下场,自此之后各种开源的库层出不穷。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

纵观整场「明争暗斗」,贾扬清表示,在批评TensorFlow的进程中,AI系统认为Pythonic的科研就是全部需求。

但一方面纯Python无法实现高效的软硬协同设计,另一方面上层分布式系统依然需要高效的抽象。

而JAX正是在寻找更好的平衡,谷歌这种愿意颠覆自己的pragmatism非常值得学习。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

causact R软件包和相关贝叶斯分析教科书的作者表示,自己很高兴看到谷歌从TF过渡到JAX,一个更干净的解决方案。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

谷歌的挑战

作为一个新秀,Jax虽然可以借鉴PyTorch和TensorFlow这两位老前辈的优点,但有的时候后发可能也会带来劣势。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

首先,JAX还太「年轻」,作为实验性的框架,远没有达到一个成熟的谷歌产品的标准。

除了各种隐藏的bug以外,JAX在一些问题上仍然要依赖于其他框架。

拿加载和预处理数据来说,就需要用TensorFlow或PyTorch来处理大部分的设置。

显然,这和理想的「一站式」框架还相去甚远。

被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX

其次,JAX主要针对TPU进行了高度的优化,但是到了GPU和CPU上,就要差得多了。

一方面,谷歌在2018年至2021年组织和战略的混乱,导致在对GPU进行支持上的研发的资金不足,以及对相关问题的处理优先级靠后。

与此同时,大概是过于专注于让自家的TPU能在AI加速上分得更多的蛋糕,和英伟达的合作自然十分匮乏,更不用说完善对GPU的支持这种细节问题了。

另一方面,谷歌自己的内部研究,不用想肯定都集中在TPU上,这就导致谷歌失去了对GPU使用的良好反馈回路。

此外,更长的调试时间、并未与Windows兼容、未跟踪副作用的风险等等,都增加了Jax的使用门槛以及友好程度。

现在,PyTorch已经快6岁了,但完全没有TensorFlow当年显现出的颓势。

如此看来,想要后来者居上的话,Jax还有很长一段路要走。


以上是被PyTorch打爆!谷歌抛弃TensorFlow,押宝JAX的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
烹饪创新:人工智能如何改变食品服务烹饪创新:人工智能如何改变食品服务Apr 12, 2025 pm 12:09 PM

AI增强食物准备 在新生的使用中,AI系统越来越多地用于食品制备中。 AI驱动的机器人在厨房中用于自动化食物准备任务,例如翻转汉堡,制作披萨或组装SA

Python名称空间和可变范围的综合指南Python名称空间和可变范围的综合指南Apr 12, 2025 pm 12:00 PM

介绍 了解Python功能中变量的名称空间,范围和行为对于有效编写和避免运行时错误或异常至关重要。在本文中,我们将研究各种ASP

视觉语言模型(VLMS)的综合指南视觉语言模型(VLMS)的综合指南Apr 12, 2025 am 11:58 AM

介绍 想象一下,穿过​​美术馆,周围是生动的绘画和雕塑。现在,如果您可以向每一部分提出一个问题并获得有意义的答案,该怎么办?您可能会问:“您在讲什么故事?

联发科技与kompanio Ultra和Dimenty 9400增强优质阵容联发科技与kompanio Ultra和Dimenty 9400增强优质阵容Apr 12, 2025 am 11:52 AM

继续使用产品节奏,本月,Mediatek发表了一系列公告,包括新的Kompanio Ultra和Dimenty 9400。这些产品填补了Mediatek业务中更传统的部分,其中包括智能手机的芯片

本周在AI:沃尔玛在时尚趋势之前设定了时尚趋势本周在AI:沃尔玛在时尚趋势之前设定了时尚趋势Apr 12, 2025 am 11:51 AM

#1 Google推出了Agent2Agent 故事:现在是星期一早上。作为AI驱动的招聘人员,您更聪明,而不是更努力。您在手机上登录公司的仪表板。它告诉您三个关键角色已被采购,审查和计划的FO

生成的AI遇到心理摩托车生成的AI遇到心理摩托车Apr 12, 2025 am 11:50 AM

我猜你一定是。 我们似乎都知道,心理障碍包括各种chat不休,这些chat不休,这些chat不休,混合了各种心理术语,并且常常是难以理解的或完全荒谬的。您需要做的一切才能喷出fo

原型:科学家将纸变成塑料原型:科学家将纸变成塑料Apr 12, 2025 am 11:49 AM

根据本周发表的一项新研究,只有在2022年制造的塑料中,只有9.5%的塑料是由回收材料制成的。同时,塑料在垃圾填埋场和生态系统中继续堆积。 但是有帮助。一支恩金团队

AI分析师的崛起:为什么这可能是AI革命中最重要的工作AI分析师的崛起:为什么这可能是AI革命中最重要的工作Apr 12, 2025 am 11:41 AM

我最近与领先的企业分析平台Alteryx首席执行官安迪·麦克米伦(Andy Macmillan)的对话强调了这一在AI革命中的关键但不足的作用。正如Macmillan所解释的那样,原始业务数据与AI-Ready Informat之间的差距

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版