上海大学2021~2022学年冬季学期
《研究方法与前沿》综述报告
报告题目:AI加速器的实现方法与应用
任课教师:
评阅日期:
AI加速器的实现方法与应用
摘要:计算机系统的进化是人类最杰出的工程成就之一,我们现在手中的手机CPU的算力已经达到了50年前阿波罗登月计划所用的电脑的百万倍,而这归功于半导体行业的飞速进步。然而随着著名的摩尔定律和登纳德缩放比例定律走到尽头,“暗硅”现象阻挡了晶体管密度的进一步增加;同时人工智能的再次兴起对算力提出了更高要求,计算机行业开始把精力放到了硬件加速器上。AI加速器为加速AI程序而生,目前存在着众多不同的实现方法,包括广泛使用在AI项目的英伟达GPU+CUDA;基于可重构数据流设计的DPU、RDU;使用脉动阵列的谷歌TPU;基于DianNao系列指令集的寒武纪NPU和基于达芬奇架构的华为昇腾NPU;基于模拟计算的AI处理器的MythicM1108AMP;使用光子的芯片Envise等。最后,我们将以昇腾NPU为例介绍AI加速器的应用现状。
关键词:AI加速器;NPU;华为Asend
1引言
1.1集成电路的发展与摩尔定律现状
处理器是计算机系统中负责实际数字计算的部分,它接收用户输入数据并根据用户的请求生成新的数据,即执行一组用户希望的算术运算。处理器使用其算术单元来生成计算结果,这意味着运行程序。我们现在手机、电脑中的CPU就是用来执行通用计算的处理器,而他们都是集成电路设计的杰作。
20世纪80年代起,处理器在个人电脑中被商品化,到今天为止,已经过去了50余年。这50余年我们的计算设备不仅在普及方面还是算力方面都经历了巨大的飞跃:从普及范围看,从上世纪笨重庞大,只用于科研机构、政府和军事机关的专用计算机,到现在已逐渐成为我们日常生活中不可或缺的一部分,笔记本电脑、手机和连接数十亿云和数据中心用户的全球基础设施计算结构中都有它们的身影;从算力来看,50年的发展使得一个人口袋里的普通智能手机拥有的计算能力是阿波罗登月任务中用到的房间大小的计算机的100万倍。而这种跃进的缘由,根源在于集成电路领域的突破。
1965年,戈登·摩尔发现,集成电路中的晶体管数量每年翻一番,他预计这一趋势将持续至少十年。这就是大名鼎鼎的摩尔定律;此外,1974年被提出的登纳德缩放比例定律认为,当晶体管以k为倍数缩小时,电流也会降低。此外,由于电子移动的距离更小,它的功率下降到 。因此,总的来说,每多装k^2个晶体管,逻辑函数将快k倍,但芯片的功耗不会增加[1]。
1.晶体管缩小对于芯片硬件的性能改变[1]
因为更快的晶体管使处理器能够以更高的速率执行相同的计算,即更高的频率相当于更快的计算。因此Intel等CPU生产商通过提高CPU频率来提高处理器的性能,这也缔造了算力不断的提升:
图1.2微处理器频率提升图
到2000年左右,登纳德缩放比例定律面临崩溃——当频率接着提高时,电压和功率密度下降的速率也降低了,这意味着高频将带来大量发热,而现有散热技术仍无法解决该问题,因此一直提高芯片频率是不可行的。在摩尔定律的驱动下,人们改为将原先的单核处理器改为多个相同的处理内核,每个内核执行其指令流,即使单个内核的最高频率难以提高,但是程序员可以使用多线程编程的方法,使得单个程序从多核执行中获得性能提升。
然而到2010年时,登纳德缩放比例定律失效,这意味着晶体管的电压接近物理极限,无法继续缩小。此时若将晶体管数量翻倍,则意味着功耗也翻倍。此时,我们的CPU上晶体管有多少已经不重要了,因为散热技术的制约,我们的芯片面临最高功耗墙,这意味着即使我们有非常多的晶体管,同一时间也只可以使用其中的一部分以防止超过最高功耗,而未被使用的晶体管必须断电,这种现象被称为“暗硅”。
1.2深度学习的算力需求与芯片专业化趋势
在“暗硅”困扰半导体产业的同时,AI与神经网络的兴起对于算力提出了非常高的要求。例如对于AlexNet处理224*224的图像,需要1.4GOPS,即使经过剪枝操作优化后的AlexNet也需要1.5BFLOPS;ResNet-152处理224*224的图像需要22.6GOPS[3]。按照该数据计算,如果我们使用ResNet-152处理1080p分辨率下60帧的八路视频,则所需算力为:22.6GOPS*60FPS*8路*(1920*1280/224^2)=530Teraop/sec。我们可以直观从下表看出深度学习模型对于算力要求之高:
图1.3现代各种深度学习模型的不同层分别在TitanX、Corei7-5930k和TegraK1芯片上的平均运行时间[3]
上述这些数据表明,神经网络和深度学习领域对于算力的要求仍在不断提高,现有水平不能很好满足大规模模型的训练生成。
无论是暗硅现象成为晶体管芯片发展的障碍,还是包括人工智能在内的各应用场景对于算力又提出了更高的要求,都表明现阶段我们面临着算力提升的瓶颈。计算机行业对此的解决方案是:尽管通电晶体管数量难以提高,但是可以提高现有晶体管的利用率。由于CPU属于通用处理器,要处理许多不同方面的应用,因此其使用了支持大量逻辑操作的硬件架构,因此效率较低。为了提高同等晶体管密度下解决具体问题的效率(例如专门针对神经网络模型进行训练操作),可以选择牺牲一部分芯片的通用性,而打造出专门化的芯片——AI加速器。
我们知道深度学习对算力的高要求使得科学家们将视线投向芯片专业化。但是事实上这个趋势早已开始,我们熟悉的GPU(图形处理器)其实可以算是专业处理器的雏形。在处理图形渲染方面时,我们已经发现通用处理器在大量像素点的矩阵计算中力不从心,因此在设计GPU时,人们采用的思路是大量增加计算核心,降低每个核心的功耗和通用处理能力,因此整个GPU表现出了很强的矩阵计算能力,但是无法像CPU一样进行通用计算。如下图所示,至2018年时,性能最强的GPU中已经拥有超过4096个核心。
图1.4GPU、CPU核心数量随时间变化图
现在的深度学习模型和框架仍广泛采用GPU加速模型训练,正是由于这个原因。但除了GPU这种体现出专用特性的处理器外,现有的新趋势是基于专用集成电路(ASIC)设计专用的处理器。在众所周知的“计算引擎选择(ComputingEngineChoices)”图上,ASIC在横轴的性能、能效、芯片面积这几个方面表现最优(横轴为性能表现,纵轴为芯片复杂性):
图1.4计算引擎的芯片选择
目前AI加速器的设计尚无统一规定,各大公司提出了许多迥异的实现思路。我们将分别介绍目前应用于AI加速领域的各类解决方案与芯片设计。
2.AI加速器的不同实现
2.1. GPU+CUDA
我们前面说到了,尽管GPU相比于CPU体现出了专用性,但是其仍不属于ASIC——GPU仍然是传统架构,采用与CPU相同的计算模型。虽然如此,目前市场上训练深度学习和神经网络模型使用最多的仍是GPU加速。英伟达一直是GPU行业的先驱,后来为游戏机、工作站和笔记本电脑等提供各种GPU产品线,已然成为世界领导者。最初GPU主要用于图形渲染,但在2000年代中后期左右,它们被广泛用于分子动力学、天气预报和物理模拟等科学应用。最初的GPU不具备可编程性,为解决这个问题,一些高级编程平台(如CUDA和OpenCL)被提出,为将新领域移植到GPU铺平了道路,因此GPU逐渐成为通用GPU(General-PurposeGPU),简称GPGPU。事实上,最有影响力的AI研究如AlexNet、ResNet和Transformer,都是在GPU上实现和评估的。
英伟达推出的V100、A100系列GPU加速卡是现在人工智能推理/训练的常用设备。V100拥有640个Tensor内核,是世界上第一个突破100万亿次(TFLOPS)深度学习性能障碍的GPU。V100用300W功率提供了7.8TFLOPS的推断算力,有210亿个晶体管,但A100的算力直接是前者的20倍。
图2.1英伟达V100/A100加速芯片性能示意图(分为训练和推理)
2.2. IPU(IntelligentProcessingUnit)
现在的IPU(智能处理器)主要由Graphcore公司设计发行,被该公司称为专为机器学习工作负载而设计的处理器。IPU采用大规模分布式的片上SRAM的架构,这与GPU、CPU是完全不同的。IPU抛弃了外部的DDR,把所有memory放到片上,因此能够解决在目前机器学习中大量出现的内存带宽构成的瓶颈。遵循摩尔定律的预测,我们的CPU算力在数代以来不断保持倍增势头,但传统的DDR4、DDR5、HBM、HBM1、HBM2、HBM3内存等,基本上每代只能有30%、40%的提升。为此,IPU的设计思路是从内存架构开始进行更改,例如IPU做了非常大的分布式的片上SRAM,在片内能做到300MB的SRAM,相对于CPU的DDR2的子系统,或相对于GPU的GDDR、HBM,IPU能够做到10-320倍的性能提升。从时延的角度来看,与访问外存相比较,时延只有1%,可以忽略[5]。
GraphCore已经开发了第二代IPU,其解决方案基于一个名为Poplar的内部软件堆栈。Poplar可以将基于Pytorch、Tensorflow或ONNX的模型转换为命令式、可以兼容C++的代码;IPU由tiled多核设计组成,tiled架构由MIT于2000年代初研发,该设计描述了复制结构的2D网格,每个网格都结合了网络交换机、小型本地内存和处理核心。每个IPU内核最多可以执行6个线程,这些线程是包含其专有指令集架构(ISA)的代码流。
IPU采用的是大规模并行同构众核架构。其最基本的硬件处理单元是IPU-Core,它是一个SMT多线程处理器,可以同时跑6个线程,更接近多线程CPU,而非GPU的SIMD/SIMT架构。IPU-Tiles由IPU-Core和本地的存储器(256KBSRAM)组成,共有1216个。因此,一颗IPU芯片大约有300MB的片上存储器,且无外部DRAM接口。连接IPU-Tiles的互联机制称作IPU-Exchange,可以实现无阻塞的all-to-all通信,共有大约8TB的带宽。最后,IPU-Links实现多芯片互联,PCIe实现和HostCPU的连接。因此,IPU可以实现极高的访存速率,如下图所示:
图2.2IPU-Exchange内存交换技术与英伟达使用HBM硬盘的访存速度对比
通过牺牲通用性,安置更多的低精度浮点运算核心,第一代IPU就实现了125TeraFLOPs的算力水平;其最新的产品为第三代IPU,可提供高达1.4PetaFLOPS的AI计算能力[6]。计算加上数据的突破可以让IPU在原生稀疏计算中展现出领先GPU10-50倍的性能优势,在通信上,Graphcore专为为AI横向扩展设计了IPU-Fabric,解决数据中心大规模计算横向扩展的关键问题。Graphcore将计算、数据、通信三者的突破技术结合,构建了大规模可扩展的IPU-POD系统,最终可以提供一个AI计算和逻辑进行解耦、系统易于部署、超低网络延时、高可靠的AI超算集群。例如由4个IPU芯片构成的IPU-M2000系统,可以提供大约1PetaFLOPs的算力,3.6GB处理器内存储(In-Processor-Memory),和高达256GB的流存储(StreamingMemory)。[6]
2.3. 可重构数据流:DPU、RDU
我们说的可重构数据流,可分为“可重构”和“数据流”两方面来分析。可重构计算的思想最早由加利福尼亚大学洛杉矶分校的Estrin教授在其论文[7]中提出.当时的计算机还是电子管计算机,电子存储器也刚刚出现,计算机处理速度很慢,存储容盈也很小,因此许多算法是当时通用计算机所不能解决的.为了解决这些受限计算问题。其第一次提出了可重构计算的思想,即设计一种可变的计算机体系结构。通过特定的指令集配置,该计算机结构可变为针对特定算法的专用计算机结构[8]。
在可重构计算方面,FPGA天生具有优势。我们前文已经介绍过ASIC它是全定制化的硬件,可针对性地进行硬件层次的优化,因此ASIC往往具有很高的性能和能效。但是,ASIC芯片设计需要耗费大量的资金且研发周期较长,再加上硬件固化,难以适应算法发生新的变化。比如现在正在投入实际生产生活中的谷歌TPU/华为昇腾,它们均采用ASIC的思路,因此对现在的AI训练算法有较强的加速作用;但是我们知道现在的AI算法更迭日新月异,而固化的ASIC芯片应对新算法时的加速效果就会难以预料了。与之不同的是,FPGA芯片属于半定制化芯片范畴,尽管在专用领域FPGA的计算性能和能效都逊色于ASIC,但FPGA的可重构特性是ASIC所没有的,这使得FPGA能够灵活应对算法的更迭变化。FPGA集成了前所未有的可重构逻辑、高性能DSP以及片上存储器,其应用领域得到了巨大的扩展,利用FPGA的并行计算能力已经成为解决密集计算型科学和工程问题的重要途径[9]。
除了可重构计算技术与目前前沿的基于FPGA的重构计算实现思路,该思路还涉及到数据流。我们学的计算机操作系统、计算机组成原理均是基于冯诺依曼计算机架构的,其采用的是控制流驱动执行的计算和存储系统结构(通过静态划分和分配系统资源)。正如我们之前提到的,冯诺依曼架构中分离的中央处理器(计算单元)与其存储单元的分离已经导致访问存储器成为了限制计算速度的瓶颈。而数据流的基本思想是基于数据流图和流水线来组织计算,支持更为复杂的算法逻辑,让数据依赖自适应地决定如何加快数据在处理单元间的流动,能从根本上解决计算的同步与大数据的缓存问题,优化资源的配置利用,实现自动的负载均衡,大幅度提高计算的能效比[9]。如果说可重构计算技术解决的是传统架构处理器无法针对算法变化实现结构改变的问题,那么数据流则打破了原先冯诺依曼架构计算机的逐条指令执行的规则,而是采取依照数据组织形式决定计算方式的架构,二者具有相互依存的关系。
目前采用该种实现思路的落地芯片主要有数据流处理器单元(DPU)、可重构数据流单元(RDU,reconfigurabledataflowunit)两类。例如WaveComputing公司的核心产品是数据流处理器单元(DPU),其采用非冯诺依曼架构的软件可动态重构处理器CGRA(Coarsegrainreconfigurablearray/accelerator)技术,适用于大规模异步并行计算问题。但是其在2020年破产。此外还有实现了AI加速芯片的SambaNova公司,其芯片架构的核心是可重构数据流单元(RDU,reconfigurabledataflowunit)。RDU芯片包含一组计算单元(称为PCU)和暂存器存储单元(称为PMU),它们以2D网格结构组织起来,并与NoC交换机连接。RDU通过一组称为AGU和CU的单元结构访问芯片外存储器。
图2.2RDU架构示意
与此同时,SimpleMachines研究组同样希望开发一个可重新配置的架构,以支持非常规编程模型,实现能够应对高度变化的 AI 应用程序空间的灵活执行。该公司的首个 AI 芯片是 Mozart,该芯片针对推理进行了优化,在设计中使用了 16 纳米工艺,HBM2 高带宽内存和 PCIe Gen3x16 尺寸。
2.4. 脉动阵列+VLIW:TPU
脉动阵列是由称为单元或节点的紧密耦合数据处理单元(DPU) 组成的同构网络。脉动意即其工作方式和过程犹如人体血液循环系统的工作方式和过程。每个节点或DPU独立计算部分结果作为从其上游邻居接收的数据的函数,将结果存储在自身内部并将其传递到下游[10]。预先确定的数据流动模式使数据从流进处理单元阵列到流出处理单元阵列的过程中完成所有对它应做的处理,无需再重新输入这些数据 ,且只有阵列的“边界”处理单元与外界进行通信 ,由此实现在不增加阵列机输入、输出速率的条件下,提高阵列机的处理速度。脉动阵列首先用于Colossus,这是第二次世界大战期间用于破解德国洛伦茨密码的早期计算机。
超长指令字架构VLIM(Very Long Instruction Word)是由Josh Fisher在20世纪80年代早期提出,当时集成电路制造技术和高级语言编译器技术出现了巨大的进步。其主要思想是将多个相互无依赖的指令封装到一条超长的指令字中。由于在一条指令中封装了多个并行操作,其指令的长度比RISC或CISC的指令要长,因此起名为超长指令集。VILW将指令的并行 调度在编译期完成,并提供了一种高效的高并发顺序执行实现方案,降低了硬件设计难度与面积功耗开销,便于以低功耗实现指令的高并发;缺点是流控制能力弱,需要 VLIW编程[11], 通用性差。下图所示为一个VLIW指令的架构:
图2.3 VLIW指令架构示意
在AI加速领域十分出名的谷歌张量处理单元(TPU)采用的正是脉动阵列+VILW的组织架构。张量处理器,是 Google 开发的专用集成电路(ASIC),专门用于加速机器学习。第一代TPU是一个 8 位矩阵乘法的引擎,使用复杂指令集,并由主机通过PCIe3.0 总线驱动,主要用于推理,不考虑训练。
图2.4 TPUv1架构示意
该芯片因为用于推理,故只有前向,没有反向,不需要考虑对各种loss function的支持,不需要考虑存储activation给反向使用的问题,仅有5条指令。从数据通路上看:DDR通路负责weights/kernels的搬移和数据排布,并传送到MMU(脉动阵列);Activation Storage 存储上一层的输出,对上一层的输出数据重排布为符合MMU要求的数据格式,作为下一层的输入。 网络的第一层(即推理的数据)也是通过PCIe直接传到这里;Accumulators做一些求和的操作; Activation pipeline做Relu,sigmoid以及Pooling等操作。
第二代 TPU 于 2017 年 5 月发布。Google 表示,第一代 TPU 的设计受到了内存带宽的限制,因此在第二代设计中使用 16 GB 的高带宽内存(具体地说是使用HBM代替DDR3,HBM可以提供更高的带宽),可将带宽提升到 600 GB/s,性能从而可达到 45 TFLOPS。除了内存更换外,2代还加了Interconnect,通过interconnect能够使一颗芯片的两个TPU Core能够高效的数据交换(即 Scale Up),或者和其他TPU进行高效数据交换(即Scale Out)。此外,它还用Vector Unit替代了固定的activation function / activation pipeline:
图2.5 TPUv2架构示意
TPU芯片随后被排列成性能为 180 TFLOPS 的四芯片模块,并将其中的 64 个这样的模块组装成 256 芯片的 Pod,性能达到 11.5 PFLOPS。[12]值得注意的是,第一代 TPU 只能进行整数运算,但第二代 TPU 还可以进行浮点运算。这使得第二代 TPU 对于机器学习模型的训练和推理都非常有用。至目前为止,谷歌发布了TPU的第四代,但架构变化不大,不再赘述。
2.5. 神经网络处理器NPU:寒武纪、华为昇腾
NPU(Neural network Processing Unit), 即神经网络处理器:用电路模拟人类的神经元和突触结构。神经网络中存储和处理是一体化的,都是通过突触权重来体现。而我们熟悉的冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。全连接和卷积算子会大量使用乘累加(Multiply-Accumulate, MAC),乘累加可以通过特定的电路设计将计算 并行化,神经网络加速器会设计专用的MAC计算 单元以加速乘累加。MAC计算单元可以成倍地加 速乘累加,但MAc计算单元的缺点是专用性强,只 能进行乘累加.神经网络还有很多其他非MAC计 算,例如,RNN除了使用乘累加,还需要使用非线性 的tanh或ReLU激活函数。因此,为了加速器的 灵活性,神经网络加速器还会添加一些非MAC计 算单元,以适配不同的数学计算[2]。
说到NPU,不可不提的就是寒武纪的DianNao,它开启了深度学习神经网络专用处理器的先河。在DianNao面世的2014年,谷歌将参与了DianNao研发的法国专家挖到了谷歌主持研发TPU,其面世也要晚于DianNao。DianaNao的特点就在于使用硬件逻辑模拟神经网络结构。
图2.6寒武纪DianNao架构示意
上图中央浅蓝色部分就是用硬件逻辑模拟的神经网络结构,称为NFU(Neural Functional Units)。其共分为三个部分,NFU-1,NFU-2,NFU-3:NFU-1全是乘法单元,共有16X16=256个乘法器。这些乘法器同时计算,也就是说,一个周期可以执行256个乘法。NFU-2是16个加法树,每个加法树是按照8-4-2-1组成的结构,每个加法树有15个加法器。NFU-3是16个激活单元。NFU的所有逻辑资源,可以整体划分为16份,每一份,简称PE,包括16个乘法器,15个加法器,1个激活单元。对每一个PE而言,其运算过程是:16个乘法器同时计算出16个结果,送给加法树(最左的8个加法器,每个有2个输入,恰好接收16个输入),形成一个结果,然后再送入激活。NFU-1和NFU-2目的是计算出单个神经元接受到的所有刺激的量,NFU-3是根据前面两个单元计算得到的刺激量,去判断是否需要激活操作。除了这三个阶段的计算逻辑,剩下还有三个Buffer。一个存储输入数据,一个存储权值(filter值),一个存储计算结果。这就是DianNao的架构,其架构之后也被其他设计NPU的厂商借鉴。
除了DianaNao架构外,我国华为自研的昇腾AI处理器页属于NPU范畴。昇腾系列的处理器是一个片上系统(system on Chip),共有两类AI计算引擎:AI Core和AI CPU,其中AI Core提供神经网络算力, AI CPU用于承担非矩阵类计算。AI Core基于的架构是华为自研的达芬奇架构:
图2.7华为昇腾达芬奇架构示意
在达芬奇架构的AI core中有三类计算单元,三类计算单元分别支持不同类型的深度学习计算任务:专门负责乘累加 的矩阵计算单元(Cube Unit),负责激活函数等非乘 累加计算的向量计算单元(Vector Unit)和高度灵 活的标量计算单元(Scalar Unit)。矩阵计算单元 使用FPl6精度,算力强大,但只能完成乘累加计算。相比矩阵计算单元,向量计算单元的指令更加丰 富,可以完成激活函数等非乘累加类计算.标量计算 单元主要完成循环控制、分支判断等标量计算[2]。
图2.6中所示箭头方向同样是数据传输方向。数据从L1预取到L0后,依次送入到Cube中进行2D matrix运算,结果写到buffer C中,可以通过Vector单元进行卷积和全连接之后的后处理运算(operation fusion,数据融合),然后写回到Unified Buffer中等待下一次调度。最下方是控制通路,指令经Icache取得后,译码分发到Scalar,Vector和MTE三个单元中进行对应的运算。整体数据通路和寒武纪的“DianNao”是很类似的。下方的控制加上scalar和vector运算,相当于集成了一个通用CPU在其中,因此支持算法的种类得到了扩充。scalar负责控制流和简单运算,vector来解决MAC矩阵所不擅长的pooling,activation等操作,这几部分相互配合补充,很好的实现对AI算法全场景的支持。
由此观之,在整个昇腾芯片的AI core 中,最能体现专用加速效果的实际是矩阵计算单元(Cube Unit)。以两个N*N的矩阵A*B乘法为例:如果是N个1D 的乘积累加运算 MAC(Multiply Accumulate),需要N^2的cycle数;如果是1个N^2的2D MAC阵列,需要N个Cycle;如果是1个N维3D的Cube,只需要1个Cycle。在进行大规模矩阵乘法运算时3D CUBE 具有较大的优势,但是其代价就是灵活性的降低。2D Matrix算法结构的基础是将卷积运算转化成矩阵乘累加,较大的MAC矩阵在运行较小的模型上的效率是比较低的。同时为了避免算力浪费,转化的矩阵应该尽可能是MAC矩阵边长的倍数,比如Davinci Max需要是16的倍数,这个比NVIDIA tensor core的4的倍数要求要高。达芬奇架构选择通过剪裁,在不同规模的设备上实现不同的内核规模,如下图所示,通过tiny/lite/max等不同规模的内核,实现了在可穿戴嵌入式设备、智能手机(如麒麟810上)、服务器等不同类型设备上使用达芬奇架构:
图2.8达芬奇架构内核规模
2.6. 基于模拟电路的AI加速器
模拟电路是指用来对模拟信号(指连续变化的电信号)进行传输、变换、处理、放大、测量和显示等工作的电路。它是电子电路的基础,主要包括放大电路、信号运算和处理电路、振荡电路、调制和解调电路及电源等。模电对于我们计算机领域的本科生而言有些陌生,毕竟我们学的计算机组成原理中一开场就介绍了当前计算机均使用数字电路设计,并详细列举了二者优劣。其二者区别在于传递的信号是离散的还是连续的。然而,在摩尔定律的尽头,有一群研究者正试图使用模拟电路技术设计出超越通用处理器的AI加速器。
Mythic
是 AI 硬件领域最早的初创公司之一,它成立于 2012 年,提出了如何在模拟电路中使用较小的非数字电路电流来降低能量的消耗。在2020 年底,Mythic 推出了其第一代 AI 芯片 M1108 AMP。与很多
AI 芯片不同,M1108 基于更加成熟的模拟计算技术,而非数字计算。这提高了 M1108 的能效,也使网络边缘设备访问更加容易。
Mythic 还推出了一个模拟计算引擎 (ACE,Analog Compute Engine),它使用闪存而不是 DRAM 来存储权重。本质上,它们不是从内存中获取输入和权重数据,而是将输入数据传输到权重闪存,并将其转换为模拟域,在模拟域中执行 MAC计算,并将其转换回以获取输出数据,从而避免从内存中读取和传输权重成本。该公司将其引擎的计算方式描述为“内存计算”。
图2.8 使用闪存存储并直接计算数据的ACE引擎
该公司称模拟计算将内存中的计算发挥到了极致,因为这相当于直接在内存阵列内部进行计算。这可以通过将存储元件用作可调电阻,将输入作为电压提供,并将输出收集为电流来实现[13]。该引擎使用模拟计算进行核心神经网络矩阵运算,将输入向量乘以权重矩阵。我们可以看出,在内存阵列中直接进行计算是非常新颖的一种计算方式,如果真的可以这样实现,那不仅仅消除了ALU访问内存所消耗的事件,而且可以轻易完成大规模并行计算。
2.7. 脉动阵列+光子计算
现在我们对于光子计算的认识可能只停留在科普层面,事实上光 子 具 有 带 宽 大、 速 率 高、 抗 电磁干扰能力强、串扰低、传输损耗 低等优点。目前国内外均有研究光子计算加速人工智能应用的成果,比如光学人工神经网络 (OANN)是光学计算加速器的发展方 向之一。
图2.9 光学神经网络示意图[14]
光子因其具有高速率、高能效的特点 成为极具潜力的新型技术:首先,电 子时钟的速率仅为吉赫兹量级,严重 影响了 AI 计算中的时延性能;而随 着波分复用(WDM)、高速调制等技 术的成熟,光学方法则能够以光速进 行数据的并行化传递及处理。其次, 电子 AI 计算方案的能耗与输入矩阵 维度的平方成正比,使得能源成本和 散热问题更加凸显;而光学无源结 构则能够实现零能量消耗的超快光学 计算。具体而言,光子辅助 AI 的 IPS 的调制、探测带宽可达 100 GHz,高 出图形处理单元(GPU)、张量处理单元(TPU)等电子 AI 专用计算单元两 个数量级;其单位 MAC 操作的能耗能 够达到 pJ 量级,甚至 aJ 量级,有望低 于 TPU 的 0.43 pJ/MAC 水 平; 其 时 延 水平更是低于 100 ps,大大低于 TPU 的 2 μs 运算时延[14]。
图2.10 电子计算与光子计算对比
而在落地的工程芯片中,也有光子计算的身影。诞生于 MIT 的初创公司LightMatter正着力于开发一种用光子而非电子执行运算的计算机芯片。他们设计了一种基于脉动阵列的方法,通过使用编码为光信号波中不同相位的相移来操纵光子输入信号,以执行乘法和累加操作。由于光子学数据以光速流动,LightMatter 芯片以非常高的速度执行矩阵和矢量化运算,并且功率可降低几个数量级。LightMatter 在 2021 年开始发售其首款基于光子的 AI 芯片 ——Envise。
图2.10 Envise芯片架构图
LightMatter 声称,他们推出的 Envise 芯片的运行速度比最先进的 Nvidia A100 AI 芯片快 1.5 至 10 倍,具体根据任务的不同有所差异。以运行 BERT 自然语言模型为例,Envise 的速度是英伟达芯片的 5 倍,并且仅消耗了其六分之一的功率。
3. AI加速器的应用——以华为昇腾为例
我们在第二节介绍了7种实现AI推理与训练加速的AI加速器的不同思路。但这些思路并非全部落地,目前只有GPU+CUDA、TPU、NPU这几种受到了较多的关注与使用。我们以华为昇腾为例,介绍AI加速器的具体应用项目。
我们之前已经介绍过华为NPU的达芬奇架构,华为根据其自研的架构与CUBE核心开发出了两款AI加速芯片:昇腾310与昇腾910。
图3.1 华为昇腾310、910、鲲鹏920芯片外观图
其中2018年发布的昇腾310是一款高效、灵活、可编程的低功耗AI处理器。基于典型配置,八位整数精度(INT8)下的性能达到22TOPS,16位浮点数(FP16)下的性能达到11 TFLOPS,而其功耗仅为8W。昇腾310在功耗和计算能力等方面突破了传统设计的约束。随着能效比的大幅提升,昇腾310将人工智能从数据中心延伸到边缘设备,为平安城市、自动驾驶、云服务和IT智能、智能制造、机器人等应用场景提供了全新的解决方案,使能智慧未来。2019年发布的昇腾910是具有高算力的AI处理器,同时集成了CPU和任务调度器(Task Scheduler),本质上属于片上系统(SoC)。它的最大功耗为310W,华为自研的达芬奇架构大大提升了其能效比。通过集成了32个我们刚刚了解到的3D Cube,八位整数精度(INT8)下的性能达到640TOPS,16位浮点数(FP16)下的性能达到320 TFLOPS,算力比英伟达 Tesla V100 还要高出一倍[15]。
基于昇腾的两款NPU,衍生出了众多型号的深度学习加速板卡。例如用于推理的包括Atlas 200、Atlas 500等,可以在嵌入式设备、边缘设备使用;用于训练的包括像Atlas 800、Atlas 900等,在算力方面拥有不俗实力:Atlas 200 AI加速模块(型号:3000)集成了昇腾310 AI处理器,可以在端侧实现图像识别、图像分类等,广泛用于智能摄像机、机器人、无人机等端侧AI场景;Atlas 300I 推理卡基于昇腾310 AI处理器,提供AI推理性能,单卡算力可达88 TOPS INT8,支持80路高清视频实时分析,最大功耗可达67W,可广泛应用于智慧城市、智慧交通、智慧金融等场景;Atlas 300T 训练卡(型号:9000)是基于昇腾910 AI芯片,配合服务器,为数据中心提供强劲算力的训练卡,单卡可提供280 TFLOPS FP16算力,加快深度学习训练进程。具有高计算密度、大内存、高带宽等优点,标准全高3/4长PCIe卡,适用于通用服务器。
除了成系列的板卡外,华为还实现了搭载多块Atlas板卡的服务器。如Atlas 500智能小站是面向边缘应用的产品,支持-40 ℃至70 ℃室外工作。可以在边缘环境广泛部署,满足在安防、交通、社区、园区、商场、超市等复杂环境区域的应用需求;Atlas 500pro最大支持4张Atlas 300I 推理卡,满足多场景推理需求;整机可提供320路高清视频实时分析(1080P 25 FPS),并且同时搭载搭载64核架构的鲲鹏920处理器,加速应用;Atlas 800 训练服务器是基于华为鲲鹏920+昇腾910处理器的AI训练服务器,广泛应用于深度学习模型开发和AI训练服务场景。具有高计算密度、高能效比、高网络带宽、易扩展、易管理等优点,满足企业机房部署和大规模数据中心集群部署。
图3.2 华为昇腾Atlas板卡应用实例
4.总结
本篇综述主要聚焦于在摩尔时代接近尾声的现在,专用芯片AI加速器的不同实现方法。总览7种不同的实现方案,尽管它们既包含目前使用最广泛的英伟达GPU+CUDA加速方案,也包含像模拟电路“内存计算”和光学神经网络这种十分前沿的加速方案,但它们都有一个共同的特点,即改善通用处理器在访问存储时的速度瓶颈。可以看到,这将成为未来AI加速方案的主要专攻点。
在介绍与讨论用芯片AI加速器的不同实现方案之余,我们也关注AI加速器的落地项目。英伟达GPU加速卡A100、V100已是目前深度学习训练常用的加速卡自不必说,国产品牌昇腾的两款AI处理器自面世以来,也落地了有一系列面向不同应用场景的板卡和服务器。由此观之,从通用性转向专用性的AI加速器已经处于从理论方案走向实际生产生活运用的时期,我们应当可以期待这些各有特色的AI加速方案为之后的人工智能发展和人们的日常生活带来更强的算力突破。
参考文献:
[1] Dennardetal.Designofion-implantedMOSFET’swithverysmallphysicaldimensions.Solid-StateCircuits,IEEEJournalof(1974).
[2] 鲁蔚征,张峰,贺寅烜,等.华为昇腾神经网络加速器性能评测与优化[J].计算机学报,2022,45(8):1618-1637.DOI:10.11897/SP.J.1016.2022.01618.
[3] HanS.Efficientmethodsandhardwarefordeeplearning[D].StanfordUniversity,2017.
[4] https://medium.com/@adi.fu7/ai-accelerators-part-iv-the-very-rich-landscape-17481be80917,2021.
[5] 迎九.IPU:为AI处理器带来了一种颠覆性架构[J].电子产品世界,2020,27(7):59-60.YoHan,Park,YoungHo,Park.Three-FactorUserAuthenticationandKeyAgreementUsingEllipticCurveCryptosysteminWirelessSensorNetworks.[J].Sensors(Basel,Switzerland).2016,(12).
[6] BOWIPU处理器-智能处理器-Graphcore拟未
[7] EstriaG.BusselBeta1.ParallelprocessinginarestructurablecomputersystemD].IEEETrana.ectComput,1963.12(5)l747—755.
[8] 王志远,王建华,徐旸.可重构计算综述[J].小型微型计算机系统,2009,30(6):1203-1207.
[9] 沈俊忠.面向大数据处理的异构融合可重构数据流加速器研究[D].国防科学技术大学,2020.
[10] H. T. Kung, C. E. Leiserson: Algorithms for VLSI processor arrays; in: C. Mead, L. Conway (eds.): Introduction to VLSI Systems; Addison-Wesley, 1979
[11] 李源,马海林,何虎. 基于 MIPS 指令集的超标量和超长指令字混合架构处理器设计[J]. 计算机应用研究,2016,33(6):1723-1726. DOI:10.3969/j.issn.1001-3695.2016.06.028.
[12] Bright, Peter. Google brings 45 teraflops tensor flow processors to its compute cloud. Ars Technica. 17 May 2017 [30 May 2017].
[13] Analog Computing - Mythic
[14] 邹卫文,马伯文,徐绍夫. 智能光子处理系统:概念与研究进展[J]. 中兴通讯技术,2020,26(2):1-10. DOI:10.12142/ZTETJ.202002002.
[15] 昇腾(HUAWEI Ascend) 芯片 | 海思官网 (hisilicon.com)
标签:架构,加速器,AI,芯片,处理器,计算,GPU From: https://www.cnblogs.com/czy-blogs/p/17232992.html