版图工程师会失业么?谷歌用AI设计芯片版图,本质解密:下一盘更大的围棋!
来源:EETOP编译自bdtechtalks 作者:Ben Dickson
在上周发表在科学杂志《自然》上的一篇论文中,谷歌大脑的科学家们介绍了一种深度强化学习技术,用于芯片版图规划,即实现芯片内部单元自动布局的过程。
研究人员设法使用强化学习技术来设计下一代的张量处理单元,即谷歌的专门人工智能处理器。
人工智能优于人类性能的特点引起了很多人的注意。一家媒体将其描述为 "可以比人类更快地设计计算机芯片的人工智能软件",并写道:"人类需要几个月才能设计出的芯片,可以由[谷歌]的新人工智能在不到六个小时的时间内设计出来。"
另一家媒体写道,“人工智能为人工智能设计芯片的良性循环似乎才刚刚开始。”
但在阅读这篇论文时,令我惊讶的不是用于设计计算机芯片的人工智能系统的复杂性,而是人类和人工智能之间的协同作用。
类比、直觉和奖励
该论文将问题描述如下:“芯片布局规划涉及将网表放置在芯片画布(二维网格)上,以便优化性能指标(例如,功耗、时序、面积和线长),同时遵守对密度的严格限制和路由拥塞。”
基本上,您要做的是以最佳方式放置组件。然而,与任何其他问题一样,随着芯片中组件数量的增加,找到最佳设计变得更加困难。
现有的软件有助于加快发现芯片排列的过程,但当目标芯片的复杂性增加时,它们就达不到要求了。研究人员决定从强化学习解决其他复杂空间问题的方式中汲取经验,例如围棋。
“芯片布局规划类似于具有不同部分(例如,网表拓扑、宏计数、宏尺寸和纵横比)、棋盘(不同的画布尺寸和纵横比)和获胜条件(不同评估的相对重要性)的游戏指标或不同的密度和路由拥塞约束),”研究人员写道。
这是人类智能最重要和最复杂的方面之一的体现:类比。人类可以从我们解决的问题中抽出抽象的东西,然后将这些抽象的东西应用于新的问题。虽然我们认为这些技能是理所当然的,但正是这些技能使我们非常擅长迁移学习。这就是为什么研究人员可以将芯片的布局规划问题重新定义为一个棋盘游戏,并且可以用其他科学家解决围棋游戏的方式来解决这个问题。
深度强化学习模型尤其擅长搜索非常大的空间,这在物理上是不可能的,因为大脑的计算能力。但是科学家们面临的问题比围棋复杂很多个数量级。“在一个包含1000个单元的网格上放置1000个节点集群的状态空间大约是1000!(大于 10 2,500,),而围棋的状态空间是10 360,”研究人员写道。而他们想要设计的芯片将由数百万个节点组成。
他们用人工神经网络解决了这个复杂问题,该网络可以将芯片设计编码为向量表示,使探索问题空间变得更容易。根据这篇论文,“我们的直觉是,一个能够完成芯片放置一般任务的策略也应该能够在推理时将与一个新的看不见的芯片相关的状态编码成有意义的信号。因此,我们训练了一种神经网络架构,能够预测新网络列表放置的奖励,最终目标是使用这种架构作为我们政策的编码器层。”
“直觉”一词的使用通常不严格。但这是一个非常复杂且鲜为人知的过程,涉及经验、无意识知识、模式识别等等。我们的直觉来自于在一个领域多年的工作,但它们也可以从其他领域的经验中获得。幸运的是,在高性能计算和机器学习工具的帮助下,测试这些直觉变得越来越容易。
值得注意的是,强化学习系统需要精心设计的奖励。事实上,一些科学家认为,有了正确的奖励功能,强化学习就足以达到人工一般智能。然而,如果没有正确的奖励,RL代理就会陷入无尽的循环中,做一些愚蠢而无意义的事情。在下面的视频中,一个玩《海岸奔跑者》的RL代理试图最大化自己的分数,而放弃了赢得比赛的主要目标。
有了正确的奖励,强化学习模型就能够利用其计算能力并找到各种方法来设计使奖励最大化的floorplan。
精选数据集
系统中使用的深度神经网络是使用监督学习开发的。监督机器学习需要标记数据在训练期间调整模型的参数。谷歌的科学家创建了“一个包含 10,000 个芯片placements的数据集,其中输入是与给定布局相关的状态,标签是该布局的奖励。”
为了避免手动创建每个floorplan,研究人员混合使用了人工设计的floorplan和计算机生成的数据。论文中没有太多关于在评估训练数据集中包含的算法生成示例时涉及多少人力的信息。但是如果没有高质量的训练数据,监督学习模型最终会做出糟糕的推断。
从这个意义上说,人工智能系统不同于其他强化学习程序,例如AlphaZero,后者开发了不需要人工输入的游戏策略。未来,研究人员可能会开发一种RL 代理,它可以设计自己的floorplan,而无需监督学习组件。但我的猜测是,鉴于问题的复杂性,解决此类问题很有可能继续需要人类直觉、机器学习和高性能计算的结合。
强化学习设计vs人类设计
谷歌研究人员展示的工作中有趣的方面之一是芯片的布局。我们人类使用各种捷径来克服我们大脑的极限。我们无法在一大块中解决复杂的问题。但是我们可以设计模块化、分层的系统来划分和克服复杂性。我们思考和设计自顶向下架构的能力在开发可以执行非常复杂任务的系统方面发挥了重要作用。
我将举一个软件工程的例子,这是我自己的专业领域。理论上,您可以在单个文件中的一个非常大的、连续的命令流中编写整个程序。但是软件开发人员从来不会那样写他们的程序。我们以小块、函数、类、模块的形式创建软件,它们可以通过定义良好的接口相互交互。然后我们将这些部分嵌套成更大的部分,并逐渐创建组件层次结构。你不需要阅读程序的每一行来理解它的作用。模块化使多个程序员可以处理单个程序,并且多个程序可以重用以前构建的组件。有时,仅查看程序的类架构就足以为您指明正确的方向来定位错误或找到添加升级的正确位置。
在某种程度上,在计算机芯片的设计中也可以看到同样的情况。人类设计的芯片往往在不同模块之间有清晰的界限。另一方面,谷歌的强化学习代理设计的平面图已经找到了阻力最小的路径,不管布局看起来如何(见下图)。
我很想知道这是否会在未来成为一种可持续的设计模式,或者它是否需要在高度优化的机器学习生成的设计和人类工程师强加的自上而下的顺序之间进行某种妥协。
AI+人类智能
正如谷歌的强化学习芯片设计师所表明的那样,人工智能硬件和软件的创新将继续需要抽象思维、找到正确的问题来解决、培养对解决方案的直觉,并选择正确的数据来验证解决方案。这些是更好的AI 芯片可以增强但无法替代的技能。
归根结底,我不认为这是一个“人工智能智战胜人类”、“人工智能创造更智能的人工智能”或人工智能开发“递归自我提升”能力的故事。更确切地说,它是人类寻找方法将人工智能用作道具来克服自己的认知限制并扩展其能力的一种表现。如果存在良性循环,那就是人工智能和人类寻找更好的合作方式之一。
大家觉得谷歌AI设计芯片是否会取代版图工程师?
翻译水平有限,欢迎大家查阅原文:
https://bdtechtalks.com/2021/06/14/google-reinforcement-learning-ai-chip-design/
关注创芯人才网,搜索职位