写点什么

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

  • 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:001443
用户头像
刘燕 InfoQ高级技术编辑

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

关注

评论

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

Apache derby 和sqlite进行对比

linux大本营

sqlite 数据库

leaflet加载聚合

linux大本营

fmt库c++

linux大本营

C++ fmt

想转行计算机但不知道转哪个方面比较好?

linux大本营

软件开发 计算机

arm m4 xpsr每一位的作用

linux大本营

寄存器 arm

linux tee命令

linux大本营

linux命令 TEE

20道mysql数据库笔试题及答案

linux大本营

MySQL 数据库

领先企业的数智化进入2.0阶段,需要升级数智底座

用友BIP

delphi中TServerSocker使用stThreadBlocking模式的例子

linux大本营

uniapp配置基本的tabbar和动态修改内容

格斗家不爱在外太空沉思

uni-app 三周年连更

linux crash怎么分析

linux大本营

Crash Linux内核

C++11引入了std::atomic模板类无锁栈的实现如何判断栈空

linux大本营

多线程 线程安全 C++11

请详述c++中 lambda表达式使用

linux大本营

Lambda vector Function C++

ES开发指南|如何快速上手ElasticSearch

浅羽技术

全文检索 搜索 Lucence Elastic Search 三周年连更

@PathVariable 和 @RequestParam 的区别

linux大本营

ubuntu安装kernel-debuginfo

linux大本营

改变this指向的方法

linux大本营

指针 C语言 this指针

设计一个大规模搜索引擎,大概有1000台服务器

linux大本营

搜索引擎 负载均衡 存储 分布式,

AI大模型加速RPAxAI时代到来,谁会是RPA领域的杀手级应用?

王吉伟频道

RPA AI大模型 ChatGPT RPAxAI 企业级RPA

在Ubuntu的Vscode中怎么添加第三方库文件sqlite3.h

linux大本营

sqlite Linux ubuntu vscode

C语言sqlit3创建表格怎么写

linux大本营

sqlite 数据库 C语言

winDbg 提示 Unable to verify checksum for IOCommModel.exe

linux大本营

网络安全 数字证书

koal_dm8_crypto.so.1.0.9.x86.b6f523 怎么安装

linux大本营

Linux linux文件

什么叫函数的注册,用c++举个例子

linux大本营

c++ 函数

【Linux】iptables之防火墙概述及规则匹配+实例(1)

A-刘晨阳

Linux iptables 防火墙规则 三周年连更

C++grpc 服务器接收到请求后如何处理

linux大本营

gRPC 序列化 protobuf C++

/sbin/kexec参数说明

linux大本营

Linux 镜像 Linux内核

stl中,cbegin,cend,crbegin,crend区别以及用途

linux大本营

容器 stl C++ STL

怎么查看 .crash文件

linux大本营

Linux gdb Crash 内核 perf

缓解过拟合方法

linux大本营

创建和管理复杂的项目:OmniPlan Pro 4 mac中文版

真大的脸盆

Mac Mac 软件 项目管理工具 项目流程软件

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