谷歌AI布局论文解读1:翻译部分

2020-05-13  本文已影响0人  邱奕杭

标题:Chip Placement with Deep Reinforcement Learning

用深度强化学习进行芯片布局。对深度强化学习的理解是:强化学习有agent、environment、reward、action等组成部分,就是一个智能体(agent)在一个未知的环境(environment)中,不断摸索,将动作(action)作用于环境,环境反馈奖励(reward)给智能体,然后智能体根据奖励来更新这个产生动作的决策函数。当环境越来越复杂,这个决策函数进行决策和实现起来就越来越困难,而深度神经网络正好具有强大的拟合能力,所以可以将这个决策函数用深度神经网络来代替,这样就形成了深度强化学习。

摘要

1.引言

计算机系统和硬件性能的提升促进了AI技术的飞速发展,但是在后摩尔定律和Dennard缩放比例定律的作用下,为了满足AI算力的指数级增长,硬件逐渐趋于专用化。一般芯片设计周期需要几年,减少芯片设计的时间才能使得硬件更好地适应AI的飞速发展。我们认为AI可以用于缩短芯片设计周期,从而让硬件和AI建立共生关系,彼此互相推动。

我们提出了基于学习的芯片布局方法。目标是将宏(例如SRAMs)和标准单元(即逻辑门)的网表图放置到芯片画布上,在考虑布局密度和布线拥塞的约束下优化芯片的功耗性能和面积。尽管在这个问题上已经有很多年的研究,但是始终离不开专家用现有的布局工具对此进行几周的迭代设计工作,以得到满足多重约束的芯片设计方案。问题的复杂性来自网表图的大小(数百万到数十亿个节点)、用于放置这些图的网格粒度、以及用EDA工具评估和计算相关指标的成本。尽管将问题分解为更易于管理的子问题(例如将节点分组为几千个集群并减小网格的粒度),状态空间仍比目前已成功应用的基于学习的方法要大几个数量级 。

为了解决这个难题,我们将芯片布局转化为强化学习问题,通过训练一个agent(例如RL 策略网络)来优化布局。在每次训练迭代中,芯片块的所有宏均由agent顺序放置,然后通过力导向方法放置标准单元。训练以agent 每一次芯片布局得到的reward作为指导。

据我们所知,上述的方法是目前第一种具有泛化能力的布局方法,这意味着它可以利用之前放置网表所学到的知识来为新的网表生成布局方案。随着芯片数量和种类的增多,agent可以更高效地为新的芯片块生成优化布局方案,这使未来的芯片设计工程师可以借助具有丰富布局经验的agent进行芯片布局工作。

我们的方法具有从经验中学习并随着时间的推移而改进的能力,这为芯片设计人员开辟了新的可能性。与最新的基准相比,我们的方法可以在真正的AI加速器芯片(Google TPU)上实现出色的PPA。此外,我们的方法可在6小时内产生优于或媲美于专家人工设计的布局,而以往性能最高的方案则需要人类专家耗费几周时间才能获得。 尽管我们主要借助AI加速器芯片进行方法评估,但这个方法可以推广应用于任何芯片的布局优化。

2.相关工作

全局布局是芯片设计中的长期挑战,需要对日益复杂的电路进行多目标优化。自1960年以来,提出了很多方法,可以分为三大类:1)基于分区的方法,2)随机/爬山方法,以及3)解析求解器的方法。

3.方法

3.1 问题重述

我们围绕芯片布局优化问题,将网表的节点(网表就是描述芯片的图形)映射到芯片画布(芯片画布就是一个有界的2D空间)上,从而优化功耗、性能和面积(PPA)。在本节中,我们概述如何将问题表述为强化学习问题,然后详细描述奖励函数,动作和状态的表示,策略结构以及策略更新。

3.2 本文方法概述

我们采用深度强化学习(RL)的方法来解决布局问题,其中agent(策略网络)顺序放置宏;一旦放置了所有宏,就使用力导向法来对标准单元进行大致的布局,如图1所示。RL问题可以表示为马尔可夫决策过程(MDPs),由四个关键元素组成:

