AI芯片:前沿技术与创新未来

978-7-115-55319-5
作者: 张臣雄
译者:
编辑: 贺瑞君

图书目录:

详情

本书从人工智能(AI)的发展历史讲起,介绍了目前非常热门的深度学习加速芯片和基于神经形态计算的类脑芯片的相关算法、架构、电路等,并介绍了近年来产业界和学术界一些著名的AI芯片,包括生成对抗网络芯片和深度强化学习芯片等。本书着重介绍了用创新的思维来设计AI芯片的各种计算范式,以及下一代AI芯片的几种范例,包括量子启发的AI芯片、进一步提升智能程度的AI芯片、有机自进化AI芯片、光子AI芯片及自供电AI芯片等。本书也介绍了半导体芯片技术在后摩尔定律时代的发展趋势,以及基础理论(如量子场论、信息论等)在引领AI芯片创新方面发挥的巨大作用。最后,本书介绍了AI发展的三个层次、现阶段AI芯片与生物大脑的差距及未来的发展方向。 本书可供AI和芯片领域的研究人员、工程技术人员,科技、产业决策和管理人员,创投从业者和相关专业研究生、本科生以及所有对AI芯片感兴趣的人士阅读参考。

图书摘要

AI芯片

前沿技术与创新未来



张臣雄◎著




人 民 邮 电 出 版 社

北 京



定价:159.80元

读者服务热线:(010)81055552 印装质量热线:(010)81055316

反盗版热线:(010)81055315

广告经营许可证:京东市监广登字20170147号

内 容 提 要

前言

张臣雄

2020年9月

第一篇 导论

第1章 AI 芯片是人工智能未来发展的核心——什么是AI 芯片

随着人工智能(Artificial Intelligence,AI)的热潮席卷各行各业,作为人工智能核心的“AI芯片”变得炙手可热,它是所有智能设备必不可少的核心器件,专门用于处理AI相关的计算任务。AI芯片领域不光是半导体芯片公司竞争的舞台,连互联网公司、云计算公司都纷纷发布推出芯片的计划。而大大小小的AI芯片初创公司更是像雨后春笋般出现,各种AI芯片相关的发布会、研讨会上人头涌动、热闹异常,都说明了人们对于AI芯片的浓厚兴趣。

AI芯片包含两个领域的内容:一个是计算机科学领域,简单地说就是软件,即研究如何设计出高效率的智能算法;另一个是半导体芯片领域,简单地说就是硬件,即研究如何把这些算法有效地在硅片上实现,变成能与配套软件相结合的最终产品。

下面,让我们先回顾一下AI芯片的简要历史、AI芯片到底需要完成什么样的运算,再作后续讨论与介绍,包括:

(1)AI芯片(包括深度学习加速器和类脑芯片等)的实现方法;

(2)各种新颖的算法和架构;

(3)新的计算范式(如模拟计算、存内计算、近似计算、随机计算、可逆计算、自然计算、仿生计算、储备池计算、量子启发计算、有机计算等);

(4)光子AI芯片和“自进化”“自学习”的AI芯片,量子场论、统计物理、信息论等基础理论如何引领AI算法的创新,以及基于信息论的新颖AI芯片;

(5)如何实现能够“带创造力”和“自供电”的AI芯片;

(6)“后摩尔定律时代”的芯片技术;

(7)AI芯片的“杀手锏”应用和分“左右脑”的新颖AI芯片等;

(8)AI芯片的发展前景及面临的挑战。

1.1 AI芯片的历史

从工业革命开始,机器已经逐步取代了人类的重复性手工劳动和繁重的体力劳动。如今,人类的部分脑力劳动和知识性工作也逐渐可以被具有人工智能的机器所取代。

这种带有AI芯片的“智能机器”具有强大的计算处理和学习能力,可以自主操作。智能机器不但可以仿照人类肌肉执行任务,而且将成为大脑功能的替代者。这种智能机器将会越来越普及,性能也将会不断提高,它将被广泛地用于人脸识别、汽车驾驶、艺术作品创作、新材料合成、新药开发、医学诊断、机器人及人们的日常生活中。可以这样说,在未来的25年内,AI将无处不在,它将可以胜任大部分人类正在从事的工作。因此,在未来,现在人类大部分的工作岗位都将被这种智能机器“抢走”,也就算不上是危言耸听了。

如前所述,AI芯片的发展主要依赖两个领域的创新和演进:一个是模仿人脑建立起来的数学模型和算法,这与脑生物神经学和计算机科学相关;另一个是半导体集成电路,简称芯片。

芯片是上述智能机器的“核心”,是运行这种机器最关键的“引擎”。从1957年第一块芯片发明以来,芯片技术得到了极为迅速的发展。从一开始几个晶体管的集成,到今天已经可以在一块很小的硅基芯片上集成几十亿甚至几百亿个晶体管,这是非常了不起的人类智慧的结晶,也是人类历史上的奇迹。海量晶体管的集成使大量运算得以进行,从而大大提高了芯片的运算能力。今天用于深度学习的图形处理器(Graphics Processing Unit,GPU)芯片,已经可以达到100 TFLOPS(每秒100万亿次浮点运算)以上的运算速度,是20世纪90年代初超级计算机Cray-3运算速度(16 GFLOPS,即每秒160亿次浮点运算)的6000多倍。

世界上第一块芯片是由美国德州仪器(TI)公司的杰克·基尔比(Jack Kilby)发明的。现已退休的台积电(TSMC)创始人张忠谋在他的自传里,记述了当时他和芯片发明人杰克·基尔比一起并肩工作的情景。“我入职TI不久,结识了一位和我几乎同时加入的同事,他有一个令人印象深刻的外表,高得出奇(超过两米)、瘦削,最显眼的是巨大的头颅。那时他30多岁,……正想把好几个晶体管、二极管,加上电阻器,组成一个线路放在同一粒硅晶片上。……老实说,那时要我做一个晶体管都有困难,把好几个晶体管再加别的电子元器件放在同一粒硅晶片上,还要它们同时起作用,简直是匪夷所思。”但杰克后来成功了。就是这块芯片,奠定了后来信息革命的基础。

AI想法的产生,以及后来神经网络数学模型和算法的发展,一路上伴随着半导体芯片的演进过程。虽然在二十世纪三四十年代就有人在研究人类的脑功能,并试图建立一种数学模型,但没有产生较大影响。直到1957年,模拟人脑的感知器(Perceptron)的发明被看作是第一个“人工神经网络”方面的突破。感知器是当时就职于康奈尔航空实验室的法兰克·罗森布拉特(Frank Rosenblatt)发明的。作为最简单的前向人工神经网络形式,感知器虽然结构简单,但它拥有学习能力,能不断进化从而解决更为复杂的问题。

到了20世纪80年代,已经有人研究构建模仿大脑运行的硬件(不是从逻辑学的角度来看,而是根据感知器的模型),这是构建人工神经元和神经网络的初步尝试。AI走出实验室,走向商品化,形成了巨大的投资热潮。当时人们预测,如果使用感知器构建深度神经网络(Deep Neural Network,DNN),可以在计算机上构建类人的推理和学习机制。不少公司不但使用数字电路,还尝试使用模拟电路来制作神经网络的芯片。但是,当时硬件的计算能力非常低,无法使这类网络模型得到有效应用。从20世纪90年代初开始,AI科技泡沫逐渐破灭。

现在不少人认为当时的AI泡沫破灭是因为没有像如今最红火的“深度学习”(即深度神经网络)算法这样的好算法。其实,最关键的还是当时半导体芯片的运算能力没有跟上。“深度学习”这样的模型和算法,其实早在20世纪80年代就有了。1986年,杰弗里·辛顿(Geoffrey E. Hinton)与同事们一起,探索了如何显著改善多层神经网络(即深度神经网络)的性能,使用被称为反向传播(误差反向传播方法)的算法,并发表了他们的划时代论文。1989年,当时还在贝尔实验室的杨立昆(Yann LeCun)和其他研究人员一起开发了可以通过训练来识别手写邮政编码的神经网络,证明了能够在现实世界中应用这一新技术。但在那个时期,他们训练一个深度学习卷积神经网络(Convolutional Neural Network,CNN)需要3天的时间,因此无法投入实际应用。

这也说明了算法再好,如果没有足够的计算能力,也就是高性能的芯片,AI就无法得到实际应用,只能在实验室里被束之高阁。

2009年以来,AI又一次受到人们的关注,飞速发展,这是由GPU芯片带动的。虽然英伟达(NVIDIA)公司在1999年就发明了GPU,但从来没有人把它用于深度学习。一直到2009年,斯坦福大学的拉亚特·莱纳(Rajat Raina)、阿南德·马德哈文(Anand Madhavan)及吴恩达(Andrew Y. Ng)共同发表了一篇突破性的论文,介绍了如何利用现代GPU远超过多核中央处理器(Central Processing Unit,CPU)的计算能力(超过70倍),把AI训练时间从几周缩短到了几小时。

2012年,一切都发生了变化。一系列极具影响力的论文发表,如亚历克斯·克里泽夫斯基(Alex Krizhevsky)、伊利·萨茨凯(Ilye Sutskever)和辛顿的《具有深度卷积神经网络的ImageNet分类》一文,就展示了他们在ImageNet图像识别挑战赛上取得的成果。其他很多实验室也已经在从事类似工作。在这一年结束之前,深度学习已成为美国《纽约时报》的头版,并且迅速成为人工智能中最知名的技术。

之后,深度学习在图像识别、语音识别方面的实验结果逐年得到改善,直到超过人类的识别率,引起人们的极大关注,再次掀起了AI热潮。由此可见,AI与半导体芯片的发展是紧密联系在一起的,没有GPU等半导体芯片近年来的迅猛发展,AI就不会像今天这样炙手可热。从图1.1中可以看到按时间顺序列出的AI和半导体芯片的演进历程对照。

虽然感知器和第一块芯片都是在1957年发明的,但AI和半导体芯片这两条路发展到现在,还不能说很匹配。芯片的运算能力还远远无法满足算法的运算需求。非营利组织OpenAI的资深研究员最近指出,芯片性能需要每年提高10倍,才能满足训练DNN的需求。这个需求是巨大的,但目前看来还难以满足。

图1.1 AI和半导体芯片的演进过程对照

1.2 AI芯片要完成的基本运算

AI芯片是模仿大脑运作的芯片,它使用模拟神经元和突触的模型来尝试再现人类智能。

1.2.1 大脑的工作机制

大脑中有许多神经细胞,可以通过连接传达信息,并建立记忆。具有这种作用的神经细胞被称为神经元。神经元在连接处不断发送电子信号以传输信息,而突触就位于该连接处。换句话说,大脑中的神经细胞是神经元,它们的交界处是突触。

如图1.2所示,神经元由树突、突触、核及轴突构成。单个神经元只有激活与未激活两个状态,激活条件为从其他神经元接收到的输入信号量总和达到一定阈值。神经元被激活后,电脉冲产生并沿着轴突经突触传递到其他神经元。现在我们用“感知机”的概念模拟神经元行为,需要考虑权重(突触)、偏置(阈值)及激活函数(神经元)。

图1.2 脑细胞连接的构造:神经元之间通过突触连接成网络

上面讲的只是一个概念,我们有必要通过软件和硬件使计算机更容易处理神经元行为。为达到此目的,我们为神经元建立一个模型(见图1.3)。

图1.3 神经元模型

图1.3中,函数f是输入和输出之间的关系,称为激活函数;wi是突触特征的权重,权重为正表示突触兴奋,权重为负表示突触处于抑制状态;xi是另一个神经元的输出;b是神经元激活(将输出传递到后续阶段)的阈值。

激活函数f(x)的部分常见形式如图1.4所示。使用激活函数的目的是引入非线性,使输入和输出脱离线性关系。

