标题:An Energy-efficient Inference Engine for a Configurable ReRAM-Based Neural Network Accelerator
时间:2022/TCAD
机构:国立台湾大学
说明:个人使用,图片若侵权可联系
摘要
阻变随机访问存储器(ReRAM)提供了一种潜在的解决方法,通过执行存内计算,可用于加速深度神经网络的推理。基于对ReRAM交叉阵列电路的功耗分析。本文提出了使用动态参考电压的可缩放ADC来执行点积计算,在维持精度的同时使得基于ReRAM的神经网络加速器可重配置。本文提出了一种可重配置的基于ReRAM的神经网络加速器来提供不同功耗下不同级别的计算粒度,实现了给定神经网络下性能和功耗的折中。接着。本文为基于ReRAM的可重配置神经网络加速器EIF设计了一个推理引擎(engine),基于神经网络的数据独立性,通过给ReRAM操作单元(OU,operating unit)设定尺寸大小来执行向量矩阵乘(VMM,vector-matrix computing)计算。本文的评估结果显示,相对最先进的基于ReRAM的加速器,在保持没有额外的资源复制并维持性能的同时,实现了对EIF超过36%的能量节省。
1. 引言
深度神经网络被广泛用于许多领域来解决各种非线性问题,例如图像处理,视频识别和自然语言处理。不同与传统应用,深度神经网络需要大量的计算和存储访问。GPU和TPU被设计出来处理此类应用。然而,随着在上述系统下的DNN的数据量要求越来越多,在计算单元和存储单元之间繁重的数据阻塞造成了性能瓶颈,由于计算当中频繁的存储访问使得能耗显著增加。
存内计算(PIM,Process-in-Memory)通过在处理器和存储器之间减少数据访问从而加速神经网络,是一种具有前景的解决方式。PIM执行了DNN中大量的计算,例如在存储器中执行VMM,通过限制数据移动,限制了存储器访问的瓶颈并减少能量消耗。基于ReRAM的存内计算已被研究,通过执行模拟形式的点积运算加速神经网络。基于ISAAC提出的方案,预先训练好的权重被存储到ReRAM单元中作为器件的电导,输入电压信号加入ReRAM中,1个周期中的的电流信号作为运算结果被产生。通过建立基于ReRAM的交叉阵列,大规模的VMM可被即时运算来提升性能,减少功耗。与DRAM相比,ReRAM没有漏电流,可提供高效的神经网络加速。然而,模数转换需要像ADC这样的外围电路,显著地增加了功耗。
研究表明,SAR ADC被用于基于ReRAM的神经网络运算。SAR ADC中功耗消耗巨大的DAC部件功耗在文献13中有分析**(公式介绍)**。SAR ADC的功耗被参考电压和分辨率所影响。
为了减少功耗,研究者探索了用低精度的ADC和数据编码用于基于ReRAM的PIM(文献14)。当精度低于8bit时,功耗更多地与参考电压相关。与此前的文章中可动态地调整参考电压从而减少功耗消耗不同,本文在基于ReRAM的PIM架构中提出了参考电压可缩放的ADC,可提升能效。参考电压的缩放消耗假定是可忽略的(文献15)。
使用低精度的ADC意味着在向量乘结果表示上具有更少的方式。用合适的数据编码机制,功耗可通过以降低准确度为代价使用低精度的的ADC实现。同样,在低参考电压上没有经过校正即执行同样的向量乘法可能会造成错误。为了维持精度,在降低参考电压之后,本文提出了从输入数据上降低所需的ADC转换精度。第1个技术问题在于如何在PIM架构中使得基于电流可缩放的ADC的参考电压可重配置,并维持模数转换的精度不变。为了处理这个问题,本文首先提出了1个可 重配置的ReRAM加速器,将VMM操作分解为更细粒度的几个子操作,在更低的参考电压上进行。VMM操作的细粒度同时激活相关WL和BL。可同时激活的最大的WL和BL在下文中被称为OU(operation unit)。尽管较低的参考电压降低了功耗消耗,神经网络中操作的数量却增加了,从而可在较长的时间内维持精度和结果。第2个技术问题在于如何最小化能量消耗,同时维持神经网络的性能。本文因此提出了一个节省能耗的推理引擎来利用由于滑窗(stride)操作导致的空闲时间。
为了实现功耗和推理延迟之间的折中,本文通过使用可配置的ADC来探索基于ReRAM的神经网络加速器的重配置。本文的关键贡献如下:
- 探索了用于ReRAM交叉阵列的可缩放动态参考电压的ADC来执行VMM从而最小化功耗,同时维持基于ReRAM的神经网络加速器的推理精度。
- 应用OU尺寸约束和可接收的参考电压范围,在本文的架构中处理基于ReRAM神经网络的精度。
- 提出可重配置的基于ReRAM的加速器,实现功耗和延迟之间的折中。本文设计将ADC的动态参考电压缩放性质转换为动态OU尺寸对VMM操作的适应性质,实现了基于ReRAM的神经网络加速器的运行时间功耗消耗的可适应性。
- 展示了高能效的推理引擎,基于神经网络的数据独立性调整OU尺寸,来提供基于能效的ReRAM神经网络加速器。
本文剩余部分按如下结构组织:第2部分真实了研究动机和背景。第3部分展示了基于ReRAM的可重配置的神经网络加速器,可提供动态参考电压缩放能力。第4部分提出了一个高能效的推理引擎,通过利用神经网络数据的独立性导致的idle cycle实现对能效的节约。第5部分展示了不同网络结构的神经网络应用下对本文所提方法的评估。最后,第6和7部分分别讨论了相关的工作和目前的结论。
2. 动机
本文探索层之间的数据独立性,实现了节能的基于ReRAM的神经网络加速。初步的实验探索了ADC的功耗与LeNet每一层的关系。归一化的功耗和能耗分别是ADC功耗和NN(神经网络)能耗的比值。归一化的能耗超过1时,表示NN的能耗大于在最大参考电压下执行的能耗。在此实验中,我们假定SAR ADC占据了tile功耗的58%,电容DAC占据了ADC能耗的66%。基于以上分析,我们可以获得SAR ADC在不同参考电压下的功耗。随着参考电压的下降,ADC的功耗也下降。尽管在缩小参考电压后,ADC的功耗下降了,ADC的积分非线性或许会随着输入信号与参考电压的比率线性增加。为了处理这个问题。我们提出了缩放输入电压Vin到参考电压Vref的想法,向量乘操作将会被第3-B中讨论地被实现。例如。对一个所要执行的操作需要的周期数在最大参考电压一半的情况下将会是在最大参考电压情况下的2倍。能耗也会由于增加的执行时间和其他部分导致提高,可见图2中的Vref,max/8的部分
接着本文探索了DNN模型中层之间的依赖性是如何造成了能量的耗散。第2和4层的stride均为2。如图2a所示,由于stride操作,请求必须等待来自前一层的中间输入数据,从而导致在最大参考电压Vref,max下层2的空闲周期。在缩放参考电压至Vref,max/2之后。请求的执行周期变为原来的2倍,我们在更小的粒度下执行操作从而维持精度如图2b所示。然而,图2b的反应时间基本与图2a相同,因为更长的执行周期将会回收在Vref,max状态下调度结果时的空闲周期。当缩放电压到Vref,max/4和Vref,max/8时,ADC的功耗成比例减小。
基于以上观察,我们提出了应用参考电压可缩放的ADC用户基于ReRAM的PIM架构中,并且展示1个引擎通过探索NN之间的数据依赖性来动态地调整参考电压。
3. 可重配置的基于ReRAM的神经网络加速器
在以下部分中,我们首先介绍了所提出的可重配置带有可缩放ADC的基于ReRAM的NN加速器(3-A部分)。为了减小所提出的基于ReRAM的NN加速器能耗,接着我们展示了如何将1个大的VMM分离成一些小操作。在本文中,我们假设所有的输入会被同时加载,不间断的研究将会寻求激活稀疏和数据加载导致的空闲周期。
-
架构
-
如图3所示为架构示意图。关键思想是在不同的功耗要求下提供各种计算粒度,在性能和功耗中寻求折中。权重和ReRAM阵列会被离线训练随后被编程进入ReRAM阵列中。
-
在编译时间,每一层的计算被分为多个VMM求情,用于生成下一层的中间数据。随后,我们从参考阵列中取到VMM请求并将其插入到预备队列中,此时中间输入数据在编译时间中被产生。
-
在运行时间,我们在预备欲裂中取到请求并将其调度到相应的ReRAM阵列中,基于第4部分的算法,引擎通过重新设置每一层的OU尺寸动态调整了参考电压。所提出的可重配置的基于ReRAM的加速器是基于ISAAC的架构,但我们使得运行时间的参考电压可重配置。
-
与ISAAC中提出的想法类似,芯片包含许多tile通过片上网络(concentrated-mesh),router,和芯片IO互连。每个tile包含eDRAM来缓存输入数据,多个在线乘加单元(IMA,insitu multiply-accumulate)以及输出寄存器来求和结果。tile也包含最大池化单元,激活函数sigmoid和移位加。每个IMA有多个交叉阵列。负责VMM加速和全连接层。IMA也有输入输出寄存器,用于存储中间数据,采样保持。
-
ADC为1bit精度。当重设OU尺寸时,相应的信号被送输入WL驱动和电压可缩放的ADC,来调整激活的WL和参考电压。我们所提出的架构可被扩展到其他需要ADC的PIM架构中。
-
在缩放参考电压后,功耗被成比例缩小,但ADC的积分非线性会增加。因此我们提出缩放输入电压Vin的方式。为了正确地将模拟量转化为数字量,我们使用移位加电路。在执行右移操作后,输出范围是此前范围的一半。接着,输入的VMM向量将会被分为2个子向量来保证请求的最大值在容许的范围。并且分离1个VMM成几个相连的子请求随后通过移位操作求和。
其他部分太冗长了,总的来说此文章假定了权重映射和数据流是预先决定的。只关注于在推理时如何节省能量。
此论文的评估架构为:
M. Poremba and Y. Xie, “NVMain: An architectural-level main memory simulator for emerging non-volatile memories,” in Proc. IEEE Comput. Soc. Annu. Symp. VLSI, 2012, pp. 392–397.