0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谷歌团队打造了一个名为JAX的系统

DPVg_AI_era ? 来源:未知 ? 作者:李倩 ? 2018-11-24 10:13 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

谷歌团队(非官方发布)打造了一个名为JAX的系统,今日在Reddit引发了热议。网友纷纷为它叫好——“说不定能够取代TensorFlow”。本文便带领读者一览JAX的庐山真面目。

这个工具说不定比TensorFlow还好用!

它就是JAX,一款由谷歌团队打造(非官方发布),用于从纯Python和Numpy机器学习程序中生成高性能加速器(accelerator)代码,且特定于域的跟踪JIT编译器。

那么JAX到底有哪些威力呢?

JAX使用XLA编译器基础结构,来为子程序生成最有利于加速的优化代码,这些优化子程序可以由任意Python调用和编排;

由于JAX与Autograd完全兼容,它允许Python函数的正、反向模式(forward- and reverse-mode)自动区分为任意顺序;

由于JAX支持结构化控制流,所以它可以在保持高性能的同时为复杂的机器学习算法生成代码;

通过将JAX与Autograd和Numpy相结合,可得到一个易于编程且高性能的ML系统,该系统面向CPUGPU和TPU,且能扩展到多核Cloud TPU。

此“神器”在Reddit上引发了热烈的讨论,网友纷纷为它叫好:

我的天,“可微分的numpy”实在是太棒了!我对pytorch有一点不是很满意,他们基本上重新做了numpy所做的一切,但存在一些愚蠢的差异,比如“dim”,而不是“axis”,等等。

JAX系统设计一览

谷歌团队通过观察发现,JAX的ML工作负载通常由PSC子程序控制。

JAX的设计便因此利用了函数通常可以直接在机器学习代码中识别的特性,使机器学习研究人员可以使用JAX的jit_ps修饰符进行注释。

虽然手工注释对非专业用户和“零工作量知识”优化提出了挑战,但它为专家提供了直接的好处,而且作为一个系统研究项目,它展示了PSC假设的威力。

JAX跟踪缓存为跟踪计算的参数创建了一个monomorphic signature,以便新遇到的数组元素类型、数组维度或元组成员触发重新编译。在跟踪缓存丢失时,JAX执行相应的Python函数,并将其执行跟踪到具有静态数据依赖关系的原始函数图中。

现有的原语不仅包括数组级别的数字内核,包括Numpy函数和其他函数,它们允许用户通过保留PSC属性将控制流分段到编译后的计算中。最后,JAX包含一些用于功能分布式编程的原语,如iterated_map_reduce。

为了生成代码,JAX将跟踪转换为XLA HLO,这是一种中间语言,可以对高度可加速的数组级数值程序进行建模。从广义上讲,JAX可以被看作是一个系统,它将XLA编程模型提升到Python中,并支持使用可加速的子程序,同时仍然允许动态编排。

defxla_add(xla_builder,xla_args,np_x,np_y):returnxla_builder.Add(xla_args[0],xla_args[1])defxla_sinh(xla_builder,xla_args,np_x):b,xla_x=xla_builder,xla_args[0]returnb.Div(b.Sub(b.Exp(xla_x),b.Exp(b.Neg(xla_x))),b.Const(2))defxla_while(xla_builder,xla_args,cond_fun,body_fun,init_val):xla_cond=trace_computation(cond_fun,args=(init_val,))xla_body=trace_computation(body_fun,args=(init_val,))returnxla_builder.While(xla_cond,xla_body,xla_args[-1])jax.register_translation_rule(numpy.add,xla_add)jax.register_translation_rule(numpy.sinh,xla_sinh)jax.register_translation_rule(while_loop,xla_while)

JAX从原语到XLA HLO的翻译规则

另外,JAX和Autograd完全兼容。

importautograd.numpyasnpfromautogradimportgradfromjaximportjit_psdefpredict(params,inputs):forW,binparamsoutputs=np.dot(inputs,W)+binputs=np.tanh(outputs)returnoutputsdefloss(params,inputs,targets):preds=predict(params,inputs)returnnp.sum((preds-targets)**2)grad_fun=jit_ps(grad(loss))#Compiledgradient-of-lossfunction

一个与JAX完全连接的基本神经网络

实验、性能结果比较

为了演示JAX和XLA提供的数组级代码优化和操作融合,谷歌团队编译了一个具有SeLU非线性的完全连接神经网络层,并在图1中显示JAX trace和XLA HLO图形。

图1:XLA HLO对具有SeLU非线性的层进行融合。灰色框表示所有的操作都融合到GEMM中。

使用一个线程和几个小的示例优化问题(包括凸二次型、隐马尔科夫模型(HMM)边缘似然性和逻辑回归)将Python执行时间与CPU上的JAX编译运行时进行了比较。

对于某些CPU示例来说,XLA的编译时间比较慢,但将来可能会有显著的改进,对于经过warmed-up代码(表1),XLA的编译速度非常快。

表1:在CPU上Truncated Newton-CG的计时(秒)

在GPU上训练卷积网络。谷歌团队实现了一个all-conv CIFAR-10网络,只涉及卷积和ReLU激活。谷歌编写了一个单独的随机梯度下降(SGD)更新步骤,并从一个纯Python循环中调用它,结果如表2所示。

作为参考,谷歌在TensorFlow中实现了相同的算法,并在类似的Python循环中调用它。

表2:GPU上JAX convnet步骤的计时(msec)

云TPU可扩展性。云TPU核心上的全局批处理的JAX并行化呈现线性加速(图2,左)。在固定的minibatch / replica中,texec受复制计数的影响最小(在2ms内,右边)

