神经网络芯片设计

神经网络芯片设计

Chip Placement with Deep Reinforcement Learning

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

摘要

在这项工作中,提出了一种基于学习的芯片布局方法,这是芯片设计过程中最复杂和最耗时的阶段之一。与以前的方法不同,方法能够从过去的经验中学习并随着时间的推移而改进。特别是,当在更多的芯片块上训练时,方法在为先前未看到的芯片块快速生成优化位置方面变得更好。为了获得这些结果,将布局问题作为一个强化学习(RL)问题,并训练一个代理将芯片网表的节点放置到芯片画布上。为了使RL策略能够推广到看不见的块,在预测布局质量的有监督任务中引入了表示学习。通过设计一种能够准确预测各种网表及其位置的报酬的神经结构,能够生成输入网表的丰富特征嵌入。然后,使用此架构作为策略和价值网络的编码器,以实现转移学习。目标是最小化PPA(功率、性能和面积),并且表明,在不到6小时的时间内,方法可以生成超人的或在现代加速器网络列表上具有可比性的位置,而现有的基线需要人类专家在环圈中工作,需要几个星期。

一.基本原理

计算机系统和硬件的显著进步推动了人工智能的快速发展,但随着摩尔定律的终结和Dennard的扩展,世界正朝着专用硬件的方向发展,以满足人工智能对计算的指数级增长需求。然而,今天的芯片的贡献率是相等的,顺序由硬币的大小决定。

多年来的设计,留给一个推测性的任务,就是为2-5年后的机器学习(ML)模型优化们。大幅缩短芯片设计周期将使硬件更好地适应快速发展的人工智能领域。相信,正是人工智能本身提供了缩短芯片设计周期的手段,在硬件和人工智能之间建立了一种共生关系,两者互为推动。在这项工作中,提出了一种基于学习的芯片布局方法,这是芯片设计过程中最复杂和最耗时的阶段之一。目标是将宏(例如sram)和标准单元(逻辑门,例如NAND、NOR和XOR)的netlist图放在芯片画布上,以便优化功率、性能和面积(PPA),同时遵守对放置密度和路由拥塞的限制(在第3.3.6和3.3.5节中描述)。

尽管对这个问题进行了几十年的研究,但是人类专家仍然有必要用现有的布局工具重复数周,以产生满足多方面设计标准的解决方案。这个问题的复杂性来自于netlist图的大小(数百万到数十亿个节点),这些图必须放置到的网格的粒度,以及计算真正目标指标的高昂成本(工业标准电子设计自动化(EDA)工具一天中要花费很多小时和一些时间来评估单个设计)。即使将问题分解为更易于管理的子问题(例如,将节点分组为几千个集群并减少网格的粒度),状态空间仍然比最近基于学习的方法显示成功的问题大很多个数量级。

为了解决这一挑战,将芯片放置问题称为强化学习(RL)问题,在该问题中,训练一个代理(例如RL策略网络)来优化放置。在每次训练迭代中,芯片块的所有宏都由RL代理按顺序放置,然后用力定向方法放置标准单元(Hanan&Kurtzberg,1972;Tao Luo&Pan,2008;Bo Hu&Marek Sadowska,2005;Obermeier et al.,2005;Spindler et al.,2008;Viswanathan et al.,2007b;a)。训练是由一个快速但近似的奖赏信号引导的,奖赏信号是代理的每个芯片位置。据所知,所提出的方法是第一种具有概括能力的放置方法,这意味着可以利用从放置以前的网络列表中学到的知识,为新的未看到的网络列表生成放置。特别是,表明,随着代理暴露在更大的体积和种类的芯片中,在为新芯片块生成优化放置方面变得更快和更好,使更接近于芯片设计师由具有丰富芯片放置经验的艺术代理协助的未来。相信,方法能够从经验中学习,并随着时间的推移而改进,这为芯片设计师打开了新的可能性。表明,与最先进的基线相比,可以在真正的人工智能加速器芯片(Google tpu)上实现优越的PPA。此外,方法可以在6小时内生成优于或可与人类专家芯片设计师媲美的位置,而性能最高的替代方案则需要人类专家在回路中,并为现代芯片中几十个块中的每一个块花费数周时间。虽然主要在人工智能加速器芯片上进行评估,但提出的方法广泛适用于任何芯片布局优化。

主要贡献

对于布局问题,采用了一种深度强化学习方法,其中RL代理(策略网络)按顺序放置宏;一旦放置了所有宏,就会使用一种强制定向方法生成标准单元的大致布局,如图1所示。RL问题可以表述为马尔可夫决策过程(mdp),由四个关键要素组成:

•状态:世界可能的状态集合(例如,在例子中,网络列表的每一个可能的部分放置在芯片画布上)。

•操作:代理可以采取的操作集(例如,给定要放置的当前宏,可用操作是离散画布空间(网格单元格)中的所有位置集,可以将宏放置在这些位置上,而不违反对密度或阻塞的任何硬约束)。

•状态转移:给定一个状态和一个动作,这是下一个状态的概率分布。

•奖励:实行状态行为奖励。

三.实现测试

图2描述了策略网络(由等式3中的πθ建模)和为芯片放置开发的价值网络架构的概述。

图3将使用预先训练的策略生成的安置质量与从头开始训练策略网络生成的安置质量进行了比较。

图4显示了Arianeric VCPU从零开始训练与从预先训练的策略网络开始训练的收敛图。

