深度神经网络(DNN)因其强大的表征能力,在图像识别、自然语言处理、物体识别、自动驾驶等多个领域取得了突破性进展。为了适应更复杂的应用场景,深度神经网络不断发展,模型参数呈指数级增长,如近期表现惊人的GPT-3模型具有1751亿个参数。
深度神经网络对硬件的算力、能耗以及访存带宽的需求极高。最早的深度学习系统由上千台CPU服务器搭建,只单纯训练一个能识别猫的神经网络。层数众多、每层又有大量并行且层间流水的神经网络架构,充分暴露了CPU在并行性与访存带宽上的弱势,使CPU强大而复杂的缓存机制形同虚设。GPU的高并行和高带宽优势非常契合神经网络架构的上述需求,成为了云服务器上的主要硬件平台。
以寒武纪DianNao系列与谷歌TPU为代表的AI领域专用架构随后掀起热潮,其基本思想是进一步提高并行度,增加算力密度,摒弃缓存而显式地优化数据流与内存,精简控制。首先,针对DNN模型中占据绝对计算与访存开销的张量(tensor)运算,以张量为粒度设计运算器阵列并进行调度,同时减小每个乘法单元的位宽(INT8)。其次,针对已知的DNN计算与访存行为(静态计算图),进行BUFFER与运算器的显式优化,减少与DDR的交互(如TPU脉动阵列旨在提高数据在片上的复用率)。同时进行算子融合与调度优化等编译器优化(如利用多面体技术的算子融合以及TVM3中的调度自动优化等)。控制器设计也很简单,不再需要运行时调度、分支预测与复杂的缓存机制设计。更小的位宽、更精简的缓存和控制使片上更多的晶体管用于计算。比如英伟达最新的A100芯片上的540亿个晶体管中,只有45万个INT8乘法器(用作DNN推理),粗略估计有4.8亿个晶体管用于计算,比重不到9%;而有2.5亿个晶体管的TPU中用于计算的晶体管数量约占芯片总面积的24%。
近年来,深度神经网络在手机、可穿戴设备和机器人等端侧设备部署的趋势愈发明显。但这些设备的算力和带宽有限,难以进行部署和高能效运算大模型。DNN具有的高度稀疏性为我们带来了曙光:参数矩阵在正则化之后存在大量零参数,能省去大量乘加运算;DNN还能容忍更小的数据位宽。于是,DNN模型的压缩技术成为近几年一大研发热点,支持各种稀疏类型、不同位宽的压缩算法层出不穷。然而,压缩算法若不能获得硬件架构的友好支持,其实用性和能效优势会大打折扣。当前的DNN加速器正处于软硬件协同设计阶段。
由于存储器工艺发展速度远落后于CMOS工艺,存储与计算分离的冯·诺伊曼架构会导致经典的存储墙问题。DNN海量的操作数使存储墙问题更为突出。存算一体架构将DNN庞大的参数矩阵固定在存储器中,使乘加运算通过模拟(或数字)的方式发生在存储器件上(或外围电路中),有可能带来千倍的能效比优势。2020年,欧洲微电子研究中心(IMEC)联合格芯(Global Foundries)推出了一款Analog-in-Memory-Computing(AiMC)架构,能效比达到了创纪录的2900TOPs/W。可见,DNN专用架构的下一步演进将是存算一体架构。
热门跟贴