转载请注明,本文出自Bin的专栏http://blog.csdn.net/xbinworld,谢谢!


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

单位:KAIST(韩国科学技术院,电子工程-半导体系统实验室)

KAIST是ISSCC的常客,一年要在上面发好几篇芯片论文,16年ISSCC上Session 14有一半的paper是出自KAIST的,只能说怎一个牛字了得。去年的关于卷积计算的paper,感觉还比较基础(当然也有一些很不错的小trick,比如把kernel的字典都存在片上RAM中,只传输系数,可以把带宽降低一个数量级以上),今年的这篇可以算是相当完善;

本篇的核心特征:

可配置性:1、 异构架构;2、混合负载划分方法。

低功耗:1、动态自适应的定点计算;2、基于量化表的乘法器。

特点1:两套架构

用于深度学习加速的专用SoC。和CPU、GPU通用GPP的对比如下。作者希望强调分布式存储和计算的优势,但是我感觉本质上还是一个多核+数据交换的结构,只是结构比较简单,核之间不通讯,因为CNN的数据切分后是独立的。

在不同的计算层,其计算和存储的支配地位是不同的,如下图。在卷积层,计算是主要的瓶颈,而在全连接、编解码+LSTM(RNN)层,存储则成为了瓶颈。如果针对单一的网络特征进行设计,则难以满足全盘的要求。

这个观点基本上是业界目前设计的共识,但是个人认为ALEXNET/VGG作为设计依据有一点点out,相信在明年的设计中,resnet和inception这样的网络加速优化会有更多工作。不过拿ALEXNET作为benchmark本身没有问题。

下面是VGG的计算分解,可以看到不同层的计算和参数量区别还是挺大的。

所以作者设计了2套完全独立的架构,由一个卷积加速模块CP+一个RNN-LSTM模块FRP,再加RISC控制器组成系统。

具体来看卷积加速器CP:由4×4个计算核构成,每个计算核内为12×4的PE阵列,通过控制器进行指令驱动计算卷积。数据通过NoC传递。分布式Memory保证PE阵列、计算核的数据需求。通过Aggregation Core将数据进行集中处理(Pool/ReLU/…)并和RNN计算模块进行数据交互。

算一下,CP里总共有16core* 48 = 768 PE单元

或者看这个图似乎更清楚:CP中每一个CORE都有独立的数据和参数Memory,数据Mem到PE GROUP是一个全连。这样架构下,就有多个粒度的配置自由度——cluster,core,group等

特点2:混合式的负载划分(任务切割)

因为采用的分布式数据存储,因此就存在一个数据切分的问题,作者在这方面的考虑分析也比较详细:有数据划分(可以得到最终结果,但是参数每一个都要存全部kernel的channel),channel划分(参数不重复存,但是计算结果是临时结果,还需要再累加起来,因为结果多所以片内存不下——其实是没设计地方存——所以需要写到外面DDR再读回来),混合划分(把两者的优缺点匀一下,最终选择这个)

以VGG-16网络为例,其在不同的层间在image和channel两个方向上分布非常不均匀,因此,单一的负载分类都很难达到好的效果,而mix方式效果相比是最优的。如下图。

特点3:动态on-line调整的定点格式(用于CP)

不同层的数据分布是不一样的,带来的影响就是采用浮点计算会更精确,但是代价更高;采用定点计算会消耗很少的资源,但是只能表征一部分数据。

本文采用的是Layer-by-Layer的动态定点计算,其特征是每层小数点位置是不同的,层内则是固定的。

相比于以往离线处理数据精度,本文采用了在线的动态FL选取方式,可以动态适应当前图片的计算需求,减少WL的字节。从性能上来看,本文的方式对网络精确度影响最小。

特点4:基于量化表的乘法器(用于FRP)

在讲量化表乘法器之前,先要看一下作者用的LUT-based multiplier,这个方法本身很经典,用在这里很合适。

对于FC/RNN层的量化:4bit位宽可以满足绝大多数的参数精度需求。——这个是作者说的,实际广泛效果还是要持怀疑态度的,不过针对4bit的优化本身还是值得的。

因此作者设计了Q-table,对于量化以后的权重,进行预计算,将不同输入和量化后的权重相乘结果存在一张量化表中(Q-Table)。在实际的计算中,根据量化的需求直接从表中读取计算结果。方法如下:

这里特别说明一下,W0-W16本身并不等间距的,所以不用理解为简单的线性量化。——业界有比较多的线性量化,数据本身既可以认为是数据也是index,而本篇的设计中,我们需要知道index才可以知道数据是多少(查表),当然,因为有预计算,所以知道index以后不用再查表得到w,直接把I*w的结果查出来。查表代替了乘法,而乘法因为weight是4bit的关系,case比较少,就用空间换了时间(计算)。

每8个数据I就要更新一次Q-Table,有8个16*16bit的乘法器来更新表,这些是公共乘法计算,计算完之后就只有查表没有乘法了(在FC中)。计算过程:

