首页 > 科技 > 内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

MLGO 使用强化学习训练神经网络来作决策,是一种用机器学习策略取代复杂的启发式方法。作为一个通用的工业级框架,它将更深入、更广泛应用于更多环境,不仅仅在内联和寄存器分配。

作者 | 钱云迪、Mircea Trofin

编译 | 刘冰一

编辑 | 陈彩娴

现代计算机诞生,如何编译更快、更小的代码问题随之出现。

编译优化是成本收益比最高的优化手段,更好的代码优化可以显著降低大型数据中心应用程序的操作成本。编译代码的大小对于部署在安全引导分区上的移动和嵌入式系统或软件来说是至关重要的,因为编译后的二进制文件必须符合严格的代码大小预算。随着这一领域的进步,越来越复杂的启发式方法严重挤压有限的系统空间,阻碍了维护和进一步的改进。

最近的研究表明,机器学习可以通过用机器学习策略取代复杂的启发式方法,在编译器优化中释放更多的机会。然而,在通用的、行业级编译器中采用机器学习策略仍然是一个挑战。

为了解决这个问题,谷歌两位高级工程师钱云迪、Mircea Trofin 提出了“MLGO,一个机器学习指导的编译器优化框架”,这是第一个工业级的通用框架,用于将机器学习技术系统地集成到 LLVM(一个开源的工业编译器基础设施,在构建关键任务、高性能软件时无处不在)中。

论文地址:https://arxiv.org/pdf/2101.04808.pdf

MLGO 使用强化学习训练神经网络来做出决策,以取代 LLVM 中的启发式算法。根据作者描述,LLVM 上有两处 MLGO 优化:

1)通过内联减少代码量;

2)通过寄存器分配提高代码性能。

这两种优化都可以在 LLVM 资源库中获得,并已在生产中部署。

1

MLGO是如何工作的?

内联(Inlining)有助于通过做出能够删除冗余代码的决策来减少代码大小。在下面的示例中,调用者函数调用被调用者函数,而本身又调用了。内联这两个调用站点将返回一个简单的函数,该函数将减小代码大小。

图注:内联通过删除冗余代码来减少代码大小

在实际代码中,有成千上万的函数相互调用,因此构成了一个调用图(Call graph)。在内联阶段,编译器遍历(traverses)所有调用者-被调用者对的调用图,并决定是否内联一个调用者-被调用者对。这是一个连续的决策过程,因为以前的内联决策会改变调用图,影响后面的决策和最终的结果。在上面的例子中,调用图需要在两条边上做出“yes”的决定,以使代码大小减少。

在MLGO之前,内联/非内联的决定是由启发式方法做出的,随着时间的推移,这种方法越来越难以改进。MLGO用一个机器学习模型代替了启发式方法。在调用图的遍历过程中,编译器通过输入图中的相关特征(即输入)来寻求神经网络对是否内联特定的调用者-被调用者对的建议,并按顺序执行决策,直到遍历整个调用图为止。

图注:内联过程中MLGO的图示,“ # bbs”、“ # users”和“ callsite height”是调用者-被调用者对特性的实例

MLGO 使用策略梯度和进化策略算法对决策网络进行 RL 训练。虽然没有关于最佳决策的基本事实,但在线 RL 使用经过培训的策略在培训和运行汇编之间进行迭代,以收集数据并改进策略。特别是,考虑到当前训练中的模型,编译器在内联阶段咨询模型,以做出内联/不内联的决策。编译完成后,它产生一个顺序决策过程的日志(状态、行动、奖励)。然后,该日志被传递给训练器以更新模型。这个过程不断重复,直到得到一个满意的模型为止。

图注:训练期间的编译器行为——编译器将源代码编译成对象文件,并进行了一系列的优化,其中一个是内联通道。

训练后的策略被嵌入到编译器中,在编译过程中提供内联/非内联的决策。与训练场景不同的是,该策略不生成日志。TensorFlow 模型被嵌入 XLA AOT ,它将模型转换为可执行代码。这避免了TensorFlow运行时的依赖性和开销,最大限度地减少了在编译时由ML模型推理引入的额外时间和内存成本。

图注:生产环境中的编译器行为

我们在一个包含30k 模块的大型内部软件包上培训了大小内联策略。训练后的策略在编译其他软件时可以推广,并减少了3% ~ 7% 的时间和内存开销。除了跨软件的通用性之外,跨时间的通用性也很重要,软件和编译器都在积极开发之中,因此训练有素的策略需要在合理的时间内保持良好的性能。我们在三个月后评估了该模型在同一组软件上的性能,发现只有轻微的退化。

图注:内联大小策略大小减少百分比,x 轴表示不同的软件,y 轴表示减小的百分比。“Training”是训练模型的软件,“InfraX”是不同的内部软件包。

MLGO 的内联换大小训练已经在 Fuchsia 上部署,Fuchsia 是一个通用的开源操作系统,旨在为不同的硬件和软件生态系统提供动力,其中二进制大小是关键。在这里,MLGO 显示 C++ 翻译单元的大小减少了6.3%。

2

寄存器分配

