范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Github1。3万星,迅猛发展的JAX对比TensorFlowPyTorch

  机器之心报道
  机器之心编辑部
  JAX 是机器学习 (ML) 领域的新生力量,它有望使 ML 编程更加直观、结构化和简洁。
  在机器学习领域,大家可能对 TensorFlow 和 PyTorch 已经耳熟能详,但除了这两个框架,一些新生力量也不容小觑,它就是谷歌推出的 JAX。很多研究者对其寄予厚望,希望它可以取代 TensorFlow 等众多机器学习框架。
  JAX 最初由谷歌大脑团队的 Matt Johnson、Roy Frostig、Dougal Maclaurin 和 Chris Leary 等人发起。
  目前,JAX 在 GitHub 上已累积 13.7K 星。
  项目地址:https://github.com/google/jax
  迅速发展的 JAX
  JAX 的前身是 Autograd,其借助 Autograd 的更新版本,并且结合了 XLA,可对 Python 程序与 NumPy 运算执行自动微分,支持循环、分支、递归、闭包函数求导,也可以求三阶导数;依赖于 XLA,JAX 可以在 GPU 和 TPU 上编译和运行 NumPy 程序;通过 grad,可以支持自动模式反向传播和正向传播,且二者可以任意组合成任何顺序。
  开发 JAX 的出发点是什么?说到这,就不得不提 NumPy。NumPy 是 Python 中的一个基础数值运算库,被广泛使用。但是 numpy 不支持 GPU 或其他硬件加速器,也没有对反向传播的内置支持,此外,Python 本身的速度限制阻碍了 NumPy 使用,所以少有研究者在生产环境下直接用 numpy 训练或部署深度学习模型。
  在此情况下,出现了众多的深度学习框架,如 PyTorch、TensorFlow 等。但是 numpy 具有灵活、调试方便、API 稳定等独特的优势。而 JAX 的主要出发点就是将 numpy 的以上优势与硬件加速结合。
  目前,基于 JAX 已有很多优秀的开源项目,如谷歌的神经网络库团队开发了 Haiku,这是一个面向 Jax 的深度学习代码库,通过 Haiku,用户可以在 Jax 上进行面向对象开发;又比如 RLax,这是一个基于 Jax 的强化学习库,用户使用 RLax 就能进行 Q-learning 模型的搭建和训练;此外还包括基于 JAX 的深度学习库 JAXnet,该库一行代码就能定义计算图、可进行 GPU 加速。可以说,在过去几年中,JAX 掀起了深度学习研究的风暴,推动了科学研究迅速发展。
  JAX 的安装
  如何使用 JAX 呢?首先你需要在 Python 环境或 Google colab 中安装 JAX,使用 pip 进行安装: $ pip install --upgrade jax jaxlib
  注意,上述安装方式只是支持在 CPU 上运行,如果你想在 GPU 执行程序,首先你需要有 CUDA、cuDNN ,然后运行以下命令(确保将 jaxlib 版本映射到 CUDA 版本): $ pip install --upgrade jax jaxlib==0.1.61+cuda110 -f https://storage.googleapis.com/jax-releases/jax_releases.html
  现在将 JAX 与 Numpy 一起导入: import jax import jax.numpy as jnp import numpy as np
  JAX 的一些特性
  使用 grad() 函数自动微分:这对深度学习应用非常有用,这样就可以很容易地运行反向传播,下面为一个简单的二次函数并在点 1.0 上求导的示例: from jax import grad def f(x):   return 3*x**2 + 2*x + 5 def f_prime(x):   return 6*x +2 grad(f)(1.0) # DeviceArray(8., dtype=float32) f_prime(1.0) # 8.0
  jit(Just in time) :为了利用 XLA 的强大功能,必须将代码编译到 XLA 内核中。这就是 jit 发挥作用的地方。要使用 XLA 和 jit,用户可以使用 jit() 函数或 @jit 注释。 from jax import jit x = np.random.rand(1000,1000) y = jnp.array(x) def f(x):   for _ in range(10):       x = 0.5*x + 0.1* jnp.sin(x)   return x g = jit(f) %timeit -n 5 -r 5 f(y).block_until_ready() # 5 loops, best of 5: 10.8 ms per loop %timeit -n 5 -r 5 g(y).block_until_ready() # 5 loops, best of 5: 341 µs per loop
  pmap:自动将计算分配到所有当前设备,并处理它们之间的所有通信。JAX 通过 pmap 转换支持大规模的数据并行,从而将单个处理器无法处理的大数据进行处理。要检查可用设备,可以运行 jax.devices(): from jax import pmap def f(x):   return jnp.sin(x) + x**2 f(np.arange(4)) #DeviceArray([0.       , 1.841471 , 4.9092975, 9.14112  ], dtype=float32) pmap(f)(np.arange(4)) #ShardedDeviceArray([0.       , 1.841471 , 4.9092975, 9.14112  ], dtype=float32)
  vmap:是一种函数转换,JAX 通过 vmap 变换提供了自动矢量化算法,大大简化了这种类型的计算,这使得研究人员在处理新算法时无需再去处理批量化的问题。示例如下: from jax import vmap def f(x):   return jnp.square(x) f(jnp.arange(10)) #DeviceArray([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81], dtype=int32) vmap(f)(jnp.arange(10)) #DeviceArray([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81], dtype=int32)
  TensorFlow vs PyTorch vs Jax
  在深度学习领域有几家巨头公司,他们所提出的框架被广大研究者使用。比如谷歌的 TensorFlow、Facebook 的 PyTorch、微软的 CNTK、亚马逊 AWS 的 MXnet 等。
  每种框架都有其优缺点,选择的时候需要根据自身需求进行选择。
  我们以 Python 中的 3 个主要深度学习框架——TensorFlow、PyTorch 和 Jax 为例进行比较。这些框架虽然不同,但有两个共同点: 它们是开源的。这意味着如果库中存在错误,使用者可以在 GitHub 中发布问题(并修复),此外你也可以在库中添加自己的功能; 由于全局解释器锁,Python 在内部运行缓慢。所以这些框架使用 C/C++ 作为后端来处理所有的计算和并行过程。
  那么它们的不同体现在哪些方面呢?如下表所示,为 TensorFlow、PyTorch、JAX 三个框架的比较。
  TensorFlow
  TensorFlow 由谷歌开发,最初版本可追溯到 2015 年开源的 TensorFlow0.1,之后发展稳定,拥有强大的用户群体,成为最受欢迎的深度学习框架。但是用户在使用时,也暴露了 TensorFlow 缺点,例如 API 稳定性不足、静态计算图编程复杂等缺陷。因此在 TensorFlow2.0 版本,谷歌将 Keras 纳入进来,成为 tf.keras。
  目前 TensorFlow 主要特点包括以下: 这是一个非常友好的框架,高级 API-Keras 的可用性使得模型层定义、损失函数和模型创建变得非常容易; TensorFlow2.0 带有 Eager Execution(动态图机制),这使得该库更加用户友好,并且是对以前版本的重大升级; Keras 这种高级接口有一定的缺点,由于 TensorFlow 抽象了许多底层机制(只是为了方便最终用户),这让研究人员在处理模型方面的自由度更小; Tensorflow 提供了 TensorBoard,它实际上是 Tensorflow 可视化工具包。它允许研究者可视化损失函数、模型图、模型分析等。
  PyTorch
  PyTorch(Python-Torch) 是来自 Facebook 的机器学习库。用 TensorFlow 还是 PyTorch?在一年前,这个问题毫无争议,研究者大部分会选择 TensorFlow。但现在的情况大不一样了,使用 PyTorch 的研究者越来越多。PyTorch 的一些最重要的特性包括:
  与 TensorFlow 不同,PyTorch 使用动态类型图,这意味着执行图是在运行中创建的。它允许我们随时修改和检查图的内部结构; 除了用户友好的高级 API 之外,PyTorch 还包括精心构建的低级 API,允许对机器学习模型进行越来越多的控制。我们可以在训练期间对模型的前向和后向传递进行检查和修改输出。这被证明对于梯度裁剪和神经风格迁移非常有效; PyTorch 允许用户扩展代码,可以轻松添加新的损失函数和用户定义的层。PyTorch 的 Autograd 模块实现了深度学习算法中的反向传播求导数,在 Tensor 类上的所有操作, Autograd 都能自动提供微分,简化了手动计算导数的复杂过程; PyTorch 对数据并行和 GPU 的使用具有广泛的支持; PyTorch 比 TensorFlow 更 Python 化。PyTorch 非常适合 Python 生态系统,它允许使用 Python 类调试器工具来调试 PyTorch 代码。
  JAX
  JAX 是来自 Google 的一个相对较新的机器学习库。它更像是一个 autograd 库,可以区分原生的 python 和 NumPy 代码。JAX 的一些特性主要包括: 正如官方网站所描述的那样,JAX 能够执行 Python+NumPy 程序的可组合转换:向量化、JIT 到 GPU/TPU 等等; 与 PyTorch 相比,JAX 最重要的方面是如何计算梯度。在 Torch 中,图是在前向传递期间创建的,梯度在后向传递期间计算, 另一方面,在 JAX 中,计算表示为函数。在函数上使用 grad() 返回一个梯度函数,该函数直接计算给定输入的函数梯度; JAX 是一个 autograd 工具,不建议单独使用。有各种基于 JAX 的机器学习库,其中值得注意的是 ObJax、Flax 和 Elegy。由于它们都使用相同的核心并且接口只是 JAX 库的 wrapper,因此可以将它们放在同一个 bracket 下; Flax 最初是在 PyTorch 生态系统下开发的,更注重使用的灵活性。另一方面,Elegy 受 Keras 启发。ObJAX 主要是为以研究为导向的目的而设计的,它更注重简单性和可理解性。
  参考链接:
  https://www.askpython.com/python-modules/tensorflow-vs-pytorch-vs-jax
  https://jax.readthedocs.io/en/latest/notebooks/quickstart.html
  https://jax.readthedocs.io/en/latest/notebooks/quickstart.html
  https://www.zhihu.com/question/306496943/answer/557876584

