摘要:
AlphaDev
模型优化排序算法,将排序算法提速70%。通过强化学习,AlphaDev发现了更加有效的算法,直接超越了科学家和工程师们几十年来的精心打磨。现在,新的算法已经成为两个标准C++编码库的一部分,每天都会被全球的程序员使用数万亿次。
介绍
-
优化目标为排序算法的CPU延迟时间
-
两类排序问题:
- 固定长度排序:
sort 3
排序模型只能处理序列长度为3的排序问题 - 可变长度排序:
sort 5
排序模型可以处理序列长度为1-5的排序问题
- 固定长度排序:
-
作者将排序问题建立为一个名为
AssemblyGame
的single-player game。在这个游戏中,玩家(agent)需要选择一系列的汇编指令,组合成为一种新的排序算法 -
这个问题有两个难点:
- 搜索空间很大
reward function
很难设计
AssemblyGame中的一条错误指令可能会使整个算法失效,这使得在这个游戏空间中的探索极具挑战性
-
设计了一种名为
AlphaDev
的模型,由两个核心部分构成:- a learning algorithm,与
AlphaZero
深度强化学习算法结构十分相似 - a representation function,基于Transformers
- a learning algorithm,与
-
效果:使用
AlphaDev
发现了长度分别为3
,4
,5
的三种固定排序算法已经集成进入LLVM标准C++库中
如何将算法表示为低级的CPU汇编指令
- 编译原理背景知识
- 编译过程:高级语言(C++)→汇编指令→机器码→CPU执行
- 变量转移:内存→寄存器→不同寄存器数据运算→内存→输出
- 汇编指令集取决于处理器架构,如x86与x32,amd与arm
- 案例:图a为最大长度为2的可变长度排序C++代码,图b为对应的汇编指令,其中%eax, %ecx, %edx, %edi分别为4个寄存器地址,(%rsi), 4(%rsi)表示两个内存地址
如何使用DRL发现更快的排序算法
-
状态被定义为\(S_{t} = <P_{t}, Z_{t}>\),其中\(P_{t}\)表示当前时刻生成的汇编指令集合,\(Z_{t}>\)表示寄存器的状态。\(t\)时刻,接收当前状态\(S_{t}\),采取动作\(a_{t}\),将一条汇编指令添加到汇编指令集合中,
-
reward设计:
- 正确性奖励:给予一组测试输入,比较测试输出与真值
- 时间成本奖励:增加序列长度,判断算法是否受到长度影响很大;测量实际算法耗时
-
输掉游戏:汇编指令不正确/汇编指令耗时很长
-
使用类似
AlphaZero
的深度强化学习网络结构,输入为动作\(S_{t}\),输出为策略与价值预测 -
AlphaDev
需要具备一种表征复杂算法的能力,从而可以加速探索。因此设计了一种表征网络,如下图a,使用Transformer Encoder
用于表示当前算法的结构,使用CPU state encoder
用于预测当前内存与寄存器的状态 -
Transformer encoder
:首先使用one-hot编码表示汇编指令集与地址,随后通过TF encoder生成embedding,如下图b所示 -
如何预测代码的执行效果?
- two value function heads:one predicting algorithm correctness and the second predicting algorithm latency
Method
Background
- AlphaZero,由两部分组成,(1)表征网络\(f^{rep}\)用于当前状态\(S_{t}\)的潜在表征\(h_{t}\),(2)预测网络\(f^{pred}\)用于预测期望回报\(\hat{v}_{t}\)与策略\(\hat{\pi}_{t}\)。在达到新状态时,AlphaZero首先通过表示网络将状态编码为潜在表示
\[\mathrm{h}_{t}=f^{r e p}\left(\mathbf{S}_{t}\right)
\]
\[\hat{v}_{t}, \hat{\pi}_{t}=f^{p r e d}\left(\mathrm{~h}_{t}\right)
\]
- Sorting networks,不需要依赖数据的排序方法,所有比较操作都与数据无关,并且排序网络可以实现并行,大大降低算法复杂度
- reinforcement algorithms discovered learning sortingreinforcement algorithms discovered learning reinforcement learning noise reinforcement exploration learning reinforcement transformer learning trainer reinforcement learning chapter reinforcement distillation teachable learning javascript algorithms sorting reinforcement transformer decision learning reinforcement exploration off-policy learning reinforcement modelling learning feedback