天天快资讯:DeepMind 新作 AlphaDev ---- 强化学习探索更优排序算法
DeepMind 最近在 Nature 发表了一篇论文 AlphaDev[2, 3],一个利用强化学习来探索更优排序算法的AI系统。
AlphaDev 系统直接从 CPU 汇编指令的层面入手去探索更优的排序算法,因为相对于高级编程语言来说,在汇编指令层级对存储和寄存器的操作可以更加的灵活,所以能发现更多潜在的调优策略。
在 AlphaDev 的论文中,只关注探索短序列排序:
(资料图片仅供参考)
定长序列排序(比如 sort3 算法只能对长度为3的序列进行排序)变长序列排序(比如 variable sort5 算法可以对长度为1~5的变长序列进行排序)而对于长序列的排序,可以被分解为短序列的排序。
DeepMind 通过 AlphaDev 发现了比目前人工调优算法更优的定长短序列排序算法 sort3,sort4 和 sort5 ,并且已经将代码提交到了 LLVM 标准 C++ 库[4]。
简单来说,AlphaDev 将探索更高效排序算法的过程,建模为一个单玩家的汇编游戏(single-player game, AssemblyGame)。
游戏的过程就是玩家从 CPU 汇编指令集合中,选取一系列的指令组合得到一个新的排序算法。不过这个过程是非常有挑战的,玩家需要考虑,汇编指令的组合空间并最终得得到一个正确和高效的算法。
该游戏主要包括以下难点:
汇编游戏的搜索空间和围棋类似(10^700)只要有一条指令没弄对,可能就会导致整个算法错误AlphaDev 系统详解将排序算法表示为 CPU 汇编指令首先来看一个简单的变长(variable sort2)短排序函数的 C 代码实现,排序结果从小到大:
voidvariable_sort_2(intlength,int*a){switch(length){case0:case1:return;case2:inttmp=a[0];//a[0]保存两者之间的最小值a[0]=(a[1]通过 gcc生成对应的汇编代码,我用的 gcc版本是 11.3.0,命令 gcc -S -O1 -o sort2.s sort2.c
汇编代码只保留了核心部分,生成的结果和论文中的示例有些许不同但是原理是一致的:
variable_sort_2: .LFB0:; %edi 寄存器保存参数 length 的值; cmpl 指令对比 %edi 和 常量 2cmpl$2, %edi ; 相等就跳转到 .L3 标签处, ; 对应 C 代码的 case 2je.L3.L1:; 不等于 2 就直接返回, ; 对应 C 代码 case 0 和 1ret .L3:; 将 a[0] 赋值给寄存器 %edx movl(%rsi), %edx; 将 a[1] 赋值给寄存器 %eax movl4(%rsi), %eax; 对比 %edx 和 %eaxcmpl%edx, %eax; 将 %edx 赋值给 %ecxmovl%edx, %ecx; cmov 是条件移动指令根据 cmpl ; 指令的结果判断是否执行; 如果 %eax <= %edx ; 则将 %eax 赋值给 %ecxcmovle%eax, %ecx; 此时 %ecx 保存了最小值; 将 %ecx 赋值给 a[0]movl%ecx, (%rsi); 如果 %eax 小于 %edx; 则将 %edx 赋值给 %eaxcmovl%edx, %eax; 此时 %eax 保存了最大值; 将 %eax 赋值给 a[1]movl%eax, 4(%rsi)jmp.L1一般来说汇编程序所做的事情基本都是,将内存的值复制到寄存器,然后对寄存器的值作修改,再将寄存器的值写回到内存中。
而 AlphaDev 系统只关注 x86 处理器架构所支持的汇编指令集合的一个子集。
每条汇编指令的格式均为:操作码<操作数A, 操作数B>比如:
cmp比较指令,相当于 执行 A - B 操作,但是不会对 A 和 B 做修改,而是根据相减的结果设置特殊的 flag 寄存器,更多内容可以参考[5]
将探索更优排序算法表示为强化学习问题AlphaDev 将 CPU 汇编指令层面的算法优化过程转化为一个单玩家的游戏。
游戏每一步的状态定义为 : St =
。 其中, Pt表示游戏到至今为止所生成的算法,Zt则表示在给定输入的前提下执行完 Pt里的指令之后,内存和寄存器的状态。
如上图所示,在时间步 t,AlphaDev 接受到当前状态 St和 所要执行的动作 at(比如 mov),也就是往当前生成的算法 Pt中添加的合法汇编指令。
在添加完指令之后,就是计算奖励分数 rt(包括评估算法的正确性和延迟)。
算法正确性评估正确性评估就是将 N组测试序列输入到算法 Pt中,得到N组输出,和正确的排序结果最比较来计算奖励分数。
论文中给出了3种正确性评估函数,首先定义 P为输入序列长度, PCt为在时间步 t序列中,位置正确的值的个数,这里我理解应该是和正确的排序结果逐个位置对比,统计相等的个数。
三个函数分别定义如下:
func1 = (P - PCt) / Pfunc2 = sqrt(func1)func3 = sqrt(PCt)论文中提到采用第三个函数效果最好。
延迟评估延迟分数的计算可以是:
对系统增加代码长度计算惩罚,因为代码的长度一般都是和耗时高度相关直接计算算法的真实耗时整个强化学习的游戏在执行有限步骤之后就会被终止。只有生成正确而又低延迟的汇编代码才算赢得游戏。而不管是生成了错误的代码还是正确但低效的实现都视为游戏输了。
AlphaDev 采用的强化学习算法是对 AlphqaZero 算法的扩展,也是采用深度神经网络来引导蒙特卡洛树搜索(MCTS)的规划过程。网络模型的输入是 St,输出是对动作策略和奖励的预测。
整个游戏过程简单来说就是,用一个固定参数的网络模型,通过给定的当前状态执行一个蒙特卡洛树搜索过程,然后采取下一步动作。然后可以用生成的游戏过程(包含每一步的状态和奖励)去训练和更新网络的参数。
网络模型结构模型包含两部分:
一个 Transformer 编码器模块,用于建模算法,输入是至今为止生成的汇编指令序列一个 CPU 状态编码器 MLP 模块,输入当前寄存器和内存的状态两个网络的输出 embedding 会合并在一起来表示当前的状态。
网络模型整体的结构如下:
Transformer 编码器模块具体图示
如上图所示,把当前生成的汇编代码序列的每一条指令的操作码和操作数都转换为 one-hot 编码序列,然后输入到网络中。
但是具体的 one-hot 编码规则、词表怎么设置、还有对于 CPU 状态编码网络寄存器和内存的状态是怎么表示为网络的输入的等等,这些细节我在论文里没找到。
然后两个网络的输出 embedding 会合并到一起接着输入到几个函数头里计算,分别是预测下一步策略的函数头,预测算法正确性的函数头和预测算法真实延迟的函数头。
网络参数超参设置
论文的补充资料中提供了网络的参数和三个函数头的具体配置。
而对于策略的预测,论文中提到为了简化问题和提高收敛性,而对动作空间做了一些限制,规则如下:
必须按照升序方式读取内存寄存器按照升序分配cmp和 cmovX指令的操作数不能出现内存地址对每个内存位置,只能读取和写入一次每个寄存器在使用之前,必须初始化不能连续调用 cmp指令训练细节
AlphaDev 的训练采用了 TPU v3,每个 TPU 核的 batch size 是 1024 ,总共用了 16 个 TPU 核,总共训练了 100 万次迭代。而在对于玩游戏积累训练数据来说,则是在 TPU v4 上进行,总共用了 512 个 TPU 核。
实验结果表明,最多只需2天模型就能训收敛。
实验结果生成的算法和人工调优对比从实验结果表格可以看到,对于短序列排序算法 AlphaDev 生成的代码长度更短,而且平均耗时也更低。
对生成算法延迟的评估方式,比如对于 sort3则是在 100 台机器上做评估,每台机器随机生成 1000 条 3个数的序列,然后每条序列输入到算法中,对这 1000 次评估取第5百分位数作为最终的评估结果(排除 cache miss 和 任务抢占 等因素)。
耗时采用的是 CPU_CLK_UNHALTED.CORE这个计数器结果, 其计数值表示在一个特定时间段内,处理器内核的时钟周期数。这个值越高,意味着处理器内核在该时间段内执行了更多的指令。
AlphaDev 发现新的算法对于定长序列排序,当应用到排序网络算法[6](sorting network algorithm)的时候 AlphaDev 生成的代码中包含了一些有趣指令序列,相对于原始指令序列可以减少一条汇编指令,论文中称之为:
AlphaDev swap moveAlphaDev copy move啥是排序网络算法?
排序网络算法(Sorting Network Algorithm)是一种能够对一组输入数据进行排序的并行算法,其具有较好的并行性能适用于多处理器或多核心系统。
该算法的特点是,它将所有的比较和交换操作预先规划好形成一个固定的结构,然后将输入数据按照这个结构进行排序。
排序网络由比较器(comparator)和线(wire)组成,如下图所示:
水平线表示 wire,每条水平线持有一个待排序的值。两条 wire 之间的垂直线段就表示一个比较器,比较器对比两条水平线的值,如果比较器下方的值小于上方的值则交换两条横线的值,否则则不交换。
一个优化过的排序网络可以以最少的比较器,并将这些比较器放置在特定位置上,来实现对任意序列进行排序。
下图是对一个构造好的排序网络,输入真实待排序序列的例子:
可见初始输入是 [2, 3, 1, 4],这些随机数从左到右按顺序经过这些比较器之后,就得到了排序好的序列 [1, 2, 3, 4]。
AlphaDev swap move
先来看这个排序网络,只看红圈部分的功能就是对给定的输入 [A, B, C]将其转换为 [min(A,B,C), max(min(A,C),B), max(A,C)]。
然后经过 AlphaDev 优化之后,可以将第一个输出的 min(A,B,C)改为只计算 min(A,B),原因是因为前面的 B和 C横线之间经过比较器之后已经有了前置条件 B <= C。
而通过这个优化就能省去一条汇编指令,下图是红圈部分的伪代码实现:
左边是原始伪代码实现,右边是经过 AlphaDev 优化之后的实现,可以看到少了一条汇编指令 mov S P。
AlphaDev copy move
接下来看对4个元素进行排序的排序网络,是在对 sort8这个算法优化过程中发现的。该排序网络对于输入序列 [A, B, C, D]转换为 [min(A, B, C, D), max(B, min(A, C, D), max(C, min(A, D)), max(A, D) ]。
该排序网络是 sort8的一个子排序网络,而根据比较器的放置位置来看,A和 D比较之后后续就不再和其他元素比较了,所以D出来的结果就是四个元素中最大的,所以隐含了一个条件就是 D >= min(A, C)。
因此对第二个输出元素的计算可以从 max(B, min(A, C, D))改为 max(B, min(A, C)),就可以节省一条汇编指令。
伪代码如下:
左边是原始伪代码实现,右边是经过 AlphaDev 优化之后的实现,可以看到少了一条汇编指令 mov P T。
总结这篇文章只是对 AlphaDev 论文中的主要内容作解读,对于更多的内容和细节感兴趣的读者可以查阅原论文和论文的补充资料 [2,3],DeepMind 也也开源了一份伪代码实现 [7]。
参考资料[1] https://ee.usc.edu/~redekopp/cs356/slides/CS356Unit5_x86_Control[2] https://www.nature.com/articles/s41586-023-06004-9#MOESM1[3] https://static-content.springer.com/esm/art%3A10.1038%2Fs41586-023-06004-9/MediaObjects/41586_2023_6004_MOESM1_ESM.pdf[4] ⚙ D118029 Introduce branchless sorting functions for sort3, sort4 and sort5. (llvm.org)[5] 小信豬的原始部落: PC Assembly Language 學習筆記(5) - Control Structures (godleon.blogspot.com)[6] https://en.wikipedia.org/wiki/Sorting_network#:~:text=as%20the%20contrapositive.-,Constructing%20sorting%20networks,are%20often%20used%20in%20practice.[7] https://github.com/deepmind/alphadev标签:
您可能也感兴趣:
为您推荐
企业如何做软文营销? 软文营销的形式有哪些?
艾诗摩尔射频健发梳:到底谁在收割"智商税"
美联储又降息 全球货币政策进入新一轮“降息周期”?
排行
精彩推送
- 天天快资讯:DeepMind 新作 AlphaDev ---- 强化学习探索更优排序算法
- 34.1亿元!A股又现“天价”离婚,事关“牛股”实控人
- 百万医疗险痛点待解,0免赔额会是下一个风口吗? 观点
- 环球通讯!七彩虹促销来啦
- 高压汞灯图片_高压汞灯
- 施工图预算的编制依据是预算定额吗 施工图预算是根据()编制...
- 银川市第七届农业嘉年华活动举行
- 2023宁夏国际房车联展在银川开幕-快播
- 焦点快播:重度老年痴呆还能活多久_重度老年痴呆的症状 老年...
- 北京房山打造四大产业集群 吸引优质企业落户“抱团”发展
- 中国企业享受研发费用加计扣除税收优惠政策再提前
- 北京开展旅游领域专项整治行动 提示消费者抵制非法“一日游”
- 中企华友钴业拟在匈牙利投资建设高镍型动力电池用三元正极项目
- 当前速看:微软终止支持win7图片(微软终止支持win7)
- 天天微头条丨中国再次延长新能源车购税减免政策
- 天天精选!广西凭祥旅游“搭台”经贸“唱戏” 将加强与东盟...
- 非洲及东南亚或成跨境电商新蓝海 中企重构生态链-当前关注
- 新消息丨中企渤海租赁旗下公司拟向空客采购20架飞机
- 去哪儿发放湖北旅游消费券 酒店、景区最高均可减200元 端午...
- 尼泊尔语怎么样 尼泊尔语就业前景
- 世界最新:沈铁:16年来最大幅度调图!客货运列车全面提质
- 天天时讯:今年1至4月西藏新增减税降费及退税缓费14.39亿元
- 上海发布2022年企业技能人才市场工资价位 平均工资16.22万元...
- 天天观天下!河北建投唐山LNG项目投产 整体建成后预计用气覆...
- 名落孙山比喻什么的(名落孙山比喻什么)|全球最新
- 偏爱“双面特工”的可转债基金-天天要闻
- 赛克赛斯:配送商不负责推广却参与竞标 核心经销商或上演“...
- 小米集团耗资2263.54万港元,回购220万股
- 天天热消息:长春破产法庭设立一周年 充分挽救有价值的危困企业
- 安徽合肥机场端午小长假预计运送旅客11万人次
- 世界最新:海南出台促销费若干措施 将发放新一批消费券
- 渝昆高铁重庆至宜宾段最长隧道贯通 世界独家
- 渝湘高铁重庆至黔江段最长单头掘进隧道贯通_全球快看
- 比亚迪冠军版阵营再添大将:装备刀片电池 纯电续航可达 605km
- 骊住集团总裁濑户欣哉:不断为中国市场引入资源以抓住广袤机...
- 环球速看:第十一届中德经济技术合作论坛举办工业绿色转型和...
- 新疆电力开发AI语音助理 为基层员工配备随身“智能助理”
- 上海网信办整治餐饮企业过度索取个人信息问题 精选
- 靠前监督 提升配网数据管理水平
- 【天天速看料】福建稳经济观察:项目供地“加速度” 推动经...
- 2023税务师税法二练习题:印花税应纳税额的计算_世界报资讯
- 世界头条:广西南宁市就停车收费召开听证会 拟降低收费标准
- 7月1日起青藏集团公司列车调图 48对列车调整变化
- 工信部发布5月打击治理“黑广播”“伪基站”情况及典型案例
- 中国银行马尼拉分行助力菲律宾绿色金融发展 报资讯
- 上海将新添一座深度处理水厂:采用臭氧+生物活性炭工艺-环球视点
- 德国反垄断机构:谷歌汽车服务存在反竞争嫌疑,将禁止相关行...
- 武威税务干部多彩活动过端午
- 靖远税务:税惠赋能助企发展“加速度”
- 天天新资讯:第二届全国职业技能大赛 甘肃省选拔赛·国赛精...
- 中铁二十局集团市政工程有限公司古浪县人民医院提标扩能迁建...
- 幻方量化旗下幻方300指数增强欣享3号累计跌16%
- 甘肃建投安装公司开展“安全生产月”应急演练活动
- 蔚来受邀出席中德企业家圆桌会,为唯一智能电动车企
- 当前速读:海口首次开通英国国际客运航线
- 报告:综艺节目助推露营成为大众潮流生活方式 每日看点
- 中国最大海上油田累产原油突破5亿吨-世界看热讯
- 上思县:加强安全出行宣传 警惕旅游陷阱 头条
- 国家外汇局:5月中国外汇市场总计成交21.58万亿元人民币
- 瓜州:“积分制”撬动乡村治理“大文明” 环球热文
- 平潭发展(000592)6月21日主力资金净卖出454.86万元
- 【世界播资讯】抓项目稳生产 瓜州县火力全开拼经济
- 国网庆阳供电公司:端午送清风 粽香寄廉情 当前资讯
- 全球观天下!金川区税务局举办端午节主题活动
- 国网张掖供电公司举办“安康杯”安全知识竞赛 焦点讯息
- 报告:北上深广为中国房地产开发投资吸引力四强城市
- 图片新闻丨蒲草变身“黄金条”
- 第三届全球饶商大会举行 现场签约项目总额超300亿元_世界观焦点
- 天天观天下!和评理 |中方劝和促谈 西方延长流血冲突
- 马来西亚企业考察吉林促农业合作 世界速看
- 广东省消防标准化技术委员会成立_天天最新
- 飞跨9股道 广州白云火车站枢纽配套联络线万吨转体梁空中“牵手”
- 国网庆阳供电公司:粽香端午 保电有我|看热讯
- 打响新能源下乡第一枪 让绿色出行成为新风尚 天天快资讯
- 天天看热讯:美元兑日元向上触及142,日内涨0.36%。
- 每日快播:看视频涨知识!绥宁县纪检监察信访举报宣传微视频...
- 世界热点!烹饪大赛助抚远冷水鱼香飘全国 冷水鱼预制菜加速...
- 天天热头条丨甲流咳嗽可以吃鸡蛋吗_咳嗽可以吃鸡蛋吗
- 国家邮政局:前5月快递业务量480.9亿件 同比增17.4%
- 端午假期川渝黔三地预计发送铁路旅客675万人次|环球今热点
- 瞬息AI丨是自信,是包容,是尼山瞬息万变的数字宇宙
- 全球今亮点!长三角端午节:粽子“馅宽体瘦” 煮黄酒流行
- 哈尔滨机场端午小长假预计运送旅客17万人次
- 宋善朋|环球观热点
- 天天观焦点:郑州工业大学是几本_郑州工业大学
- 国网武威供电公司:“放心电”护航居民平稳度夏-环球速递
- 郑州市聋人"创容就业基地"正式运营
- 环球快报:迪马济奥:利雅得胜利1500万欧报价B罗,国米要价约2...
- 北京市人大常委会到北京三中院调研金融审判工作_环球信息
- 世界快消息!白犀牛灭绝了吗_白犀牛简介
- 环球关注:端午假期旅游有望突破1亿人次 旅游消费将达370亿元
- 当前聚焦:快速增长!中欧班列(武汉)今年发运量已与去年全...
- 中国企业携多款新品亮相巴黎航展 C919大型客机受关注
- 全国铁路7月1日起实行新的列车运行图-天天新消息
- 建设现代海洋牧场 推动海洋渔业向信息化、智能化、现代化转...
- 为民解忧,宁波古林派出所获企业点赞
- 昆仑万维午后大跌超16% 成交金额超68亿元
- 环球新消息丨小金属板块6月20日涨0.05%,西部材料领涨,主力...
- 修正药业董事长修涞贵出席“2023吉林省大健康产业论坛”-实时焦点
- 滴滴预计端午打车涨50% 下载滴滴App享优惠|世界观速讯