在初始state,记为 s0,我们有一个空的芯片画布和一个未放置的网表。最后的状态 sT 对应于一个完全放置的网表(包括宏和标准单元)。在每一步中,放置一个宏。因此,T 等于网表中宏的总数。在每个时间步 t 中,agent从状态 st 开始,执行一个动作 at ,然后到达一个新的状态即 st +1,并从环境中获得一个奖励 rt (当 t < T 时,reward为0;当 t = T 时,reward 为负代理成本。)

我们把st 定义为时间 t 时可用于表征状态的特征串联,包括网表的图形嵌入(包括放置和未放置的节点),当前要放置的宏的节点嵌入,关于网表的元数据(第4节) ,以及代表将当前节点放置到任一个网格单元的可行性的掩码(第3.3.6节)。

动作空间是第 tth 个宏的所有可能的放置位置,是第3.3.6节描述的密度掩模的函数。动作 at 是由RL策略网络选择的第 t 个宏的单元格位置。

st +1 是下一个状态,它包含新放置的宏的信息、一个更新的密度掩码,以及对下一个要放置的节点的嵌入。

在我们的公式中,除了最后的 rT 外,每个时间步的 rt 都为0,其中 rT 近似为线长和拥塞的加权和,如3.3节所述。

通过重复地执行这些事件(state、action和reward的序列),策略网络学会采取将累积奖励最大化的行动。当给出每次布局后的累积奖励,我们就可以使用近端策略优化算法(Proximal Policy Optimization, PPO)来更新策略网络的参数。

在这一节中,我们定义奖励为 r,状态为 s ,动作为 a ,以\theta为参数的策略网络为\pi_{\theta}(a | s),最后介绍了我们用这些参数来进行优化的方法。

3.3 奖励

我们的目标是在布线拥塞和布局密度的约束下,使功耗、性能和面积最小化。我们真正的reward是EDA的输出,包括线长、布线拥塞、布局密度、功耗、时序和面积。然而,RL策略需要100000个示例才能有效地学习,因此reward函数的快速评估非常重要,理想情况下在几毫秒内就能运行完成。为了有效,这些近似的reward函数也必须与真正的reward正相关。因此,成本应该包含线长,因为它不仅评估成本较低,而且与功耗和性能(时序)相关。我们为线长和布线拥塞定义了近似的代价函数,如第3.3.1节和第3.3.5节所述。

为了将多目标组合成一个单目标的reward函数,我们对agent的线长和拥塞进行加权求和,其中权重可用于权衡两个指标的影响。

我们将布线拥塞视为一种软约束(即较低的拥塞可以改善reward函数)。我们将布局密度作为硬约束,即采取密度不能超过最大密度的action(将节点放置到网格单元上),如第3.3.6节所述。

为了让每次迭代的时间较小,我们对reward函数的计算做了以下近似:

3.3.1. 线长

我们采用半周线长(HPWL),这常用于对线长的近似。HPWL定义为网表中包含所有节点的边框的半周长。给定边为 i 的HPWL如下式所示:
\begin{aligned} H P W L(i) &=\left(M A X_{b \in i}\left\{x_{b}\right\}-M I N_{b \in i}\left\{x_{b}\right\}+1\right)(1) \\ &+\left(M A X_{b \in i}\left\{y_{b}\right\}-M I N_{b \in i}\left\{y_{b}\right\}+1\right) \end{aligned}
其中,xbyb 表示网络 ixy 坐标。然后对所有半周长的归一化求和,计算出HPWL的总代价,如式(2)所示。q(i) 是归一化因子,可以通过增加节点数量带来线长成本的增加来提高估计的准确性。Nnetlist 是线网的数量。
H P W L(\text {netlist})=\sum_{i=1}^{N_{n e t t i s t}} q(i) * H P W L(i)(2)
直观地说,对于给定布局的HPWL大致是其Steiner树的长度,这是布线成本的最低值。

线长还具有关联其他重要指标(例如功耗和时序)的优势。尽管我们没有直接对这些其他指标进行优化,但是我们在表2中可以观察到这些指标例如功耗和时序的高性能(如表2所示)。