图1.4 表示大脑神经元开和关的激活函数举例

a)线性函数 b)符号函数 c)Sigmoid函数(S形函数) d)Softmax函数

e)双曲正切S形函数 f)ReLU函数 g)硬双曲正切S形函数 h)阶跃函数

目前用得最多的激活函数是图1.4f所示的修正线性单元(Rectified Linear Unit,ReLU)函数。ReLU函数的表达式非常简单,就是小于0的部分全部置为0,其他保持不变。S形(Sigmoid)函数(见图1.4c)是传统的神经元模型最常使用的激活函数,它基于神经科学仿生而得出。在第二波神经网络的浪潮中,S形函数被用来模拟之前提到的神经元的激活过程,表现出了高度适用的效果。但该函数也容易带来饱和效应问题(即梯度弥散效应),会造成很长的“学习”时间。看似简单的ReLU函数解决了这个问题,因此成为深度学习算法的重大改进点之一。

1.2.2 模拟大脑运作的神经网络的计算

把神经元连起来,就成为一个神经网络(见图1.5)。深度学习,即深度神经网络(DNN)的特点是在输入层和输出层中间加了很多层,称为隐藏层。目前较新的DNN,已经有几百个甚至1000个以上的隐藏层。在DNN中,通过添加层的数量,可以将精度和吞吐量提高,并可以通过改变权重来响应各种功能。由于深度学习的采用,神经网络的层数显著增加,导致模型非常大。一般需要多达数千万的权重来定义神经元之间的大量连接,这些参数是在很费时间的学习过程中确定的。

AI芯片是一种高速执行神经网络输入到输出计算过程的芯片。这里重要的是如何快速计算图1.3中的函数f,其中主要是的计算。如果把此式展开,可写成:

这是乘积累加(Multiply Accumulation,MAC)运算。传统上,通过使用诸如数字信号处理器(Digital Signal Processing,DSP)和ARM处理器的NEON之类的单指令多数据流(Single Instruction Multiple Data Stream,SIMD)指令,可以对此进行高速计算。

式(1.1)可视为两个矢量的点积,即(x0, x1, x2,…, xn)(w0, w1, w2,…, wn)。点积是计算机中使用的最基础的线性代数运算,仅仅是两个矢量中相关元素的乘积累加。矢量的集合是矩阵(也可称为一种张量,矩阵是二阶张量)。换句话说,如果矩阵和矩阵相乘,则可以高速处理矩阵和矢量的乘法,可以同时执行许多乘积累加运算。

图1.5 最简单的神经网络(左)和深度神经网络(右)

矩阵和矩阵的乘法及矩阵和矢量的乘法可以针对每个行和列并行计算,因此很适合多处理器并行处理。此外,在神经网络中,由于只有前一层的结果(神经元值)涉及特定神经元的计算,并且不依赖同一层的神经元计算,因此神经元值可以并行处理。

由此可见,AI芯片(这里指用于深度学习加速的芯片)的本质是“高速张量运算及并行处理”。神经网络处理单元主要就是由乘积累加模块、激活函数模块和汇集模块组成的。

1.2.3 深度学习如何进行预测

通过使用构造相对简单的深度神经网络(DNN),可以实现传统上用复杂逻辑才能实现的功能,如识别和预测等。这里举一个简单的例子,来说明深度学习如何进行预测。图1.6是一个正弦函数y=sin(Ax),参数A控制正弦波的频率。对于人类来说,一旦我们理解了正弦函数,就能知道它在任何参数A下的行为。如果我们得到一个部分正弦波,就可以弄清楚它应该是什么样的波,并且可以将波外推到无穷大。

图1.6 正弦波的预测

深度学习可以预测参数A未知的正弦波。这是一个时间序列预测问题。我们希望能在训练期间模型从未见过参数A的情况下,预测其未来的值。

正弦波通常通过泰勒级数展开等方法计算。但是如果创建一个对应表,就将立即获得一系列正弦波的值,给定一些与函数sin(Ax)匹配的数据点,就可以尝试预测未来的值。简单地说,神经网络的学习只是等同于制作图1.6的对应表。

图灵奖得主、贝叶斯网络之父朱迪亚·珀尔(Judea Pearl)在近年的一篇访谈[1]中直言:“当前的深度学习只不过是‘曲线拟合’(Curve Fitting)。这听起来像是亵渎……但从数学的角度,无论你操纵数据的手段有多高明,从中读出来多少信息,你做的仍旧只是拟合一条曲线罢了。”珀尔还指出,“当前的机器学习系统几乎完全以统计学或盲模型的方式运行,不能由此做出未来的高度智能机器。”他认为突破口在于因果革命,借鉴结构性的因果推理模型,能对自动化推理做出独特贡献。

1.2.4 提高性能和降低功耗

人类大脑大约有1000亿个神经元。在任何给定的时刻,单个神经元可以通过突触将指令传递给数以千计的其他神经元——即传递到神经元之间的空间中,而神经递质通过这个空间交换。大脑中有超过100万亿个突触介入神经元信号传导,在剪除大量连接的同时加强一些连接,使大脑能够以闪电般的速度识别模式、记住事实并执行其他学习任务。

图1.7是根据目前世界上主流超级计算机的性能绘出的计算机性能发展与人脑计算性能对比的示意图。一般来说,由于网络带宽等限制因素,超级计算机实际达到的性能(图中红线)要比理论值(图中蓝线)低;另外,超级计算机的耗电量极大,导致运行成本非常高。如果按照图1.7中曲线展示的趋势继续发展,说不定再过几十年,超级计算机在性能上确实可以达到人脑的性能(超过1 ZFLOPS,即每秒超过1021次浮点运算)。这说不定就是人们常说的“奇点”。

图1.7 超级计算机与人脑的计算性能对比

但是,如果按照目前的技术水平,超级计算机达到人脑性能需要耗费的电力将会是个天文数字,所以实际上是不可行的。在高性能芯片上工作的深度学习系统能效很低,运行功耗非常大。例如,如果为了完成计算密集型任务而并行使用多个GPU,功率很容易超过1000 W。人脑则通常不会完全执行详细的计算,而只是进行估算,功耗几乎不到20 W,这只是一般灯泡所需的功率。2016年,AlphaGo对战围棋九段高手李世石时,运行该AI程序的服务器功耗达1 MW,将近人脑的5万倍。

因此,对于AI芯片设计来说,节能是一个亟待解决的重大课题,这里涉及半导体器件、电路甚至半导体材料本身的问题。

另外,与其他应用不同,深度学习算法对网络带宽的需求也异常高。在目前一些超级计算机架构设计中,深度学习的运行速度非常慢,其原因是并行深度学习涉及大量参数同步,需要极大的网络带宽。如果网络带宽不足,那么在某些时候,添加到系统的计算机(或处理单元)越多,深度学习就越慢。因此,针对深度学习的新架构设计非常重要。

1.3 AI芯片的种类

过去,大部分AI模型的建立或算法的运算,都是在以CPU为核心的计算机里进行模拟的结果。

近些年来,正如摩尔定律所揭示的,业界通过在芯片上放置越来越多的晶体管使CPU实现更高的性能。然而,由于严格的功耗限制,片上时钟频率无法跟随这种上升趋势。使用多核处理器可以在不提高时钟频率的情况下提高计算性能。因此,从2005年开始,主流厂商转而采用多核处理器作为克服该问题的替代解决方案。但是很可惜,这种解决方案从长期来看可扩展性并不好。通过在芯片内部添加更多处理器核所实现的性能提升,是以各种快速增长的复杂性为代价的,如核与核之间的通信、内存一致性,还有最重要的功耗问题。

在早期的芯片工艺技术发展节点中,从一个节点到下一个节点允许的晶体管频率几乎加倍,并且可以通过降低电源电压,使功率密度几乎保持恒定。随着工艺技术进一步发展,虽然从一个节点到另一个节点的晶体管密度仍会增加,但它们的最大频率大致相同,并且电源电压不会相应地降低。结果,现在每个新技术节点的功率密度都在增加。因此,现在最大的挑战是降低单位平方毫米的功耗和热量耗散。

这种趋势很快就会限制内核数量的扩展,就像十多年前单个CPU核时钟频率被限制的情况那样。很多技术论文将这种情形表述为“暗硅”(Dark Silicon)效应——芯片在工作的时候,其中一部分区域必须保持断电以符合热量耗散约束条件。用一个简单的比喻来说,就好像房间里装了很多几百瓦的大灯泡,不能同时打开,只能让其中一部分点亮,如果同时打开,该房间的线路就会因高温被烧毁。解决此问题的一种方法是使用硬件加速器。硬件加速器可帮助处理器降低工作负载,提高总吞吐量并降低能耗。

现在的绝大多数AI芯片,就是这种硬件加速器。目前市场上第一批用于AI的芯片包括现成的CPU、GPU、FPGA和DSP,以及它们的各种组合。虽然英特尔(Intel)、谷歌(Google)、英伟达(NVIDIA)、高通(Qualcomm)和IBM等公司已经推出或正在开发新的芯片设计,但目前还很难说哪家一定会胜出。一般来说,总是需要至少一个CPU来控制系统,但是当数据流需要并行处理时,将需要各种类型的协处理器(即硬件加速器),这就是专用集成电路(Application Specific Integrated Circuit,ASIC)芯片。

CPU、GPU、FPGA及ASIC这4种芯片有不同的架构(见图1.8)。下面分别讨论这4种芯片。

图1.8 4种芯片的不同架构

1.CPU

AI算法(包括深度学习算法)可以在通用CPU上实现。由于CPU的普及和通用编程能力,神经网络技术在开始时期被大量推广和应用。一些关键的算法验证都是在CPU上完成的。

但是,CPU并不是实现神经网络的理想硬件。CPU以提供复杂的控制流而闻名,这对于更常规的、基于规则的计算可能是有益的,但对像使用数据驱动方法那样的神经网络却不是那么重要。神经网络的运行过程几乎不需要控制,因此在神经网络计算中,数据流是计算的主要部分,而不是控制流。

另外,对于AI算法的硬件实现和大规模应用来说,高吞吐量和低时延计算的需求在不断增长,而通用CPU是基于冯·诺依曼(Von Neumann)体系结构的处理器,存在不少结构限制;摩尔定律发展的放慢也意味着CPU的性能无法再得到快速改善。

2.GPU

GPU最初用于快速图形渲染,它适用于SIMD并行处理,能快速进行图形渲染相关的浮点密集型计算。GPU架构的发展非常迅速,从一开始的可重构GPU,发展到可编程的大规模并行协处理器,这使它非常适合AI这样需要高性能并行计算的场景。为了满足更快和更高精度AI的需求,人们正在继续推动越来越多并行GPU的开发。现在,具有超过1000个处理核和很大容量片上存储器的GPU,其功耗仅为几瓦。尽管如此,对一些终端应用来说,这样的能效还不够高。

另外,利用GPU来模拟类脑架构,如脉冲神经网络(Spiking Neural Network,SNN),也是一种选择。其中一种被称为GPU增强型神经网络(GPU-enhanced Neural Network,GeNN)的类脑网络,利用神经网络算法的并行特性提供仿真环境,可以通过基于代码生成的方法在英伟达通用GPU上执行。

为了帮助软件工程师更方便地开发并行软件,像CUDA这样的GPU专用编程系统也一直在不断完善,它可以运行数万个并发线程和数百个处理器核。但是从本身的架构来说,GPU的设计还存在一些缺陷。例如,很难快速地为GPU加载数据以使它们保持忙碌状态等。因此,很多人在继续研究新的GPU架构。无论如何,在模拟大型人工神经网络时,GPU还是发挥了非常大的作用。

3.FPGA

