在开始AI处理器的讨论之前,先上一张经典的类比图:分别以“可编程能力/灵活性”和“开发难度/定制性/计算效率/能耗”为横轴和纵轴,将当前主流处理器CPU、GPU、FPGA、专用ASIC置于下图中。
图1.1 计算平台选择依据
可见,无所不能的CPU,其最大限度的灵活性是以牺牲计算效率和能耗为代价的。FPGA和ASIC则更倾向于针对某一特定应用,达到较高的计算效率和能耗比。无疑,专用ASIC具有最高的计算效率和最低的功耗,但在架构、设计、仿真、制造、封装、测试等各个环节将消耗大量的人力和物力。而在深度学习模型不断涌现的环境下,对CNN、RNN等各个模型分别进行构架设计甚至定制一款独立ASIC是一件非常奢侈的事情,因此在AI处理器的设计上,大家的做法逐渐一致,设计一款在AI领域具备一定通用性的FPGA/ASIC构架,即与GPU类似的领域处理器。使其可以覆盖深度学习中的一类(如常见CNN模型),或多类(如CNN+RNN等)。
伴随着深度学习模型的深化和算力需求的提升,从学术界兴起的AI处理器方案已经迅速蔓延到工业界。目前,各大互联网、半导体、初创公司的方案归纳如表1所示,若感兴趣可转到唐杉同学维护的列表:https://basicmi.github.io/Deep-Learning-Processor-List/。
表1 深度学习处理器方案列表
图1.2 AI处理器的发展和设计目标
AI处理器的发展过程如图1.2所示。在早期,计算规模较小,算力较低,故研发的AI处理器主要针对嵌入式端的应用;随着模型的逐渐加深,对算力的需求也相应增加,导致了带宽瓶颈,即IO问题(带宽问题的成因详见2.2节),此时可通过增大片内缓存、优化调度模型来增加数据复用率等方式解决;当云端的AI处理需求逐渐浮出水面,多用户、高吞吐、低延迟等需求对算力的需求进一步提升,传统的方式已经不能IO问题极大的阻碍了处理器性能。此时,片上HBM(High Bandwidth Memory,高带宽存储器)的出现使深度学习模型完全放到片上成为可能,从而解决了IO瓶颈,使云端的发展方向从解决IO带宽问题,转向解决算力伸缩问题。
到目前为止,以HBM/HMC的应用为标志,云端高性能深度学习处理器的发展共经历了两个阶段:
1 第一阶段,解决IO带宽问题(与嵌入式的方式类似);
2 第二阶段,解决算力伸缩问题。
第一阶段,囊括了初期的AI处理器,以及至今的大部分嵌入式前段的解决方案,包括第一代TPU、目前的FPGA相关构架、寒武纪的ASIC构架,以及90%以上的学术界成果等。欲达到更高的性能,一个有效的方法是大幅度提升计算核心的并行度,但算力的扩张使IO带宽成为瓶颈。例如,图1.3中的1个乘加运算单元若运行在500MHz的频率下,每秒需要4GB的数据带宽;一个典型的高性能FPGA(以Xilinx KU115为例)共有5520个DSP,跑满性能需要22TB的带宽;而一条DDR4 DIMM仅能提供19.2GB的带宽。因此在第一阶段,设计的核心是,一方面通过共享缓存、数据调用方式的优化等方式提升数据复用率,并利用高带宽的片上缓存减少片外存储器的数据加载。另一方面通过模型优化、低位宽量化、稀疏化等方式简化模型和计算。
数据复用的例子如图像卷积时,对于一张输入的特征图(FeatureMap),其卷积核(Kernel)只需加载一次即可在整张FeatureMap上复用;而增加并行任务数量(Batchsize)可以进一步使同一组Kernel复用于更多FeatureMap。
图1.3 一个乘加单元及其带宽计算
尽管片上分布的大量缓存能提供足够的计算带宽,但由于存储结构和工艺制约,片上缓存占用了大部分的芯片面积(通常为1/3至2/3),限制了缓存容量的进一步提升,如图1.4所示。
图1.4 芯片中片上缓存的规模,左图为第一代TPU,蓝色部分为缓存区域,占用芯片面积的37%;右图为寒武纪公司的DiaoNao AI ASIC设计,缓存占面积的66.7%(NBin+NBout+SB)。
而以HBM为代表的存储器堆叠技术,将原本一维的存储器布局扩展到三维,大幅度提高了片上存储器的密度,如图1.5所示,标志着高性能AI处理器进入第二阶段。但HBM在工艺、封装、IP等方面的要求大幅度提升了成本,因此仅出现在互联网和半导体巨头的设计中(NVIDIA、AMD、Google、Intel)。HBM使片上缓存容量从MB级别提升到GB级别,可以将整个模型放到片上而不再需要从片外DDR中加载;同时,堆叠存储器提供的带宽不再受限于芯片IO引脚的制约而提升100倍,使带宽不再是瓶颈。此时,设计的核心在于高效的计算构架、可伸缩的计算规模、和分布式计算能力。
图1.5 HBM与片内垂直堆叠技术
在后续的论述中,这两个阶段的构架方案有较大区别,分别如下;若仅对科技巨头的方案感兴趣,可忽略(二)。为保证论述的一致性,TPU和TPU2的内容合并在(三)中讨论。
深度学习的异构加速技术(二)带宽扼喉下的百花齐放
深度学习的异构加速技术(三)算力释放与异构集群
未完待续。。。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。