写点什么

谷歌利用人工智能设计的芯片揭示了智能的本质

  • 2021-06-30
  • 本文字数:3365 字

    阅读完需:约 11 分钟

谷歌利用人工智能设计的芯片揭示了智能的本质

本文最初发表于 TechTalks 网站,经原作者 Ben Dickson 授权,InfoQ 中文站翻译并分享。本文是 TechTalks 对人工智能研究论文的评论文章之一,这个系列主要探索人工智能领域的最新发现。


InfoQ 中文站曾经翻译并分享过《谷歌的深度学习在 AI 芯片中找到了一条关键路径》,该文介绍了 ZDNet 与谷歌大脑总监 Jeff  Dean 谈到谷歌如何使用人工智能来推进定制芯片的内部开发,从而加快软件开发。使用人工智能设计芯片来运行人工智能,这本身是一件非常有意思的事。本文作者探讨了他对谷歌使用人工智能为人工智能设计芯片的思考。


上个星期,在同行评审的科学杂志《自然》(Nature)上发表的一篇论文,谷歌大脑的科学家提出了一项深度强化学习技术,可以用于布图规划(floorplan),即安排计算机芯片上不同元件的放置过程。


译注:布图规划是在集成电路设计(特别是其中的物理设计步骤)对于电路主要功能模块在试验性布局中的图形表示。它是物理设计后续过程,即精确布线的前提。


研究人员试图用强化学习技术来设计下一代的张量处理器,也就是谷歌的人工智能处理器。


使用软件进行芯片设计并非新鲜事。但据谷歌研究人员称,这种新的强化学习模型“能自动生成芯片平面图,这些图在所有关键指标上都优于或可匹敌由人类绘制的平面图,包括功耗、性能和芯片面积。”并且它只花了人类所需时间的一小部分。


人工智能在性能上优于人类的特性已经引起了广泛的关注。一家媒体将其描述为“能够比人类更快地设计计算机芯片的人工智能软件”,并写道:“一款需要人类花费数月来设计的芯片,谷歌的一种新的人工智能在六个小时内就能实现。”


另外一家媒体写道:“人工智能为人工智能设计芯片的良性循环似乎刚刚起步。”


但是读了这篇论文后,让我吃惊的,不是用于设计计算机芯片的人工智能系统的复杂性,而是人类和人工智能之间的协同。

类比、直觉和奖励


这篇论文是这样描述这个问题的:“芯片布图规划涉及到在芯片画布(二维网格)上放置网表,以优化性能指标(例如,功耗、时序、面积和布线长度),同时又要遵守布线密度和布通率的硬约束条件。”


基本上,你要做的就是以最优化的方式放置元件。但是,和其他问题一样,随着芯片中元件数量的增加,寻找最佳设计变得越来越困难。


现有的软件有助于加快发现芯片排列的过程,但是,如果目标芯片越来越复杂,就会产生问题。研究人员决定从强化学习的方法中汲取经验,以解决其他复杂的空间问题,例如围棋。


研究人员写道:“芯片布图规划类似于一场游戏,其中存在不同的棋子(例如网表拓扑结构、宏计数、宏大小和长宽比)、棋盘(不同的画布尺寸和长宽比)和胜负条件(不同评估指标的相对重要性或不同的布线密度和布通率限制)。


在人类智慧中,这是一个最重要也是最复杂的方面:类比。我们人类能从自己解决的问题中提取出抽象的东西,然后再把抽象运用到新问题上。尽管我们把这些技能视为理所当然,但正是这些技能,让我们在迁移学习方面做得很好。因此,研究人员可以把芯片的布图规划问题重新设计成一种棋盘游戏,而用其他科学家解决围棋游戏的方法来解决它。


深度强化学习模型可以特别擅长于在很大的空间内进行搜索,这在物理上是无法实现的,因为人类大脑的计算能力决定了。然而,科学家们面临的问题比围棋要复杂几个数量级。“将 1000 个节点集群放置在由 1000 个单元组成的网格中的状态空间是 1000 的数量级!(大于 10²⁵⁰⁰),而围棋的状态空间为 10³⁶⁰。”研究人员写道。他们想要设计的芯片将由数百万个节点组成。


