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

使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档。 JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本,JAX 可以对 Python 和 NumPy 程序进行自动微分。可以通过 Python的大量特征子集进行区分,包括循环、分支、递归和闭包语句进行自动求导,也可以求三阶导数(三阶导数是由原函数导数的导数的导数。 所谓三阶导数,即原函数导数的导数的导数,将原函数进行三次求导)。通过 grad ,JAX 支持反向模 阅读详情


  Python数据之道分享  

转自 | 新智元

编辑 | 拉燕 如願 好困

【导读】谷歌Meta之争看来还没完!TensorFlow干不过还有JAX,二番战能否战胜PyTorch?

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

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

谷歌还真这么干了。

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

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

b08547c460b04c25e0bc595b0a332941.png

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

TensorFlow的黄昏和PyTorch的崛起

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

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

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

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

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

8867a18af9bc4f83c6a3624f8d912aa4.png

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

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

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

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

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

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

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

7303776b4b07f67ad540aa2e46b48e7f.png

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

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

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

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

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

231cfcb67f21d312703e47840884b6ec.png

2017年,PyTorch的测试版开源。

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

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

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

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

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

f0c7cd560886eeb78cf117a0031744f3.png

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

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

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

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

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

d8739da2bb83d9fcd80092adc793ca27.png

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

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

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

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

5514dbc344a975606d9f59f7665b3f16.png

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

79ecde99660f73aef0f65c73ea0a2875.png

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

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

5d30c2e71b2fb0b3a7ade3a6c1ba5811.png

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

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

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

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

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

103180affae0f845e54ffc24f5e0b0c9.png

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

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

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

2ff65cc1158f698d1eaa302269461436.png

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

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

举个栗子:

def model_fn(x, y, z):
  return tf.reduce_sum(x + y * z)

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

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

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

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

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

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

921816cd81f9e5f752ad7b23e9abd54d.png

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

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

374b569f557b5458f62e9e978b295ff4.png

bb1e4d3596c30511c2a54811ede3ced7.png

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

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

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

38878c67da3d25a131cf17a12ba53f5d.png

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

7197800097d1ccf3a2a0b4f04bd294a1.png

谷歌的挑战

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

d1f47c81bcf4eec046cb1694a83c80e8.png

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

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

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

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

e671566e4cd27c3841e36bb967611179.png

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

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

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

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

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

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

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

参考资料:

https://www.businessinsider.com/facebook-pytorch-beat-google-tensorflow-jax-meta-ai-2022-6

跟着AI学AI_11 PyTorch, TensorFlowJAX 功能对比简介 PyTorchTensorFlowJAX 是当前最流行的深度学习框架。它们各自具有独特的特性和优势,适合不同的应用场景和开发者需求。下面是对这三个框架的功能对比。特性PyTorchTensorFlowJAX计算图动态计算图静态计算图(支持动态计算图)通过 JIT 编译生成动态图自动微分Autograd内置强大的自动微分硬件加速GPU 支持(CUDA 集成)GPU、TPU 支持GPU、TPU 支持(XLA 编译器)生态系统。 阅读详情

相关推荐

为什么AI研究员开始用JAX替代PyTorch?实测GPU任务性能对比与迁移成本分析

本文深入分析了AI研究员转向JAX替代PyTorch的原因,通过GPU任务性能对比与迁移成本分析,揭示了JAX在矩阵运算、自动微分和显存管理上的优势。实测显示JAX在GPU任务中性能提升显著,特别适合大规模分布式训练和研究新型架构。文章还提供了从PyTorch迁移到JAX的实践指南和混合使用策略。

weixin_29046611的博客 216

GAN_Research:研究生研究项目,使用CycleGAN和其他生成模型探索图像到图像的翻译

GAN研究 研究生研究项目,使用CycleGAN和其他生成模型探索图像到图像的翻译。

前端开启深度学习之旅:尝试 JAXPyTorch

深度学习在当今的技术领域中扮演着重要的角色,而前端开发人员也有机会踏入这个令人兴奋且具有挑战性的领域。在本文中,我们将介绍如何以前端开发人员的身份开始深度学习,并探索使用 JAXPyTorch 这两个流行的深度学习框架的方法。深度学习是机器学习的一个分支,它模拟人类大脑的神经网络结构,并通过大量的数据进行训练和学习。以上是关于如何以前端开发人员的身份开始深度学习,并尝试使用 JAXPyTorch 这两个流行的深度学习框架的介绍和示例代码。您可以根据自己的需求修改网络结构和训练参数。

AvGroovy的博客 350

Models_from_scratch:使用PyTorchTensorFlowJAX进行复制和应用程序重用的一些已知ML架构实现

Models_from_scratch 使用PyTorchTensorFlowJAX进行复制和应用程序重用的一些已知ML架构实现

一文读懂深度学习框架 PyTorch vs TensorFlow 差异性对比【大模型行业应用入门系列】

深度学习框架是一种软件工具集,能够节省时间和精力,使开发人员能够更加高效地构建强大的应用程序。本文从计算图、数据并行性、模型部署、生态系统等层面,比较了两种主流的深度学习框架TensorFlowPyTorch的差异,并对如何选型提出了建议。随着大模型越来越成熟、稳定,业内人士预估2024年将会进入大模型应用元年。twt社区推出**【大模型行业应用入门系列】**文章,为相关人员提供必要的基础知识储备,后续还将推出实践系列,以应对大模型在各个行业的广泛应用带来的挑战,欢迎关注公众号每周的内容更新。

