限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

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

关注

评论

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

成年人的世界都不容易-看看做到年薪50万的程序员,到底有多累?

Java架构师迁哥

亿级大表分库分表实战总结(万字干货,实战复盘)

比伯

Java 编程 程序员 架构 计算机

遥感影像处理有高招,“专治”各类花式并发的述求!

华为云开发者联盟

容器 k8s 遥感

【乘风破浪的开发者】丁一超:从AI实战营出发探索未知的AI世界

华为云开发者联盟

华为 AI modelarts

Spring / Spring boot 异步任务编程 WebAsyncTask

Bruce Duan

异步任务编程 WebAsyncTask

你以为只是简单的排序?(二)

书旅

数据结构与算法 Go 语言

【涂鸦物联网足迹】涂鸦云平台标准指令集说明

IoT云工坊

人工智能 cpu 物联网 智能家居 指令集

刷Github时发现了一本阿里大神的算法笔记!标星70.5K

Java架构师迁哥

拒招中国程序员后,开源平台 GitLab 又开始大规模封杀开发者账户

Java架构师迁哥

HTTP2服务器推送的第一次尝试

Gopher指北

HTTP2.0 Go 语言

多线程问的太深入不知道怎么回答,从volatile开始给你讲清楚

小Q

Java 学习 面试 volatile 多线程

完美!阿里P8仅用242页笔记,就由浅入深讲解了SQL概念

Java~~~

Java sql 阿里巴巴 SQL语法 sql查询

排名前 16 的 Java 工具类

Bruce Duan

java工具类

Spring Boot 监听 Redis Key 失效事件实现定时任务

Bruce Duan

Redis监听 监听过期键

背后技术:双11还能创造什么?

人工智能 数据挖掘 大数据 科技

普渡科技荣登甲子光年“2020中国最具商业潜力的20家机器人Cool Vendor”

DT极客

python+requests对app和微信小程序进行接口测试

测试人生路

Python 接口测试

五面进军饿了么!复盘总结11月上半月大厂面试真题,押题命中率高达95%以上

Java架构追梦

Java 阿里巴巴 架构 面试

从“小众”到“首选”,推动云原生产业落地华为云作用几何?

华为云开发者联盟

云计算 架构 容器

从红黑树的本质出发,彻底理解红黑树!

996小迁

Java 架构 面试 程序人生

下笔如有神:这是一个基于营销行业的 AI 技术实践

京东科技开发者

人工智能 自然语言处理 nlp

影响王兴的一本书

池建强

读书笔记 无限游戏 王兴

SQL数据库:子查询和关联子查询

正向成长

SQL子查询 SQL关联查询

权威报告发布:京东智联云首次参评即跻身机器学习卓越表现者阵营

京东科技开发者

人工智能 云计算 供应链

React Fiber 是什么?

局外人

react.js 大前端 React

关于linux操作系统中的buff/cache

程序员架构进阶

Linux cache buffer

你还在使用迭代器删除集合数据,out了,Java 中函数removeIf 不香么

Geek_6f0746

Java JAVA集合 Java迭代器

在Android中使用DataBinding(Kotlin)

simon

android Android进阶 JetPack DataBinding 数据绑定

anyRTC AI降噪|让声音更清晰

anyRTC开发者

人工智能 AI 音视频 WebRTC RTC

MySQL全面瓦解—子查询和组合查询

比伯

Java 编程 程序员 架构 计算机

快速理解二十三种设计模式(速记)

simon

设计模式 23种设计模式 Java设计模式

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