图5(右)显示了测试数据的放置成本,因为策略网络正在接受(预)训练。可以看到,对于小的训练数据集,策略网络可以快速地覆盖到训练数据和测试数据上的性能。
图6显示了Ariane RISCV CPU的放置结果。左侧显示零快照策略网络的放置,右侧显示网络调整策略网络的放置。零快照位置是在推断时在先前看不见的芯片上生成的。零快照策略网络将标准单元放置在画布的中心,周围环绕着宏,这已经非常接近最佳布局。调整后,宏的放置变得更加规则化,中心的标准单元区域变得不那么拥挤。图7显示了可视化的放置:左边是手动放置的结果,右边是方法的结果。白色区域显示宏放置,绿色区域显示标准单元放置。方法在标准单元周围创建环形的宏放置,从而减少总的线长度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四.芯片的布局规划

计算机芯片通常分为数十个 block,每个 block 都是一个单独的模块,例如,内存子系统、计算单元或控制逻辑系统。这些 block 可以通过 网表,以及 宏 (Macro,内存组件)和 标准单元(NAND、NOR 和 XOR 等逻辑门)等电路组件图来描述,而所有这些组件均通过导线连接。确定芯片 block 布局的过程通常称为芯片的布局规划,是芯片设计过程中最复杂,也是耗时最久的阶段之一,涉及到将网表放置在芯片的画布(2D 网格)上,以便尽量使功率、性能和面积 (PPA) 最小化,同时遵守密度和布线拥塞方面的限制。

尽管在该方向上的研究已有数十年之久,但是专家们仍然需要数周的迭代时间才能完成一个满足多方面设计标准的解决方案。

这个问题的复杂性主要来自几个方面:网表图的大小(数百万至数十亿个节点)、必须满足网表图放置要求的网格粒度,以及计算真实目标指标所产生的过高成本,即使用行业标准的电子设计自动化工具可能要花费数小时的时间(有时甚至超过一天)。

深度强化学习模型

模型的输入包括芯片网表(节点类型和图邻接信息)、要放置的当前节点 ID,以及一些网表元数据,比如导线、宏和标准单元集群的总数等。网表图和当前节点通过开发的基于边缘的图神经网络传输,从而编码输入状态。这样能够为已部分放置的图和候选节点生成嵌入。

图神经网络传输
在这里插入图片描述
图神经网络生成的嵌入与元数据嵌入串联在一起,形成对策略网络和价值网络的输入

边缘、宏和网表元数据嵌入随后也进行串联,以形成单个状态嵌入,继而传递到前馈神经网络。前馈网络输出一种习得表征,用于捕获有用的特征并将其用作策略网络和价值网络的输入。随后,策略网络对可以在其上放置当前节点的所有可能网格单元生成概率分布。

在每次训练迭代中,RL 智能体按顺序放置完宏,然后通过力引导方法放置标准单元集群,此方法将电路建模为弹簧系统,以便尽量缩短线长。RL 训练由一个快速但近似的奖励信号指导,该信号专为智能体的每个芯片布局计算,采用近似线长(即半周线长,HPWL)和近似拥塞(已放置网表消耗的布线资源比例)的加权平均值得出结果。

力引导
在这里插入图片描述
在每次训练迭代过程中,按策略一次放置一个宏,而标准单元集群则通过力引导方法放置。奖励根据近似线长和拥塞的加权组合计算得出。

结果

据所知,这种方法是首个具有泛化能力的芯片布局方法,这意味着此方法可以利用习得的知识,在布局之前网表的同时,为未见过的全新网表生成更好的布局。发现,随着增加进行预训练的芯片网表数量(即,此方法在布局优化方面更有经验),策略将更好地泛化至新网表。

例如,预训练策略有机地确定了一种布局:将宏放置在芯片的边缘附近,将标准单元放置在芯片中心的凸起空间。这将使宏和标准单元之间的线长变短,不会造成布线过度拥塞。相比之下,从头开始训练的策略则从随机布局开始,需要更长的时间才能收敛得到高质量的解决方案,然后重新发现了在芯片画布的中心留出一个空位的需要。具体请参阅以下动画。

开源 RISC-V 处理器 Ariane 的宏布局随训练进程的变化情况。在左图中,从头开始训练策略,而在右图中,预训练的策略已针对芯片进行了微调。每个矩形标识一个单独的宏布局。

请注意,从头开始训练的策略发现的空洞一开始便存在于预训练策略的布局中

开源 RISC-V

https://github.com/pulp-platform/ariane

观察到预训练提升了样本效率和布局质量。将使用预训练策略生成的芯片布局质量与从头开始训练的策略所得到的布局质量进行了对比。为了给之前未见过的芯片 block 生成芯片布局,使用了 零次 方法,即只使用预训练策略(不进行微调)来放置新 block,并在不到一秒的时间内完成了布局。而通过对新 block 上的策略进行微调,布局的结果还有进一步提升的空间。从头开始训练的策略所需的收敛时间要长得多,甚至在 24 小时后其芯片布局质量仍然不如微调策略 12 小时后的结果。
在这里插入图片描述
两种策略在 Ariane 块上的收敛图形。其中一个是从头开始训练,另一个则基于预训练的策略进行微调

随着在更大型的数据集上进行训练,方法可实现更出色的性能。据观察,随着训练的数据集从两个块增加到五个再上升到 20 个,使用零次方法的策略和微调策略在相同的训练时钟时间下均可生成更好的芯片布局。
在这里插入图片描述
训练数据规模与微调后的性能

方法具备从经验中学习并随时间推移而改进的能力,为芯片设计人员解锁全新的可能性。随着接触到的芯片数量和种类逐渐多,智能体现可更快更好地为新芯片 block 生成优化布局。快速、高质量和自动化的芯片布局方法能够大幅加快芯片设计速度,并与芯片设计过程的早期阶段可实现协同优化。尽管主要评估加速器芯片,但提出的方法可广泛应用于任何芯片布局问题。在针对机器学习作出如此多的硬件准备之后,相信,让机器学习回馈硬件开发的时代已经来临。