当前位置: 首页 > 科技观察

AI芯片和传统芯片有什么区别?

时间:2023-03-20 00:58:48 科技观察

成立于两天前,国内专注于人工智能FPGA加速算法的初创企业深鉴科技被国际巨头赛灵思收购,在业界引起了不小的轰动。目前国内做AI芯片的公司不少,AI芯片已经成为当前芯片行业最热门的领域。但大多数人可能对AI芯片的架构了解不多。那么AI芯片和传统芯片有什么区别呢?AI芯片的架构是怎样的?先回答问题,(1)性能与传统芯片如CPU、GPU有很大区别。执行AI算法时更快、更节能。(2)工艺没有区别,大家都一样。至少现在,一切都一样。所谓AI芯片,一般是指用于AI算法的ASIC(专用芯片)。传统的CPU和GPU都可以用来执行AI算法,但是它们的速度慢,性能低,不适合商用。比如自动驾驶需要识别道路行人、红绿灯等情况,但是如果用现在的CPU来计算,那估计车翻到河里了,还没有发现前方有河.这很慢,时间就是生命。如果使用GPU,速度确实快很多,但是功耗高,而且汽车的电池可能无法支撑长时间正常使用。而且,老黄家的GPU很贵,动辄几万块一个,普通消费者用不上。它经常缺货。另外,由于GPU并不是专门为AI算法开发的ASIC,归根结底,速度还没有达到极限,还有提升的空间。而像智能驾驶这样的领域,一定要快!在移动端,可以自行进行人脸识别、语音识别等AI应用。这一定是低功耗,所以GPUOUT!因此,ASIC的发展成为必然。告诉我你为什么需要AI芯片。AI算法,在图像识别领域,常用的是CNN卷积网络,语音识别,自然语言处理等领域,主要是RNN,这是两种不同类型的算法。但是它们本质上都是矩阵或者向量的乘法和加法,然后再配合一些除法、求幂等算法。一个成熟的AI算法,比如YOLO-V3,就是大量的卷积、残差网络、全连接等计算,本质上就是乘法和加法。对于YOLO-V3来说,如果确定了具体的输入图形尺寸,那么乘法和加法计算的总数也就确定了。就像一万亿次。(真实情况比这个大很多)那么要快速执行YOLO-V3,必须进行一万亿次的加法和乘法。这个时候我们来看一下,比如IBM的POWER8,服务器最先进的超标量CPU之一,4GHz,SIMD,128bit,假设是处理16bit的数据,也就是8个数,那么一个周期,最多执行8个乘法和加法计算。一次最多执行16个操作。这仍然是理论上的,但实际上不太可能。那么CPU在一秒内的最大计算量=16X4Gops=64Gops。这样CPU的计算时间就可以计算一次。同样,换成GPU计算,也可以知道执行时间。由于本人对GPU内部结构不熟悉,就不做具体分析了。再来说说AI芯片。比如大家熟知的谷歌TPU1.TPU1,大约700MHz,有一个256X256的脉动阵列,如下图所示。总共有256X256=64K个乘法和加法单元,每个单元一次可以进行一次乘法和一次加法。那是128K操作。(乘法算一个,加法算另一个)另外,除了脉动阵,还有其他模块,比如激活等,也包括乘法和加法。所以,看TPU1在一秒内的最大计算量至少是=128KX700MHz=89600Gops=大约90Tops。对比CPU和TPU1,你会发现在计算能力上有几个数量级的差距,这也是为什么说CPU慢的原因。当然,以上数据完全是理想的理论值。在实际情况下,可以达到5%。由于芯片上的存储空间不够大,数据会存储在DRAM中,而从DRAM中取数据很慢,所以乘法逻辑经常要等待。另外,AI算法由很多层网络组成,必须逐层计算。因此,当切换层时,乘法逻辑是静止的。所以,很多因素导致实际筹码没能达到利润的计算峰值。而且差距很大。可能有人会说,慢慢研究就可以了。目前,神经网络的规模越来越大,参数也越来越多。当你遇到一个很大的NN模型,训练需要几周甚至一两个月的时候,你会耐心等待吗?突然停电,一切重启?(我曾经训练过一个写手写小说的AI,然后一次训练(50轮)大概一天一夜,记住如果第一天早上开始训练,要到第二天下午才能完成。这还是一个比较简单的模型,一个只有几万数据的小模型。)修改模型后,需要几周时间才能知道是对是错。你确定你买得起吗?突然有一个TPU,然后你发现吃完午饭回来就好了,优化参数,继续跑,爽啊!快速的计算速度可以快速迭代和开发更强大的人工智能模型。速度就是金钱。GPU的核心结构不清楚,就不比较了。可以肯定的是GPU还是比较快的,至少比CPU快很多,所以目前用GPU的居多。这其中随便一件都动辄上万,实在是太贵了。而且耗电大,经常断货。不适合在数据中心大量使用。一般来说,CPU和GPU都不是AI专用芯片。为了实现其他的功能,里面还有很多其他的逻辑,而这些逻辑对于现在的AI算法来说是完全没有用的。无法达到最佳性价比。谷歌花钱研发TPU,已经发布了TPU3,用起来还蛮开心的。他们已经开始支持谷歌云计算服务。好像是每小时六点左右。单位不记得了,懒得查了。很明显,谷歌觉得有必要自己研发TPU。目前,在图像识别、语音识别、自然语言处理等领域,最准确的算法是基于深度学习的。传统机器学习的计算精度已经被超越。目前使用最广泛的算法估计非深度学习莫属。,而且传统机器学习的计算量比深度学习要少很多,所以我在讨论AI芯片的时候,都是针对计算量特别大的深度学习。毕竟对于一个计算量不大的算法来说,说实话CPU已经很快了。而且CPU适合执行复杂的调度算法,GPU和AI芯片都做不到,所以三者只是针对不同的应用场景,各有各的主场。至于为什么要用CPU来对比?并且没有具体说GPU。是因为我说了,我没有系统地查过GPU方面的论文,不知道GPU的情况,所以不做分析。因为积累,我对超标量CPU比较熟悉,所以我会用熟悉的CPU来做详细的对比。而且,一个小网络用一个CPU就能训练出来,也没什么大问题,顶多慢点。只要它不是太大的网络模型。那些AI算法公司,比如酷思泰尔、商汤等,他们的模型非常庞大,自然不是一个GPU可以搞定的。GPU计算能力也很有限。至于说CPU是串行的,GPU是并行的,这话没错,但并不全面。只说CPU串口。这位网友大概对CPU的了解不是很深。我的回答中提到的CPU是IBM的POWER8。百度一下就知道这是超标量服务器CPU。目前性能已经很高,主频4GHZ。你注意到我说这是SIMD了吗?这个SIMD就是说他可以同时执行多条相同的指令,是并行的,不是串行的。单个数据为128bit。如果精度是16bit,那么一个周期理论上最多可以计算八组数据的乘法或加法,或者乘法和加法。这不叫并行吗?只是并行度没有GPU强大,但这也是并行。不知道为什么不能用CPU来比较计算能力?有评论强烈推荐GPU。用CPU来比较是不合适的。拜托,GPU本来就是和CPU分开来处理图像计算的,也就是说GPU是专门做图像计算的。包括各种特效的显示。这也是GPU的天生缺陷,它更针对图像渲染等计算算法。但是,这些算法与深度学习算法有很大的不同,我的回答中提到的AI芯片,比如TPU,是专门为CNN等典型的深度学习算法开发的。此外,寒武纪NPU也是专门为神经网络设计的,类似于TPU。谷歌的TPU,寒武纪的点脑,这些AI芯片刚出道的时候,都是拿CPU/GPU来比较的。看一下,GoogleTPU论文的摘要直接对比了TPU1和CPU/GPU的性能对比结果,看到红框:这是摘要中介绍的TPU1和CPU/GPU的性能对比。我们来看看寒武纪滇垴的论文。摘要直接对比了电脑和CPU的性能。看红框:回顾上个世纪神经网络的历史,肯定是CPU计算的。比特币刚出来的时候,也是用CPU挖的。目前已经进化为ASIC矿机。了解比特大陆。在2006年掀起的深度学习热潮中,CPU和GPU都可以计算。发现GPU速度更快,但价格昂贵,占用的CPU也更多。而且当时GPU的CUDA也不是很好。随着NN模型越来越大,GPU的优势越来越明显,CUDA也越来越6。现在变成了GPU的专场。Cambrian2014DianNao(NPU)比CPU更快,更节能。ASIC的优势是显而易见的。这也是开发ASIC的原因。至于很多公司的方案都是可编程的,也就是大部分都是配合FPGA的。你说的是商汤和神剑?确实,他们发表的论文都是基于FPGA的。对于这些初创公司来说,他们更关心的是算法。至于芯片,则不是重点。再加上他们暂时没有精力和实力。FPGA非常灵活,成本不高,架构设计原型可以快速实现,所以他们自然会选择基于FPGA的方案。不过他们最近一直在大力投入融资,官网也在招聘芯片设计岗位,所以他们应该也会涉足ASIC的研发。如果以FPGA为代表的可编程解决方案真的具有巨大的商业价值,他们为什么要把钱花在ASIC上呢?说了这么多,我也是半途出家了,因为工作需要才学习的。按照我目前的理解,看TPU1的专利和论文,一步步推导内部设计方法,了解TPU1,大概知道大部分所谓的AI处理器。然后研究一系列关于寒武纪的论文。针对不同的情况,有几种不同的框架。如果你有兴趣,可以研究一下。然后还有其他几家独角兽,比如商汤、深鉴科技等,他们每年都会发论文,没事就去看看。这些论文很可能代表了当前最先进的AI芯片的架构设计。当然,如果是高级的话,别人是绝对不会透露的。例如,谷歌从未公开过关于TPU2和TPU3的相关专利。反正我没找到。不过,没关系,目前的文献已经代表了近年来最先进的进展。所谓的AI芯片可以分为两类,一类是既可以训练又可以推理(Inference)的,这个工作GPGPU可以做,CPU也可以做,FPGA(Altera的Stratix系列)也可以做,但是谷歌TPU2的特殊设计和比特大陆的Sophon可能在能耗比上有优势。这类产品与GPGPU相比,总体上是差不多的。在保留相当数量的浮点处理单元(或构建大量张量计算单元)的同时,丢弃一些无用的图形管线,提高能耗性能。这部分的玩家比较少,但是比较有趣。当然,ICLR也在考虑用定点设备进行训练。Xilinx希望XNOR-net能够让定点设备参与训练。另一种是InferenceAccelerator推理加速芯片,简单来说就是在芯片上运行训练好的模型。这一块真是百花齐放,比如寒武纪的NPU,Intel的Movidius(还有个Nervana,应该是类似XeonPhi的训练用的),神剑DPU,地平线BPU,Imagination的PowerVR2NX,ARM的ProjectTrillium,还有一个HeapIP.这类产品不仅有产品,还提供IP供其他开发者将深度学习加速器集成到SoC中。另外,还需要单独说说产品TegraX2。这相当于一个小型的桌面平台。ARM处理器加上NvidiaGPU可以提供完整的训练和推理能力。当然,功耗也很高。其他的加速芯片,我觉得分两大类,浮点和定点。浮点数只是FP16半精度,当然支持FP16和INT8,比如CambrianNPU和IntelMovidius。一类是纯定点的,比如Horizo??n的BPU和Imagination的PowerVR2NX。当然也有混合的,后面会详细介绍。首先,让我们谈谈非ASIC产品。Deephi的部分产品使用ZYNQ来实现。使用ZYNQ最大的好处就是节省了流片成本。它利用DSP48和资源实现乘法器完成定点运算,浮点交给CortexA9硬核处理。Deephi主要工作在模型剪枝和定点方面。我之前和王宇先生交流过。网络定点的时候,部分层的定点定点损失比较高,所以保留部分层(主要是最好的)浮点,和嘉南和做的人聊聊智云的加速也证实了这部分,使用SOPC更容易。然后是兼职,比如高通AI平台用的是AdrenoGPU和HexagonDSP(主要是DSP,能耗好像比970好)。相似的。其他的差别还是挺大的。IntelMovidius发布较早,支持浮点推理。其实就是一个VLIWSIMD单元,类似于之前的ATi显卡或者DSP设计。其他的是因为下面公开的信息不多。说白了,通用的AI加速器主要是针对现有网络进行定点或浮点计算的优化。当然堆运算单元(矩阵运算单元,乘加)是第一个,然后是Reducememorydatatransfer,970上的可能挂在CCI上,然后靠更多的cache,PowerVR2NX好像是优化到4位的内存控制器?通过优化内存数据路径,降低一些内存带宽需求,整体其实是相关的。感觉这种东西接近于超级多核DSP,只不过是精简了。毕竟DSP还是可以做一些控制的,哈哈。另外,从某种程度上说,新网的优化很差,一般行业落后学术一年多。比如DenseNet出来了,片子只支持Resnet。关于下面两个问题:如果让GPGPU或者CPU做推理,能耗比肯定不好看,但是浮点推理一般比定点或者降精度的情况更准确(当然也有情况其中定点推理后泛化能力较好)。但遗憾的是NPU只能在CPU的控制下完成特定的任务。没有大量的应用程序支持,NPU是非常无用的。在手机上,很多时候你根本用不到NPU,所以我觉得你可以在需要的时候使用Mali。是最好的。。。没啥区别,其他的什么手机SoC,显卡GPU用的是一套技术,有钱可以用新工艺,新工艺。人工智能能给我们的生活带来什么?以我们最熟悉的手机为例,日常拍照美颜是家常便饭,但目前的自拍软件需要在拍摄完成后上传至云端,通过通用模式完成“一键美颜”。另一方面,移动端的AI芯片可以根据用户平时的喜好,在拍照后(甚至是拍摄前的取景阶段)同步完成照片美化,这是现有CPU难以做到的。那么两者有什么区别呢?首先,传统芯片只需要调用相应的系统按照指令工作即可,而AI指令则包含了大量的并行计算和建模。这无疑对处理器的计算能力提出了很高的要求。二是移动终端尤其是手机的数据采集能力。优秀的AI应用需要收集大量的数据来训练模型,而手机无疑是最好的数据收集工具。随着越来越多的传感器如麦克风、摄像头、重力传感器、定位设备被加入到手机中,一个能够实时收集、同步、连接和协调不同传感器的“人工智能”芯片显得尤为重要。当然,在指甲盖大小的面积上集成了超过55亿个晶体管的AI芯片,不能仅仅用来拍照。目前,手机上已经存在语音服务、机器视觉识别、图像处理等智能应用,未来还将增加医疗、AR、游戏AI等更多元化的应用类型。除了满足手机上的应用,AI芯片未来还有机会拓展到其他更有潜力的市场。最典型的例子就是自动驾驶。特斯拉去年聘请了AMD的传奇架构师JimKeller来开发自己的AI芯片。甚至在未来,从火箭、航天器到深海探测器,控制系统所依赖的芯片也会越来越人工智能化。