现场可编程门阵列(Field Programmable Gate Array,FPGA)是一种“可重构”芯片,具有模块化和规则化的架构,主要包含可编程逻辑模块、片上存储器及用于连接逻辑模块的可重构互连层次结构。此外,它还可能包含数字信号处理模块和嵌入式处理器核。从电路级设计来看,FPGA可以通过使用触发器来实现时序逻辑,通过使用查询表来实现组合逻辑。通过执行时序分析,可以插入流水线级以提高时钟频率。从系统级设计来看,FPGA可进行高级综合,可以将C语言转换为可综合的硬件描述语言(Hardware Description Language,HDL),以加速开发过程。

FPGA的优点是非常明显的。即使在被制造出来以后,FPGA都可以在运行之前和运行期间对硬件进行重构,这给硬件应用带来了极大的灵活性。因此在20世纪80年代末,赛灵思(Xilinx)公司在最初推出FPGA时就宣称,它是芯片业界的一场革命。

近年新发布的一些FPGA采用了嵌入式ARM内核的片上系统(System-on-a-Chip,SoC)设计方法。如今,具有约10亿个逻辑门复杂度和几兆字节(MB)内部静态随机存取存储器(Static Random-Access Memory,SRAM)的SoC设计可以用最先进的FPGA实现。它的时钟频率接近吉赫兹(GHz)范围,因此算力可以在几瓦的功耗下达到GFLOPS的数量级。因此,FPGA为并行实现人工神经网络提供了一个有吸引力的替代方案,具有灵活性高和上市时间短的优势。

开发FPGA和ASIC设计的时间基本相当,但FPGA的一大优势是不需要制造时间,在用有效的EDA工具电路综合之后,即可直接测试新设计。而且FPGA的并行化程度可以做得很高。但是,与ASIC相比,FPGA的缺点是速度更慢、面积更大、功耗更高。

未来,并行标准芯片(如多核CPU、GPU或FPGA)在市场驱动的开发和改进中具有成本效益高、容易获得等优势。它们具有最高的灵活性,不但可以用于深度学习加速器,而且可以用于本书第5章将介绍的类脑架构及其他类型的智能计算和仿生计算。

4.ASIC

ASIC是定制的专用AI芯片,可以在芯片架构和电路上进行优化,以满足特定的应用需求。无论从性能、能效、成本角度,还是算法的最佳实现方面,ASIC都是标准芯片无法比拟的。随着AI算法和应用技术的发展,ASIC逐渐展现出自己的优势,非常适合各种AI应用场景。现在大部分AI芯片的初创公司,都是以开发一种独特、新颖的ASIC为目标。

把AI算法“硬件化”,即用ASIC来实现,带来了高性能、低功耗等突出优点,但缺点也是十分明显的。ASIC芯片的开发需要很高的成本,一旦设计完毕,交由芯片代工厂流片(即制造芯片),首先需要支付一大笔一次性工程费用。这种费用一般不会低于1000万美元。这对中小型企业,尤其是初创公司来说,是一道很高的门槛。而AI又属于一个技术迭代速度很快的领域,现在几乎每隔几个月就会有新的算法和模型出现,这对于开发芯片的公司来说,意味着很大的商业风险。

ASIC芯片一旦开始批量生产,就无法再改动里面的硬件架构。万一市场对AI芯片功能的需求出现重大变化,或者研发成功了新的AI算法,那这款芯片就只能被淘汰而由芯片设计者继续开发新的芯片。有的公司为了及时使用新的算法,甚至需要中途从代工厂召回正在生产的ASIC芯片,以更新芯片设计。

为了避免这种风险,除了选用灵活性很高的FPGA来实现之外,还可以采用模块化设计方法,即形成一个IP核(知识产权核,Intellectual Property Core)的库,可以根据设计需要来选取。

目前比较前沿的研究是设计“可进化”芯片,它基本上接近通过芯片的“自学习”来提升芯片自身的性能。AI芯片的最终目标是能够“自学习”,即芯片能够自己学习“如何学习”;另外一个重要目标是做到智能机器之间(相当于AI芯片之间)的相互学习和协调,从而使智能机器自己得到更多的知识。这种“自学习”的性能,很可能随时间呈指数级提升,并将最终导致智能机器的智能水平超越人类。这条路虽然还很漫长,但是一些研究人员已经开始起步。

图1.9为不同种类的AI芯片及其计算范式。

图1.9 AI芯片的种类及其计算范式

1.3.1 深度学习加速器

FPGA、GPU和多核CPU处理器等并行标准芯片种类的日益丰富,为人工神经网络的实时应用提供了更大的选择范围。由于这些标准芯片价格低廉且可从市场上直接获得,采用它们实现神经网络计算比较容易起步。

深度神经网络本质上是并行的,因此很明显,使用多核处理器来实现深度神经网络是有吸引力的。“并行计算”这个概念让很多研究人员至少着迷了30年。过去一段时间,人们在并行计算领域付出的努力已经让市场看到了希望并聚集了不少投资。但截至目前,单处理器计算仍占上风。然而,通用计算正在向并行架构迈出不可逆转的步伐,因为单线程单处理器的性能无法再以过去那种速度提高。

具有高度并行性的神经网络的兴起,使人们对高性能并行计算的需求又一次被提上日程。真实世界的应用是并行的,硬件也可以做到并行,而缺少的是编程模型和支持这些不断发展的大规模并行计算体系结构的系统软件。此外,如何在多核架构的计算能力、存储器容量及内部和外部通信带宽之间取得平衡,目前尚无明确共识。

在并行超级计算机或计算机网络上模拟大型神经网络,把神经网络映射到多核架构方面,已经有了很多研究成果,各种技术被开发出来。多核处理器也可以嵌入机器人或智能手机这样的移动设备里。

如前文所述,深度学习算法中的大部分处理涉及矩阵乘法。GPU擅长矩阵和矩阵的乘法,以及矩阵和矢量的乘法。在GPU中,这些乘法被大量用于三维坐标的转换。GPU具有数百到数千个乘积累加的核,适用于张量处理。正是由于这个原因,英伟达的GPU以作为AI芯片而闻名。当然,使用配备DSP或SIMD指令的处理器也可以完成类似的处理,但很少有处理器能在核的数量及并行处理能力方面与GPU相当。

但是,由于GPU主要用于图形处理,因此它还包含张量处理之外的其他功能,这导致了高功耗。因此,业界已经开发出具有专用于张量处理功能的结构的ASIC芯片。基于几十年的技术积累,深度学习算法正在投入实际应用。为了达到更好的应用效果,需要有这种专用的AI芯片来加速处理深度学习,帮助多核CPU处理器加速运算。今后的趋势是把这类加速器和多核CPU处理器集成到同一块芯片中。

总之,虽然AI芯片的开发主流都是基于深度学习算法,但是深度学习本身也在不断改进和更新。从2009年开始,深度学习相关的论文数量每隔两年都会翻一番;2018年之后,每天约有100篇关于这方面新的算法和思路的技术论文发表。这说明深度学习仍然是一个重要的研究领域,有许多有前景的应用和各种芯片设计的创新机会。

1.3.2 类脑芯片

要让AI芯片达到更高的智能水平,非常重要的一点是要使神经网络的运作模式更像人类大脑。除了大学研究所之外,很多开发AI芯片的公司专门成立了“脑神经科学”部门(如被谷歌收购的DeepMind),以进一步研究人脑的思考过程,建立更科学、更符合生物特性、更细致的神经网络模型。

本书1.3.1节中讲到的深度学习加速器,就是在如何提高乘法计算和累加计算的性能上下功夫。为了贴近大脑的生物特性,AI芯片应该具有在模拟而非数字方面更准确地模拟人类大脑运作的功能。用这种方法开发的AI芯片被称为类脑芯片或者神经形态芯片。这种芯片基于新的芯片架构,关键组成部分包含脉冲神经元、低精度突触和可扩展的通信网络等。脉冲神经元的概念直接来源于哺乳动物大脑的生物模型,其基本思想是神经元不会在每个传播周期都被激活,只有在膜电位达到特定值时才会被激活。膜电位是与细胞膜上的电荷相关的神经元的内在参数。

这类芯片的特点是基本上没有时钟,它采用事件驱动型操作(如模仿人类大脑电脉冲的脉冲神经网络),因此它的功耗远低于那些基于DSP、SIMD和张量处理等处理方式的芯片。

在过去10年中,美国和欧洲的大型政府资助计划都聚焦于神经形态芯片的开发。这些芯片按照以生物学为基础的原理运行,以提高性能和能效。例如,有些项目直接把许多输入“硬”连接到各个电子神经元,而有些项目使用类似生物神经元之间发生的短异步尖脉冲电压进行通信。

每个神经元、突触和树突均可以采用数字或模拟电路来实现。但是实际上,新的类脑芯片通常仍以传统的数字电路实现。对于数字芯片,我们可以使用有效的EDA软件工具来实现快速、可靠和复杂的设计,也可以使用最先进的生产线来生产器件密度最高的芯片。

而模拟电路的设计需要更多的设计时间,且设计人员需要具备良好的晶体管物理理论知识和布局布线设计的熟练经验。另外,只有少数工艺线(如TI等拥有的)以模拟电路为主要产品,对模拟电路的工艺流程有足够的经验。

此外,也有一些研究人员已开始将一些新型半导体器件,如阻变存储器(Resistive Random Access Memory,RRAM)技术应用于脉冲神经网络,来实现实时分类。

大约自2018年起,深度学习加速器在性能上有了飞速发展,占领了主流市场(这导致目前大部分人讲到AI芯片就只指深度学习加速器),而类脑芯片在性能上与这些深度学习加速器拉大了距离。类脑芯片在截至本书成稿时还无法真正商用。

因此,有家初创公司想走一条捷径:试图仍然使用深度学习的基本框架来保持较高的计算性能,而把类脑芯片的一些优点结合进去,如使用脉冲来激活深度学习中的输入,这样也可以比一般的深度学习模型大大降低功耗。这种思路仍然是深度学习的思路,而并非是类脑芯片。

个别研究深度学习的权威专家甚至认定基于神经形态计算的类脑芯片方向走不通,不如继续沿着深度学习这个思路深入研究下去。然而,类脑芯片不光是学术界实验室的产物,在产业界也有很多团队仍然在积极研究。更重要的是,深度学习更多地被视为一种数学模型,而类脑芯片才更接近模拟大脑功能的实际特征,因此有着达到高能效的巨大潜力。英特尔等公司的研究结果表明,当正确准备好数据时,这种神经形态计算可能非常强大,这可能会为新型电子产品提供机会。

1.3.3 仿生芯片及其他智能芯片

自然计算和仿生计算都是随着计算机硬件和计算机科学的进步而发展起来的。这些计算范式和算法涵盖了非常广泛的领域,其中发展最快的要数现在用得最多、最广的人工神经网络,这也是芯片实现最成功的领域。因为神经网络已在前文单独叙述了,本节介绍自然计算与仿生计算时就不再赘述。

自然计算包含的范围很广,它不但包括对生物机制的模拟,还包括对大自然的物理(包括量子物理)、化学现象,及社会、文化、语言、情感等复杂自适应系统等的模拟,具有一定的智能机制。它被用来解决传统算法解决不了的问题,主要是在解决最优化问题上显示出强大的生命力和进一步发展的潜力。由于这类计算把大自然中有益的信息处理机制作为研究和模仿对象,也有人把这类算法称为“智能算法”。

自然计算的算法有退火算法、遗传算法、文化算法、蚁群算法、细胞神经网络、模糊算法、情感计算的算法、烟花算法等,也包含量子算法。这些算法可以用数字芯片或模拟芯片实现,很多是用FPGA实现,或者仅利用多核CPU进行模拟。而最近几年备受瞩目的量子计算,也有不少公司和大学研究所采用普通互补金属氧化物半导体(Complementary Metal Oxide Semiconductor,CMOS)硅基芯片,或硅光芯片来实现。现在,研究人员已经看到了用这样的芯片实现量子机器学习、量子AI计算的曙光。

