@article{Im2023SibiaSB,
title={Sibia: Signed Bit-slice Architecture for Dense DNN Acceleration with Slice-level Sparsity Exploitation},
author={Dongseok Im and Gwangtae Park and Zhiyong Li and Junha Ryu and Hoi-Jun Yoo},
journal={2023 IEEE International Symposium on High-Performance Computer Architecture (HPCA)},
year={2023},
pages={69-80}
}
摘要
由于近来的DNN(深度神经网络)任务需要不同精度的密集矩阵运算以及采用非ReLU的激活函数,移动神经网络处理器(NPU)由于有限的硬件资源和功耗难以加速各种各样的神经网络任务。尽管bit-slice架构从slice级别的计算和稀疏中受益,传统的bit-slice表示在bit-slice架构中并不高效,使得DNN操作效率低。本文提出了高效的有符号bit-slice架构Sibia,有符号bit-slice表示(SBR,signed bit representation)可用于密集DNN的高效运算。SBR对每个bit-slice增加1个符号bit,并通过从低位的bit-slice借1将1111改变为0000。此机制在即便不依赖于精度敏感的剪枝算法和重训练过程时也可以产生大量的0值bit-slice。并且,SBR平衡了2的补码表示的正负值,支持预先计算高位的it-slice的基于bit-slice的精确输出推测。Sibia为高效符号bit-slice集成了有符号乘累加(MAC)单元,所集成的灵活跳0处理单元(PE)支持输入bit-slice的跳0和输出跳0,实现高数据通量和能效。此外,动态稀疏监测单元监测输入和权重数据的稀疏比率,选择跳过二者中更为稀疏的一个对0值bit-slice进行跳0;异构的片上网络(NoC)在bit-slice计算时受益于数据复用,减少了传输带宽。最后,Sibia相比此前的bit-slice架构:Bit-fusion,实现了3.65x的面积效率,3.88x的能效和5.35x数据通量的提升。
引言
降低DNN的bit精度可降低对存储带宽的需求从而提升DNN的执行性能,因此bit-slice架构被设计用于bit-slice级别的计算,支持各种各样低bit精度的DNN计算。通过集成大量的低bit精度MAC单元,并通过时空选通动态匹配DNN的bit精度的bit-slice架构被提出。通过利用输入输出稀疏性的bit-slice架构仍有望进行算法上的提升。跳过0值bit-slice的架构仍有望实现性能的提升。
跳过0值输入bit-slice可提升硬件性能,这不仅对ReLU函数造成的0值有效,也对高位bit-slice的近似0值的正数有效。另一方面,基于bit-slice的输出跳变架构可利用softmax操作或者最大池化操作造成的稀疏。由于许多在softmax层和最大池化层之后的输出是0值或者近似0值,输出跳变结构通过预先计算高位的bit-slice并跳过剩余的计算来推测不太敏感的输出,从而实现高数据通量和能效。
传统的bit-slice表示通过分解2的补码的定点数据为bit-slicess,这对bit-slices的架构造成了一些问题。首先,0值bit-slice的产生受限于0值和近似0值的正数。当在bit-slice架构上执行密集DNN时这是个问题。例如,目前现金的DNN利用了一些非ReLU的激活函数,如GeLU,leaky ReLU和ELU,它们使用较小的值表示饱和负数。并且,权重数据也是密集的数据,因为他们在DNN训练时遵循高斯分布。因此,此前的bit-slice的产生错过了大量在输入和权重数据中近似0值的负数的slice级别的稀疏性。具体来说,bit-slice架构只利用了12%的0值bit-slice,即便1111数据占据了ELU激活函数74.2%的值。结果就是,0值bit-slice跳变结构无法利用大量的0值数据,由于在密集DNN中的0值bit-slices数量较少,他们的表现不佳。
其次,输出推测可预先计算高位的bit-slices,然后避免对剩余不敏感输出量的计算;然而输出推测会由于在正负之间不平衡的2的补码数量而发生错误,如图2a所示。例如。传统的bit-slice分解1100111(-25)和0011011(25)的高位bit-slice是1100(-4)和0011(3)。(-25)x(25)的推测输出为(-12),但(25)x(25)的推测输出为0。虽然他们的全带宽MAC结果为0。但他们的推测结果为-3。因此,不平衡的bit-slice造成了输出推测错误。具体的,32选1的最大池化输出使用了1个预先计算的输入和权重高位bit-slice均为4bit的精度,造成了VoteNet中19.9%的失误,然而全8bit输入和4bit高位bit-slice的权重组合降低推测错误到了<5%的程度。因此传统bit-slice表示的输出跳0架构必须利用全带宽的bit-slices来进行输出推测,限制了性能的增强。
再者,slice级别的稀疏利用架构相比全bit宽度的稀疏利用架构有更大的硬件开销。由于4bit的bit-slice架构相比8bit定点采用了4x数量的MAC单元,需要4x数量的0值跳变单元,如图3所示。
其他待更新
值得一看的文献
Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding (2015)
Eie: Efficient inference engine on compressed deep neural
network (2016)
Sparsity-aware and re-configurable npu architecture for samsung flagship mobile soc (2021-ISCA)
Bitblade: Area and energy-efficient precision-scalable neural network accelerator with bitwise summation (2019-DAC)
A 3.4-to-13.3 tops/w 3.6 tops dual-core deep-learning accelerator for versatile ai applications in 7nm 5g smartphone soc (2020-ISSCC)
Hnpu: An adaptive dnn training processor utilizing stochastic dynamic fixed-point and active bit-precision searching (2021-JSSC)