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

    文章

    6244

    浏览量

    110259
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51081
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136233

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    谷歌地图GPS定位

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

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

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

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

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

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

    英监管机构或优先调查苹果谷歌移动生态系统

    近日,英国竞争与市场管理局(CMA)发布项重要声明,引起了广泛关注。该声明指出,CMA正考虑根据将于明年生效的数字市场竞争新规,优先对苹果和谷歌的移动生态系统活动展开调查。 据悉,
    的头像 发表于 02-05 13:46 791次阅读

    字节豆包大模型团队成立AGI长期研究团队Seed Edge

     据1月24日的报道,字节跳动旗下的豆包大模型团队已悄然组建了专注于通用人工智能(AGI)的长期研究团队,内部代号为“Seed Edge”。该
    的头像 发表于 01-24 15:03 2018次阅读

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

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

    40激光雷达!苹果布局机器人感知系统,让碰撞降低63.7%

    苹果入局人形机器人, 先做感知系统 !还次性用了 40激光雷达 ! 关于苹果涉足人形机器人领域的传闻早已甚嚣尘上。近日,该公司确实有新动作——研发了
    的头像 发表于 01-22 17:58 1427次阅读
    40<b class='flag-5'>个</b>激光雷达!苹果布局机器人感知<b class='flag-5'>系统</b>,让碰撞降低63.7%

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

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

    谷歌与三星联合发布Android XR操作系统

    系统整合谷歌在人工智能、增强现实(AR)以及虚拟现实(VR)领域的技术积累,充分展现谷歌在技术创新方面的实力。通过这
    的头像 发表于 12-16 10:08 811次阅读

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

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