第一篇 导论
第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芯片。这个过程说明了理论(尤其是基础理论)指导的重要性,也说明了这些理论研究最后被应用到芯片中之前,还需要先在电路、元器件、材料等工程实践领域有所突破。