查看原文
其他

ISSCC2017 Deep-Learning Processors文章学习 (三)

2017-02-12 T.S. StarryHeavensAbove

第三篇

ENVISION: A 0.26-to-10TOPS/W Subword-Parallel Dynamic-Voltage-Accuracy-Frequency-Scalable Convolutional Neural Network Processor in 28nm FDSOI

Bert Moons, Roel Uytterhoeven, Wim Dehaene, Marian Verhelst

KU Leuven, Leuven, Belgium

Today, state-of-the-art mobile GPU’s and ConvNet accelerator ASICs [2][3] only demonstrate energy-efficiencies of 10’s to several 100’s GOPS/W, which is one order of magnitude below requirements for always-on applications. This paper introduces the concept of hierarchical recognition processing, combined with the Envision platform: an energy-scalable ConvNet processor achieving efficiencies up to 10TOPS/W, while maintaining recognition rate and throughput. Envision hereby enables always-on visual recognition in wearable devices.


从这段文字可以看出,这项工作的核心是提供一个能效可伸缩的平台(0.26-10TOPS/W),以此为基础实现层次化识别处理的概念,支持所谓always-on的图像识别能力。我感觉架构层面最重要的是支持Dynamic-Voltage-Accuracy-Frequency-Scaling的乘法器。可以看出在datapath上动态scaling的能力会是DL processor设计的一个重点。


1. 层次化识别处理的需求

这里用身份识别应用作为例子,说明可以使用一系列不同复杂度(拓扑结构,网络规模,处理精度等等)的ConvNets来支持不同需求。这样就可以实现在一般情况下,用较低功耗持续的扫描人脸,而在必要的时候(比如检测一个特定的人),快速提高网络复杂度,比如达到一个完全的基于VGG-16的人脸识别。当然,人脸识别只是类似需求的一个例子。要实现这样的层次化方法,必须有具体高度伸缩性的底层硬件的支持。


2. DVAFS:Dynamic-Voltage-Accuracy-Frequency-Scaling

和我们比较常用的系统级的DVFS相比,这里的DVAFS主要是对算数单元进行功耗的优化。另外,把Accuracy的因素结合到整个优化过程也是考虑到深度学习中的不同需求。

文中提到了DAS,DVAS和DVAFS三种scaling。DAS主要是在MAC输入的位置通过rounding或者masking几个LSB的比特(数量可配置)来起到降低能耗的作用。


DVAS可以在DAS的低精度模式下使用更短的路径,同时调整工作电压,在保证恒定的处理带宽的前提下降低功耗。


这篇文章的重点是“subword-parallel DVAFS”,使用了可以部分并行的乘法器,从而可以在低精度的模式下重用一些在DVAS方法中没有使用到的运算器。这些运算单元也可以有多种配置。

由于利用了更多的运算单元,和DVAS相比,DVAFS可以在保持数据处理带宽的前提下,进一步降低低精度模式下的处理器的时钟频率和电压。可以认为这种方法可以同时降低:activity a、frequency f和voltage V(也就是决定能耗的所有因素)。此外,相比DAS和DVAS只是通过精度调整降低了运算单元的能耗,DVAFS可以降低整个系统的频率和电压,这对于控制和存储部分同样是有作用的。


个人感觉这种复杂的scaling本身会有一定代价,并带来一些风险。不过,动态适应不同精度要求的处理还是很值得研究的一个方向。


Body-Bias的优化

这里主要是在考虑运行精度的前提下调整Body-bias来平衡动态和静态功耗。在高精度的情况下降低Vt,可以在保证速度的同时适当降低的工作电压。虽然这样会增大一些leakage,但是动态功耗大大降低也起到了降低整体功耗的目的。在精度要求不高的情况下,也是类似的思路。


处理器架构


处理器顶层除了有多个电压域,还有不同的body-bias区域。设计了一个定制指令的16Bit SIMD RISC处理器做主控制器。


处理器还包括一个2D-SIMD阵列(Convolution处理)和 一个1D-SIMD阵列(ReLU, max-pooling等处理) 和一个scalar ALU。


具体到所谓2D-SIMD的使用,每个MAC都是一个单周期N-subword-parallel乘法器(Nx16B/N 可配置),跟着一个N×48b/N可配置的累加器。因此,16x16的MAC阵列每个周期,消耗Nx16个权重(filter weights)和Nx16个特征值,输出Nx256个中间结果。在下一个周期,一个256b FIFO重用并在X轴上左移特征值,这样每周期只需要一次读取特征值的操作,从而减少了存储器访问的带宽。另外,所有的中间输出都存储在累加器的寄存器里,不需要在MAC之间进行数据交互,也不需要频繁写回SRAM。最后,处理器充分利用数据稀疏性,通过GRD memory里存储的标志,来控制memory读取和MAC操作。这部分应该在之前的工作 [4]中就已经实现了。


另外,这一段里的N是指MAC中乘法器字宽的配置。下面两个图就分别是N=2,4的情况。这也是前述的DVAFS中运算资源可灵活配置的体现。




结果


主要看看不同的N取值的情况。



References:

[1] Y. LeCun, et al., “Deep Learning,” Nature, vol. 512, no. 7553, pp 436-444,

2015.

[2] L. Cavigelli, et al., “Origami: A Convolutional Network Accelerator,” IEEE Great

Lakes Symp. on VLSI, 2015.

[3] Y.H. Chen, et al., "Eyeriss: An Energy-Efficient Reconfigurable Accelerator for

Deep Convolutional Neural Networks," ISSCC, pp. 262-263, 2016.

[4] B. Moons, et al., "A 0.3-2.6 TOPS/W Precision-Scalable Processor for Real-

Time Large-Scale ConvNets," IEEE Symp. VLSI Circuits, 2016.


个 人 观 点

本文工作的内容还是比较丰富的,是之前工作[4]的延续。由于篇幅问题,细节有些看不清的地方,需要后面再看看相关文章。

本文重点讲的DVAFS,应该是代表了架构设计的一个趋势。但其实这项技术涉及的内容还是很多的,也需要解决大量细节上的问题。如果能逐渐形成比较成熟的方法学和相应的工具链,应该对DL processor设计有很大帮助。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存