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

    文章

    6258

    浏览量

    111959
  • 编译器
    +关注

    关注

    1

    文章

    1672

    浏览量

    51907
  • 机器学习
    +关注

    关注

    67

    文章

    8562

    浏览量

    137209

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    谷歌自己发电,AI 系统会回到基础工程吗?

    2026年,谷歌开始自己发电。这不是能源布局,这是系统焦虑。当全球算力顶端的公司,把注意力转向电力,意味着信号——AI的瓶颈,正在下沉。 不再只是芯片,不再只是参数。而是
    的头像 发表于 02-12 15:59 2515次阅读
    当<b class='flag-5'>谷歌</b>自己发电,AI <b class='flag-5'>系统</b>会回到基础工程吗?

    谷歌评论卡,碰碰即可完成谷歌评论 #谷歌评论卡 #NFC标签 #nfc卡

    谷歌
    深圳市融智兴科技有限公司
    发布于 :2026年01月15日 17:02:00

    创通联达发布全新Jax运动相机Turnkey解决方案

    2026年1月6日(美国时间),国际消费电子展(CES2026)现场,全球领先的智能物联网解决方案提供商创通联达(Thundercomm)正式发布全新Jax运动相机Turnkey解决方案。该方案以
    的头像 发表于 01-10 15:45 1082次阅读

    AI智能体管理系统:当企业拥有支会思考、会协作的数字团队

    清晨七点,某跨国制造企业的数字控制中心悄然启动。这不是传统意义上的IT系统上线,而是支由87AI智能体组成的数字团队开始
    的头像 发表于 12-23 13:48 321次阅读

    Gemini AI 再进化:谷歌联合XREAL发布Project Aura, 打开“看见世界”的新能力

    [2025年12月9日,美国加利福尼亚州山景城] —— 在今日举行的 The Android Show 上,谷歌首次公布 Project Aura产品和 Android XR系统的关键细节,该产品
    发表于 12-09 11:06 1425次阅读
    Gemini AI 再进化:<b class='flag-5'>谷歌</b>联合XREAL发布Project Aura, 打开“看见世界”的新能力

    华曦达亮相谷歌云AI亚洲峰会,AI Home业务高增长引领发展新征程

    AI亚洲峰会现场 华曦达基于谷歌云技术底座打造的AIHome解决方案及其自主研发的HomeAIAgent——Cedar成为关注焦点。该系统通过AI驱动的学习与自适应,实时理解并预测用户需求,提供个性化
    的头像 发表于 09-10 10:22 658次阅读

    如何在TPU上使用JAX训练GPT-2模型

    如果您对如何使用 JAX 从头开始构建语言模型感到好奇,那么本文非常适合您。我们在 2025 年 Google Cloud Next 大会上举办了场关于此主题的研讨会,并获得了些很好的反馈,我们也为所有无法参会的开发者编写了
    的头像 发表于 09-03 11:39 1816次阅读
    如何在TPU上使用<b class='flag-5'>JAX</b>训练GPT-2模型

    谷歌查找我的设备配件(Google Find My Device Accessory)详解和应用

    物品。为了更好的理解它的工作原理,我们先来了解谷歌查找我的设备网络FMDN(Google find my device network)。FMDN由四部分组成:附件(Accessory),所有者
    发表于 08-31 21:10

    AI赋能谷歌Chrome与Web工具全面升级

    2025 Google 谷歌开发者大会带来了最新 Web 工具,包括全面升级的 Chrome 开发体验、极大简化的 UI 开发,到云端两侧的 AI 部署。这些强大的工具为出海开发者提供前所未有的加速,帮助他们更高效地打造面向全
    的头像 发表于 08-29 09:33 1315次阅读

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

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

    谷歌地图GPS定位

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

    使用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

    SOLIDWORKS教育版 团队协作与沟通技巧的提升

    工程师必会的核心素养。SOLIDWORKS教育版通过其独特的功能和平台优势,为学生提供模拟真实工作环境的平台,帮助他们在实践中提升团队协作与沟通能力。 实时协作,打破空间限制
    的头像 发表于 04-29 11:35 703次阅读
    SOLIDWORKS教育版 <b class='flag-5'>团队</b>协作与沟通技巧的提升

    车牌识别新花样:树莓派打造智能车牌监控系统

    树莓派是创客们打造家庭安防系统的热门之选,这得益于其具备运用人工智能(AI)的能力。AI系统能识别潜在威胁,在此情境下,还能识别过往车辆的牌照信息。创客YashIndane就开发了
    的头像 发表于 04-26 09:03 745次阅读
    车牌识别新花样:树莓派<b class='flag-5'>打造</b>智能车牌监控<b class='flag-5'>系统</b>!