3.3.2. 网格行数和列数的选择

给定芯片画布的尺寸,有很多方法可以将2D画布离散化为网格单元。这将影响优化的难度和最终放置的质量。我们把最大行数和列数限制为128,将确定最佳行数和列数视为装箱问题,并根据行和列的浪费空间大小对不同的行数和列数进行排序。在第5节描述的实验中,我们平均使用30行和30列。

3.3.3. 宏放置顺序的选择

为了选择宏的放置顺序,我们对宏从大到小排序,并使用拓扑排序中断连接。通过先放置较大的宏,可以减少后续宏没有放置空间的可能。拓扑排序可以帮助策略网络学习如何将互连的节点放得相互靠近。另一种可能的方法是学习联合优化宏的顺序和它们的位置,选择将action空间的下一步放置在哪个节点上。然而,这种扩大动作空间的方法会显著增加问题的复杂性,我们发现这种启发式方法在实践中是有效的。

3.3.4. 标准单元的布局

为了放置标准单元集群,我们使用了一种类似于经典力导向算法的方法。我们将网表表示为一个弹簧系统,该系统根据weightxdistance公式,对每个节点施加力,从而使紧密连接的节点相互吸引。我们还引入了重叠节点之间的斥力,以减少布局密度。在施加所有的力后,我们将节点往力矢量的方向移动。为了减少振荡,我们为每一步限制了最大距离。

3.3.5. 布线拥塞

我们在计算agent 拥塞时使用了传统的方法,即使用了基于驱动位置和网络负载的简单确定的布线。布线网络经过每个网格单元时,占用一定数量的布线资源。我们分别跟踪每个网格单元的垂直和水平分配。为了平滑布线拥塞的估计值,我们在垂直和水平方向上运行5x1的卷积滤波器。当所有网表的布线完成后,我们取前10%拥塞值的平均值,这个灵感来自MAPLE中的ABA10度量。公式(4)表示的是布线拥塞成本,表示前10%拥塞值的平均值,就是通过这个过程计算得到的。

3.3.6.布局密度

我们将密度视为硬约束,不允许策略网络将宏放置在会导致密度超过目标密度最大值或导致宏重叠的位置。该方法有两个优点:(1)减少了策略网络产生的无效放置的数量;(2)减少了优化问题的搜索空间,使其更易于计算。

标准单元集群的布局应满足以下标准:每个网格单元放置的密度不应超过给定的目标密度阈值。我们在实验中将这个阈值设置为0.6。为了满足这个约束,在每个RL步骤中,我们计算当前的密度掩码,这是一个表示网格单元的二进制 m x n 矩阵,我们可以在不违反密度阈值的情况下将当前节点的中心放置到该掩码上。在从策略网络的输出中选择action之前,我们首先取掩码和策略网络输出的点积,然后取可行位置上的 argmax。这种方法可以防止策略网络生成具有重叠宏或密集的标准单元布局。

我们还可以通过将布局拥塞区域的密度函数设置为1,从而来使放置时能考虑到拥塞(例如时钟带)。

3.3.7. 后处理

为了用EDA工具对放置的效果进行评估,我们基于贪婪思想将宏放置到最近且合理的位置,同时满足最小间距约束。然后,我们确定宏的放置,使用EDA工具放置标准单元并评估放置情况。

3.4. 动作的表示

为了优化策略,我们将画布转换为一个 m x n 的网格。因此,对于任何给定的state,action空间(或策略网络的输出)是当前宏在 m x n 网格上位置的概率分布。这个action就是这个概率分布的 argmax

3.5. 状态的表示

我们的state包含了网表图(邻接矩阵)、它的节点特征(宽度、高度、类型等)、边特征(连接数)、当前要放置的节点(宏)、网表和底层技术的元数据(例如布线分配、总连接数、宏、标准单元集群等)。在接下来的小节中,我们将讨论如何处理这些特性来学习芯片布局的有效表示。

4.域迁移:从经验中学到更好的芯片布局

