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

    文章

    6142

    浏览量

    105118
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49057
  • 机器学习
    +关注

    关注

    66

    文章

    8382

    浏览量

    132444

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    苹果公司组建AI团队,从谷歌挖角专家

    苹果公司近日在人工智能领域取得重大进展,成功从谷歌挖来数十名顶尖人工智能专家,并在瑞士苏黎世设立了处神秘的欧洲实验室。此举标志着苹果正组建支实力雄厚的团队,旨在开发全新的人工智能模
    的头像 发表于 05-13 11:39 567次阅读

    谷歌员工爆料Python基础团队原地解散

    谷歌最近的项人事变动引发了技术圈的广泛关注。据谷歌员工Thomas Wouters透露,与其共同致力于Python基础开发的团队,包括他本人和主管在内,都遭到了裁员。Thomas W
    的头像 发表于 05-08 11:24 479次阅读

    谷歌核心团队裁员200人

    谷歌近日在其“核心”团队中进行了裁员,涉及至少200名员工。此次裁员发生在公司上月月底公布财报之前,谷歌计划将些岗位转移至印度和墨西哥。
    的头像 发表于 05-07 09:42 352次阅读

    谷歌解散整个Python团队

    近日,谷歌Python工程师Thomas Wouters在社交媒体上透露,谷歌对其Python团队进行了架构调整,整个团队被解散。这变动可
    的头像 发表于 05-06 10:50 595次阅读

    谷歌核心团队首次面临裁员,面临监管压力

     谷歌开发者生态系统副总裁Asim Husain通过电子邮件向团队传达裁员消息。他在市政厅的演讲中告知员工,这是本年度团队计划中的最大规模
    的头像 发表于 05-06 10:04 289次阅读

    谷歌整合安卓系统与Pixel硬件团队,奥斯特罗引领新"Platfo"

    Osterloh曾主管谷歌硬件部门,涵盖Pixel、Fitbit以及Nest等各种产品的研发和战略规划。他对The Verge表示:“唯有结合硬件、软件和AI团队,方能为用户提供突破性AI体验。
    的头像 发表于 04-19 10:16 465次阅读

    千亿美元打造系统,成本越来越高的AI超算

    和OpenAI合作,打造千亿美元级别的超算系统。   千亿美元打造 AI 超算   根据外媒报道,此次
    的头像 发表于 04-09 00:19 3019次阅读

    谷歌电话应用新增“查找号码”功能,提升陌生来电识别效率

    细心的用户AssembleDebug首先发现这个功能。在谷歌电话应用的测试版本中,若用户点击电话记录内的陌生号码,便可找到名为“查找号
    的头像 发表于 04-07 11:42 520次阅读

    谷歌模型框架是什么软件?谷歌模型框架怎么用?

    谷歌模型框架通常指的是谷歌开发的用于机器学习和人工智能的软件框架,其中最著名的是TensorFlow。TensorFlow是开源的机器学习框架,由
    的头像 发表于 03-01 16:25 812次阅读

    谷歌AI聊天机器人改名为Gemini

    谷歌(Google)近日宣布,旗下备受瞩目的AI聊天机器人Bard正式更名为Gemini,并推出了款功能更加强大的付费版本——Gemini Advanced。这战略调整旨在与微软、
    的头像 发表于 02-18 11:28 1059次阅读

    谷歌DeepMind资深AI研究员创办AI Agent创企

    近日,刚从谷歌DeepMind离职的资深AI研究员Ioannis Antonoglou宣布创办了名为“AI Agent”的创企。Ioannis Antonoglou常驻伦敦,此前曾担任谷歌
    的头像 发表于 02-04 10:02 752次阅读

    OpenAI组建AI价值观新团队

    近日,人工智能领域的领军企业OpenAI宣布,他们正在组建全新的团队名为“集体对齐”(Collective Alignment)。这个团队
    的头像 发表于 01-17 15:00 636次阅读

    谷歌广告团队裁员数百人,员工转向中等级别客户服务

    目前有多位相关员工透露,谷歌正逐步将更多员工从大型客户销售团队(LCS)调配至服务中等规模客户的 Google 客户解决方案团队(GCS)。同时,谷歌也尝试借助人工智能技术让性能优化
    的头像 发表于 01-17 10:42 708次阅读

    谷歌调整硬件业务,Fitbit高管离任,AR团队裁员

    在此次调整中,谷歌选择采用更为集中的职能型结构,新设立的专业团队将统负责处理Pixel、Nest 和 Fitbit的硬件工程工作,有望提升整体工作效率。
    的头像 发表于 01-16 13:57 1729次阅读