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 ...
随机推荐
- 函数式编程(1)-高阶变成(2)-filter
filter Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的时,filter()把传入的函数依次作用于每个元素,然 ...
- 并发时-修改Linux系统下的最大文件描述符限制
通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下: $ulimit -n1024 当然可以通过ulimit -SHn 1024 ...
- Codeforces 932.F Escape Through Leaf
F. Escape Through Leaf time limit per test 3 seconds memory limit per test 256 megabytes input stand ...
- libiop通讯流程和api讲解
上一篇讲到了libiop基本结构,这次根据libiop提供的test跟踪下消息和运行流程 void echo_server_test() { ; iop_base_t *); printf(" ...
- array_intersect
<?php date_default_timezone_set('Asia/Shanghai'); $a1=array("a"=>"red",&qu ...
- 字符串:AC自动机
给出一个字典和一个模式串,问模式串中出现几个字典中的单词 最后一行是大串,之前输入的是小串 #include<iostream> #include<cstdio> using ...
- C++类四个默认函数&深复制&浅复制
学习C++语言的同学都知道,C++中类是有默认的几个函数的,主要是有四个函数: 四个函数 默认构造函数:A(void),无参构造函数 拷贝(复制)构造函数:A(const A&a).用一个对象 ...
- CSS居中之美
关于居中,你会想到什么? div{margin: auto;} 常见的居中方法 水平居中 .demo{ text-align: center; margin: auto; position: abso ...
- 【BZOJ】1741: [Usaco2005 nov]Asteroids 穿越小行星群
[题意]给定n*n网格,有k个物品,每次可以消灭一行或一列,求消灭掉所有物品的最少操作次数. [算法]二分图最小覆盖 [题解]此题是最小覆盖模型的出处. 将物品的x-y连边建立二分图. 最小覆盖:选择 ...
- 【BZOJ】4318: OSU! 期望DP
[题意]有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L).现在给定n个实数表示该位为1的概率,求期望总价值.n<=10^5. [算法]期望DP [题解]后缀长度是一个很关键的 ...