A survey of Accelerator Architectures for Deep neural Networks
摘要
大数据应用的爆发式增长推动了ML的发展,但也对传统计算机系统的数据处理速度和可拓展性提出了严峻的挑战。专门为人工智能应用设计的计算平台已经被考虑,从冯·诺伊曼架构的补充发展到不可缺失,再发展到独立的技术解决方案。此文重点总结了深度神经网络(DNN)加速器设计的据最新进展。支持DNN执行的各种架构,包括计算单元、数据流优化、目标网络拓扑、新兴技术的架构以及新兴应用的加速器。还对未来AI芯片设计未来趋势进行了展望。
引言
一般来说,现代ML算法可以分为两类:人工神经网络(Artifical neural networks ANN),其中数据表示为数值,以及脉冲神经网络(Spiking neural networks SNN),其中数据由尖峰表示。
生物学理论基础、硬件设计和算法(软件)三个层面的创新是人工智能加速器的三大基石。
除了传统的COMs设计之外,新兴的非易失性存储器,比如ReRAM(metal-oxide resistive random access memory)已经在AI加速器设计中被探索。这些新兴的存储器具有高存储密度和快速访问时间,以及实现内存计算的潜力。更具体地,ReRAM阵列不仅可以存储NN,而且还可以以模拟方式执行原位矩阵向量乘法。另一方面,ML算法可以在很大程度上容忍有噪声的模拟操作,因为它们对噪声和故障具有很强的免疫力。
然而,ReRAM交叉开关中的模拟信号与加速器中其他数字单元中的数字值之间的转换需要数模转换器(DAC)和模数转换器(ADC),这在基于ReRAM的NN加速器中消耗高达66.4%的功耗和73.2%的面积开销。
CMOS还可以用于存储器单元,最基本的存储器单元是静态随机存储器(SRAM)。
背景
DNNs的推断与训练
计算模式
矩阵乘法和卷积在90%以上的运算中占主导地位,并且是DNN加速器设计的主要目标。
DNN中的卷积可以被视为矩阵乘法的扩展版本,它增加了局部连通性和平移不变性的属性。
Resistive memory
在图4(a)中,每个ReRAM单元具有夹在顶部电极(TE)和底部电极(BE)之间的金属氧化物层。忆阻器单元的电阻可以通过施加具有适当脉冲宽度或幅度的电流或电压来编程。
该结构已被证明具有有效加速NN中矩阵向量乘法的吸引力。在图4(b)中,向量由字线(WL)上的输入信号表示。矩阵的每个元素被编程到交叉杆阵列中的单元的电导中,在每个位线(BL)的末端处的电流求和被视为矩阵-向量乘法的结果。
具体计算详情可以参考这篇博客。
片上加速器
NPU the neural processing unit
每个PE执行一个神经元的计算,即乘法、累加和激活函数。因此,NPU执行的多层感知器(MLP)NN的计算。
NPU可以看作硬件化的MLP
如果一个程序段①频繁执行②可逼近,③输入和输出定义明确,则该程序段可以由NPU加速。
RENO: A reconfigurable Noc accelerator可重构片上网络加速器
SoC通常是指在单一芯片上实现的数字计算机系统,通过总线完成其中各模块之间的交互,但随着半导体工艺和需求的快速发展,总线的宽度已经成为SoC发展的瓶颈,大大限制了SoC内部通信的速度。
90年代NoC技术的提出也是因为借鉴了并行计算机的互联网络和以太网络的分层思想,二者的相同点有:支持包交换、路由协议、任务调度、可扩展等。NoC更关注交换电路和缓存器的面积占用,在设计时主要考量的方面也是这些。NoC将宏观网络的通讯措施应用于芯片上,每个核当做一个独立的单元,IP核经过网络接口与特定的路由器相连。将IP核之间的通信转换为路由器与路由器的通信。
NPU是为加速通用程序而设计的(硬件化NN),RENO是一个NN加速器。
RENO利用ReRAM交叉开关作为基本计算单元来执行矩阵向量乘法。
RENO支持多层感知机(MLP)和自动关联存储(AAM)的处理,并且为RENO和CPU的流水线设计了相应的指令。
联想记忆指的是记住概念之间关系的能力,而不仅仅是单个概念本身。
独立的DNN/卷积神经网络加速器
自定义体系结构通常需要深入了解目标工作负载。设计中对数据流(或数据重用模式)进行了仔细的分析和利用,以减少片外存储器访问,提高系统效率。
我们分别使用DianNao系列和张量处理单元(TPU)[5]作为学术和工业实例来解释独立加速器的设计并讨论数据流分析。
DianNao系列:学术例子
包括:
(1)计算块神经功能单元(NFU),其执行计算;(2)用于输入神经元的输入缓冲器(NBin);(3)用于输出神经元的输出缓冲器(NBout);(4)用于突触权重(SB)的突触缓冲器;(5)控制处理器(CP)。
NFU,其中包括乘法器,加法器树,和非线性功能单元,被设计为一个流水线。
一个暂存存储器被用作片上存储,因为它可以由编译器控制,可以很容易地探索数据的局部性。
TPU
数据流分析和架构设计
DNN/CNN通常需要较大的内存占用。对于大型和复杂的DNN/CNN模型,不太可能将整个模型映射到芯片上。
由于片外带宽有限,提高片内数据复用率,减少片外数据传输对提高计算效率至关重要。
具有新兴记忆的加速器
ReRAM 和混合存储器立方体(HMC)是实现存储器中处理(processing-in-memory,PIM)的代表性新兴存储器技术和存储器结构。PIM可以大大减少计算平台中的数据移动,因为CPU和片外存储器之间的数据移动消耗的能量比浮点运算多两个数量级。DNN加速器可以从ReRAM和HMC中获得这些好处,并应用PIM来加速DNN的执行。
基于ReRAM的DNN加速器
利用ReRAM进行DNN加速的关键思想是使用ReRAM阵列作为矩阵向量乘法的计算引擎。
基于HMC的DNN加速器
HMC垂直地集成DRAM管芯和逻辑管芯。HMC提供的高存储器容量、高存储器带宽和低延迟使近数据处理成为可能。在基于HMC的加速器设计中,计算和逻辑单元被放置在逻辑管芯上,并且存储库中的DRAM管芯用于数据存储。
用于新兴应用的加速器
DNN加速器的效率也可以通过应用高效的NN结构来提高。例如,NN修剪使模型小而稀疏,从而减少了片外存储器访问。NN量化允许模型在低精度模式下操作,从而降低所需的存储容量和计算成本。
稀疏神经网络
以前在密集-稀疏-密集(dense-sparse-dense,DSD)中的工作已经表明,大部分NN连接可以在具有或不具有最小精度损失的情况下被修剪为零。也已经提出了许多对应的计算架构。例如,EIE和Cnvlutin 分别针对加速具有稀疏权重矩阵和稀疏特征图的NN模型的计算。然而,在这些设计中采用的特殊数据格式和额外的编码器/解码器引入了额外的硬件成本。一些算法工作讨论了如何以硬件友好的方式设计NN模型,例如通过使用块稀疏性,如图13所示,还提出了可以处理不规则的存储器访问和稀疏NN中的不平衡工作负载的技术。例如,Cambricon-X 和Cambricon-S 通过协作软件/硬件方法解决稀疏NN中的存储器访问不规则性。ReCom 提出了基于结构权重/激活压缩的基于ReRAM的稀疏NN加速器。
低精度神经网络
降低数据精度或量化是提高DNN加速器计算效率的另一种可行方法。降低数据精度或量化是提高DNN加速器计算效率的另一种可行方法。最近的TensorRT结果表明,广泛使用的NN模型,包括AlexNet,VGG和ResNet,可以量化到8位,而不会损失推理精度。
然而,对于这样一个统一的量化策略很难保留网络当进一步采用较低精度的准确性。许多复杂的量子化方案被提出来,但是,显著增加量化编码器/解码器的硬件开销和加速器的工作负载调度器设计。如以下讨论中所示,在各种优化的情况下,数据精度和整体系统效率之间存在“最佳点”:
- 权重和特征图被量化为不同的精度,以实现更低的推理精度损失。这可能会改变原始数据流并影响加速器架构,尤其是暂存存储器。
- 不同的层或不同的数据可能需要不同的量化策略。一般而言,神经网络的第一层和最后一层要求较高的精度。这一事实增加了量化编码器/解码器和工作负荷调度器的设计复杂度。
- 新的量化方案已被提出,通过观察的数据分布的特性。例如,离群值感知加速器对大多数数据(权重和激活)执行密集和低精度计算,同时有效地处理少量稀疏和高精度离群值。
- 已经提出了一种新的数据格式,以更好地表示低精度数据。例如,补偿的DNN 引入了新的定点表示:带误差补偿的固定点(FPEC)。此表示法有两个部分:①计算位,为常规定点格式;以及②补偿比特,其表示量化误差。这项工作还提出了一个低开销的稀疏补偿方案,估计错误的MAC设计。
生成式对抗网络
与原始DNN/CNN相比,GAN由两个NN组成:即发生器和鉴别器。生成器学习产生假数据,该假数据被提供给鉴别器,并且鉴别器学习区分所生成的假数据。目标是让生成器生成最终无法被鉴别器区分的假数据。这两个神经网络进行迭代训练,并在极大极小博弈中相互竞争。GAN的操作涉及一种新的运算符,称为转置卷积(Transposed convolution)(也称为反卷积或分数步长卷积)。与原始卷积相比,转置卷积通过在特征图中插入大量零来执行上采样。如果直接映射转置卷积操作,则将引入冗余计算。如果零被绕过,还需要技术来处理非结构化存储器访问和不规则的数据布局。
总之,与第4节中讨论的独立DNN/CNN推理加速器相比,GAN加速器必须①支持训练,②适应转置卷积,③优化非结构化数据访问。
ReGAN提出了基于ReRAM的PIM GAN架构。在图14中,为逐层计算设计专用流水线,以便增加系统吞吐量。两种技术,称为空间并行和计算共享,提出了进一步提高训练效率。LerGAN提出了一种无零数据整形方案,以消除基于ReRAM的PIM GAN架构中的零相关计算。提出了一种可重构的互连方案,以减少数据传输开销。
对于基于CMOS的GAN加速器,以前的工作提出了GAN中不同步骤的有效数据流;即,用于前馈/后向传播的零自由输出平稳(ZFOST),以及用于权重更新的零自由权重平稳(ZFWST)。GANAX 提出了一种统一的SIMD-多指令多数据(MIMD)加速器,以最大限度地提高生成器和鉴别器的效率:SIMD-MIMD模式用于选择性执行,由于发生器中的零插入,而纯SIMD模式用于操作鉴别器中的常规CNN。
递归神经网络 Recurrent neural network RNN
RNN有许多变体,包括门控递归单元(GRU)和LSTM (Long Short Term Memory)。与传统的DNN/CNN相比,RNN的递归特性导致复杂的数据依赖性。
ESE展示了一个专用于稀疏LSTM的加速器。提出了一种负载平衡感知的剪枝算法,以保证较高的硬件利用率。调度器被设计成编码压缩模型并将其划分到多个PE以用于并行性并调度LSTM数据流。DNPU提出了一种8.1TOPS/W可重配置的CNN-RNN片上系统(SoC)DeltaRNN 利用RNN delta网络更新方法来减少内存访问:神经元的输出仅在神经元的激活改变超过增量阈值时更新。
DNN加速器未来发展
DNN训练和加速器阵列
几乎所有的DNN加速器架构都专注于加速器本身的DNN推理优化,很少考虑训练支持,假设DNN模型在部署之前已经被训练过。很少有加速器架构可以支持DNN训练。随着训练数据集和NN的大小增加,单个加速器不再能够支持大型DNN的训练。不可避免地需要部署一系列加速器或多个加速器来训练DNN。
基于ReRAM的Process in memory PIM加速器
边缘设备上的DNN加速器
为边缘的DNN设计轻量级、实时和节能的架构是下一步要追求的重要研究方向。