仿生计算是对大自然生物机制的模拟,包含遗传计算、细胞自动机/细胞神经网络、免疫计算、DNA计算(又称分子计算)等。生物体的自适应优化现象不断给人以启示,尤其是生物体和生态系统自身的演进和进化可以使很多相当复杂的优化问题得到解决。仿生算法主要利用FPGA实现,因为仿生芯片需要支持运行期间的硬件动态重构,还要有一定的容错性和鲁棒性。仿生计算应该属于上述自然计算的范畴,但因为它对AI芯片的未来发展会有重大影响,所以在这里专门列出。

如前文所述,AI芯片的一个关键问题是“自学习”及“自进化”。这依靠什么来解决呢?如果我们关注一下仿生芯片的几大特点,就会有比较清楚的认识了。

(1)仿生芯片无须人工干预,通过自身在线进化,可以实现自动升级(不仅是软件升级,更主要是硬件升级)和自动设计。

(2)仿生芯片可以根据环境变化自适应调整硬件电路结构。随着芯片技术的进步,现在已经可以做到接近实时(10~15个时钟周期)的自适应速度,就是说像一条变色龙那样,到一个新环境,马上就“变色”(改变硬件电路)。

(3)仿生芯片可以自己修复错误。现在芯片的线宽已经达到7nm及以下,非常难以控制故障的出现。仿生芯片具备容错功能,能自动恢复系统功能。

(4)仿生芯片和深度学习加速器芯片结合,可以进一步提高运算速度,适应算法的不断更新。

业界把仿生芯片的这些特点,总结为“有机计算”的范式,也成立了专门的国际组织来讨论和交流这一领域的进展和趋势(见第12章)。

类似大脑架构和受自然界生物启发的自适应和模糊控制,投入实际使用已有20多年,但它们仍局限于仅面向某个功能,且对产品或服务的技术性能要求不高的应用。现在,随着AI芯片热潮的兴起,仿生芯片和其他智能芯片将会大有用武之地。仿生计算和其他智能计算的基本思路,既可以作为一种应用,用于AI芯片本身的扩展和完善,形成不同程度的“自学习”及“自进化”功能(如使用受量子物理启发的算法),又可以与目前的AI芯片结合起来,如应用仿生算法对DNN的架构进行神经架构搜索(Neural Architecture Search,NAS)及超参数优化,进一步提升深度学习的性能和能效。

1.3.4 基于忆阻器的芯片

20世纪80年代初兴起的CMOS电路及其工艺实现,是芯片技术发展的一个重大里程碑。直到今天,芯片实现的基础还是CMOS。除CMOS技术外,忆阻器(Memristor)也是深度学习加速器和类脑芯片的潜在硬件解决方案。“Memristor”一词是Memory和Resistor这两个英文单词的组合。忆阻器是新颖的两端元件,能够根据在其端子上施加的电压、电流来改变其电导率,最早是由美籍华人蔡少棠(Leon Chua)教授于1971年基于电路理论推理发现并证明的。蔡教授为找到电子学中除了电阻器、电感器、电容器之外的第4个基本电路元件而兴奋不已:当分别把电流、电压、电荷和磁通量画出4个区域时,其中3个区域可以对应电子学的3个基本电路元件——电阻器、电容器和电感器,剩下的一个区域对应一种非常独特的电子特性,但是当时只能从理论上证明会有这样一种基本电路元件存在(见图1.10)。

图1.10 4个基本的两端电路元件[2]

电阻器由电压v和电流i之间的关系定义;电感器由磁通量φ和电流i之间的关系定义;电容器由电荷q和电压v之间的关系定义;忆阻器则通过磁通量φ和电荷q之间的关系来定义。忆阻器的特性i/v方程可近似表示为

式中,iMR、vMR分别是忆阻器两端的电流和电压降;G(w,vMR)是随施加电压变化的电导(假设电压或磁通量受控制)的元件模型;w是物理特征参数,其变化通常由所施加电压的非线性函数fMR决定。

直到2008年,惠普公司的斯坦利·威廉(Stanley Williams)等人第一次在实验室里将用二氧化钛(TiO2)制成的纳米元件夹在两个铂电极之间(Pt-TiO2-x-Pt),做出了世界上第一个基于TiO2薄膜的基本元件,即忆阻器。从那时起,研究人员已经发现并提出了许多纳米级的电阻材料和结构,最典型的是基于氧化还原的阻变存储器。

图1.11 忆阻器由纵横交叉棒组成的交叉开关阵列来实现

从图1.11可以看到,忆阻器本身就像一个矩阵排列,两根交叉棒(Crossbar)的交叉点(Cross Point,又称交叉开关)就是可变电导与电压的相乘,而利用把这些交叉开关连起来的电流,就可以实现累加。具体来说,以电阻的电导为权重,电压为输入,电流为输出,来进行乘法运算;通过将不同忆阻器的电流相加来完成加法。这是根据基尔霍夫电流定律而来的,比用数字电路来实现乘积累加简单、直接得多。

乘积累加操作可以通过将忆阻器这样的可编程阻变元件直接集成到非易失性高密度存储芯片中来实现。处理单元被嵌入存储器中,可减少数据移动。而在与动态随机存取存储器(Dynamic Random-Access Memory,DRAM)密度相当的情况下,将存储器与处理单元集成在一起,可使芯片密度大大提高,并可大大节省存取时间,从而降低功耗。这就是存内计算(Processing In Memory,PIM)[1]技术,又称为存算一体化。目前比较热门的新型非易失性存储器(Nonvolatile Memory,NVM)包括相变存储器(Phase ChangeMemory,PCM)、阻变存储器(RRAM或ReRAM)、导电桥RAM(Conductive Bridging Random Access Memory,CBRAM)和自旋转移力矩磁性RAM(STT-MRAM或STTRAM,是几种已知的磁性RAM技术之一)等。这些器件在耐久性(即可写入多少次)、保留时间、写入电流、密度(即单元尺寸)、不一致性和速度方面各有不同的特点。

忆阻器的阵列结构最适合进行点积乘法和累加运算,而这类运算占深度学习算法中的绝大部分。由忆阻器组成的芯片因为不使用或很少使用有源器件,从而可以使芯片的功耗大大降低。对于AI芯片来说,这提供了使用数字模拟混合信号电路设计和先进PIM技术来提高效率的机会。当然,所有这些技术也应该结合起来考虑,同时要仔细了解它们之间的相互作用并寻找硬件和算法协同优化的机会。

忆阻器除了适合大规模乘积累加运算外,它的结构也与基于脑神经元的类脑结构十分吻合。因此,用大量忆阻器阵列来组成类脑芯片,会有非常诱人的前景,也有各种硬件设计的创新机会。例如,把忆阻器做成可重构电路;把忆阻器做成多端口晶体管,以进一步模仿神经元中的多个突触;或者做成混沌电路后,利用混沌电路的非线性特性来模仿大脑行为等,这些新的想法正在引起研究人员的广泛兴趣(见图1.12)。

图1.12 忆阻器的主要应用

虽然现在已有很多研究团队制作出了第一代含有忆阻器的AI芯片(基于RRAM),但是目前还处于在实验室进行小批量试用的阶段。有的实现了模拟RRAM,有的则实现了数模混合RRAM存内计算。但是,工艺不一致性、电路噪声、保持时间和耐久性问题等现实挑战,仍然阻碍着基于RRAM的AI芯片的商业化。而模拟矩阵乘法面临的精度低、器件不一致性高和模数转换功耗大等问题,还亟待解决。

1.4 AI芯片的研发概况

AI芯片的研发热潮,主要集中在ASIC芯片领域。除了各大公司及不断出现的初创公司积极投入之外,大学和研究机构也起到了关键的作用,有的已经有十多年甚至更长时间的技术积累。目前引人注目的来自大公司的ASIC芯片,以谷歌的张量处理单元(Tensor Processing Unit,TPU)系列为代表。高通在2019年4月发布的Cloud AI 100系列,也是AI芯片性能的一次飞跃。但是,“爆炸式”出现的很多初创AI芯片公司,在技术层面也绝不落后于大公司。

表1.1列出了ASIC芯片与一些CPU、GPU和FPGA的参数对比。在“训练”和“推理”两栏中,CPU的能效和速度为基数,其他都是与CPU相比较的倍数。FPGA因为很少用于训练,因此其训练能效和速度没有数据。ASIC芯片主要是指深度学习AI芯片,虽然与原来的CPU和GPU相比已经有了巨大进步,但性能和能效方面还有巨大的提升空间。

表1.1 ASIC芯片与CPU、GPU和FPGA的参数对比

然而,要确定CPU、GPU、FPGA和ASIC究竟哪一种才是最佳解决方案并非易事,因为这取决于AI应用类型和范围、设计约束及所要求的上市时间等。如果上市及应用时间紧,那就只能选择GPU或嵌入式GPU。FPGA的上市时间相对ASIC也较短,设计流程简单,也常用作设计ASIC之前的原型。另外,用于云端和边缘侧的芯片要求完全不同,云端服务器里的AI芯片需要很大的吞吐量和灵活性,而边缘侧物联网则需要功耗极低、面积很小的AI芯片。

AI芯片要实现大规模商业化,需要保证芯片能够在极低的功耗和成本条件下达到足够高的性能,能够满足新的AI模型和算法的运算需求。虽然目前的硅基AI芯片只能算是非常初级的尝试,离生物大脑的性能或能效还有很长的路要走,但是已经形成了很好的发展势头。

虽然深度学习加速器近年来已成为主流的AI芯片类型,但是“AI”不等于“深度学习”。AI是一个包含广泛方法的领域,其目标是创建具有智能的机器,而深度学习本身作为AI的一个子领域,是机器学习领域里众多方法中的一种。

表1.2列出了AI芯片研发和产业化概况(截至2020年9月)。基于深度学习模型的加速器已经相对比较成熟,有的已经得到批量应用;而基于其他算法,包括在原来深度学习模型上进行了大量改动的新模型和新算法的AI芯片,大部分还处于实验室研发阶段。接近大脑机制的类脑芯片,最近几年有了很大的进展。量子启发模型比较特殊,已经成功做成了样片,预计在2020~2022年上市。总的来说,如果我们把AI芯片目前的状况与英特尔x86时代进行类比,可以说我们现在正处于AI芯片的“286阶段”,或者说AI芯片刚处于AI 1.0时代;而以存内计算、模拟计算和新型存储器(如NVM)为代表的AI 2.0时代将会在未来几年到来。

表1.2 AI芯片研发和产业化概况(截至2020年9月)

1.5 小结

世界上第一块半导体芯片的发明,不但催生了一个巨大的半导体芯片产业以及以此为核心的电子信息产业,而且改变了地球上亿万人的生活和工作方式。如今AI浪潮的兴起,又把半导体芯片推到了风口浪尖:基于AI算法运行的芯片(即AI芯片),已经成为最有发展前景、最有可能改变世界的高科技之一。

以深度学习算法为主发展起来的深度学习AI芯片(深度学习加速器),已经形成了具有一定规模的产业,也已经在许多领域得到了部署和应用。作为AI芯片另一个类别的基于神经形态计算的类脑芯片,近年来也取得了非常令人鼓舞的进展。除了这两种芯片之外,根据许多新颖的AI算法实现的各种AI芯片,也正在得到世界各地实验室的积极研发。