作为一个通用框架,我们使用 MLGO 来改进寄存器分配(Register allocation)通道,从而提高 LLVM 中的代码性能。寄存器分配解决了将物理寄存器分配给活动范围(即变量)的问题。

随着代码的执行,不同的活范围在不同的时间完成,释放出的寄存器供后续处理阶段使用。在下面的例子中,每个 "加法 "和 "乘法 "指令要求所有操作数和结果都在物理寄存器中。实时范围x被分配到绿色寄存器,并在蓝色或黄色寄存器的实时范围之前完成。x 完成后,绿色寄存器变得可用,并被分配给活范围t。

在代码执行过程中,不同的活范围在不同的时间完成,释放出的寄存器供后续处理阶段使用。在下面的例子中,每个“加法”和“乘法”指令要求所有操作数和结果都在物理寄存器中。活动范围 x 被分配到绿色寄存器,并在蓝色或黄色寄存器的实时范围之前完成。x 完成后,绿色寄存器变得可用,并被分配给活范围 t 。

图注:寄存器分配示例

当分配活动范围 q 时,没有可用的寄存器,因此寄存器分配通道必须决定哪个活动范围可以从其寄存器中“驱逐”,以便为 q 腾出空间。这被称为“现场驱逐”问题,是我们训练模型来取代原始启发式算法的决策。在这个例子中,它将 z 从黄色寄存器中驱逐出去,并将其赋给 q 和 z 的前半部分。

我们现在考虑实际范围 z 的未分配的下半部分。我们又有一个冲突,这次活动范围 t 被驱逐和分割,t 的前半部分和 z 的最后一部分最终使用绿色寄存器。Z 的中间部分对应于指令 q = t * y,其中没有使用 z,因此它没有被分配给任何寄存器,它的值存储在来自黄色寄存器的堆栈中,之后被重新加载到绿色寄存器中。同样的情况也发生在 t 上。这给代码增加了额外的加载/存储指令,降低了性能。寄存器分配算法的目标是尽可能地减少这种低效率。这被用作指导 RL 策略训练的奖励。

与内联大小策略类似,寄存器分配(regalloc-for-Performance)策略在 Google 内部一个大型软件包上进行了培训,并且可以在不同的软件上通用,在一组内部大型数据中心应用程序上每秒查询次数(QPS)提高了0.3% ~ 1.5% 。QPS 的改进在部署后持续了几个月,显示该模型的可推广性。

3

总结

MLGO使用强化学习训练神经网络来作决策,是一种机器学习策略取代复杂的启发式方法。作为一个通用的工业级框架它将更深入、更广泛应用于更多环境,不仅仅在内联和寄存器分配。

MLGO可以发展为:1)更深入,例如增加更多的功能,并应用更好的 RL 算法;2)更广泛,可应用于内联和重新分配之外的更多优化启发式方法。

作者对 MLGO 能够为编译器优化领域带来的可能性充满热情,并期待着它的进一步采用和研究界未来的贡献。

参考链接:

https://ai.googleblog.com/

github:https://github.com/google/ml-compiler-opt

demo:https://github.com/google/ml-compiler-opt/blob/main/docs/demo/demo.md雷峰网

雷峰网

本文来自网络,不代表趣头条立场,转载请注明出处:https://www.ngnnn.com/article/4_9784.html
上一篇荣耀 X40i 玫瑰星河配色外观公布:经典双镜双环+钻彩设计
下一篇罗永浩新AR创业公司名为“Thin Red Line”

为您推荐

谷歌推出文本到图像模型Muse:生成图片质量更高、推理时间更短

谷歌推出文本到图像模型Muse:生成图片质量更高、推理时间更短

作者 | 冬梅自 2021 年初以来,随着大量深度学习支持的文本到图像模型(例如 DALL-E-2、Stable Diffusion 和 Midjourney 等)的诞生,人工智能研究的进展发生了革命性的变化。近日,谷歌Muse AI 系统正式亮相。据谷歌 Muse AI 团队称,Muse 是一种文本到图像的 Transformer 模型,该模型可以实现先进的图像生成性能。我们提
谷歌街景独立 App 将于 2023 年停止运营

谷歌街景独立 App 将于 2023 年停止运营

IT之家 11 月 2 日消息,安卓和 iOS 版谷歌街景 App 将于明年初停止运营,并将在未来几周从应用商店中删除。一位 Google 发言人证实,该应用将从 2023 年 3 月起停用。这是安卓和 iPhone 上的专用街景应用程序,允许用户使用谷歌公司的服务来获得世界各地的 360 度视图。需要注意的是,该功能不会从标准的谷歌地图应用中删
苹果谷歌牵头制定追踪行业规范草案 防止功能遭滥用

苹果谷歌牵头制定追踪行业规范草案 防止功能遭滥用

【CNMO新闻】在2021年的春季发布会上,苹果推出了蓝牙追踪设备AirTag,该产品配合苹果设备的“查找”应用,可以追踪和查找重要物品。然而,也有用户发现这类设备可能会遭到滥用,例如将其放在他人不知情的地方,可以对个人进行跟踪。AirTag为了杜绝此类现象,苹果与谷歌宣布联合提交一份行业规范草案,帮助应对蓝牙定位追踪
劈柴哥预告Bard将迎重磅升级,谷歌“最强大脑”能否超车ChatGPT?