我们的目标是训练RL agent,当他们获得芯片布局的经验时,可以产生更高质量的结果。我们定义布局的目标函数如下:
J(\theta, G)=\frac{1}{K} \sum_{g \sim G} E_{g, p \sim \pi_{\theta}}\left[R_{p, g}\right] (3)
这里J(\theta, G)是成本函数。agent 由 \theta 参数化的。大小为K的网表图数据集用G表示,数据集中每个单独的网表写为gR_{p, g}指在网表g的策略网络中放置p时的奖励。
\begin{array}{r} R_{p, g}=-\text {Wirelength}(p, g)-\lambda \text { Congestion}(p, g) \\ \text {S.t. density}(p, g) \leq \text {max}_{\text {density}} \end{array}(4)
公式(4)表示我们用于策略网络优化的reward,即在密度约束下的线长和布线拥塞的负加权平均值。reward在3.3节中有详细解释。在我们的实验中,拥塞权重\lambda设置为0.01,最大密度阈值设置为0.6。

4.1. 使能迁移学习的监督方法

我们提出一种新的神经架构,使我们能够训练领域自适应策略来进行芯片布局。训练这样一个策略网络是一项具有挑战性的任务,因为包含所有芯片的所有可能放置的状态空间是巨大的。此外,不同的网表和网格大小具有不同的属性,包括节点数量、宏大小、图形拓扑以及画布的宽度和高度。为了解决这个挑战,我们首先关注于学习状态空间的丰富表示。我们的直觉是,能够跨芯片迁移布局优化的策略网络架构也应该能够在推断时将与新的芯片相关的状态编码为有意义的信号。因此,我们提出训练一个能够预测新网表reward的神经网络架构,最终目标是使用这个架构作为我们策略网络的编码层。

为了训练这个监督模型,我们需要一个大的芯片布局数据集和相应的奖励标签。因此,我们创建了一个包含10000个芯片布局的数据集,其中输入是与给定放置相关联的状态,而标签是对该放置的奖励(线长和拥塞)。我们首先选择5个不同的加速器网表,然后为每个网表生成2000个布局,从而构建这个数据集。为了给每个网表创建不同的布局,我们在不同的拥塞权重(从0到1)和随机种子(seeds)下训练了一个香草策略网络 (vanilla policy network),并在策略训练过程中收集每种布局的情形。一个未经训练的策略网络从随机权重开始,生成的布局质量较低差,但随着策略网络的训练,生成的布局质量不断提高,这让我们可以收集到具有不同布局质量的数据集。

为了训练一个能准确预测线长和拥塞标签的监督模型,并推广应用到未知的数据,我们开发了一种新的嵌入网表信息的图神经网络结构。图神经网络的作用是在一个大图中提取关于节点类型和连接的信息,并将其转换为低维向量的表示形式,从而可用于后续任务。后续任务例如节点分类、器件放置、连线预测和DRC预测。

我们通过串联节点特征来对每个节点进行向量表示。节点特征包括节点类型、宽度、高度以及 x 和 y 坐标。我们还将节点邻接信息作为输入传递给算法。然后,我们重复执行以下更新:1) 每条边通过将全连接网络应用于中间节点嵌入的聚合表示来更新其表示,2) 每个节点通过取嵌入的相邻边的平均值来更新其表示。节点和边的更新如公式(5)所示。
\begin{aligned} e_{i j} &=f c_{1}\left(\operatorname{concat}\left(f c_{0}\left(v_{i}\right)\left|f c_{0}\left(v_{j}\right)\right| w_{i j}^{e}\right)\right) (5)\\ v_{i} &=\operatorname{mean}_{j \in \mathcal{N}\left(v_{i}\right)}\left(e_{i j}\right) \end{aligned}

节点嵌入表示为 v_{i} ,其中 1<=i<=NN 是宏和标准单元集群的总数。连接节点v_{i}v_{j} 的矢量边表示为 e_{i j}。边\left(e_{i j}\right) 和节点嵌入 \left(v_{i}\right) 都被随机初始化,并且都是32维矩阵。 f c_{0} 维度是 32 \times 32, f c_{1} 维度是 65 \times 32 ,表示前馈网络。 w_{i j}^{e} 是对应边的可学习的 1 x 1 权重值。 \mathcal{N}\left(v_{i}\right)v_{i}的邻节点。算法的输出是节点和边的嵌入。