要做出高性能、高能效并且可以覆盖较大应用范围、解决实际问题的AI芯片,既需要实践中的突破,也需要理论上的创新。最好的例子是新型元件忆阻器的研发过程:从1971年的理论创新,到2008年的实践突破,再到2018年成功用于深度学习AI芯片。这个过程说明了理论(尤其是基础理论)指导的重要性,也说明了这些理论研究最后被应用到芯片中之前,还需要先在电路、元器件、材料等工程实践领域有所突破。

第2章 执行“训练”和“推理”的AI 芯片

虽然AI这个名词早在1956年于达特茅斯(Dartmouth)举行的一次历史性会议上就被提出了,但是直到最近10年,我们才逐渐开始对它的功能和应用有了实质性的了解。现在人们普遍认为,AI可以执行通常通过人类认知才能执行的任务,如识别图像、语音,预测因不确定性而模糊的结果,以及做出复杂的决定等。

虽然在二十世纪八九十年代人们已经用半导体芯片实现了一些神经网络算法、仿生算法和其他一些智能算法,但是大部分仅仅停留在实验室阶段。最近10年左右的时间改变了一切:AI芯片从实验室的试验走向了产业发展。这要归功于“深度学习”算法及半导体芯片技术的进步。

虽然还有不少人继续研发基于类脑算法或自然算法等其他类型的AI芯片,但是目前真正实现产业化并得到大量应用的AI芯片,仍然是作为深度学习加速器的AI芯片。

2.1 深度学习算法成为目前的主流

芯片计算能力的巨大提升及大数据的出现,使得神经网络中具有更高复杂性的“深度学习”(即深度神经网络,DNN)又一次得到人们的广泛关注。辛顿等人2006年提出了“深度信念网络”这个概念,有力推动了深度学习算法的应用。与其他传统机器学习方法相比,深度学习有着明显的优势。

图2.1为传统机器学习算法与大型DNN在图像、语音识别领域的精度比较。深度学习比传统方法更具吸引力,除了算法本身的优势,主要还是由于数据量和芯片计算能力的不断提高,这导致了近年来深度学习技术的“寒武纪大爆发”。

深度学习的实质是构建具有很多层的神经网络模型(保证模型的深度)和使用大量的训练数据,让机器去学习重要的特征,最终使分类或预测达到很高的准确性。深度学习基于感知器的模型,模仿人脑的机制和神经元的信号处理模式,可以让计算机自行分析数据,找出特征值。

图2.1 传统机器学习算法与大型DNN在图像、语音识别领域的精度比较

为了加速深度学习计算,更多地开发硬件是很自然的想法。半导体制造商开发出了一些AI芯片(深度学习加速协处理器)来处理深度学习。深度学习有各种各样的模型。例如,目前谷歌数据中心普遍使用以下3种DNN。

(1)多层感知器(Multilayer Perceptron,MLP)。MLP的每个后续层是一组非线性函数,它们来自先前层所有输出(全连接)的权重和。

(2)卷积神经网络(CNN)。在CNN中,每个后续层是一组非线性函数,它们来自先前层空间附近输出子集的权重和。权重在空间上复用。

(3)循环神经网络(Recurrent Neural Network,RNN)。RNN的每个后续层是权重、输出和前一状态的非线性函数的集合。最受欢迎的RNN是长短时记忆(Long Short-Term Memory,LSTM),其妙处在于能够自主决定忘记哪些状态及将哪些状态传递到下一层。权重在时间上复用。

与传统人工神经网络相比,深度学习架构的一个优点是深度学习技术可以从原始数据中学习隐藏特征。每层根据前一层的输出训练一组特征,组成特征分层结构。将前一层特征重新组合的最内层,可以识别更复杂的特征。例如,在人脸识别模型的场景中,作为像素矢量的人头像的原始图像数据被馈送到其输入层中的模型。然后,每个隐藏层可以从前一层的输出中学习更多抽象特征。例如,第一层(隐藏层)识别线条和边缘;第二层识别面部,如鼻子、眼睛等;第三层组合所有先前的特征,从而生成一个人脸图像。

DNN成功的原因之一是它能够在连续的非线性层上学习更高级别的特征表示。近年来,构建更深层网络这方面的硬件和学习技术的进展,进一步提高了分类性能。ImageNet挑战赛体现了更深层网络的趋势,该赛事在不同年度出现的最先进的方法已经从8层(AlexNet)发展到19层(VGGNet),进而发展到152层(ResNet)及101层(ResNext),如图2.2所示。然而,向更深层网络的发展极大地增加了前馈推理的时延和功耗。例如,在Titan X GPU上将VGGNet与AlexNet进行比较的实验显示,前者的运行时间和功耗增加了20倍,但误差率降低了约4%。DNN模型的规模正在呈指数级增长,基本上每年增加10倍(见图2.3)。近年出现的几个大型网络模型都是针对自然语言处理,如Megatron是一种48层并行Transformer模型,它的参数数量达83亿个,约为ResNet50的325倍。Open AI在2020年6月发布了GPT-3,这是迄今为止训练的最大模型,具有1750亿个参数。

早期的DNN模型,如AlexNet和VGGNet,现在被认为太大型且过度参数化。后来提出的技术,在使用更深但更窄的网络结构来限制DNN大小(如GoogleNet和ResNet)的同时,追求更高的准确性。这个任务在继续进行,其关键是大幅减少计算量及降低存储成本,特别是乘积累加和权重的数量。后来又出现了卷积核(又称过滤器,Filter)分解之类的技术,在构建针对移动设备的紧凑型DNN(如SqueezeNet和MobileNet)场景中流行。这种演变导致了更多样化的DNN,其形状和大小各不相同。

图2.2 DNN的层数与分类精度的关系

图2.3 DNN模型的规模正在呈指数级增长

然而,现在所提出的对深度学习的改进大都是基于经验评估,仍然没有具体的理论分析基础来回答为什么深度技术优于传统神经网络。而且,关于隐藏层的数量,DNN和传统神经网络之间并没有明确的边界。通常,具有两个或更多个隐藏层,且具备最新训练算法的神经网络就可以被认为是深度学习模型。但是,只具有一个隐藏层的RNN也被归为深度学习,因为它们在隐藏层的单元上具有循环功能,这可以等效为DNN。

2.1.1 深度学习的优势与不足

深度学习最近在各种应用领域中取得了巨大的成功。然而,深度学习的高精度是以对计算和内存的高要求为代价的,尤其训练深度学习模型非常耗时,而且计算量大,这是因为需要在多个时间段内迭代地修改数百万个参数。高精度和高资源消耗是深度学习的特征。

深度学习技术发展到今天,人们已经在最初定义的DNN,即加很多隐藏层的神经网络基础上,开发了很多改进技术,使深度学习在资源消耗及性能方面都有了很大改进。这些改进有的是在算法上作些改动,如剪枝、压缩、二值或多值逻辑、稀疏网络等;有的是网络架构上的改动,如图神经网络(Graph Neural Network,GNN[3],不进行张量运算而改用图形的节点和边来计算)、胶囊网络(Capsule Network)[4]、深度森林(Deep Forest[5],基于决策树方法,超参数少,显示出无须反向传播即可构建深度模型的可能性)等。

深度学习算法虽然已被大量实现为芯片并得到应用,但是很多人认为这种算法不可能一直延续下去,一定会有更好的算法来取代它。

确实,DNN是一种统计方法,本质上是不精确的,它需要大数据(即加标记的大型数据集)的支撑,而这是许多用户缺乏的。DNN也比较脆弱,并不是一种十分稳固的结构:模式匹配在数据集不完整的时候,会返回十分奇怪的结果;而在数据集损坏时,则会返回误导的结果。因此,DNN的分类精度在很大程度上取决于数据集的质量和大小。另一个主要问题是数据不平衡的情况:某个类别的数据在训练数据中可能只有很少的代表,如信用卡欺诈检测中真正的申请通常远远超过欺诈的申请,这样的不平衡就会给分类精度带来问题。

DNN模型最本质的问题是没有与生物大脑的学习模式相匹配:大脑神经元的激活过程是不是存在“反向传播”,还是一个有争议的问题。生物大脑和DNN存在明显的物理差异。因此,从这个意义上说,深度学习算法并没有真正“仿脑”,也不是真正意义上的“学习”,而只是一个数学模型。

从AI芯片的研究方向来看,有不少研究人员主要致力于如何最大限度地提高数学运算的性能,同时满足商用硬件(目前都是冯·诺依曼架构)的局限性。这样的芯片设计,已经与深度学习模型本身没有太多关系了。

2.1.2 监督学习与无监督学习

AI算法最初的应用之一是模式识别,也就是如何从采样数据中找到模式的问题,它有助于理解数据甚至产生新知识。为了实现这个目标,研究人员提出了一些学习算法来执行自动数据处理。如果算法被设计为与环境互动,在环境中执行某些操作,使一些累积“奖励”得到最大,则这种方式称为强化学习(Reinforcement Learning)。强化学习算法根据输出结果(决策)的优劣来训练自己,通过大量经验训练优化后的算法将能够给出较好的预测。然而,如果我们忽略累积奖励,仅仅考虑是否提供标签,那么学习算法可以分为3类:监督学习、无监督学习和半监督学习。

(1)监督学习是基于观察数据的有限子集(称为训练集)来学习关于数据所有可能轨迹的函数。此类训练集还与附加信息相关联以指示其目标值。学习算法定义了一个函数,该函数将训练数据映射到目标值。如果目标值的数量是有限的,则这种问题被定义为分类问题;如果目标值的数量是无限的,则此问题被定义为回归问题。目前已经有许多有监督的机器学习算法,如决策树、朴素贝叶斯、随机森林、支持向量机(Support Vector Machine,SVM)等。神经网络是一种以生物神经系统为模型的机器学习方法,其中CNN、RNN及LSTM等都属于监督学习。

(2)无监督学习是一种用于从没有标记的数据集中进行推理的学习算法,其目标基本上是在数据中找到结构或群集。一种常见的方法是聚类技术,用于进行数据分析以从一组数据中找到隐藏的模式。自组织映射(Self-Organizing Map,SOM)、自动编码器(Auto-Encoder,AE)、受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)等都属于无监督学习。无监督学习的一个主要挑战是如何定义两个特征或输入数据之间的相似性;另一个挑战是不同的算法可能导致不同的结果,这需要专家再来分析它们。

(3)半监督学习与监督学习具有相同的目标。如果既有一些未知的模式也有一些已知的模式,我们通常将前者称为未标记数据,后者称为标记数据。当设计者获得的标记数据很受限时,就使用半监督学习。例如,群集边界可以用未标记数据来定义,而群集则用少量标记数据来标记。强化学习就是一种半监督学习。

现在所设计并已投入应用的深度学习加速器,主要使用监督学习。图2.4为监督学习过程,包括训练和推理两个阶段:在设计阶段进行训练,在部署阶段进行推理。

图2.4 监督学习过程

训练过程(又称学习过程)是基于训练数据生成模型,确定网络中权重(和偏差)的值,一般需要较长时间,所以是“离线”完成;但在有些特殊应用中也会“在线”进行。在训练过程中需要调整神经网络权重以使损失函数最小,可通过反向传播来执行训练以更新每层中的权重。矩阵乘法和卷积在反向传播中保持不变,主要区别在于它们分别对转置后的权重矩阵和旋转的卷积核执行运算。

推理过程(又称评估过程)是使用未知的、模型此前没有测试过的数据来评估模型的准确性,训练所确定的权重就可用来计算,为给定的输入进行分类或得出预测,一般“在线”进行,以达到实时需求。该模型假设训练样本的分布与推理例子的分布相同。这要求训练样本必须足以代表推理数据。推理过程中只有正向传播而没有反向传播。

这种训练和推理相当于人类大脑学习和判断的过程。通常,需要花很长时间来学习(即训练),而学会之后进行判断(即推理)的时间,只需要一刹那就行了。

