转载请注明,本文出自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: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 ...

  2. 【论文泛读】 Deep Learning 论文合集

    [论文泛读] Deep Learning 论文合集 文章目录 [论文泛读] Deep Learning 论文合集 Batch Normalization: Accelerating Deep Netw ...

  3. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

  4. 【论文笔记】Multi-task deep learning based CT imaging analysis for COVID-19 pneumonia: Classification and

    声明 不定期更新自己精度论文,通俗易懂,初级小白也可以理解 涉及范围:深度学习方向,包括 CV.NLP.Data Fusion.Digital Twin 论文标题:Multi-task deep le ...

  5. 论文笔记 【Wide Deep Learning for Recommender Systems】

    标题 * 表示未完成 论文原文传送门 文章提出了 m e m o r i z a t i o n a n d g e n e r a l i z a t i o n memorization\ and ...

  6. [论文评析]DeepSMOTE: Fusing Deep Learning and SMOTE for Imbalanced Data, IEEE TNNLS 2022

    DeepSMOTE: Fusing Deep Learning and SMOTE for Imbalanced Data 论文信息 动机 SMOTE回顾 主要思路 DeepSMOTE **Permu ...

  7. 论文解读:《Deep Learning of Sequence Patterns for CCCTC-BindingFactor-Mediated Chromatin Loop Formation》

    所属分类: SCI  生物 期刊名: JOURNAL OF COMPUTATIONAL BIOLOGY 2021年影响因子/JCR分区:1.479/Q4 文章:Deep Learning of Seq ...

  8. 【论文导读】Causal Machine Learning:A Survey and Open Problems

    最新的arXiv上的综述 迅速过一遍 2022.7.13 [历史]C1已看完(三页) ML面临挑战: (1)当数据分布发生变化时,泛化性能大幅下降 (2)缺乏对生成模型样本的精细控制 (3)有偏见的预 ...

  9. 【转】ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Comput

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

  10. 可解释性系列论文:Mathematics of Deep Learning

    这篇论文就是关于深度中包含的数学. 作者认为主要有三个因素导致了深度学习的实验性的成功: note: 这三个因素背后就有数学背景,也就是说想要研究深度学习的可解释性,作者认为可以从三个角度来做. ar ...

最新文章

  1. 台湾国立大学郭彦甫Matlab教程笔记(19)symbolic differentiation and integration
  2. sap abap中动态指定查询条件
  3. configSections
  4. Delphi读取文本内容
  5. thinkphp+extjs +jquery CMS管理系统
  6. kaggle(01)-泰坦尼克号问题
  7. es6生成器_ES6生成器
  8. 力扣35-搜索插入位置(C++,左右闭区间,nums[mid]与target大小关系判断的不同及辨析)
  9. java override 用法_JAVA中 @Override 的作用
  10. 分享110个ASP源码,有一款适合你
  11. 热血江湖游戏中断开服务器,为什么最近老是一进去游戏就提示与服务器断开 – 手机爱问...
  12. 非常不错的Solaris文章,适合入门
  13. HTML中如何使用JavaScript创建链接?
  14. 百度盈利模式的弱点在哪里
  15. 数据处理中常用的Excel基本操作及函数
  16. 基于FPGA的FFT
  17. perp系列之二:perp源码README
  18. android 实用干货 - 收藏集 - 掘金
  19. SQL索引工作原理----摘抄自别人的
  20. 一个人的对世界的认识是怎么形成的

热门文章

  1. Node.js 清洗万恶的种子
  2. 程序员也要学英语——词根词缀大全(陆续更新)
  3. 计算机进入端口模式命令提示符,Win10使用命令提示符删除端口占用方法Win10查看端口占用状态...
  4. App Inventer制作蓝牙通讯软件
  5. 在51单片机编程中,编译出现Target not created情况
  6. BGP 路由策略-路由汇总基础及其应用
  7. IBus输入法安装和设置
  8. 关于WES7的系统还原与恢复
  9. 一天入门Tableau详细教程(上)
  10. 如何撰写专利说明书摘要?