我们的监督模型包括:(1) 上述的图数据神经网络,它嵌入了节点类型和网表邻接矩阵的信息。(2) 一个全连接的前馈网络,该网络嵌入元数据,包括底层半导体技术(水平和垂直连线容量)、网络的总数量(边)、宏和标准单元集群、画布大小和网格中的行和列数。(3) 一个全连接的前馈网络(预测层),其输入是网表图与元数据嵌入的串联,输出是奖励预测。网表图的嵌入是通过在边嵌入上应用简化均值函数来创建的。通过回归训练监督模型,以最小化线长和拥塞的均方根损失的加权和。

这个监督任务使我们可以找到泛化网络列表的奖励预测所必须的特征和架构。为了将此体系结构合并到策略网络中,我们移除了预测层,然后将其用作策略网络的编码组件,如图2所示。


图2 策略和值网络架构图

行和列的不同选择会带来网格大小的不同,为了解决这个问题,我们将网格大小设置为128 x 128,并为小于128行和列的网格大小屏蔽未使用的“L形”部分。

在推理时,为了放置一个新的测试网表,我们加载策略网络的预训练权重,并将其应用于新网表。我们将未进行微调的预训练的策略网络所产生的布局称为“zero-shot”布局。这样的布局可以在不到一秒的时间内生成,因为它只需要预训练策略网络的一个推理步骤。通过微调策略网络,我们可以进一步优化布局质量。这样的方法给了我们极大的灵活性,既可以使用预训练的权值(已经学习了输入状态的丰富表示),又可以进一步调整这些权值以优化特定芯片网表的属性。

4.2. 策略网络架构

图2概述了策略网络(借由公式3中的\pi_{\theta}建模)和我们为芯片布局建立的值网络架构。这些网络的输入是网表图(图邻接矩阵和节点特征)、当前要放置的节点ID,以及网表和半导体技术的元数据。如前所述,网表图通过我们提出的图神经网络架构。该图神经网络生成(1)部分布局的图嵌入和(2)当前节点嵌入。我们使用一个简单的前馈网络来嵌入(3)元数据。将这三个嵌入向量连接起来以形成状态嵌入,然后将其传递到前馈神经网络。将前馈网络的输出馈送到策略网络(由5个反卷积层和Batch归一化层组成),以生成动作的概率分布,并传递到价值网络(由前馈网络组成)以预测输入状态的值。注意到,反卷积层的核大小为3x3,步进为2,分别有16、8、4、2和1个滤波通道。

4.3. 策略网络更新:训练参数 \theta