他们使用人工神经网络来解决复杂的问题,这种网络可以将芯片设计编码为向量表示,从而使探索问题空间更容易。根据这篇论文,“我们的直觉(重点在于我的直觉)表明,一种能够完成芯片放置的常规工作的策略,也应该能在推理过程中,将与新的未知芯片有关的状态编码成有意义的信号。所以,我们训练了一个神经网络架构,它可以预测放置有奖励的新网表,最终目标是把这个架构作为我们策略的编码层。”


直觉(intuition)这个词常被随意使用。但直觉是一个很复杂的鲜为人知的过程,包括经验、潜意识知识、模式识别等等。我们的直觉来自于多年来在某一领域的研究,但也可以从其他领域的经验中得到。幸运的是,在高功率计算和机器学习工具的帮助下,将这些直觉用于测试变得更加容易。


此外,值得注意的是,强化学习系统要求有周密设计的奖励。实际上,一些科学家认为,只要有正确的奖励功能,强化学习就足以使通用人工智能成为现实。但是,如果没有正确的奖励,强化学习智能体就会陷入无休止的循环之中,做出一些愚蠢而无意义的事情。在下面的视频中,一个玩《赛船冠军赛》(Coast Runners)电子游戏的强化学习智能体正在试图使其积分最大化,而放弃了主要目标——赢得比赛。



视频链接:https://youtu.be/tlOIHko8ySg


谷歌的科学家将布图规划系统的奖励设计为“代理布线长度、布通率和布线密度的负加权和”。在开发和训练强化学习模型时,这些权重是他们必须调整的超参数。


通过正确的奖励,强化学习模型可以充分发挥它的计算能力,找到各种方式设计平面图,使奖励最大化。

策划数据集

该系统中使用的深度神经网络是使用监督学习开发的。监督机器学习需要标记数据,以便在训练期间调整模型的参数。谷歌的科学家创建了“一个包含 10000 个芯片放置的数据集,其中输入是与特定放置相关的状态,标签是该放置的奖励”。


为避免手动创建每个平面图,研究人员结合了人类设计的平面图和计算机生成的数据。对于训练数据集中所包含的算法生成例子的评估,需要多少人力,论文中并没有给出太多信息。但是,没有高质量的训练数据,监督学习模型最终将做出糟糕的推断。


在这个意义上,该人工智能系统不同于其他强化学习程序,例如 AlphaZero,它开发的游戏策略无需人类参与。将来,研究人员可能会开发一种强化学习智能体,它可以设计自己的平面图,而无需监督学习组件。但是我猜想,由于问题的复杂性,解决这类问题很有可能会继续要求整合人类直觉、机器学习和高性能计算。

强化学习设计与人类设计

在谷歌研究人员提出的工作中,有趣的方面是芯片的布局。我们人类使用各种捷径来克服大脑的极限。我们无法在一个大块中解决复杂的问题。但我们可以设计模块化、分层次的系统来对复杂的问题进行划分和求解。在开发能够执行非常复杂任务的系统时,我们考虑并设计自顶向下架构的能力起了重要作用。


我举一个软件工程的例子,这是我自己的专业领域。从理论上讲,你可以在一个文件中用非常大的、连续的命令流来编写整个程序。但软件开发人员从来不会这么写他们的程序。我们所创建的软件都是小块的,函数、类、模块,它们可以通过明确定义的接口进行交互。接着,我们将这些小块嵌套到较大的小块中,逐渐地形成一个元件的层次结构。你不必阅读程序的每一行,就能理解其功能。模块化使得多个程序员能够在同一个程序上工作,也使得一些程序可以重复使用先前构建的组件。有时候,仅仅是看看程序的类架构就足够了,它可以为你指出正确的方向,找出错误,或者找到增加升级的正确位置。我们经常以速度换取模块化和更好的设计。


从某种意义上说,计算机芯片的设计也有类似的问题。人类设计的芯片往往在不同的模块之间有整齐的界线。而谷歌的强化学习智能体所设计的平面图,无论布局看上去如何(见下图),都已找到最小阻力路径。