图2.5为图像分类的一个例子。预定义的一组图像类别先经过训练,推理平台通过深度学习算法给出不同的可信度分数。在经过推理得出的目标图像中,狗的概率最大。早在2012年就有过这种图像分类的大型试验,训练集包含100多万张图片,每张图片都加有类别标签(共有1000个种类)。当时,该试验使用了大量GPU芯片来完成。

图2.5 图像分类的一个例子

强化学习算法也可以用于训练权重。在给定的环境下,网络可以输出智能体应该采取的动作,使预期奖励最大。但这种奖励需要通过一系列的动作才可获得。

2.1.3 AI芯片用于云端与边缘侧

深度学习的应用开发可分成云端与边缘侧两大部分。云端指的是数据中心或超级计算机,具有强大的计算能力,利用海量的数据和庞大而复杂的DNN进行模型训练,也可以进行推理。边缘侧指的是数据中心外的设备,如自动驾驶汽车、机器人、智能手机、无人机或物联网(Internet of Things,IoT)设备,它们用训练好的模型进行推理。

随着云计算技术的成熟,大量数据可以放到云端来计算,从而降低边缘侧的数据负载并减少计算能力需求。这样就形成了两种不同要求的AI芯片,一种用于云端,具有最大的计算能力和最高的性能,主要对深度学习算法模型进行训练,有时也进行推理。训练通常需要大数据,由于需要很多次权重更新迭代,因此需要大量的计算资源。在许多情况下,训练DNN模型仍需要几小时到几天,因此通常在云端执行。另一种AI芯片则用于数量庞大的边缘侧设备(含各种终端),它们的计算性能有限,主要使用从云端传来的训练好的模型和数据进行推理。

训练和推理的要求不一样。训练要求高精度、高吞吐量(高性能),推理则不需要很高的精度。边缘侧设备不但受到计算能力和存储器成本的限制,而且对功耗要求非常高,这是因为边缘侧的很多终端是使用电池的。图2.6显示了不同AI芯片的耗电情况。从图2.6中可以看出,目前AI芯片(不论是用于云端还是边缘侧的AI芯片)的功耗还是很高的,具有内置DSP和片上存储器的FPGA更节能,但它们通常更昂贵。

图2.6 各种AI芯片的功耗

一般来说,衡量一个AI芯片数字计算效率的指标是每单位功率或每单位芯片面积每秒执行的操作数,常用单位为TOPS/W或TOPS/mm2,这里TOPS(Tera Operations per Second)表示每秒万亿次操作,有时也使用TFLOPS(Tera Floating-point Operations per Second),指每秒万亿次浮点操作。由于一个AI系统往往是由很多个AI芯片组成的,因此在设计一个AI系统时,除了考虑AI芯片自身的功耗,还需要考虑AI芯片之间通信所产生的功耗。

GPU支持多TFLOPS的吞吐量和大内存访问,但能耗很高,因此GPU适合大型CNN。从性能角度来说,FPGA和ASIC基本在一个等级上,GPU要比它们高一个数量级,而CPU则比FPGA和ASIC低一个数量级。然而,由于各家公司的激烈竞争,若干年之后,AI芯片的性能和功耗可能会出现另外一种景象。

1.云端AI芯片

对于在云端用于训练和推理的AI芯片来说,最主要的指标是AI芯片的吞吐量。要达到尽可能高的吞吐量,最大的任务就是将大量的AI处理单元(PE)放置到单块芯片中。因此,云端AI芯片一般都使用最先进的半导体芯片工艺(如7nm)来制造,芯片中集成的晶体管数量也不断创纪录,而使用的芯片面积约为800 mm2,几乎达到了目前芯片制造能力的极限。

然而,提高吞吐量带来的更严重的问题是功率密度和热量耗散问题。功率密度增加带来的暗硅效应问题(见第1章),已经成为云端AI芯片继续发展最主要的瓶颈。为了降低高密度晶体管集成造成的高温,云端AI芯片也必须采用复杂的散热方法,如谷歌的TPUv3就采用了液体散热。

因此,由于暗硅效应的影响,AI处理单元的数量不能一直增加下去。目前,在一些主要的云端AI芯片设计中,已经把一大部分受暗硅效应影响的芯片面积腾出来,即不放置AI处理单元,而放置一些功耗相对低得多的电路,从而减弱暗硅效应的影响。图2.7展示了芯片上用作处理单元的逻辑电路所占面积比例随工艺进步不断减小的趋势(该图为示意图,不一定代表实际比例或实际值)。

图2.7 芯片上用作处理单元的逻辑电路所占面积比例随工艺进步不断减小的趋势

从目前已投入应用的产品来看,云端AI芯片的吞吐量可以达到100~500 TOPS,而功耗基本上都集中在10~300 W范围内,300 W是基于PCI的加速卡的上限。在这个功率范围内,能效可能会因架构、精度和工作负载(训练与推理)等各种因素而异,一般都在1 TOPS/W以下(但目前已有几种推理解决方案和一些训练解决方案声称能效大于1 TOPS/W)。目前的产品必须至少使用功耗为100 W的处理器或加速器来进行训练,低于100 W的都是仅用于推理。

另外,训练需要浮点运算,因此AI芯片是否支持浮点运算也是区分训练和推理的标准。训练和推理所采用的芯片架构也是不一样的。

英伟达的GPU曾经在云端AI芯片领域一枝独秀,但是后来有一些厂家和初创公司的芯片也开始被很多数据中心所采用。不过,英伟达的GPU也在不断提升性能。在2017年发布V100 GPU(一款Volta架构GPU)之后,英伟达的GPU被视为由AI部分和传统GPU部分组成。该公司最新推出的基于7nm工艺的A100 GPU,在AI应用上的性能有了新的飞跃,表明在近年内其霸主地位还很难被打破。

云计算巨头谷歌为了应对神经网络应用不断增加的算力需求,开发了自己的ASIC——TPU。最早的TPUv1只用于推理,且只支持整数运算;但TPUv2和TPUv3不仅能够用于推理,也都能够用于训练。谷歌在2017年发布报告称,在其数据中心中,TPUv2运行普通神经网络的速度比现代CPU或GPU快15~30倍,并且能效提升了30~80倍。最新露面的TPUv4的性能据称要比TPUv3提升2.7倍。特别是谷歌在关键矩阵乘法单元使用“脉动式”设计,可以让数据在处理器之间流动而不必每次都返回到存储器。

Graphcore在2018年推出了IPU芯片,最近又推出第二代IPU处理器GC200。GC200 IPU拥有594亿个晶体管,采用台积电7nm工艺制造,是目前世界上包含晶体管数量最多的AI芯片。每个IPU具有1472个强大的处理器内核,可运行近9000个独立的并行程序线程。它使用了该公司独特的“处理器内嵌存储器”(In-Processor-Memory)技术,而不是存内计算,吞吐量达到250 TFLOPS。

TPUv3、A100 GPU和IPU芯片的吞吐量分布在100~320 TFLOPS范围。虽然都用于云端AI计算,但是这些芯片的架构和电路设计截然不同。本书第4章将会介绍一些比较著名的云端AI芯片,其中包括初创公司Cerebras的晶圆级“大芯片”。

除了上述几家公司外,近年来其他公司也已研发出不少云端AI芯片,其中包括寒武纪思元270、阿里巴巴含光800、华为昇腾910等。

随着训练数据集和神经网络规模的增加,单个深度学习加速器不再能够支持大型DNN的训练,不可避免地需要部署许多个加速器(组成群集)来训练DNN。在这种情况下,需要着重优化加速器之间的通信方式,减少总的通信流量,以提高系统性能和能效。

2.边缘侧AI芯片

在这几年兴起的自研AI芯片热潮中,有的公司开发的芯片用于云端,但更多的是用于边缘侧。这里也包含了AI专用IP核的开发,这些核可以被嵌入SoC里面。例如,苹果智能手机里最大的应用处理器(Application Processor,AP)芯片就是一块带有AI核的SoC。这类SoC的性能一般可以达到5~10 TOPS。

不只自动驾驶汽车芯片,降低功耗、减小芯片面积是目前几乎所有AI芯片需要解决的重要课题,特别在边缘侧。例如,对于AI芯片需求极大的自动驾驶汽车来说,英伟达Xavier的性能可达30 TOPS,但价格昂贵且功耗高达30 W。而理想情况下自动驾驶汽车中的AI芯片功耗应该为1~2 W或更低。因此,这种类型的芯片正成为人们开发新型AI芯片的竞争焦点之一,汽车制造商们也正在期待着这样的低功耗、高性能芯片出现。

对于智能物联网(AI Internet of Things,AIoT)来说,在保持芯片一定性能(如1 TOPS左右)、高精度的情况下,功耗达到100mW以下是基本要求。但是,某些需要几年甚至10年才能换一次电池的应用则需要AI芯片能够具备“自供电”(见本书第14章)及“永远在线”的功能,这就需要AI芯片的功耗非常低,甚至达到微瓦(μW)范围。目前,已经有不少研究人员在研发这类芯片。

在降低功耗和提高性能方面,AI芯片的算法和架构还大有潜力可挖。本书第3章将着重介绍量化、压缩、二值和三值神经网络等技术,以及AI芯片电路实现上出现的一些新技术;本书后续几章也将介绍很多新的计算范式和半导体器件等,其中包括用新型NVM实现存内计算的AI芯片。这种芯片的研发从2018年以来已经取得很大进展,很有可能在不久的未来实现产业化并广泛用作边缘侧AI芯片。研发这些新方法和新器件的主要目的,就是为了降低芯片功耗及进一步提高性能。

另外一个需要考虑的方面是时延问题。与离线训练不同,无论是在自动驾驶汽车还是互联网应用中,推理期间的快速响应都至关重要。许多应用都希望在传感器附近进行DNN推理处理,如估测商店中的等待时间或预测交通模式,都期望从图像传感器(而不是云端的视频)中提取有意义的信息并直接进行处理。这样可以降低通信成本、减少时延。

即使在云端进行训练或推理,时延也是最重要的考虑因素之一,但传统的GPU设计并不关心时延。谷歌的TPU在这方面作了很大改进。为了保证低时延,设计人员简化了硬件并省略了一些会使现代处理器忙碌及需要更多功率的常见功能。

从长远来看,云端和边缘侧的AI计算所要实现的目标是不一样的,如图2.8所示。它们各自需要的AI芯片特性有很大的不同,将会走上不同的演进路径。基于云端的强大运算能力,AI芯片最终可能实现自学习,从而超越人类智能。云端的AI可以完成一些“大事”,如发现人类未知的科学知识、解决社会问题等;而边缘侧的AI计算主要作为人类助手,取代人类所做的工作,并逐渐起到代替人类感官的作用。目前的AI只是取代了人类一些重复性的工作,但是未来将会取代人类创造性的工作。目前边缘侧的AI计算主要完成推理,但是在未来,将会把训练和推理交织在一起完成。

图2.8 云端和边缘侧AI计算的不同目标

2.1.4 把AI计算从云端迁移到边缘侧

目前在AI应用中,DNN模型不一定在边缘侧进行充分训练或推理,而是通过以云端与边缘侧设备协调的方式工作。有一些号称具有AI功能的边缘侧设备(如大部分可穿戴设备),不但训练在云端完成,推理也在云端完成,边缘侧设备仅是嵌入一个收发器和简单的处理器而已。但是,不管边缘侧设备是否具备推理功能,都需要有先进的联网解决方案,以便在不同的边缘节点之间有效地共享计算结果和数据。

对于5G网络来说,超高可靠低时延通信(Ultra-Reliable and Low Latency Communication,URLLC)功能已被定义用于要求低时延和高可靠性的关键任务应用场景。因此,将5G URLLC功能与边缘侧AI计算相集成,将会很有希望提供高可靠性、低时延服务。此外,5G将采用软件定义的网络和网络功能虚拟化等先进技术,这将实现对网络资源的灵活控制,以支持计算密集型AI应用跨不同边缘侧节点的按需互联。因此,5G和AI将在很多应用中密不可分。