图2:为ConvNet训练步骤在云TPU上进行扩展。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6233

    浏览量

    108568
  • 编译器
    +关注

    关注

    1

    文章

    1663

    浏览量

    50455
  • 机器学习
    +关注

    关注

    66

    文章

    8513

    浏览量

    135107

原文标题:试试谷歌这个新工具:说不定比TensorFlow还好用!

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何打造属于自己的手势识别应用

    期小编给大家介绍和MediaPipe的相遇之路,本期小编将带着大家起来动手,如何打造
    的头像 发表于 07-29 10:12 ?310次阅读
    如何<b class='flag-5'>打造</b><b class='flag-5'>一</b><b class='flag-5'>个</b>属于自己的手势识别应用

    谷歌地图GPS定位

    谷歌地图GPS定位:精准导航背后的技术解析 谷歌地图作为全球最受欢迎的地图服务之,其精准的GPS定位功能为用户提供极大便利。本文将深入探讨谷歌
    的头像 发表于 05-29 16:54 ?414次阅读

    使用EZ-USB? SUITE构建img文件并决定将示例程序下载到开发板时,遇到名为“Bootloader未运行”的错误,怎么解决?

    你好,最近我买了块嵌入CYUSB3014芯片的USB开发板。 我从英飞凌的官方网站下载SDK。 它包含有许多示例的固件文件夹。 当我使用EZ-USB? SUITE 构建 img
    发表于 05-09 06:50

    套Linux系统,撑起整个芯片设计平台?CFA团队教你如何搭好EDA智算平台的技术底座

    运行,保障设计任务不中断。 不是每个人都要精通Linux,但每个芯片设计团队都该用上更聪明的平台 你可以不记住所有YUM命令,也可以不懂如何写systemctl的配置文件,但你需要系统
    发表于 05-07 14:44

    AMD与谷歌披露关键微码漏洞

    为CVE-2024-56161,其潜在风险引起了业界的广泛关注。为了更深入地了解该漏洞,谷歌安全研究团队在GitHub上发布相关帖子,对漏洞的详细信息、影响范围以及可能的攻击方式进行了全面剖析。同时,AMD也针对这
    的头像 发表于 02-08 14:28 ?587次阅读

    谷歌2.5亿美元收购HTC XR业务

    近日,HTC与谷歌共同宣布项重要协议。根据协议内容,谷歌将向HTC支付2.5亿美元的交易金额,并吸纳部分HTC的XR研发团队加入其麾下。
    的头像 发表于 01-24 13:51 ?673次阅读

    谷歌加速AI部门整合:AI Studio团队并入DeepMind

    旗下,此举旨在更好地整合人工智能部门,以提升各大项目的推进效率。 AI Studio团队谷歌内部扮演着举足轻重的角色,主要负责打造谷歌旗下的AI开发工具。这些工具包括Gemini D
    的头像 发表于 01-13 14:40 ?823次阅读

    谷歌发布“深度研究”AI工具,利用Gemini模型进行网络信息检索

    据外媒最新报道,谷歌近期发布名为“深度研究”的先进AI工具。这款工具借助其内部的Gemini大型语言模型,实现对网络信息的高效检索与
    的头像 发表于 12-16 09:35 ?798次阅读

    英伟达与谷歌携手加速量子计算设备设计

    英伟达近日宣布,将与谷歌量子AI团队展开合作,共同推进量子计算软硬件工具的研发。双方将利用英伟达CUDA-Q平台提供的模拟支持,加快设计谷歌代量子计算设备。
    的头像 发表于 11-19 16:21 ?618次阅读

    高通与谷歌合作开发AI优化的汽车座舱系统

    在10月23日的北京时间,高通技术公司正式揭晓谷歌项全新多年技术合作协议,双方旨在携手促进汽车行业的数字化革新。该合作聚焦于骁龙数字底盘、Android汽车操作系统以及
    的头像 发表于 10-23 13:45 ?895次阅读

    高通与谷歌携手推动汽车行业数字化转型

    近日,高通技术公司与谷歌宣布项长期技术合作计划,共同致力于加速汽车行业的数字化变革。双方将依托骁龙数字底盘、安卓汽车操作系统(AAOS)及谷歌
    的头像 发表于 10-23 10:51 ?660次阅读

    为了学习内核开发,大佬手搓轻量级操作系统YiYiYa OS

    作者:evilbinary(鸭佬) YiYiYa操作系统朴实无华的操作系统,追求快速开发,最小实现,同时遵循SOLID原则。编码简洁明了,非常适合学习操作
    发表于 08-30 14:57

    谷歌研究人员推出革命性首个AI驱动游戏引擎

    在科技日新月异的今天,人工智能(AI)正以前所未有的速度渗透到我们生活的每一个角落,从自动驾驶汽车到智能家居,无不彰显着其巨大的潜力和无限可能。而最近,谷歌研究团队
    的头像 发表于 08-29 17:21 ?917次阅读

    为了学习内核开发,大佬手搓轻量级操作系统YiYiYa OS

    YiYiYa操作系统朴实无华的操作系统,追求快速开发,最小实现,同时遵循SOLID原则。编码简洁明了,非常适合学习操作系统的同学。目
    发表于 08-27 10:08

    【核桃派ZeroW开发板体验连载】打造智能音箱,简化版的“小爱同学”

    主机名为WalnutPi的IP地址,开启VNC成功之后重启开发板移除HDMI,直接接电源线。 开始开发 使用QT绘制界面 本来想直接用C++配合QT的GUI来制作程序,但是发现
    发表于 08-22 05:27