qingkahui24689的博客 6332

JAX、Flax 和 PyTorch 之间的类比关系

JAXPyTorch 的张量计算部分是同一类型,都是底层计算工具。Flax和PyTorch 的神经网络模块是同一类型,都是高层神经网络框架。PyTorch是一个完整的深度学习框架,而JAX + Flax是一个组合,需要用户根据需要整合工具。

Mr_dimple的博客 2045

PyTorchTensorFlowJax构建神经网络模型的标准化流程

构建一个神经网络模型的基本流程

昊大侠的博客 1740

一文打通PyTorchJAX

但在我看来,其官网写的JAX=Autograd + XLA并不贴切,我更愿意认为:JAX = functional/stateless PyTorch + XLA,JAX是函数式的/无状态的PyTorch与XLA编译器的结合。特别声明,有一类重要的状态叫做随机数种子,在PyTorch里面随机数种子是全局共享的,而在JAX里面没有真正的随机函数,必须明确地为生成随机数的函数指定随机数种子。不难分析得到,这一步的输入为参数、参数的梯度、优化器的状态,输出为新的参数、新的优化器状态。

no2454410的博客 741

PyTorch打爆谷歌抛弃TensorFlow押宝JAX

点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>CV微信技术交流群转载自:新智元 | 编辑:拉燕如願 好困【导读】谷歌Meta之争看来还没完!TensorFlow干不过还有JAX,二番战能否战胜PyTorch?很喜欢有些网友的一句话:「这孩子实在不行,咱再要一个吧。」谷歌还真这么干了。养了七年的TensorFlow终于还是被Me...

阿木寺的博客 443

【深度学习】被PyTorch打爆谷歌抛弃TensorFlow押宝JAX

本文转载自 |新智元很喜欢有些网友的一句话:「这孩子实在不行,咱再要一个吧。」谷歌还真这么干了。养了七年的TensorFlow终于还是被Meta的PyTorch干趴下了,在一定程度上。谷歌眼见不对,赶紧又要了一个——「JAX」,一款全新的机器学习框架。最近超级火爆的DALL·E Mini都知道吧,它的模型就是基于JAX进行编程的,从而充分地利用了谷歌TPU带来的优势。1...

fengdu78的博客 382

#今日论文推荐# 被PyTorch打爆,谷歌抛弃TensorFlow押宝JAX

很喜欢有些网友的一句话: 「这孩子实在不行,咱再要一个吧。」 谷歌还真这么干了。 养了七年的TensorFlow终于还是被Meta的PyTorch干趴下了,在一定程度上。 谷歌眼见不对,赶紧又要了一个——「JAX」,一款全新的机器学习框架。...

w1hsxn的博客 120

PyTorchJAX:深度学习框架的对比与选择

综上所述,PyTorchJAX都是强大的深度学习框架。PyTorch在易用性、社区支持以及快速原型开发和实验的灵活性方面表现出色,适合大多数深度学习项目。而JAX在性能优化、函数式编程范式以及与硬件加速器的无缝集成方面独具优势,更适合高性能计算和大规模研究项目。最终的选择取决于项目的具体需求,需要在开发的便捷性与性能、可扩展性之间进行权衡。随着这两个框架不断发展创新,从业者能够受益于这些强大且多样的工具,推动深度学习领域的进步。

2501_90323865的博客 1069

深度学习框架对比:TensorFlowPyTorchJAX 谁更强?

TensorFlow是由 Google 开发的深度学习框架,于 2015 年发布,最初专注于工业级部署。它采用静态图计算模型(静态图 + 动态图支持),具有强大的生产部署能力,支持从移动设备到大规模分布式集群的广泛平台。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 2829

主流深度学习框架全景对比:PyTorchTensorFlowJAX的发展、特性与工程落地

本文系统对比了PyTorchTensorFlowJAX三大深度学习框架的发展历程、核心特性和适用场景。PyTorch以动态图和灵活调试成为学术研究首选;TensorFlow凭借静态图优化和成熟部署工具链主导产业落地;JAX则通过函数式编程和XLA编译在大模型训练中展现性能优势。针对不同场景:学术研究推荐PyTorch,企业部署建议TensorFlow,大模型训练首选JAX,跨平台部署仍以TensorFlow占优。框架选择需权衡灵活性、性能和生态适配性。

这里是数字化与人工智能的 “实验场” 与 “瞭望台” 2393

PyTorch vs JAX:深度学习框架的比较与选择

PyTorch vs JAX:深度学习框架的比较与选择》 关键词: PyTorch, JAX, 深度学习框架, 比较分析, 选择策略 摘要:

AI天才研究院 1463

Google 辟谣放弃 TensorFlow,它还活着!

作者 | 苏宓出品 | CSDN(ID:CSDNnews)不知道是不是之前“TensorFlow 将死”的谣言传得过盛,Google 于日前紧急发布了一篇标题为《Bringing Machine Learning to every developer’s toolbox》(将机器学习带入每位开发者的工具箱)的公告,广而告之,TensorFlow 没有“死”,而且各种数据表...

CrisAppleYan的博客 402
上一篇: 基民百态
下一篇: 竟还有如此沙雕的代码注释!我笑喷了
Python数据之道
博客等级 码龄9年 2849粉丝 139原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值