在方程3中,目标是训练策略网络的\pi_{\theta},使其在策略网络的布局分布上reward(R_{p, g})的期望值(E)最大化。为了优化这个参数,我们使用了近端策略优化算法(PPO),其目标如下:
L^{C L I P}(\theta)=\hat{E}_{t}\left[\min \left(r_{t}(\theta) \hat{A}_{t}, \operatorname{clip}\left(r_{t}(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_{t}\right)\right]
其中 \hat{E}_{t} 代表每一时步t的期望值,r_{t} 代表新策略和旧策略的比率,A_{t} 是每一时步 t的估计优势。

5. 结果

本节将对我们的方法进行评估,并回答以下问题:我们的方法是否支持域迁移和从经验中学习?使用预训练策略对结果的质量有什么影响?与最先进的基准相比,我们方法生成的布局质量如何?我们还仔细分析了生成的布局的外观,并对策略网络作出相关决定的原因进行分析。

5.1. 迁移学习的结果

图3对比了预训练和从零开始训练这两个策略网络所产生的布局质量。Zero-shot指我们将预训练的策略网络应用到一个没有微调的新网表上,结果可以在不到一秒的时间内得到一个布局。我们还展示了在2小时和12小时内针对一个设计的预训练策略网络进行微调的结果。从零开始训练的策略网络需要花更长的时间才能达到收敛,训练24小时后得到的结果比微调的策略网络训练12小时后的结果还要差。这证明了经过学习得到的权重和接触多种不同类型的设计,可以帮助我们在更短的时间内对一个新的设计实现更高质量的布局。


图3 不同训练策略的结果对比

图4显示了对Ariane RISC-V CPU分别采取从零开始训练和预训练的策略网络的收敛图。预训练的策略网络在微调开始时具有较低的布局成本。随后,预训练的策略网络收敛到更低的布局成本。当收敛到相同的值时,从零开始训练的策略网络要多花30个小时。


图4 预训练和从零开始训练收敛时间的对比

5.2. 从较大的数据集中学习

随着我们在更多芯片块上训练,我们能够加快训练过程并更快地产生更高质量的结果。图5(左)显示了更大的训练数据集对性能的影响。训练数据集是从内部TPU块创建的。训练数据由各种模块组成,包括内存子系统、计算单元和控制逻辑。当我们将训练数据集的块数从2增加到5,最后增加到20时,zero-shot和微调相同小时的这两种策略网络均会产生更好的布局。图5(右)显示了在对策略网络进行训练时测试数据的布局成本。我们可以看到,对于较小的训练数据集,策略网络快速产生过拟合,并且测试数据的性能下降,而对于最大的数据集,策略网络产生过拟合的时间更长些。在较大的数据集上预训练策略网络在测试数据上会产生更好的结果。该图表明,随着我们在更多不同种类的芯片块中训练策略网络,尽管预训练时间会更长,但策略网络变得不容易产生过拟合,并且可以更好地为新的芯片块找到优化的位置。


图5 训练集的大小对布局成本和训练时间的影响

5.3. 可视化分析

图6显示了Ariane RISCV CPU的布局结果。左图是zero-shot策略网络的布局,右侧是经过微调的策略网络的布局。zero-shot可以对未见过的芯片生成布局。zero-shot策略网络将标准单元放在由宏包围的画布中心,这非常接近最优布局。微调后,宏的放置变得更规则,并且中心的标准单元区域变得更不拥塞。


图6 芯片布局可视化

图7给出了布局的可视化:左图是手动布局的结果,右图是我们方法得到的结果。白色区域是宏的布局,绿色区域是标准单元的布局。我们的方法是在标准单元周围创建宏的环状布局,从而减少了总线长。


图7 两种方式的布局可视化

5.4. 与基准方法的比较

在本节中,我们将我们的方法与3种基准方法进行比较,分别是:模拟退火、RePlAce和人类专家基准。我们的方法在最大的数据集(包含20个TPU块)上使用预训练的策略,然后在5个未见过的目标块上进行微调,分别记为块1到块5。数据集包括各种模块,包括内存子系统、计算单元以及控制逻辑。出于保密,我们无法透露这些块的详细信息,但给出块的规模,即每个块最多包含数百个宏和数百万个标准单元。

5.5. 讨论

6. 总结

本文针对复杂且重要的芯片布局问题,提出了一种基于强化学习的方法,使迁移学习成为可能。由于RL agent在大量的芯片网表上学习布局经验,因此芯片布局的质量将变得更快更好。实验证明了我们的方法优于最先进的基准,在现代加速器布局方面优于或媲美于人类专家设计。我们的方法是端到端的,可在6小时内完成布局,而最好的基准需要人类专家花几周时间进行多次迭代优化工作。

拓展学习链接

[RL]https://zh.wikipedia.org/wiki/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0
[Dennard缩放比例定律]https://www.jiqizhixin.com/articles/2019-10-23-13
[什么是baseline]https://blog.csdn.net/Lison_Zhu/article/details/97554928
[初窥模拟退火]https://zhuanlan.zhihu.com/p/47628209
[迁移学习的全面概述]https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650724800&idx=2&sn=0d5e47e071c346eb4a485980deee5744&chksm=871b1dbeb06c94a81b74afcde32d759b7118d60e60b710570a2d6cf53fbe2a9badaed44c5f05#rd
[力导向布局算法]https://www.jianshu.com/p/d3c64a39535a
[拓扑排序]https://www.jianshu.com/p/b59db381561a

上一篇下一篇

猜你喜欢

热点阅读