B体育随着人工智能(Artificial Intelligence,AI)的热潮席卷各行各业,作为人工智能核心的“AI芯片”变得炙手可热,它是所有智能设备必不可少的核心器件,专门用于处理AI相关的计算任务。AI芯片包含两个领域的内容:一个是计算机科学领域,简单地说就是软件,即研究如何设计出高效率的智能算法;另一个是半导体芯片领域必一运动,简单地说就是硬件,即研究如何把这些算法有效地在硅片上实现,变成能与配套软件相结合的最终产品。
AI芯片发展历史如下图,1957年模拟人脑的感知器(Perceptron)的发明被看作是第一个“人工神经网络”方面的突破。感知器是当时就职于康奈尔航空实验室的法兰克·罗森布拉特(Frank Rosenblatt)发明的。作为最简单的前向人工神经网络形式,感知器虽然结构简单,但它拥有学习能力,能不断进化从而解决更为复杂的问题。到了20世纪80年代,已经有人研究构建模仿大脑运行的硬件(不是从逻辑学的角度来看,而是根据感知器的模型),这是构建人工神经元和神经网络的初步尝试。1986年,杰弗里·辛顿(Geoffrey E. Hinton)与同事们一起,探索了如何显著改善多层神经网络(即深度神经网络)的性能,使用被称为反向传播(误差反向传播方法)的算法,并发表了他们的划时代论文。2009年以来,AI又一次受到人们的关注,飞速发展,这是由GPU芯片带动的。2012年,一切都发生了变化。一系列极具影响力的论文发表,如亚历克斯·克里泽夫斯基(Alex Krizhevsky)、伊利·萨茨凯(Ilye Sutskever)和辛顿的《具有深度卷积神经网络的ImageNet分类》一文,就展示了他们在ImageNet图像识别挑战赛上取得的成果。AI与半导体芯片的发展是紧密联系在一起的,没有GPU等半导体芯片近年来的迅猛发展,AI就不会像今天这样炙手可热。
AI芯片是模仿大脑运作的芯片,它使用模拟神经元和突触的模型来尝试再现人类智能。人脑细胞连接构造如下图
我们通过计算机软件和硬件模拟脑细胞神经元行为如下,函数f是输入和输出之间的关系,称为激活函数;wi是突触特征的权重,权重为正表示突触兴奋,权重为负表示突触处于抑制状态;xi是另一个神经元的输出;b是神经元激活(将输出传递到后续阶段)的阈值。
使用激活函数的目的是引入非线性,使输入和输出脱离线性关系。常用的激活函数如下
其中a)线性函数 b)符号函数 c)Sigmoid函数(S形函数) d)Softmax函数 e)双曲正切S形函数 f)ReLU函数 g)硬双曲正切S形函数 h)阶跃函数。目前用得最多的激活函数是图1.4f所示的修正线性单元(Rectified Linear Unit,ReLU)函数。
深度学习,即深度神经网络(DNN)的特点是在输入层和输出层中间加了很多层,称为隐藏层。目前较新的DNN,已经有几百个甚至1000个以上的隐藏层。
这是乘积累加(Multiply Accumulation,MAC)运算。可视为两个矢量的点积,即(x0, x1, x2,…, xn)(w0, w1, w2,…, wn)。点积是计算机中使用的最基础的线性代数运算,仅仅是两个矢量中相关元素的乘积累加。矩阵和矩阵的乘法及矩阵和矢量的乘法可以针对每个行和列并行计算,因此很适合多处理器并行处理。所以,AI芯片(这里指用于深度学习加速的芯片)的本质是“高速张量运算及并行处理”。神经网络处理单元主要就是由乘积累加模块、激活函数模块和汇集模块组成的。
过去,大部分AI模型的建立或算法的运算,都是在以CPU为核心的计算机里进行模拟的结果。近些年来,正如摩尔定律所揭示的,业界通过在芯片上放置越来越多的晶体管使CPU实现更高的性能。然而,由于严格的功耗限制,片上时钟频率无法跟随这种上升趋势。使用多核处理器可以在不提高时钟频率的情况下提高计算性能。但是通过在芯片内部添加更多处理器核所实现的性能提升,是以各种快速增长的复杂性为代价的,如核与核之间的通信、内存一致性,还有最重要的功耗问题。同时内核数量的增加,会导致“暗硅”效应,芯片在工作的时候,其中一部分区域必须保持断电以符合热量耗散约束条件。决此问题的一种方法是使用硬件加速器。硬件加速器可帮助处理器降低工作负载,提高总吞吐量并降低能耗。现在的绝大多数AI芯片,就是这种硬件加速器。目前市场上第一批用于AI的芯片包括现成的CPU、GPU、FPGA和DSP,以及它们的各种组合。虽然英特尔(Intel)、谷歌(Google)、英伟达(NVIDIA)必一运动、高通(Qualcomm)和IBM等公司已经推出或正在开发新的芯片设计,但目前还很难说哪家一定会胜出。一般来说,总是需要至少一个CPU来控制系统,但是当数据流需要并行处理时,将需要各种类型的协处理器(即硬件加速器),这就是专用集成电路(Application Specific Integrated Circuit,ASIC)芯片。CPU、GPU、FPGA及ASIC这4种芯片有不同的架构如下图
1)CPU,AI算法(包括深度学习算法)可以在通用CPU上实现。由于CPU的普及和通用编程能力,神经网络技术在开始时期被大量推广和应用。一些关键的算法验证都是在CPU上完成的。CPU并不是实现神经网络的理想硬件。CPU以提供复杂的控制流而闻名,这对于更常规的、基于规则的计算可能是有益的,但对像使用数据驱动方法那样的神经网络却不是那么重要。神经网络的运行过程几乎不需要控制,因此在神经网络计算中,数据流是计算的主要部分,而不是控制流。同时,通用CPU是基于冯·诺依曼(Von Neumann)体系结构的处理器,存在不少结构限制;这也导致无法满足日益增长的高吞吐量和低时延计算的需求。
2)GPU,GPU最初用于快速图形渲染,它适用于SIMD并行处理,能快速进行图形渲染相关的浮点密集型计算。GPU架构的发展非常迅速,从一开始的可重构GPU,发展到可编程的大规模并行协处理器,这使它非常适合AI这样需要高性能并行计算的场景。但是从本身的架构来说,GPU的设计还存在一些缺陷。例如很难快速地为GPU加载数据以使它们保持忙碌状态等。
3)FPGA,现场可编程门阵列(Field Programmable Gate Array,FPGA)是一种“可重构”芯片,具有模块化和规则化的架构,主要包含可编程逻辑模块、片上存储器及用于连接逻辑模块的可重构互连层次结构。FPGA的优点是非常明显的。即使在被制造出来以后,FPGA都可以在运行之前和运行期间对硬件进行重构,这给硬件应用带来了极大的灵活性。FPGA为并行实现人工神经网络提供了一个有吸引力的替代方案,具有灵活性高和上市时间短的优势。
4)ASIC,ASIC是定制的专用AI芯片,可以在芯片架构和电路上进行优化,以满足特定的应用需求。无论从性能必一运动、能效、成本角度,还是算法的最佳实现方面,ASIC都是标准芯片无法比拟的。随着AI算法和应用技术的发展,ASIC逐渐展现出自己的优势,非常适合各种AI应用场景。现在大部分AI芯片的初创公司,都是以开发一种独特、新颖的ASIC为目标。ASIC芯片的缺点是开发需要很高的成本,一旦设计完毕,交由芯片代工厂流片(即制造芯片),首先需要支付一大笔一次性工程费用。这种费用一般不会低于1000万美元。这对中小型企业,尤其是初创公司来说,是一道很高的门槛。而AI又属于一个技术迭代速度很快的领域,现在几乎每隔几个月就会有新的算法和模型出现,这对于开发芯片的公司来说,意味着很大的商业风险。目前比较前沿的研究是设计“可进化”芯片,它基本上接近通过芯片的“自学习”来提升芯片自身的性能。AI芯片的最终目标是能够“自学习”,即芯片能够自己学习“如何学习”;另外一个重要目标是做到智能机器之间(相当于AI芯片之间)的相互学习和协调,从而使智能机器自己得到更多的知识。这种“自学习”的性能,很可能随时间呈指数级提升,并将最终导致智能机器的智能水平超越人类。这条路虽然还很漫长,但是一些研究人员已经开始起步。不同种类的AI芯片及其计算范式如下。
业界已经开发出具有专用于张量处理功能的结构的ASIC芯片。基于几十年的技术积累,深度学习算法正在投入实际应用。为了达到更好的应用效果,需要有这种专用的AI芯片来加速处理深度学习,帮助多核CPU处理器加速运算。今后的趋势是把这类加速器和多核CPU处理器集成到同一块芯片中。总之,虽然AI芯片的开发主流都是基于深度学习算法,但是深度学习本身也在不断改进和更新。从2009年开始,深度学习相关的论文数量每隔两年都会翻一番;2018年之后,每天约有100篇关于这方面新的算法和思路的技术论文发表。这说明深度学习仍然是一个重要的研究领域,有许多有前景的应用和各种芯片设计的创新机会。
AI芯片的研发热潮,主要集中在ASIC芯片领域。除了各大公司及不断出现的初创公司积极投入之外,大学和研究机构也起到了关键的作用,有的已经有十多年甚至更长时间的技术积累。目前引人注目的来自大公司的ASIC芯片,以谷歌的张量处理单元(Tensor Processing Unit,TPU)系列为代表。高通在2019年4月发布的Cloud AI 100系列,也是AI芯片性能的一次飞跃。但是,“爆炸式”出现的很多初创AI芯片公司,在技术层面也绝不落后于大公司。
然而,要确定CPU、GPU、FPGA和ASIC究竟哪一种才是最佳解决方案并非易事,因为这取决于AI应用类型和范围、设计约束及所要求的上市时间等。如果上市及应用时间紧,那就只能选择GPU或嵌入式GPU。FPGA的上市时间相对ASIC也较短,设计流程简单,也常用作设计ASIC之前的原型。另外,用于云端和边缘侧的芯片要求完全不同,云端服务器里的AI芯片需要很大的吞吐量和灵活性,而边缘侧物联网则需要功耗极低、面积很小的AI芯片。
总的来说,如果我们把AI芯片目前的状况与英特尔x86时代进行类比,可以说我们现在正处于AI芯片的“286阶段”,或者说AI芯片刚处于AI 1.0时代;而以存内计算、模拟计算和新型存储器(如NVM)为代表的AI 2.0时代将会在未来几年到来。