然而,不久的未来,绝大部分边缘侧设备都会带有推理功能。而较长远的趋势是DNN模型训练和推理全部都由边缘侧设备完成(可能借助边缘服务器或个人云的帮助),不再需要使用5G或其他无线通信网络。这就需要大大提高边缘侧AI芯片的性能,以便进一步做到“实时”运算,不需要把私人数据传到云端并在云端远程训练,而在本地解决所有计算(见图2.8)。

2.1.4.1 为什么要在边缘侧部署AI

尽管5G移动通信的URLLC可以达到低时延(1 ms)传输,但是对于自动驾驶汽车、无人机导航和机器人技术等应用,依赖云端远程数据传输的时延和安全风险还是太高,因此需要本地处理,以尽可能提高安全性和可靠性,减小决策失误的风险,确保安全。例如,自动驾驶场景中的AI芯片如果能够自己对周边情况进行实时计算和分析,就不用通过移动通信网络把大量数据再传输到云端了。

图2.9展示了不同的应用对于带宽和时延的要求。例如对自动驾驶来说,它的实时性要求是非常高的。对边缘侧终端设备来说,实时性、安全和隐私是非常重要的。对于推理过程,边缘侧AI计算具有更小的时延和更低的通信依赖性,而且在保护用户隐私方面具有特别优势。另外,边缘侧设备的市场规模远大于云端数据中心,在经济回报方面有很强的吸引力。目前,用于制定决策的一些数据可以在本地(边缘侧)处理,而计算量大的只能通过(云端)数据中心处理,但两边实施的比例将可能会发生很大变化。云端的技术正在渗透到边缘侧。从长远来看,随着边缘侧芯片计算能力的大幅提高,传统大型数据中心会被大量关闭。

图2.9 不同的应用对带宽和时延的要求[6]

从长远来看,AI芯片将大量出现在各种形式的“虚拟分身”里面。一个虚拟分身包含一个相关数据的集合(数据库)和基于人工智能的分析能力,以数字形式复制某个人,且一个虚拟分身只对应和代表某一个人。未来,每个人都将可能随时拥有一个虚拟分身,这个分身可以连接到个人云或企业云(见图2.10及图2.11)。

图2.10 未来每个人都将可能拥有一个虚拟分身

图2.11 AI计算从云端迁移到边缘侧

虚拟分身会学习这个人与数字世界交流时产生的所有数据,范围从计算机、网站、可穿戴设备到居家环境中的传感器(如摄像头、智能音箱、空调恒温器、移动通信基站)等。随着计算机算法的进步、更多个人数据的收集,虚拟分身将会越来越精确。虚拟分身对这个人的了解,将胜过其任何亲人或朋友。虚拟分身可以代替这个人聊天、阅读、学习、上网、作决策。另外,通过组合各种传感器和AI芯片,虚拟分身的知觉会达到甚至超过人的五感。可以说,将高存储容量、高计算能力、“超知觉”赋予虚拟分身,将是边缘侧AI芯片的第一个终极应用。

虚拟分身将拥有超级计算机的处理能力,存储容量可以根据需要调整,并在开始阶段以智能手机等终端设备形式出现。因此,智能手机的处理性能必须至少提高到当前性能的100倍,或者从长期来看,需要提高到1000倍。基于新AI算法的新AI芯片将可以提供极强的处理能力。然而,这种处理能力极强的AI芯片及相应的虚拟分身,可能直到2025~2030年才会被大众市场采用。但无论如何,把AI计算从云端迁移到边缘侧的一天总会到来。

2.1.4.2 提高边缘侧AI计算能力的几个思路

要做到不把数据放到云端(或少放到云端)去训练,而在边缘侧本地解决,需要边缘侧AI芯片具有强大的能力,不但需要高能效(单位为TOPS/W)、高面积效率(单位为TOPS/mm2)、低时延,还需要高吞吐量,这可以称得上是一种“片上数据中心”了。这一领域正是可以发挥研究人员聪明才智的领域,给研究人员留出了极大的创新空间。一般来说,下面几个方向值得研究人员考虑和研究。

(1)采用新的AI模型和算法来替代现在最常用的监督学习DNN算法。例如采用无监督学习算法,就不需要对数据加标签进行训练;或者采用神经形态计算、仿生计算、自然计算等。Graphcore则认为目前的先训练后推理的方法并不合理,应该让位于可以学习并在部署之后能够持续进化的一种“学习系统”。

(2)研究和发现新的大脑运作机制。例如,以顺序方式学习任务的能力对于人工智能的发展至关重要,但神经网络不具备此功能。而所谓的“灾难性遗忘”(Catastrophic Forgetting)是连接模型的必然特征:一旦训练去做新任务,网络会忘记先前的任务。然而,新的研究表明这种限制有可能被克服,训练网络会记住完成老任务的经验。对于边缘侧AI芯片来说,就无须对那些已长期不存在的样例再次训练,可以大大提高计算性能。

(3)对现有的深度学习算法,在提高性能和降低功耗方面作进一步改进,如采用二值权重、修枝的办法,将其变成稀疏网络。权重和激活值的数值精度,在训练处现已从原来的32位降到16位或8位,在推理处采用8位或4位,大大降低了计算量和功耗。但这还不够,很有可能在不久的将来降到1~2位。为了更好地优化AI芯片设计,有的方法采用硬件感知(Hardware-Aware)的参数优化技术,或是神经架构搜索,在进行推理之前,甚至在训练模型之前,先预测和理解深度学习模型的硬件性能和功耗,并优化模型的准确性,达到算法、模型和芯片三者协调设计。

(4)在进一步提高并行计算的效率上挖掘潜力。神经网络本质上是大规模的并行计算,而适合于并行计算的计算机架构已经有了几十年的研究积累,曾经有不少研究人员提出过很好的思路。现在,英国AI芯片初创公司Graphcore就使用了20世纪80年代哈佛大学教授提出的“整体同步并行计算”模型,这种模型可以实现并行计算所需的软、硬件的并行桥接,避免大量处理器之间通信的拥塞,是冯·诺依曼模型之外的一种另类选择。

(5)采用“去中心化”的分布式深度神经网络架构。例如,谷歌提出的联邦学习(Federated Learning,FL)方法,让分布式的各个边缘侧设备来帮助“训练”,而不是集中在数据中心训练,从而获得更好的模型训练和推理性能。然而,“去中心化”方法需要解决通信开销、异质设备的互操作性和资源分配等问题。

(6)在芯片实现上采用新的计算范式(如模拟计算、随机计算、存内计算、储备池计算等),这将带动芯片架构和电路设计的重大变革。例如,“谷歌大脑”项目组从原有硬件架构入手,设计了一种新的CPU架构来减轻CPU原有的“垃圾收集”冗余任务,从而提高了性能;如果采用模拟计算来实现神经网络,将可以使功耗降低几个数量级;而利用新型存储器(RRAM等)来实现存内计算,已经展露出非常诱人的前景。

(7)在半导体工艺方面进行创新,以期在保持低功耗的同时,把运算速度提高几个数量级。例如在2020年,半导体工艺已从7nm进步到5nm,台积电已全面使用极紫外(Extreme Ultra-Violet,EUV)光刻技术来批量生产5nm芯片,使面积相同的芯片可以容纳更多处理单元,从而把计算能力提高1~2个数量级。如果在逻辑芯片或存储器芯片上实现三维堆叠,即单片3D芯片,将为AI芯片开辟一条全新的道路。

(8)从最底层基础研究做起,开发新的半导体器件,这可能为AI芯片带来根本性的突破。例如,日本东北大学国际集成电子研发中心最近开发出一种使用磁隧道结(Magnetic Tunnel Junction,MTJ)器件的AI芯片,该器件是应用自旋电子学的存储器件。通过将适用于存储器和学习处理的MTJ与适用于判断处理的CMOS相结合,这种芯片实现了更高的性能和更低的功耗。美国得克萨斯大学圣安东尼奥分校(UTSA)也已开发了基于MTJ的深度学习加速器芯片。

(9)把“电”改为“光”,即把神经网络架构改为用光子传输,不用电路,而是组成光路。由于目前硅光芯片工艺已经相当成熟,用硅光芯片制成AI芯片已经不再遥远,这将把目前AI芯片的性能和能效都提高几个数量级。

总的来说,目前如果要仅靠边缘侧的AI芯片来完成数据处理和模型训练,实现如图像识别等应用,还有很大的挑战。例如,视频涉及大量数据,需要占用很大的带宽,要做成低成本的图像识别芯片有很大难度。但我们需要努力去克服这些困难。对语音来说,实现边缘侧AI计算的问题还不算很大,语音识别使我们能够与智能手机等电子设备无缝进行互动。虽然目前苹果Siri和亚马逊Alexa语音服务等应用的大多数处理都在云端,但现在市场上新出现的很多智能音箱产品其实已经在边缘侧设备上实现了语音识别功能,减少了时延和对网络连接的依赖,并提高了隐私保护和安全性。

然而,一些AI不会走向边缘侧,如聊天机器人、会话AI、监控欺诈的系统和网络安全系统。这些系统将从基于规则的系统发展为基于深度学习的AI系统,这实际上会增加云端的推理工作量。

2.2 AI芯片的创新计算范式

新的深度学习模型和算法是指在DNN这个基本模型的基础上,为了进一步提高性能而提出的创新思路和算法。例如,开发出AlphaGo程序击败了顶尖围棋棋手的DeepMind公司,一直在不断改进原有的深度学习模型。该公司组建了脑神经科学研究小组,试图进一步提高人类对于大脑机制的认识程度,开发更详细的模仿人脑的脑神经模型和算法。

如果要用芯片实现AI算法,首先要判别这些算法是否“硬件友好”,即这些算法是否容易转换成硬件架构,因为有的算法可以用软件非常好地进行运算,而它的机制却很难做成芯片。例如,强化学习算法需要不断与环境状况互动,对环境适应一次次试错,用电路来实现时,就存在试错时间太长造成的信号时延问题,不易用硬件架构实现。因此,直至近年才出现了基于深度强化学习的AI芯片(见第12章)。同样,需要经过大量迭代运算才会收敛,或本身基于时间序列处理的算法(如RNN、LSTM等),也需要设计专门的电路以减少计算时间。因而到目前为止,只有很少人专注于RNN的硬件加速并做成了芯片。

最近出现的一些深度学习算法在计算和精度之间作了折中,以提高计算的能效,如使用二值权重以执行高效计算的方法。当神经网络的尺寸很小并且冗余连接被修剪了很多时(尤其是去除接近零的权重),通常可以实现较高能效。修剪以迭代方式完成,即在修剪之后重新训练权重,然后再次修剪低权重的边。在每次迭代中,来自前一阶段的训练权重被用于下一阶段。结果是密集网络可以被稀疏化,变成具有连接数少得多的网络。

有的新算法把编码和压缩量化相结合。量化的目标是减少表示每个连接的比特数。这种方法将所需的存储空间减小到原来的网络模型的几十分之一,同时不会降低精度,这样就降低了功耗,提高了边缘计算的能力。最近还有人尝试使用原来用于视频压缩的MPEG标准的压缩方法来对神经网络进行压缩。

前文提过的类脑芯片,是基于一种新的计算范式——神经形态计算而实现的。一个很有意义的方向是深入研究大脑神经的运作机制,将其映射为一个细致的数学模型,开发直接针对神经网络定制的芯片。值得注意的是,人类大脑并没有把软件和硬件分开,而现在的计算机科学学科把硬件和软件分得非常清楚,虽然这种区别从计算机维护的角度来看是有好处的,但这也是计算机效率无法与人类大脑相比拟的根源。现在,硬件和软件紧密集成在受大脑启发的计算模型中,推动类脑计算领域取得了很大进展。