劈柴哥预告Bard将迎重磅升级,谷歌“最强大脑”能否超车ChatGPT?

财联社4月2日讯(编辑 赵昊)上周,美国科技巨头谷歌公司推出了聊天机器人“巴德”(Bard)的测试版本。由于用户使用体验远不如ChatGPT,Bard反响平平。当地时间周五(3月31日),谷歌首席执行官"劈柴哥"桑达尔·皮查伊(Sundar Pichai)在播客节目中表示,这种状况可能很快就会改变,因为Bard将在未来几天从目前基于的LaM
科技巨头欧洲裁员不易,谷歌亚马逊设法“吸引”员工离职

科技巨头欧洲裁员不易,谷歌亚马逊设法“吸引”员工离职

勒紧裤腰带“过冬”的美国科技巨头现在碰到新的难题,想在欧洲搞大裁员谈何容易,特别是要在国内劳动法对员工保护力度位居欧盟成员国前列的法国和德国,更是难上加难。在美国,企业宣布大裁员后就能在几个月内解雇数百甚至数千名员工,许多公司已经这样做。而在欧洲,媒体发现,科技企业的大裁员已经停滞,因为在一些欧洲国
谷歌Stadia发布新试玩系统:玩家解锁特定成就完成试玩

谷歌Stadia发布新试玩系统:玩家解锁特定成就完成试玩

【CNMO新闻】游戏试玩我们都曾有所接触,在过去游戏试玩版本通常是开发者在游戏上市之前发布的一个涵盖游戏部分内容的封包进行上传后,有意试玩的玩家进行下载测试,这样的方式已经延续了很久,其弊端就是玩家需要在游戏正式发布后在单独下载新的游戏包体,增加了重复下载的困扰。也有一些开发者选择游戏整包作为测试版本上
史上AI最高分!谷歌大模型创美国医师执照试题新纪录

史上AI最高分!谷歌大模型创美国医师执照试题新纪录

杨净 羿阁 发自 凹非寺量子位 | 公众号 QbitAI史上AI最高分,谷歌新模型刚刚通过美国医师执照试题验证!而且在科学常识、理解、检索和推理能力等任务中,直接与人类医生水平相匹敌。在一些临床问答表现中,最高超原SOTA模型17%以上。此进展一出,瞬间引爆学界热议,不少业内人士感叹:终于,它来了。广大网友在看完Med-PaL
谷歌计划打造全新搜索引擎应对必应等竞争 推AI功能升级现有引擎

谷歌计划打造全新搜索引擎应对必应等竞争 推AI功能升级现有引擎

【美媒:谷歌计划打造全新搜索引擎应对必应等竞争 将推出AI功能升级现有引擎】财联社4月17日电,据纽约时报消息,新必应等AI竞争者正成为25年来谷歌搜索业务的“最严重威胁”,作为回应,谷歌据悉正寻求打造一款由AI技术驱动的全新搜索引擎。查阅的内部文件显示,谷歌还在用AI功能升级现有引擎。据悉,谷歌正测试项目名为“
传输速率可达3600Mbps 雷克沙推雷神铠OC DDR4台式机内存

传输速率可达3600Mbps 雷克沙推雷神铠OC DDR4台式机内存

近日,雷克沙推出了新的雷神铠OC DDR4 UDIMM台式电脑内存,采用纯白外观设计,且没有太过复杂的花纹。除了顶部的装饰纹路外,就只有中间的“Lexar”Logo,与其他内存条相比低调了不少。在外观低调的同时,这款内存也有拿得出手的性能。据悉,雷神铠OC DDR4 UDIMM可提供16GB大容量,兼容Intel与AMD主流平台。此外,该内存采
消息称谷歌正测试一款类似ChatGPT的聊天机器人

消息称谷歌正测试一款类似ChatGPT的聊天机器人

鞭牛士 2月2日消息,据外媒报道,据知情人士表示,谷歌正在测试新的人工智能驱动的聊天产品,可能会影响未来公共产品的发布。这些产品包括一个新的聊天机器人,以及一种将其整合到搜索引擎的潜在方式。
糟糕!这么多美景大片,内存不够了

糟糕!这么多美景大片,内存不够了

等风来不如去追风,格子间的打工人,对于诗和远方的向往,终于在这个假期得到释放。不过,对于那些运河城市的朋友来说,如果还没来得及安排一场远行也没关
负责人离职,谷歌AR似乎是要复刻Android模式

负责人离职,谷歌AR似乎是要复刻Android模式

2022年年末ChatGPT的横空出世,让人工智能再次踏上了风口浪尖,甚至一众科技巨头也纷纷为之“倾倒”,仿佛错过它就错失了通往未来的船票。特别是在微软方面将ChatGPT与Bing搜索引擎结合、以挑战谷歌搜索之时,谷歌很快就成为了这些巨头中反应最激烈的一个,但与ChatGPT针锋相对的产品Bard,出道即遭遇了翻车。然而强如谷歌
返回顶部