也是有缺点的——相当于只有8个乘法器在运算,OPS有限。但是因为FC是一个带宽受限问题,所以4bit量化本身显著降低了带宽;查表降低了功耗——因为是16*16,而不是16 * 4。再强调一下:知道4bit index的大小无法直接映射到w本身,所以计算的时候还是16 * 16 bit。效果如下:

还有一点值得关注:就是对于0数据,不取其对应的参数,这样参数带宽进一步降低很多。—— 这一点论文并没有讨论。需要再分析一下,如何做起来方便,如果谁想清楚了,请告知于我。

最后看一下芯片的规格情况:芯片参数:基于65nm工艺,峰值能效高达8.1TOPS/W(4bit 50MHz@0.77v)。可以看到不同电压和主频下,能效差非常多。

最后贴一些不同参数下的评估,以及动态定点效果,还有与其他工作的对比结果。

下图左边的图是说,电压升高才能把主频升上去,50MHZ的时候可以在0.77V下运算;而能耗的升高不是简单线性,可以看到50MHZ的时候比1/4的200MHZ能耗小很多,因此就有了能效的优势。

可以看到在4bit情况下,最高能效相当之惊人(用50M主频,功耗低),受益于低电压带来的功耗降低。看来电压近阈值计算可以显著提升能效比。如果不优化,ALEXNET计算时间会由FC决定,因为带宽太大;而本篇结果看,FC可以跑1200张,原因是带宽很低,所以性能就由CONV部分决定了。

总的来说这是一篇非常好的深度学习加速芯片设计论文。

参考资料

[1]从ISSCC 2017看人工智能芯片的四大趋势 http://www.jiqizhixin.com/article/2264

[2] https://reconfigdeeplearning.com/2017/02/08/isscc-2017-session-14-slides14-2/

[3] DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Processor for General-Purpose Deep Neural Networks

ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN的更多相关文章

  1. 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 N ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. 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 ...

  7. 论文笔记(1):Deep Learning.

    论文笔记1:Deep Learning         2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...

  8. ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Computing

    今年去参加了ASPLOS 2017大会,这个会议总体来说我感觉偏系统和偏软一点,涉及硬件的相对少一些,对我这个喜欢算法以及硬件架构的菜鸟来说并不算非常契合.中间记录了几篇相对比较有趣的paper,今天 ...

  9. 论文阅读 | DeepDrawing: A Deep Learning Approach to Graph Drawing

    作者:Yong Wang, Zhihua Jin, Qianwen Wang, Weiwei Cui, Tengfei Ma and Huamin Qu 本文发表于VIS2019, 来自于香港科技大学 ...

随机推荐

  1. 【极值问题】【CF33C】 Wonderful Randomized Sum

    传送门 Description 给你一个数列\(A\),你可以选择任意一个前缀和任意一个后缀,前缀后缀可重合.给他们乘\(-1\).求最大能获得的序列和. Input 第一行是一个数\(n\)代表数列 ...

  2. get与post请求简单理解

    一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Http定义了与服务器交互的不同方法,最基本的方法有4种,分 ...

  3. (转)JAVA 十六个常用工具类

    一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在finally块 toString ...

  4. 使用git上传项目到GitHub上

    之前的博客有<使用git拉取GitHub上的项目>的文章,那么现在说一下,如何上传项目到GitHub上. 1. Git的.gitignore 文档配置 因为项目中可能有很多的图片还有nod ...

  5. 817C. Really Big Numbers 二分

    LINK 题意:给出两个数n, s,要求问1~n中\(x-bit(x)>=s\)的数有多少个.其中bit(x)指x的各位数之和 思路:首先观察能够发现,对于一个数如果满足了条件,由于x-bit( ...

  6. JVM学习十:JVM之垃圾收集器及GC参数

    接近两个月左右没有写博客,主要是因为小孩过来后,回家比较忙,现在小孩端午送回家了,开始继续之前的JVM学习之路,前面学习了GC的算法和种类,那么本章则是基于算法来产生实际的用途,即垃圾收集器. 一.堆 ...

  7. 强大的jQuery网格插件 ParamQuery

    ParamQuery是一种轻量级的jQuery网格插件,基于用于用户界面控制.具有一致API的优秀设计模式jQueryUI Widget factory创建,能够在网页上展示各种类似于Excel和Go ...

  8. bootstrap-select,selectpicker 用法详细:通过官方文档翻译

    用过selectpicker的都说好~但是网上中文的教程又找不到比较完整的用法,于是去官网看了下 顺便弄过来翻译一下: 选项可以通过数据属性或JavaScript传递.对于数据属性,附加选项名称dat ...

  9. 【洛谷 P3227】 [HNOI2013]切糕(最小割)

    题目链接 每层每个位置向下一层这个位置连边,流量为下一层这个位置的\(f\),源点向第一层连,流量第一层每个位置的费用,最后一层向汇点连,流量\(INF\). 这样就得到了\(P*Q\)条链,不考虑\ ...

  10. 天梯赛 L1-009 N个数求和 (模拟)

    本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数"分子/分母"的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(<=1 ...