铁窗日记随想今天真的好累,但心里却很敝亮,受苦我不怕,最怕是心累。在这里我很少有这样的心情,每当老婆电话来了,也就是随着她电话那头的心情,我的心情才会好些。进来后不由自己胡思乱想,其实很多道理日防相鼓吹武力保台,称日本与台湾问题有关,需对外攻击能力临近日本自民党总裁换届选举,而现在这一批自民党总裁竞选者个个都是反华头子,结合今年以来日本政府的一些行动,必须承认的是,日本正在成为中国的一个新的威胁,实质上作为美国殖民地地位的日波兰执意唱反调,欧盟委员会要求实施制裁,斯国警告加速欧盟解体据俄罗斯卫星通讯社报道,向来内部矛盾不断的欧盟,日前再次发生内讧。报道称,当地时间9月7日,欧盟委员会要求欧盟最高司法机构欧洲法院对波兰处以罚款,同时对波兰实施金融制裁。报道称,此安理会上不欢而散后,北约又对中俄居高临下,要求前往阿富汗反恐随着美国及一众北约国家撤军,阿富汗局势再度陷入动荡,恐怖势力也卷土重来,对阿富汗周边国家构成了极大的威胁。不久前,中国俄罗斯还联合中亚国家举行了反恐演习,旨在震慑蠢蠢欲动的恐怖势力立陶宛求锤得锤,波兰不愿步其后尘,当立外长面称不支持台独日前立陶宛方面求锤得锤宣布召回驻华大使,表达了继续支持台独的立场,当然他们自己这么做还不算完,还想要拉上一票盟国跟着支持台独,比如他们的邻国波兰,后者在地缘上与他们非常亲近并且总体台当局友邦拟弃暗投明,其总统候选人承诺胜选就与大陆建交洪都拉斯反对党称若总统胜选就与中国大陆建交,台湾省当局跳脚开骂据环球网9月6日报道,台湾当局的友邦洪都拉斯将于今年11月进行新一届总统大选,不过重点并不是换届选举,而是洪都拉斯换届北约对华发号施令,要求加入美俄核军控体系,约束自身扩核进程自从今年6月中旬的拜普会之后,美国政府就频频在媒体公众面前炒作中国扩核话题,妄图以此限制中国核力量的发展,而最近与美国穿一条裤子的北约秘书长斯托尔滕贝格,竟然也加入到这个话题中来,美总统气候特使刚走,英国气候官员就来华访问,但这次有求于中国美国总统气候大使克里前脚刚走,英国高级气候官员夏尔马也紧随其后,要和中国谈气候问题。据观察网9月5日报道,英国高级气候官员夏尔马已抵达天津,与中国气候变化事务特别代表解振华进行了会9月7日上午8点,美国军机闯入台海上空,被中国军机当场驱逐解放军军机今进台空域驱离美军机据台媒报道,9月7日上午,解放军军机出现在台湾岛西南空域,高度约7300米。台空军宣称,对解放军军机进行了在空警戒并广播驱离。同时笔者注意到,这次台媒我军机进入台空域,蓬佩奥叫嚣要与台湾站在一起,并为自由而战据岛内媒体报道,9月5日解放军派出了多达19架次军机绕台西南部空域戒备,包括一架运8反潜机4架轰610架歼16以及4架苏30,如此大规模的行动别说在2021年,就是解放军在台海活动深度在阿失败并非结束,911事件后的20年,美经历了三次衰退本周二,阿富汗塔利班宣布建立临时政府,并公布了多位重要官员的名单,这标志着在阿富汗国内,塔利班已经成为事实上的政府领导团体。比较令人担忧的是,代理总理和内政部长仍然是联合国与美国的
双一流异地办学,谁是最大赢家?在国内双一流高校里有一股风潮异地办学,经久不衰。1984年12月,山东大学与威海市政府联合共建山东大学威海分校,开创了中国名校异地办学的先河,自此拉开了中国高水平大学异地办学的帷幕2021年强基计划来了,名校抢人大战开始2021年3月30日,北京理工大学公布了2021年强基计划招生简章,正式拉开了今年强基计划招生的序幕。图源北京理工大学公众号3月31日,西安交通大学武汉大学大连理工大学重庆大学等高现在的大学生一边抱怨996,一边挤进互联网大厂互联网大厂,是年轻人最为熟悉的词汇之一。中国互联网产业,在过去20多年的发展中势如破竹,诞生了一批以阿里巴巴腾讯百度为代表的龙头企业,以及无数的中小企业。大厂大厂,大就大在规模业务三星堆惊艳世界,这些大学团队功不可没沉睡三千年,一醒惊天下。被誉为20世纪人类最伟大的考古发现之一,三星堆遗址是中华文明满天星斗中最神秘的那颗星辰。时隔35年,三星堆遗址发掘工作再次启动。此次发掘实现了科学性考古多团这个省的高教,或将触底反弹近期,山西师范大学迁建省会太原的消息一出,山西高教的关注度也持续升温。当大众将目光投向山西的高等教育时,难免不感慨这个中华文明发源地之一晋商文化源头,如今竟然沦为了网友口中的高教洼2021软科中国财经类大学排名(2021年4月26日)高等教育评价专业机构软科今日正式发布2021软科中国大学排名。清华大学北京大学浙江大学占据主榜(即综合性大学排名)前三位。北京协和医学院位列医药类大学排名第独家发布!2021软科中国大学排名系列一流学科建设高校排名4月26日,软科正式发布了2021软科中国大学排名。自从2015年启动双一流建设以来,双一流高校便成为我国高等教育界关注度最高的名词之一。在这其中,一流大学建设高校是我国高等教育体中国最贵大学,值不值?在经济全球化教育国际化浪潮的推动下,我国高等教育不断扩大对外开放的程度,与境外高校交流合作日益密切。中外合作办学是中国改革开放以来,中国高等教育国际化所采取的一种形式,经过将近40王牌来袭!这是中国高校最强阵容2021年是强基计划实施的第二年。去年起,各高校取消了自主招生政策,实施强基计划,并在首批36所一流大学A类高校中试点实施,各高校都拿出了本校基础学科的王牌专业招揽强基人才。近日,独家发布!2021软科中国大学排名系列双非高校排名2021年是十四五开局之年,首轮双一流建设即将迎来定论。第二轮名单呼之欲出,哪些高校有望入围可谓备受关注。此前双一流建设主管部门负责人就统筹推进世界一流大学和一流学科建设实施办法(国家再圈100所中西部高校,谁能上车?在我国高等教育的版图上,中西部高校占全国高校总数的半数之多,是名副其实的半壁江山。然而,受经济社会发展和高等教育布局影响,中西部高等教育总体上与东部存在较大差距。3月11日,十三届