左图为人类设计的芯片,右图为人工智能设计的芯片


这是否会成为一种可持续的设计模式,还是需要在高度优化的机器学习产生的设计与人类工程师强加的自顶而下的顺序之间作出某种妥协,我很好奇。

人工智能 + 人类智能

正如谷歌的强化学习驱动的芯片设计者所展示的,人工智能硬件和软件的创新将继续需要抽象思维,找到要解决的正确问题,培养对解决方案的直觉,以及选择正确的数据来验证解决方案。这些都是更好的人工智能芯片可以加强但不能取代的技能。


总之,我不认为这是一个“人工智能战胜人类”、“人工智能创造更智能的人工智能”或人工智能发展了“递归自我完善”能力的故事。相反,人类可以利用人工智能作为工具来克服自身的认知极限,并扩展自身能力的表现。假如存在良性循环,那就是人工智能和人类找到更好的合作方式。

作者介绍:

Ben Dickson,软件工程师,也是 TechTalks 的创始人。撰写关于技术、商业和政治方面的文章。


原文链接:


https://bdtechtalks.com/2021/06/14/google-reinforcement-learning-ai-chip-design/

2021-06-30 09:001347
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 531.9 次阅读, 收获喜欢 1975 次。

关注

评论

发布
暂无评论
发现更多内容

线程的故事:我的3位母亲成就了优秀的我!

王磊

Java 线程 多线程

GitHub开源:4行代码实现《黑客帝国》数字雨特效

不脱发的程序猿

GitHub 开源 程序人生 4月日更 黑客帝国

架构实战营模块二作业

刁寿钧

架构实战营

泉州有了一个水务大脑,用AI守护“绿水青山”

百度大脑

AI

视频录制后有噪音怎么办?教你简答几步去除视频噪音!

奈奈的杂社

redis常见应用场景

Sakura

4月日更

全网最全 ECMAScript 攻略

清秋

JavaScript ecmascript 大前端 ES6 Ecma

聪明人的训练(二十三)

Changing Lin

4月日更

一周信创舆情观察(4.12~4.18)

统小信uos

悲观锁与乐观锁的实现(详情图解)

Java架构师迁哥

阿里巴巴的“双11”高并发秒杀终极版教程!(Java语言设计)

Java 编程 程序员 架构

加密原理详解:对称式加密VS非对称式加密

Java架构师迁哥

走完线上 BUG 定位最后一公里

阿里巴巴中间件

可观测性 bug bug修复

合约跟单系统搭建,合约一键跟单app

使用CrossOver安装第三方软件

懒得勤快

开发知识 | 即时通讯是怎么做到的?

YonBuilder低代码开发平台

大前端 即时通讯 APP开发 小程序制作 开发技巧

Rust从0到1-代码组织-模块

rust modules 模块

插件化库VirtualAPK详解

寻找生命中的美好

android 插件化 VirtualAPK

开发环境上云,打造五星级开发体验

CODING DevOps

Kubernetes 云原生 CODING Nocalhost

编曲新手可以用什么编曲软件?

奈奈的杂社

万字精华:好好巩固你的Nginx知识体系

学Java关注我

Java 编程 架构 程序人生 计算机

破解class文件的第一步:深入理解JAVA Class文件

华为云开发者联盟

Java JVM 索引 class文件

暴涨暴跌的牛市,普通人怎么和平发育?

CECBC

区块链

饿了么EMonitor演进史

阿里巴巴中间件

可观测性 饿了么 emonitor etrace

Golang Test

escray

学习 极客时间 Go 语言 4月日更

理性看待区块链+大宗商品

CECBC

区块链

2021年处置非法集资部际联席会议:密切关注打着区块链、虚拟货币等旗号的新型风险

CECBC

流程引擎介绍

上海派拉基础研发

流程

Android组件化和插件化开发

寻找生命中的美好

android 组件化 插件化

LeetCode题解:641. 设计循环双端队列,使用数组,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

谈谈 WebRTC 的 SDP Unified Plan

拍乐云Pano

WebRTC

谷歌利用人工智能设计的芯片揭示了智能的本质_AI&大模型_Ben Dickson_InfoQ精选文章