除了模仿人脑功能的神经形态计算之外,模拟计算、近似计算、随机计算、存内计算、可逆计算、光子计算和储备池计算等计算范式在AI算法中已得到较多应用,尤其是深度学习算法的硬件架构实现上,这些范式已经发挥出独特的优点,可以在很大程度上降低电路的复杂性、减少计算时间,从而减小芯片面积并降低功耗。

自然计算、仿生计算是受到大自然物理、化学、生物启发所诞生的新的计算范式。而量子计算又采用了完全不一样的计算方式,有望在未来几年内有更大的进展。

图2.12中列出了AI芯片的一些创新计算范式。

图2.12 AI芯片的一些创新计算范式

2.3 AI芯片的创新实现方法

要做出高水准的AI芯片,不但要有AI模型和算法,更重要的是采用先进的电路设计及工艺技术。下面介绍一些目前正在尝试的新的设计和实现方法。

(1)脉动式电路(见图2.13)。谷歌的TPU在关键矩阵乘法单元使用了脉动式设计,使得运算过程中的数据像流水线一样“流过”各个处理器,使这些数据可被重复使用而不用每次都返回存储器,从而大大降低了功耗(每个乘积累加单元的功耗可以降低到原来的1/10~1/5)。让数据模仿人体心脏中血液的脉动式流动(心脏相当于存储器,血管相当于处理器阵列及连接),这种技术曾经在二十世纪七八十年代流行过一段时间,现在有了用武之地。现在微软和一些初创公司纷纷采用这个技术,有的研究人员在此基础上还作了进一步创新。

(2)异步电路。异步电路没有固定时钟,而是由事件驱动的,对于芯片电路设计者来说,这毫无疑问是非常具有吸引力的方法,因为可以大大提高芯片性能并降低功耗。但是,没有时钟来同步,也会在某些场合造成混乱,增加了电路设计难度,需要有高超的电路设计技巧。另外,现在还没有很好的异步设计EDA工具。因此,目前比较好的办法是采用折中的方式:在模块中仍采用时钟,即还是同步电路,但是各个模块的时钟可以不一样,在系统集成的总体上是异步的,称为全局异步局部同步(Globally Asynchronous and Locally Synchronous,GALS)技术,图2.14即为GALS的架构,也有人把它称为自定时(Self-Timing)技术。现在,已经至少有一家AI芯片初创公司成功使用了这种技术,做出了高性能、低功耗的AI芯片。

(3)新的散热方式。例如,谷歌最近发布的TPUv3 采用了水冷散热的方法。这需要非常高的工艺水平。

图2.13 脉动式电路示意图

图2.14 GALS的架构

(4)大芯片。芯片集成很多个(如32~64个)大处理器核,或集成海量的小处理器核。有家日本AI公司已在试验由几十个大核组成、面积超过8 cm×8 cm的芯片,里面封装了4片裸片(即未经封装的半导体芯片),而每片裸片的面积达到了32.2 mm×23.5 mm。而英伟达用于AI加速的GV100 GPU集成了211亿个晶体管,内核面积达815 mm2。这些芯片几乎已经达到了目前半导体芯片制造工艺所能达到的极限(注:目前所能制造的裸片最大面积为8 cm2,这是因为受到12英寸晶圆掩模版区域的限制)。芯片面积大,就可以容纳很多处理单元和片上存储器,而不用把信号传递到片外DRAM来回存取,可以大大降低时延和功耗。但是,大面积的芯片对于制造来说是个巨大的挑战,在芯片上跨越长距离需要跨越芯片的长布线,产生时序收敛问题;同时,成品率会大大降低;另外,热量耗散也是个大问题。

(5)晶圆级集成。这个比上述大芯片还要大得多,把AI系统做在整个晶圆上,而不是做在从晶圆切割下来的芯片上。当芯片的特征尺寸已经很难做到3nm以下时,晶圆级集成和大芯片一样是一种反向思维:既然不能把晶体管再做小,那就把整片面积做到晶圆这么大,以覆盖复杂度极高的AI系统。这种方法以前在欧洲由政府资助的研究机构尝试过,其“类脑”研究项目中集成了海量神经元和突触,以尽量向人脑的结构靠拢。时隔很多年之后,2019年8月,初创公司Cerebras使用晶圆级集成技术实现了深度学习加速器,从而大大加快了神经网络的训练速度。晶圆级集成的面积,要比CPU、GPU等常见的芯片面积至少大50倍。

(6)芯粒(Chiplet)。这种芯片美国硅谷有家公司已经做了很多年,开始的应用是射频识别货物标签。2018年以来英特尔、超威(AMD)、英伟达等都加入了研发这种芯片的行列。因为面积非常小(常见的为6 mm2左右,有的甚至小于1 mm2),耗电极低(甚至可做成自供电),芯粒很适合在物联网中应用,或者进行模块化设计,即把多个芯粒组装成一个较大的高性能芯片。英特尔的应用是把CPU、存储器、片上FPGA等做成芯粒,然后组装在较大的硅片上,从而可以缩短连线、降低成本并提高芯片开发速度。

(7)新一代存储器(如RRAM等)及存内计算和近数据处理(Near Data Processing,NDP)等新技术,距离大批量商用已经不远。一些新的AI芯片初创公司也已经采用了这些方法。因此,对芯片设计者来说,需要为相应的电路设计作好准备。

(8)自供电电路。当把电路的功耗做到非常小的时候(如毫瓦级甚至微瓦级),可以考虑采用外部绿色能源,如太阳能、人走路的动能、散射无线电波的能量等来给芯片供电,使该芯片基本上不用电池或普通电源。

(9)模拟电路。未来模拟计算计算范式的兴起,需要大量模拟电路或数模混合电路的设计。使用模拟电路可以大大提高速度,但是系统就不能带有其他数字电路,因为如果需要一直进行模数转换(Analog-to-Digital Converter,ADC),就会得不偿失。近年来,一些大公司(如英伟达)已经组织团队开始研究模拟计算,谷歌也已经对此表示了强烈兴趣,而IBM的一个项目已经做出模拟计算的芯片原型。

(10)亚阈值电路。是使晶体管工作在低电压(未达到其开启电压)的一种低功耗方法。英特尔及一些研究所都曾做出亚阈值电路的初步样片,它的工作频率不高,但对于一些神经网络应用已经绰绰有余。

(11)细胞神经网络。最初的想法是在20世纪50年代被提出的细胞自动机,用于模拟生物系统中细胞间的自组织现象;20世纪80年代,随着人工神经网络的兴起,美国加利福尼亚大学伯克利分校的蔡少棠教授提出了细胞神经网络模型。30多年后,当年他的博士生在美国硅谷成立了一家初创公司Gyrfalcon,按照细胞神经网络的原理做出了一款AI芯片,据称这款AI芯片的能效远远高于英特尔的传统CPU和英伟达的GPU,可用于训练和推理。

(12)多值逻辑电路。即运算机制不再是通常数字电路的二进制,可以有3个值(如+1、0、-1)或更多的值(有人提议多达8个值)来组成逻辑运算。这个思路虽然已经提出多年,但是一直没有得到真正应用。忆阻器及RRAM等阻变存储器的出现,为这种方法打开了应用之门,因为忆阻器本身就可以进行多值逻辑的运算。

(13)单片3D芯片。三星已经把3D存储器做得相当成熟了。下一步要实现的是把逻辑电路和存储器用3D方式集成在一起,目前较成熟的是采用所谓的2.5D方法,即还不是真正的3D,而是通过一块中介层来集成(见图2.15)。未来的目标是把模拟电路(包括射频电路)、数字逻辑电路、存储器、传感器等全部堆积起来,成为一块单片3D芯片。这种工艺技术也为存内计算和近数据处理的有效实现开辟了道路。

(14)硅光芯片。很有前景的光子计算的核心就是硅光芯片。英特尔已经把硅光技术做得相当成熟,开始时用于光通信模块。2017年,麻省理工学院(MIT)的研究人员提出了光神经网络,即让矩阵乘法在光域完成。AI芯片如果用硅光来实现,在性能上至少会提升2个数量级。目前,全球至少有5家初创公司或研究团队在研发AI硅光芯片。

图2.15 2.5D和3D芯片

(15)量子芯片。这种芯片主要用于量子计算,现在有很多公司都在研究、开发并做出了样片:有的使用硅光技术;有的使用普通的CMOS数字芯片,在常温下进行量子计算;更多的是设计成在超低温环境下工作的超导芯片。使用量子芯片作为量子神经网络的AI加速器,是一个很有前景的想法。最近几年以来,已经有不少研究人员在研究如何用量子芯片加速线性代数运算,或作为图形模型中训练和推理的采样器等;也有研究人员利用伊辛模型(Ising Model),做成了量子神经元和量子突触等。

图2.16展示了一些AI芯片的创新实现方法,分别以高性能或低功耗为重点。

图2.16 一些AI芯片的创新实现方法

2.4 小结

目前,AI芯片的主要应用是图像和语音(约各占一半),其中很大一部分是汽车行业的应用,包含自动驾驶汽车(Autonomous Vehicle)的图像、语音识别功能。AI芯片的各种其他应用,如金融预测、动作控制、决策机制等,还只是刚刚起步。AI芯片不仅是为了用在手机里进行照片分类、图像识别而已,其终极目标是用到虚拟分身里,成为虚拟分身的“大脑”。

不管是近年走上AI芯片设计道路的谷歌和特斯拉(Tesla),还是许多AI芯片初创公司,都有着丰富的深度学习知识,但在开发这些尖端的芯片时却仍会面对很多艰难和严峻的挑战。

图像和语音应用使用不同的深度学习算法和神经网络架构。例如,语音应用的重点是自然语言处理(Natural Language Processing,NLP),所用的神经网络架构是循环神经网络(RNN)或基于Transformer模型,而图像分析所采用的主要是卷积神经网络(CNN)。由于这些架构都需要处理大量的数据来进行训练,因此如果只依赖离线的边缘侧AI芯片来处理,会有很大的挑战:许多现实生活场景(如机器人和自动驾驶汽车)要求AI芯片能够实时执行多个任务并具备动态适应能力。静态训练的模型无法有效处理随时间变化的环境条件;将大量环境数据发送到云端以进行迭代训练,由于数据传输时延太大,通常也是不可接受的;另外对自动驾驶的应用来说,考虑到汽车行业严格的安全性、可靠性要求,设计这类AI芯片还需要加以特殊的考虑。要在芯片的性能、成本和功耗3个方面得到最优的平衡,并非易事。

现在,AI已经变得非常热门,每天都会出现新的AI算法。由于AI芯片开发需要不短的时间周期(通常需要9~12个月),极有可能芯片设计的工作已经做到一半,改进的新算法就出现了。没有人愿意在自己的AI芯片里使用过时的算法。因此,与许多其他半导体芯片产品相比,AI芯片的上市时间将成为开发竞争的一个焦点,而它们的使用寿命通常必须至少为3年,才会带来重要的意义。

注释

[1]也称为In-Memory Computing(IMC)或Computing In Memory(CIM)。

相关图书

ChatGPT原理与应用开发
ChatGPT原理与应用开发
深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
深度学习:从基础到实践(上、下册)
深度学习:从基础到实践(上、下册)
动手学深度学习(PyTorch版)
动手学深度学习(PyTorch版)
深度学习与医学图像处理
深度学习与医学图像处理
深度强化学习实战:用OpenAI Gym构建智能体
深度强化学习实战:用OpenAI Gym构建智能体

相关文章

相关课程