2021 年,谷歌在 Nature 发表了一篇颇具争议的论文《A graph placement methodology for fast chip design》。(作者包括 Jeff Dean 和 Quoc V. Le 等著名研究者),其中提出了一种基于强化学习的芯片设计方法。据介绍,该芯片设计方法可在不到六小时的时间内自动生成芯片布局,并且设计结果在功耗、性能和芯片面积等所有关键指标上都优于或媲美人类工程师,而后者需要耗费数月的艰苦努力才能达到类似效果。
第三点:Mirhoseini et al. 专注于宏布局,但却没有提供每个 TPU 芯片块中宏的数量、大小和形状,以及面积利用率等关键设计参数。
第四点:Mirhoseini et al. 只给出了五个 TPU 块的结果,其统计明显不足,而且高方差指标会产生噪声结果(见表 2)。通常情况下,使用更多的样本是常见的做法(见上表 1)。
第五点:Mirhoseini et al. 没有说明被强化学习(RL)超越的人类芯片设计师的资质水平。撇开可复现性不谈,这些结果后来在 Cheng et al. 的研究中被证明是可以轻易改进的。
第六点:Mirhoseini et al. 声称改善了面积,但芯片面积和宏面积在布局过程中并未改变,标准单元面积也没有变化(参见表 2)。
第七点:对于结果随时间推移而优化的迭代算法,应该公平地比较每个测试用例在相同运行时间下哪个具有更好的质量指标,或在相同质量下哪个具有更好的运行时间,或两者都有所改进。Mirhoseini et al. 没有提供这样的证据。特别是,如果基于机器学习的优化使用了非凡的计算资源,那么在其最有竞争力的形式中,模拟退火(SA)优化也应当使用同等的计算资源。这意味着在评估和比较这两种方法的效果时,应确保它们在资源使用上处于同一水平,以保证比较的公正性。
对于专家来说,Mirhoseini et al. 提出的方法似乎存在缺陷,主要表现在:
H1. 与 SOTA 相比,提出的 RL 使用了过多的 CPU/GPU 资源。因此快速芯片设计的说法需要仔细证实。
H2. 逐个放置宏是最简单的方法之一。然而即使在深度 RL 的驱动下,逐个放置看起来也很不方便。
H3. Mirhoseini et al. 使用了与 20 多年前类似的电路分区(聚类)方法。众所周知,这些技术与互连优化目标有所不同。
H4. Mirhoseini et al. 将宏的位置限制在一个粗粒度的网格上,而最新的方法则避免了这种限制。在图 1(左)中,宏被自由放置,但谷歌的强化学习倾向于将宏分散开来,并且不允许在如图 1(左)中心这样的大区域内放置单元。图 2 展示了这种差异。这表明,虽然强化学习技术在处理某些设计任务上具有潜力,但其在处理大规模电路设计时可能需要依赖于简化的网格系统,这可能限制了其优化效果和应用范围。
Mirhoseini et al. 的主要作者确认使用了这一步骤,并声称这并不重要。但在 Cheng et al. 的论文中,该步骤可将关键指标提高 7-10%。因此,Mirhoseini et al. 的结果需要未被明确说明的算法步骤,例如从商业软件中获取 (x, y) 数据。
Cheng et al. 的论文中还列举了更多未在论文中说明的技术,其中还提到了 Nature 论文、其源代码与谷歌芯片设计实际使用的代码之间的差异。这些差异包括代理成本函数中项的特定权重、与电路不同的邻接矩阵构造,以及 Mirhoseini et al. 的论文中没有源代码或完整描述的几个「黑箱」元素。Bae et al.、Cheng et al.、Macro Placement Repo 提供了缺失的描述。此外,Mirhoseini et al. 结果与所用方法不符,因为论文中没有提到一些关键组件。仅凭描述无法复现其结果和方法。
训练数据和测试数据之间存在数据泄漏
根据 Mirhoseini et al. 的说法,「当我们将策略网络暴露给更多种类的芯片设计时,它就不太容易过度拟合。」
但谷歌 Team 1 后来在 Yue et al. 中表明,对「多样化 TPU 块」进行预训练并没有提高结果质量。对「以前的网表版本」进行预训练会稍微提高质量。对 RL 进行预训练并在类似设计上对其进行评估可能是 Mirhoseini et al. 方法论中的一个严重缺陷。由于谷歌没有发布专有的 TPU 设计或每个设计的统计数据,所以无法比较训练和测试数据。
可能的局限性
Mirhoseini et al. 没有透露其方法的主要局限性,但却表示其可在更广泛的组合优化中取得成功。Mirhoseini et al. 中的 Ariane 设计显示了相同大小的宏模块:这是一个潜在的限制,因为商用芯片设计通常会使用多种不同的宏尺寸。然而,他们没有报告每个 TPU 块的基本统计数据:宏的数量及其形状、设计面积利用率以及宏占用的面积分数。根据同行评议和谷歌工程师对 Cheng et al. 作者的指导,TPU 块的面积利用率似乎低于典型的商用芯片设计。
谷歌 RL 在 Bae et al. 和 Cheng et al. 中使用的 Adya 和 Markov 的具有挑战性的公共基准测试上表现不佳(如图 2 所示),这表明存在未公开的局限性。
另一个可能的限制是对预置(固定)宏的处理不当,这在行业布局中很常见,但 Mirhoseini et al. 没有讨论过。通过干扰预置宏,网格化可能会影响实践中的可用性。
在公共基准测试上的表现不佳的原因也可能是由于对专有 TPU 设计的过度拟合。
使用中等的模拟退火基线
谷歌 Team 2 的更强基准论文《Stronger baselines for evaluating deep reinforcement learning in chip placement》通过在 swap、shift 和 mirror 操作中添加 move 和 shuffle 操作,改进了谷歌 Team 1 在 Mirhoseini et al. 中使用的并行 SA。在优化相同的目标函数时,这种改进的 SA 通常会在更短的时间内产生比 RL 更好的结果。
Cheng et al. 通过独立实现 SA 复现了 Bae et al. 的定性结论,发现 SA 结果的方差小于 RL 结果。
此外,Bae et al. 为 SA 提出了一种简单快速的宏初始化启发式方法,并在比较 RL 与 SA 时可均衡计算时间。
鉴于 SA 在 1980 到 1990 年代被广泛使用,与弱的 SA 基线相比,自然会导致新的 RL 技术被高估。
谷歌 CT/RL 未能在人类基线、商业 EDA 工具和 SA 的质量上有所提高。它也没有改进运行时 SOTA(表 3),并且作者没有透露每个设计数据或设计过程的时间。如果配置 / 实现得当,RePlAce 和 SA 会提供更强的基线。
对这篇 Nature 论文批评的反驳
尽管媒体进行了批评并提出了技术问题,但作者未能消除 Mirhoseini et al. 的方法和结果的复现的剩余障碍。
UCSD 团队的工程努力克服了这些障碍,他们跟进了谷歌 Team 2 批评 Nature 论文的工作,然后分析了其中的许多问题。在 CT 代码库出现之前,谷歌 Team 2 就可以访问谷歌 TPU 设计和论文中使用的源代码。Cheng et al. 和 Macro Placement Repo 的 UCSD 作者可以访问 CT 并受益于谷歌 Team 1 工程师的长期参与,但无法访问 Bae et al. 或 Mirhoseini et al. 中使用的 SA 代码或 CT 框架中缺失的其他关键代码片段。
然而,Bae et al.、Cheng et al. 的结果与 Macro Placement Repo 相互印证,并且他们的定性结论是一致的。UCSD 的 Ariane-NG45 结果与 Google Team 1 工程师的结果非常匹配,Cheng et al. 中表明 UCSD 生成的 Ariane-NG45 的 CT 训练曲线与 Google Team 1 工程师生成的结果相匹配。谷歌 Team 1 工程师仔细审查了该论文以及 2022 年秋季和 2023 年冬季的研究结果,没有提出异议。
Nature 论文的两位主要作者于 2022 年 8 月离开谷歌,但在 2023 年 3 月,他们对 Cheng et al. 的结果提出了反对。没有弥补原工作的缺陷。这些反对意见立即在宏布局代码库的 FAQ 部分得到解决。其中一个问题是 Cheng et al. 的实验中缺乏预训练。
预训练
Cheng et al. 使用谷歌 Circuit CT 库中的代码和指令进行训练,其中指出(2023 年 6 月):「以下结果是从头开始训练的结果,因为目前无法共享预训练模型。」
根据 Macro Placement Repo 中的 MacroPlacement FAQ,Cheng et al. 没有使用预训练,因为根据谷歌的 CT FAQ,不需要预训练来重现 Mirhoseini et al. 的结果。此外,谷歌没有公布预训练数据。
谷歌 Team 2 使用谷歌内部的代码评估预训练,发现对与 SA 或 RePlAce 的比较没有影响。
谷歌 Team 1 表明「不同 TPU 块」的预训练并没有改善结果,只改善了运行时间。「以前的网表版本」的预训练略有改善。CT 文档或论文本身没有讨论、披露或发布此类先前版本。
后来,他们的额外实验表明,「训练直到收敛会恶化一些关键芯片指标,同时改善其他指标,凸显了代理成本和芯片指标之间的不良相关性。总体而言,与 ISPD 2023 论文中报告的模拟退火和人类宏放置的结果相比,直到收敛的训练不会发生质的变化。」Bae et al. 的 RL-vs-SA 实验早于 CT 框架,也早于 Mirhoseini et al. 声称的训练不到 6 小时就收敛的方法。
Nature 论文使用的计算资源非常昂贵且难以复现。由于 RL 和 SA 算法都会在早期产生可行的解决方案,然后逐渐改进代理函数,因此 Cheng et al. 的尽力而为的比较使用的计算资源比 Mirhoseini et al. 的计算资源要少,并且 RL 和 SA 之间具有同等性。结果:SA 击败 RL。
Bae et al. 使用与 Mirhoseini 相同的计算资源对 RL 和 SA 进行了比较。Cheng et al. 的结果与 Bae et al. 的结果一致。如果给予更多资源,SA 和 RL 不太可能进一步改善芯片指标,因为其与 Mirhoseini 的代理函数相关性较差。
该论文的主要作者在 Goldie 和 Mirhoseini 在声明《Statement on reinforcement learning for chip design》中提到,该论文被大量引用,但他们没有引用谷歌之外的任何积极的复现结果来清除所有已知的障碍。Bae et al. 和 Cheng et al. 没有讨论在 IC 设计中使用 RL 的其他方法,因此这里不再进行一般性结论。