从ISSCC Deep Learning处理器论文到人脸识别产品

从ISSCC Deep Learning处理器论文到人脸识别产品

新闻: 最近,韩国科学技术院的科研团队开发出一种超低功耗的高性能人工智能芯片,并在此基础上开发出一套多功能、高效率的人脸识别系统。

其中说了几个应用,感觉比较靠谱的是下面这个警察随身佩戴,实时进行人脸识别的应用。(请忽略视频的画风)


(图片来源于:KAIST)

这个芯片来自KAIST,它的基础工作在今年的ISSCC上有过介绍,我之前的文章也进行了分析,大家可以参考一下。


“DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Processor for General-Purpose Deep Neural Networks”

Dongjoo Shin, Jinmook Lee, Jinsu Lee, Hoi-Jun Yoo

KAIST, Daejeon, Korea


这篇文章提出的处理器同时支持CNN-RNN结合的操作,并实现较高的能耗效率(8.1TOPS/W)。


1. 挑战

首先,CNN和FC/RNN两类网络在运算和参数方面的需求有很大的不同。


这种差异也造成专门为CNN设计的硬件加速器不适合用于RNN网络,反之亦然。下面这页还是比较清楚的说明了这个问题。



另外两个挑战分别是不同层处理的差异性以及对处理能力(包括运算和访存)的挑战。这里是用VGG-16为例,是否具有普遍代表性是有疑问的。



2. 处理器架构



从大的架构上来看,作者并没有试图用一个架构来同时支持CNN和RNN,而是放了两个不同的处理器。看到这里,本以为作者会比较详细的介绍一下这两个处理器是怎样有效的协同工作的,但是从ppt和论文都没有举例说明。后面的实验结果部分也只是介绍了VGG-16的情况,不算一个完整的CNN+RNN的例子。

后面作者介绍了细节工作,首先给出了Convolution Processor的架构。这里没有太新鲜的东西。基本是由多个分布的卷积运算加速器,一个处理其它运算(polling,Relu...)的Aggregation core和一个Controller组成。



到此为止在大的架构上并没有太大的新意。


3. 几项具体技术

后面的几点贡献还是有借鉴价值的,包括:

– Mixed workload division method (在on-chip memory受限的情况减少off-chip memory的访问)


由于on-chip memory大小受限,输入层的图像必须被分成若干部分。分割的方法包括:图像分割 image division (ID),通道分割channel division (CD) 和混合分割mixed division (MD)。对于图像分割ID的情况,为处理每一个分割图像,相同的权重参数必须被多次从off-chip memory载入。对于通道分割CD的情况,对于单独的一个分割图像,最终的输出元素无法计算,因此要进行多次off-chip memory访问。混合分割就是混合使用了上述两种方式,以达到更优化的效果。文章也给出了VGG-16中的可能分割模式和结果。


– Dynamic fixed-point with on-line adaptation (适应不同层的不同的数据分布)


在不同的层采用不同的定点数是由于不同层的数据分布(动态范围)有较大不同。本文的主要贡献是提出了一个on-line调整的方法(前人工作里有通过off-line training来获得各个层的定点配置的方法)和相应的LUT-based的乘法器实现。


– Quantization table-based multiplier (将16bit weight转换为4bit index;将乘法转换为查表)



基本来说就是weight按4bit量化,先将输入和16个weight值相乘存在Q-table里。后面在需要乘积就可以直接通过index查表获得了。按文章的说法,有如下的结果。也可以看出,Zero skipping还是很实用的技术。

4. 实验结果

实验结果中分析了AlexNet和Fully-connected,LSTM层的实现结果。结果里并没提到VGG-16的实现(处理能力的要求高很多),也没太看出他们强调的8.1TOPS/W的效率是怎么算的。



论文参考文献:

[1] O. Vinyals, et al., “Show and Tell: A Neural Image Caption Generator,” Computer Vision and Pattern Recognition, pp. 3156-3164, 2015.
[2] Y. Chen, et al., “Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks,” ISSCC, pp. 262-263, 2016.
[3] B. Moons, et al., “A 0.3-2.6TOPS/W Precision-Scalable Processor for Real-Time Large-Scale ConvNets,” IEEE Symp. on VLSI Circuits, 2016.
[4] J. Sim, et al., “A 1.42TOPS/W Deep Convolutional Neural Network Recognition Processor for Intelligent IoT Systems,” ISSCC, pp. 264-265, 2016.
[5] S. Han, et al., “EIE: Efficient Inference Engine on Compressed Deep Neural Network,” IEEE/ACM Int’l Symp. on Computer Arch., pp. 243-254, 2016.


个人点评

看标题以为这个处理器是用单一架构同时支持CNN和RNN混合运算,但实际上还是用了两套处理器各做各的。看来想用一个架构同时对CNN和RNN实现高效处理,满足嵌入式系统需要的能耗效率还是很有挑战的(也许是不可能的?)。

文章介绍的实现中的trick还是有借鉴意义的:
– Mixed workload division method

– Dynamic fixed-point with on-line adaptation

– Quantization table-based multiplier


T.S.

这里可以看到我写的大部分文章:Deep Learning Hardware - 我的文章

欢迎订阅我的公众号StarryHeavensAbove

文章被以下专栏收录

    随着深度神经网络和深度学习的快速发展,深度神经网络的inference(推断)功能已经逐渐从通用平台(CPU,GPU)向专用平台(FPGA,DSP,专用处理器和硬件加速器)延伸。希望在这里可以和大家讨论最新技术和发展趋势。 T.S.