ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下。
A 2.9TOPS/W Deep Convolutional Neural Network SoC in FD-SOI 28nm for Intelligent Embedded Systems
单位:STMicroelectronics(意法半导体)
这是一篇很综合芯片SOC设计,总体架构如下:
本文采用的DSP簇作为加速阵列,包含8个DSP簇,每簇内含2个32位的DSP,4通道16KB的I-Cache,64KB的本地RAM和64KB的共享RAM;提供面向DCNN的ISA扩展;采用2D-DMA。DSP内部结构如下:
采用层次化存储结构:4MB共享RAM(4x16x64KB),每个64KB的单元都可以单独控制是否启用。共享存储通过64位的bus进行数据传输。L2 Cache通过编程可控,用于存储特征图及参数(feature maps and parameters),每一层memory的能效对比如下图。
硬件加速子系统:8个卷积加速器+16个CDNN定制流数据DMA、支持数据流可重配置的计算、专用IP(H264/MJPEG/2图像修剪单元/边缘检测单元/4色度卷积/…)
本设计是典型的CNN专用加速引擎+DSP通用处理的思路(业界很多这样类似的设计)——卷积在专用加速器里做,其他的(ReLU/Pooling/FC/LRN等)在DSP做。下面是Alexnet为例的运行切分;这样设计有一个很大也很容易想到的优势,就是专用阵列和DSP可以同时运行。
The DSPs can operate in parallel with CAs and data transfers, synchronizing by way of interrupts and mailboxes for concurrent execution.
下面是专用加速引擎比较有代表性的一个设计,就是每个kernel和data都是分batch做的,每个batch的临时结果再累加到一起。(这里batch是指channel的一批,和多张图像批处理的batch不同意思)
但是有8个CA,是不是简单的全并行处理呢(指每个CA处理一个Kernel的全部计算,分别输出)?并不是。论文中设计了并行,链式,以及混合式三种执行方法。
DCNN专用加速单元CA:核心计算部件为36个16×16的MAC计算单元+13输入的属性加法单元。通过ACCUM进行迭代以累加完成卷积运算;对参数,是进行8bit压缩存储的,计算前恢复到16bit(有损)计算;文中说的压缩实际上是一个非线性量化计算,而非传统的压缩。
论文中描写CA:
Various kernel sizes (up to 12×12), batch sizes (up to 16), and parallel kernels (up to 4) can be handled by a single CA instance
如果支持各种变化呢?看下图右半部分:对每一个窗口,先进行列的累加,再把列累加结果累加起来;CA支持一个最大一次读12个words的line-buffer(最大支持12*12的卷积,也就是一列的大小)(在卷积计算中,stride=1情况时,简单的line-buffer确实很匹配卷积的计算过程,每次窗口只需要更新一列,剩余的列都可以reuse,可以说是数据在两个窗口间最大化重用,减少了从RAM里面读数据的次数,降低了功耗),放了36个MAC,就可以在一些其他变化中做到灵活改变kernel的数量。
如果做12 * 12的卷积,那就只能做1个kernel;
如果是图中3 *3的情况,对一个kernel计算而言,每次只需要进3个新数据,加上旧数据6个总共9个数据,这样就可以做4个独立的kernel并行,共享这9个数据,因此需要36个MAC并行计算;
Batch size的大小也可以调整,只要buffer中存的下,可以根据每一层的情况,切分到不同的CA,或者一个CA计算更多的batch size,影响输入输出的bandwidth。
下面是整芯片的数据:
以及几页关于跑alexnet的数据:
整体来看,性能相当高——应该是利用率很高(buffer大,带宽小,基本全在计算),所以即使只有36*8个MAC也跑的效果很好。由此可见,很多时候我们更应该想办法把利用率做上去,而不是一味增加MAC单元。不过本篇的RAM有4MB,也确实很大。
总结:极低功耗的DCNN加速SoC,用于嵌入式及IoT场景[1]
1、基于数据流可重配置的硬件加速框架
2、面向DCNN中大型卷积运算加速的参数化硬件加速单元
3、针对不同方向进行数据等并行化发掘
4、DSP的ISA具有可扩展性
5、FD-SOI28工艺下的超宽电压阈DVFS实现
6、ALexNet峰值能效达2.9TOPS/W
最后还有两页不是很懂,懂了再写:关于低功耗设计的
参考资料
[1] https://reconfigdeeplearning.com/2017/02/08/isscc-2017-session-14-slides14-1/5
[2] A 2.9TOPS/W Deep Convolutional Neural Network SoC in FD-SOI 28nm for Intelligent Embedded Systems
ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network的更多相关文章
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN
转载请注明,本文出自Bin的专栏http://blog.csdn.net/xbinworld,谢谢! DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Process ...
- ISSCC 2017论文导读 Session 14:A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight
A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight Storage Using Non-Uniform Mem ...
- ISSCC 2017论文导读 Session 14:ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel DVAFS CNN Processor in 28nm
ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel Dynamic-Voltage-Accuracy-Frequency-Scalable CNN Proce ...
- ISSCC 2017论文导读 Session 14:A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Pro
A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Processor and a CIS Integrate ...
- ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
A 28nm SoC with a 1.2GHz 568nJ/Prediction Sparse Deep-Neural-Network Engine with >0.1 Timing Erro ...
- 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))
需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...
- Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)
理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...
- Neural Networks and Deep Learning(week2)Logistic Regression with a Neural Network mindset(实现一个图像识别算法)
Logistic Regression with a Neural Network mindset You will learn to: Build the general architecture ...
随机推荐
- Splitter Control for Dialog
原文链接地址:https://www.codeproject.com/Articles/595602/Splitter-Control-for-Dialog Introduction Yes, tha ...
- ping: unknown host 解决办法
如果ping命令返回如下错误,那主要的可能性就是系统的DNS设置有误. [root@CentOS5 ~]# ping www.sina.com.cn ping: unknown host www.si ...
- 学习 opencv---(13)opencv霍夫变换:霍夫线变换,霍夫圆变换
在本篇文章中,我们将一起学习opencv中霍夫变换相关的知识点,以及了解opencv中实现霍夫变换的HoughLines,HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircles ...
- jquery动态添加的元素绑定的事件不生效的问题
我们可以通过 $(document).on('click', '#xxx', callback) 这种形式解决. 原因,一般情况下,我们是通过 $('#xxx').click(callback) 这种 ...
- (转)MySQL建表设置两个默认CURRENT_TIMESTAMP的技巧
业务场景: 例如用户表,我们需要建一个字段是创建时间, 一个字段是更新时间. 解决办法可以是指定插入时间,也可以使用数据库的默认时间. 在mysql中如果设置两个默认CURRENT_TIMESTAMP ...
- Java的StringAPI的小练习
//-------------String类-------------- //求两个字符串的最大相同子串 /* 思路: 1.找出较短的那个字符串 2.找出短串的所有子串,使用contains函数判断是 ...
- JSTL获取当日时间与数据时间比较
<jsp:useBean id="now" class="java.util.Date" /> <fmt:formatDate value=& ...
- Eclipse 使用mybatis generator插件自动生成代码
Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...
- UVA 1390 Interconnect
https://vjudge.net/problem/UVA-1390 题意: 给出n个点m条边的无向图, 每次随机加一条非自环的边,(加完后可出现重边), 添加每条边的概率是相等的 求使图连通的期望 ...
- hdu 3118 Arbiter
http://acm.hdu.edu.cn/showproblem.php?pid=3118 题意:删除最少的边使图没有奇环 二分图的定义:如果顶点能分为两个互不相交的子集,则图为二分图 二分 ...