【前言】
首先还是保命时刻,以下解读与见解均为我的个人理解,要是我有哪里曲解了,造成了不必要的麻烦,可以联系我删除文章,也可以在评论区留言,我进行修改。也欢迎大家在评论区进行交流,要是有什么有意思的paper也可以留言,我抽空看一下也可以写一些。正文内容中的“作者”二字,均是指paper的作者,我的个人观点会显式的“我”注明。而文中的图基本都是从paper上cv过来的,我也没本事重做这么多的图,况且作者的图弄得还挺好看的。
【Paper基本信息】
题目:Survey of Machine Learning Accelerators
作者:Albert Reuther, Peter Michaleas, Michael Jones, Vijay Gadepally, Siddharth Samsi, Jeremy Kepner, 是来自MIT林肯实验室的超算中心的团队(PS:光是这个Title,就没有理由不去看)
链接:https://arxiv.org/pdf/2009.00993.pdfarxiv.org
总结:截止到2020年6月的,目前的机器学习加速的综述,还汇总了一大批芯片的功耗算力,可谓是居家旅行,选型省钱的必看。
【Paper具体内容】
【Introduction】
现在机器学习有多火我就不说了,上图是一个overview,这个图做的非常好,归纳的也不错,简洁明了。这个Paper主要讲的是机器学习的加速器,这个团队19年也做了一次这个的综述,看样子是每年一更了,19年的还涉及到了一些基于FPGA的推理实例和手机用的加速器,20年的这一篇只考虑了有动态可编程性的FPGA推理实例,作者对于排除了手机加速器的解释是,手机上的加速器如果不做重新设计,很难在不同的平台上使用。
现在的加速器的实现也越来越花里胡哨了,Paper中提到了现在有用矢量引擎(Vector Engines)、数据流引擎(Dataflow Engines)、神经形态设计(Neuromorphic Designs)、基于闪存的模拟内存计算(Flash-based Analog Memory Processing)和基于光子的计算(Photonoc-based Processing)。这里随便一个拉出来,都是一个大饼,大坑。
PS:神经形态设计这个,目前国内做的最好的应该是清华的施路平团队,两个Nature封面奠定王座,就那个在清晨的清华操场自动骑自行车的那个。
作者这里还贴心的给我们普及了一些前置知识(PS:有种上课的感觉):
神经网络的类型,这个类型有好多,但是Paper主要讨论CNN和DNN,因为这两个网络用的最多,大部分的计算也都是密集的矩阵和矩阵的运算、矩阵和向量的运算。
神经网络的训练和推理,训练就是把带标记的数据输入进去(正向),网络输出预测,然后调整模型的权重参数来收敛模型,使得能有更好的预测输出(反向)。推理就是用训练好了的权重参数,应用到输入数据上,以获得预测输出。一般来说,专门为了训练设计的加速器,在推理上效果也可能很好,但反过来就不一定了。
数值精度,用来存模型权重和输入数据的数值精度,这个会影响网络的训练和推理的准确性和效率的。就跟float和double一样,写过代码的都很容易理解。一般来说是训练的时候用高精度,推理的时候用低精度,这个有paper证明过是有效的。但是但是,过低精度的推理,例如int4、int2、int1这种,是没有被论证的,不要瞎搞。现在很多的训练加速器,都支持float16和bfloat16了,大部分的推理加速器,性能指标给的也是int8的结果。
PS:很多年前英伟达就推出了混合精度训练了,yolov5好像就用了这个,用来提速和缩小模型还是挺好用的,准确性也影响不大,能接受。intel也有,intel的没记错的好像是bfloat16,去年有幸体验过intel的cpu的神经网络训练解决方案,用支持bfloat16,avx512指令集的一大堆核的最新至强U,加上intel自己的基于spark的分布式训练库,没错,不是电脑跟电脑之间分布式,是一个U上面核跟核的分布式,加上MKL库,再开个bfloat16,跟打了鸡血一样,训练速度比V100也就慢一点点,大约能有V100的70~80%的速度了,当时跟intel的工程师交流过,他们的做法是把数据分包,打成pkl格式,然后用java分发下去训练,训练完再把权重汇总更新,当时就被他们这个数据分包坑了一手,我数据太大,打包炸了,据说是java打包的锅,这里要羡慕一下intel中国的工作时间,当时的技术支持老哥很给力,晚上一过6点,就不回消息了,第二天早上上了班才回,羡慕不用加班的
神经形态计算,这个是模仿神经元和突触的,这部分是另一个大领域了,也就不多说了,这里作者还特地提到了我前面说的清华施路平团队的天机芯片,他们用的就是SNN和ANN。
Paper主要比较了适用于政府、工业传感器和数据处理的神经网络加速器,并且区分开了研究型加速器和商用型加速器。
【加速器调查】
Paper调查了现有的研究论文、技术新闻、公司的基准数据等公开的资料,收集了加速器的性能和功率信息,作者还绘制了截止到2020年6月的最新的加速器,并且做了峰值性能和功耗的映射
1)计算精度用点的形状来表示,可以自动对照右边
2)统计的类型用颜色来表示,蓝色代表单个芯片、橙色代表单张卡、绿色代表的整个系统。
3)空心点代表的是仅推理加速器的性能,实心点则是训练和推理的加速器的性能
来了,要上图了:
PS:看不清楚的去看原paper
从图中可以看到,很多新的加速器都突破了1TOps/W了,而一个比较普遍的现象是,训练一般最少都需要100W,这是因为训练需要的数据精度更大,更加耗电的ALU,更加复杂的数据链路,更大的内存等等。
然后支持的数据精度也越来越丰富了,但是神经网络需要多少精度才能达到最佳的性能,目前还没有定论。
最后就是作者把这些加速器分成了五类:用于语音处理的超低功耗加速器;用于摄像机、小型无人机和机器人的嵌入式加速器;用于自动驾驶和自动机器人的自动驾驶辅助服务加速器;用于数据中心的加速卡;用于数据中心的加速系统。
这里需要说明的是,有一些芯片只给了给定模型的fps这种性能数据,作者对这些是做了转换然后才映射到这个图上的。
研究型芯片
现在已经有很多论文,介绍、评估了各种架构、组织、技术啥的了,下面介绍部分的研究型芯片,大部分都是被高度应用的经典款,而且每一个都给了具体的性能和功耗,每一个都值得深入了解。
NeuFlow,是纽约大学和耶鲁大学合作的项目,完成于2011年,Lecun是作者之一,目的是探索边缘推理的体系结构,用的是二位矩阵的矩阵乘法器和卷积器组成的数据流图块进行设计。
Efficient Inference Engine(EIE),是斯坦福大学设计的,完成于2016年,通过压缩模型,权重共享以及片上SRAM使用,证明了DNN中稀疏性的使用,以此设计出了效率极高的推理推理芯片。
TETRIS,这个也是斯坦福设计的,通过3维存储器和分区设计,将权重和数据放到了处理元素的附近,展现了高效的推理能力。
Eyerissi,这个是MIT的工作,通过尝试不同的电路计算折衷,来开发最节能的推理芯片。这是个非常重要的工作,是学术研究的加速器的标杆之一。传统的加速器是控制流架构,他则是数据流架构,经典教学,入门必备,网络上有这个设计的一个非常详细的介绍ppt,非常值得一看,就是有点长,去年看过一下,我水平不足,看的我头晕眼花的,大佬们可以一看。
DianNao,这是中科院计算所寒武纪团队的工作,这个名字非常的接地气不得不说,寒武纪有几款加速器在早期的华为的麒麟芯片上有应用。这是一个系列,有很多款,DianNao是神经网络推理加速器,DaDianNao是DianNao的堆叠版,用于较大模型的推理,ShiDianNao是专门为卷积神经网络推理设计的,PuDianNao则是设计用于K-means、K-NN、贝叶斯、SVM、线性回归、分类树以及深度神经网络加速。
TrueNorth,这是MIT的工作,由美国DARPA在Synapse计划中开发的,证明了神经形态芯片的功效。这个工作鼓励了后面大家对神经形态芯片的研究。
超低功耗芯片
MovidiusX,这是intel的芯片,是一个嵌入式的视频处理器,里面有用于视频处理和目标检测的神经引擎,intel以前推出的那个蓝色的usb接口的加速棒,好像就是用的这个芯片,这个芯片现在用的挺多的,不过具体我也记不清楚了。
TPU Edge,这是google在19年推出的TPU青春版(廉价版,千元级),用于嵌入式推理,这个用的是Tensorflow Lite,用低精度参数对模型编码后推理的。这个貌似大家都喜欢拿他跟英伟达Nano来比,我淘宝了一下,这个单芯片mini pcie接口貌似在500以下,带外围arm的1500以内,长得跟树莓派不能说没关系,只能说是一毛一样。
RK3399Pro,瑞芯微的产品,arm cpu加基于gpu的协处理器,可以做int8的推理,这玩儿我听说好像是个电老虎,发热猛得一批,不过用的非常多。
GAP9,这是GreenWaves的产品,这貌似是个RISC-V的初创公司,这个芯片是面向电池供电的传感器和可穿戴设备设计的,功耗特别低,而且支持8、16、24、32bit的整数和16、32bit的浮点数计算。这个我也淘宝了一下,也很便宜,500以下。
KL520,这是深圳耐能Kneron公司的产品,专门为AI智能锁、智能家居、人员监控和零售设计的。
AIStorm,这是个国外的初创公司,这个做的是AI-in-Sensor,就是把边缘运算做到了传感器里面去,很有意思,(这不就是要涨价嘛)。
NDP120,这是美国的Syntiant公司的产品,在Amazon的Alexa产品中用于短语识别,用int4做权重推理,int8做激活,功耗不到200uW,这个有Amazon背书,加上这个功耗,感觉有搞头。
Mythic,这是个公司,做的是模拟AI处理器,结合RISC-C处理器,用模拟电路(可变电阻)来做矩阵乘法,目标应用是嵌入式、视觉和数据中心。
Ergo,这是Perceive公司的产品,适用于电池供电的高性能应用,可以在多个程序中运行多个并发网络,支持超过1亿的权重,例如同时做视频和音频处理。
Xcore.ai,这是XMOS公司的产品,这个东西就牛逼了,集单片机、AI、FPGA、DSP于一身,我就说这个XMOS怎么那么熟悉,一看这个一大堆东西拼一起,我就想起来了,XMOS就是专门搞这种MCU+FPGA+DSP的公司,这次多加了个AI,进去,以前XMOS家的产品,由于它拼凑了一堆的缘故,非常适用于音频处理,在音频领域有不少的份额,以前苹果也是他们的客户,但是这玩儿开发难度不是一般的大,这次的Xcore.ai也是老本行,做语音的ai应用,关键字检测,词典功能等,支持int1、int8、int16和int32计算。
嵌入式芯片和系统
Ethos,这是ARM的产品,是一个系列,就是大小核+MAC计算引擎,现在好像有N77、N57、N37,其中N77就是叠了四个MCE,堆到了4TOP/s@1GHz。
BM1880,这是比特大陆的产品,就是做矿机的那个比特大陆,这个芯片有两个ARM的Cortex核、一个RISC-V的控制器还有一个用于视频监控的张量计算单元。
NovuTensor,这是北京异构智能NovuMind公司的产品,主要用于视觉推理的协处理器。
Lightspeeur 5801,这是Gyrfalcon Technology公司的产品,Lightspeeur光矛产品线,这好像也是个存内引擎的矩阵计算。他们家还卖服务器,堆了128个5801的服务器。
自动驾驶系统
aiWare3,这是匈牙利Almotive公司的产品,貌似跟上汽有合作,做的是自动驾驶行业的基于FPGA的可编程加速器。
Real AI Processor,这是AlphalC公司的一个平台,简称RAP,这是基于代理的神经网络计算,代理与所执行的每个计算内核有关,这个基于代理是什么意思,没看到,有看懂的可以说一下。
Hailo-8,这是以色列Hailo公司的产品,这个他们没有给性能和功耗参数,只给了resnet50的性能,因此表中的数据是换算的来的。
Journey2,这是地平线机器人Horizon Robotics的产品,自动驾驶视觉应用的加速平台,21年4月上汽发消息说他们的新品牌IM的首款车会用这个平台。
Ascend 310,华为的昇腾产品线的产品,集成了AI加速器的CPU,跟数据中心端用的昇腾910一样用的华为达芬奇架构。昇腾势头还是挺猛的,昇腾的小板卡以前我们学校还组织过去华为的研究所参观(为啥就不送一个呢),今年我也参加了华为的昇腾部门的面试,体验还不错。有一说一,华为的这个我淘宝了一下,卖的不多,还忒贵。(PS:作者的这个分类我没看懂,我感觉他的分类就是按照功耗分的)
Coolidge,这是法国Kalray的产品,是一个并行处理器,最初是为了核模拟的高性能计算设计了,然后改成了自动驾驶用,然后跟NXP合作去了。Coolidge堆了80个64位的VLIW处理器核,每个核都有一个AI协处理器。不亏是搞模拟的高性能计算出来的,一言不合就堆80个64位核。
Jetson-TX,这个是英伟达的产品,大家的老熟人了,有TX1和TX2,TX1是四个arm核+256个CUDA Maxwell核,TX2是6个arm核+256个CUDA Pascal核,还有更加丧心病狂的Xavier,堆了8个arm核+512个CUDA Volta核+64个Tensor核。这个大家都用的好多了,落地产品也不少,就不多说了,居家旅行,赚钱必备的套装。
q1-64,这是Quadric.io公司的产品,这个芯片有4096个FMA阵列,用于推理加速,一张Quadric卡包含了4个q1-64芯片,将来他们还计划设计有16k个FMA的q1-128芯片,用于数据中心。
MLA,全称是SiMa.ai Machine Learning Accelerator,将ARM核跟数据流矩阵乘法集合到一起,实现4W功率下的较高的计算速度。
FSD(Full Self-Driving),没错,这个就是特斯拉的芯片,用了两个NPU,一个NPU有96*96个MAC阵列,阵列有8bit乘法和32bit加法。这个FSD还有12个ARM的A72CPU和一个GPU。
Toshiba2015,这是东芝的货,堆了一个四核A53,四个DSP,一个DNN加速器和几个专用加速器,是给自动驾驶设计的图像处理器。
数据中心芯片和卡
A. 基于CPU的处理器
Xeon8180和Xeon8280,没错,这基于CPU的排第一就是我大intel的至强。图中的性能,训练是用8280做的,推理是用8180做的。这个至强,没什么好说的了吧,除了我AMD Yes,一个能打的都没有了。
Pezy SC2,这是日本做的,是一个由2048核的大型多核处理器,每个核有8个线程。专门为HPC设计,对于密集的线性代数运算也有很高的并行性,所以也能拉来做做AI训练和推理,这个就跟前面法国那个从核模拟改的那个很像了。
GraySkull,这是牛人Jim Keller的公司Tenstorrent的公司做的,这里就不得不介绍一下Jim Keller了,早期是苹果A4芯片的微架构设计者,后来去了AMD做了zen架构,然后又跑去了intel做12代酷睿的微架构,这个人生也是传奇,架构大师加入AI芯片领域,很值得期待。这个加速器有10*12个Tensix内核,每个内核有5个RISC核,可以计算int8、fp16和bfloat16,其中浮点格式的运行性能是int8的四分之一。
PFN-MN-3,这是个加速卡,是日本的Preferred Networks公司做的,这个加速卡有四个芯片,每个芯片有4个die和32G的内存。每个die有2048个元素处理器和512个矩阵运算块,并且全部用fp16计算。然后作者推测,这个卡是日本的百亿亿级超算的加速器卡之一。
B. 基于FPGA的加速器
Arria,没错,我intel又来了,谁让我有先见之明收购了Altera呢,我现在也是个fpga公司了。intel的arria解决方案,将xeon cpu跟arria fpga结合,cpu将fpga配置下载到arria,然后将操作移植到arria做某些内核的计算。
VectorPath S7t-VG6,这是Achronix和BittWare联手做的基于FPGA的加速卡,PCI-E接口,这个FPGA有八组GDDR6内存,一个2000G和一个4000G的网口,以及40000个int8乘法累加器。疯狂堆料。
Cornami,这是个公司,他们的产品还在FPGA阶段,但是fp16性能非常优秀,ASIC产品暂时还没看到。
InferX X1,这是Flex Logix公司推出的FPGA/DSP加速卡,面向信号处理和机器学习设计,支持int8、int16、fp16和bfloat16。有4000个乘法累加单元(看清楚,比楼上的楼上的卡少一个0),并且可以用Tensorflow和onnx。
Brainwave,这是微软的项目,用的是intel的Stratix10 FPGA,已经部署了一部分在Catapult项目上了,目的是可重新编程的推理处理。
C. 基于GPU的加速器
写到这里,作者没爱了,因为显卡就只有三张英伟达和两张AMD的。
英伟达的有基于Volta架构的V100,基于Turing的T4和基于Ampere架构的A100。
AMD的有MI8和MI60。
其中V100、A100、MI8、MI60是用于训练和推理的纯计算卡,T4则是主要用于推理,但是用来训练也不是不行。
D. 数据流芯片和卡
Hanguang 800,阿里巴巴的含光800,平头哥产品,这个没有给峰值性能,只给了resnet50的结果,所以表中的数据也是换算来的。
Inferentia,亚马逊的产品,可以用int8、fp16和bfloat16计算,跟常见的DNN兼容,板卡集成后,功耗在150-300W之间。
Kunlun,百度的产品,昆仑818-100用于推理,818-300用于训练,旨在低功耗数据中心的训练和推理,已经在百度的云服务上部署了。
Cambrion,这是个公司的名字,就是寒武纪,孵化与中科院计算所。
TPU,不是其他人的TPU,就是那个google的tpu,TPU1仅用于推理,TPU2、TPU3可以训练和推理。想体验可以去kaggle,一键开启tpu。
GraphCoreC2,这是GraphCore公司的产品,这个卡已经在他们家的服务器节点中发货了。这里同样只给了resnet50的数据,所以表格中的数据是换算得来的。
TSP(Tensor Streaming Processing),这是Groq公司的产品,谷歌TPU创始人之一领导的公司。单个处理器有超过400000个乘法累加单元,由内存和矢量引擎组成。他们被堆成一个superlanes集,每个superlane执行一个VLIW指令,数据在superlane和相邻superlane内的存储单元和计算单元之间穿梭来完成静态的执行程序。每个处理单元可以对8bit字做操作,相邻的处理单元可以组合起来做浮点运算和多字节整数运算。目前resnet50的每秒最多处理图像数这个记录,是由Groq的TSP保持着的。这个东西挺有意思的,感兴趣的可以了解一下,没有控制流只有数据流,暴捶google的TPU。
Ascend 910,华为的昇腾产品线。Paper这个位置给的是上面写过了的310,不知道是啥问题,不管了,我就换成910好了,毕竟910这300W的功耗,还是对得起这个位置的。
Habana Labs,这是个以色列的公司,被intel收购了,他们有两个芯片,推理芯片Goya和训练芯片Gaudi。intel还计划推出集成8个Goya或者8个Gaudi的服务器来卖。这个公司也是了不起的角色,说是Gaudi的训练速度能到V100的四倍。
CS-1,这是Cerebras公司的产品,单晶圆规模,就是整个芯片就是一个圆形大盘子晶圆的样子。一个晶片上有84个芯片,超过40万个核心,最大功耗20kW,每个核心有45k字节的本地内存,这些核心用mesh网络互联。但是这个芯片没有具体信息,因此图中的数据是按照基于fp16@2GHz时钟,并且400000个内核可以在每个时钟周期做FMA(融合乘加)估算出来的。
E. 数据中心系统
DGX,英伟达的核弹服务器,一共有四款。DGX-Station是有四路V100的塔式桌面系统;DGX-1是占据三个机架位置的八路V100服务器;DGX-2是占据10个机架位置16路V100服务器;DGXA100是用了8路最新的A100以及第三代NV-Link的服务器。
GraphCoreNode,这是GraphCore公司基于Dell的DSS8440 IPU服务器打造的系统,包含八路C2,就是上面提到的那个C2。
SolidRun Janux GS31,这个集成了128个前面提到的Gyrfalcon LightSpeeur 5801视频处理芯片的Gyrfalcon System。最大功耗900W。
【说了要做的加速器】
前面提到的都是已经有实物,货真价实能玩的了,而这里就要展望未来,看看各大公司立的flag了。请注意,paper的时间节点是2020年6月,因此下面的一些flag,现在这个时间节点可能已经实现了,但也不排除还有鸽子。
Cloud AI 100,这是高通立的flag,估计是一个低功耗高性能的芯片。(PS:这个高通现在已经开始出货了)
SambaNova,这是个公司,主要做可重新配置的AI加速器技术。
Graph Streaming Processing(GSP),这是Blaize公司立的flag,同样就说了个名,就啥也没有了。
CloudBlazer T10,这是Enflame公司立的flag,用于数据中心的训练加速器,将会支持比较多的数据类型。
Maxion,这是Esperanto公司基于RISC-V打造的AI处理器,但同样没有更多的信息。
下面介绍的是一些谈到的都是一些基于神经形态设计的加速器。
Akida,这是Brainchip公司的计划芯片,每个芯片具有1024个神经元,类似于IBM的TrueNorth,功率小于1W,预计使用11层SNN。
TENSAI,这是Eta Computing公司的计划芯片,他们用SNN网络演示过,但后来就不搞了,搞回传统的推理芯片了,不知道是不是他们对SNN的商业化没信心,不清楚会不会将其商业化。
aiCTX,这是一个公司,正在开发一个低功耗、低延迟的神经形态加速器,可以在毫瓦级别功耗和10ms内做单个样本的推理。
Anaflash,这是一个公司,在做基于eflash的脉冲神经形态芯片,编码320个神经元,每层有68个互联的突触。这种技术明尼苏达大学有论文论证过的,并且给了在MNIST数据集上的结果。
NeuronFlow,这是Grai Matter Labs公司的计划芯片,每个芯片有1024个神经元,可以在int8或者int16下运行。
Konikore,这是Koniku公司的一项技术,该公司正在通过设计有生物神经元构建的协处理器来对大脑进行电路建模。Konikore是结构化的微电机阵列系统。他们证明了保持神经元的生命是一个可解决的工程控制问题:活着的神经元在定义的参数空间中运行,并且他们正在开发控制环境参数空间的硬件和算法。
Loihi,这是intel的玩儿,是一个SNN处理器,现在扩展到了768个芯片,用来模拟1亿个神经元。
还有好多公司说要做基于光学处理和硅光子网络的AI处理器,有intel,Light Matter,Lighton,Lightelligence,Optalysys,Fathom Computing和Luminous。
这里还有悲伤的故事,有新兴公司,那就会有破产公司,这里作者还是拉了一些出来鞭尸,intel停止了训练芯片Nervana NNP-T、推理芯片Nervana NNP-I的开发。说了要做KnuPath芯片的KnuEdge公司倒闭了。有MIPS处理器技术的WaveComputing公司也倒闭了。孵化于普渡大学的TeraDeep,在AI芯片竞赛开始前的2016年就关门大吉了。
【后话】
这篇综述统计了好多芯片,而且每一个芯片都至少给了一个引用,有paper的,有公司文档的,啥都有,大家感兴趣的可以去原本的引用里面找找看。光是引用就是135个了。机器学习加速器这个,看下来就会发现,初创公司做的最多的是小芯片,搞算力爆炸功耗爆炸的,都是intel,英伟达这些核弹巨头,数据中心份额被他们吃了,但是edge端需要的低功耗,高性能芯片还是有点搞头的,现在也在拓展神经形态的SNN这种,基于光子的这一类,不过我觉得大家其实对于这些用什么技术的不太感兴趣,只要有好的tool chain,有好的document,有会中文的技术支持老哥,对小公司友好,成本低,供应稳定(暗示菊花)的芯片,大家才不会管你用的啥技术,就把你冲爆了。
这篇综述的工作是截止到2020年6月的,在2020年9月就贴出来了,不知道21年的工作什么时候发,这一年过去,不知道又发展成什么样子了。这里最后把2019的综述链接也给上,方便感兴趣的查看:https://arxiv.org/pdf/1908.11348.pdf
同样的给不想动的老哥贴一下19年的图: