欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。
技术交流QQ群:433250724,欢迎对算法、机器学习技术感兴趣的同学加入。


后面陆续写一些关于神经网络加速芯片设计的paper,前面已经写了ISSCC2017,当然,因为只有利用不加班的下班时间来看和写,可能周期会比较长…不过呢,多学习一些总是好的。最近有点忙,没有保持写的节奏,后面加油吧!)。下一篇会开始写ISCA 2017的论文。


作者与单位:

国内知名的深鉴科技的几位初创写的一篇,拿了今年FPGA会议的best paper,今天来看一看到底有些什么内容。文章围绕在FPGA下设计LSTM执行引擎,主要考虑的点是稀疏的计算架构。说实话,稀疏计算已经说的快熟(lan)了,关键还是这样的架构要在牺牲通用性下,得到足够强劲的收益;在一些专用的计算场景下,确实可以做到很好的效果,但也并不是一个免费的午餐。

背景介绍

先介绍一下语音识别和LSTM的简单背景。本文关注的应用场景是语音识别,当前一个基本的语音识别模型的流程是:

其中,现在非常常用的用于建模声学模型的是LSTM网络模型,它用于得到acoustic output probabilities(音节的输出概率),而且很有可能会占据整个系统中的90%以上的执行时间。所以作者认为要加速LSTM计算。

LSTM的结构如下图所示:

一个LSTM层里面,实际上是对一个序列x_1 … x_T的递归计算,其中最重要的是有i,f,o三个门控单元,分别叫做input,forget,output gate;一种比较流行的计算模式如下公式所示,也就是Figure 4所代表的含义。更详细的介绍本篇不写了,如果读者有兴趣可以看下[1],我后面也打算在深度学习系列中写一篇RNN/LSRM的博文。

模型压缩

主要是Pruning和Conpression几步,具体下面会讲。

  1. 剪枝pruning与负载均衡Load Balance
    基本的剪枝方法和Deep Compression [2]方法是一致的——将最小数值的Weight稀疏掉,然后再用retraining的方法保持原来的模型精度;retraining的时候胡保持已经被稀疏掉的参数不更新(一直是0)。但是作者提出,如果只是这样简单的稀疏,会有严重的负载不均衡现象,尤其是在硬件计算中,如果需要一个批次的计算全部完成,就会因为非零参数严重不均匀,出现快的计算单元等待慢的计算单元执行的情况,造成性能的浪费。

方法很简单,就是将分组了的参数按照一致的比例去稀疏,而不是原来那样全局稀疏;并通过retraining把损失的精度补回来。这样就做到了负载均衡的稀疏参数了。

  1. 量化Quantizaiton
    参数和数据最低可以做到12bit量化;参数和数据的动态区间不同:

  2. 编码Encoding
    属于CSC的编码,因为DDR位宽是512bit,所以需要512b对齐,PCIE接口位宽是128bit,所以有128bit对齐的要求。一个weight包含了12bit数据本身+4bit offset,offset表示距离上一个非0值的中间有几个0;

下面这张图是想表示在本文的设计中,一个input data读一次会被计算多次(吐槽一下,作者在画图以及后面文字解释的时候对于column的使用非常随意,有的时候是图上的一行,有的时候又是一列,看起来很费劲。FPGA会议的最佳论文…建议再严谨易读一点比较好。当然,也有可能是我没理解…)

下面是整个系统的架构图,可以看到,有多个channel,每个channel独立计算一个voice vector;在一个channel内部,见右图,有很多个PE,每个PE独立占有一个数据FIFO,而PE的数据来源都是共享的。大概的执行流程如下:参数会通过指针buffer和weight buffer先把参数连续存在片上RAM中,在解码中,因为知道了某个参数的位置index(通过offset,就可以知道它要和哪个数据相乘),就把需要的数据按序取到FIFO中,在计算的时候就不需要管序号了,只要FIFO和weight buffer中取出来的数据对的上;临时sum结果存在act buffer中,然后每一次乘完后再由Accu累加器把之前的结果和当前结果累加起来;这里有一点,因为一个PE可能需要处理参数矩阵中的多列,所以我猜测act buffer是可以存多个临时结果的。另外剩下的部分就是向量点乘,然后是加法,激活函数这些,完成LSTM整个过程,就不说了。整个ESE有32个channel,每个channel有32个PE。

这样看来,处理一个voice数据只有32个PE,也就是32个MAC,需要同时处理32个voice数据才能用满引擎。其实也折射了另外一个问题,sparse计算架构,单个数据处理时很难把并行的PE数量做大(为什么呢?因为目前看到的方案,在sparse计算中,要么就是用参数索引数据,要么用数据索引参数,索引取数据开销比较大;还有一个问题是,一个weight column可以做local reduction,以减少中间计算结果,但是data利用率低,要想data利用率高,中间计算结果就很大,这也是一个矛盾。),还是需要批处理才能提高总的性能。如果有更好的sparse计算架构,希望可以推荐给我学习。

OK,本篇就记录到此,后面会写一下今年ISCA的paper学习笔记。

参考资料

[1] http://www.jianshu.com/p/9dc9f41f0b29
[2] Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding
[3] ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA

转载于:https://www.cnblogs.com/yihaha/p/7265281.html

FPGA 17最佳论文导读 ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA相关推荐

  1. AAAI 2021最佳论文 Informer

    AAAI 2021最佳论文 Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting 背景 Tr ...

  2. [置顶]人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)...

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  3. (ICASSP 19)Streaming End-to-end Speech Recognition for Mobile Devices

    会议:ICASSP 2019 论文:Streaming End-to-end Speech Recognition for Mobile Devices 作者:Yanzhang He, Tara N. ...

  4. 大饼博士X Blog文章索引:机器学习方法系列,深度学习方法系列,三十分钟理解系列等

    (我怕忘了这好资源) 欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 以下是 ...

  5. 我的Blog文章索引::机器学习方法系列,深度学习方法系列,三十分钟理解系列等

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入.纯技术交流. 以下是我利用业余 ...

  6. FPL 2017最佳论文:如何对FPGA云发动DoS攻击?

    第27届现场可编程逻辑与应用国际会议(The International Conference on Field-Programmable Logic and Applications,FPL)九月份 ...

  7. 韩松EIE:Efficient Inference Engine on Compressed Deep Neural Network论文详解

    EIE为韩松博士在ISCA 2016上的论文.实现了压缩的稀疏神经网络的硬件加速.与其近似方法的ESE获得了FPGA2017的最佳论文. 目录 一.背景与介绍 1.1 Motivation 1.2 前 ...

  8. 工程实践也能拿KDD最佳论文?解读Embeddings at Airbnb

    作者 | Mihajlo Grbovic,Airbnb 资深机器学习科学家 译者 | Lang Yang,Airbnb 工程经理 [导读]本文最早于 2018 年 5 月 13 日发表,主要介绍了机器 ...

  9. EMNLP2020:UC伯克利摘最佳论文、Hugging Face获最佳demo

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要8分钟 Follow小博主,每天更新前沿干货 刚刚,正在进行中的 EMNLP 2020 大会公布了一系列奖项,其中最佳论文奖由加州大学伯克利分 ...

最新文章

  1. c语言函数的可选性自变量
  2. 【机器学习基础】一文归纳Python特征生成方法(全)
  3. QImage 与 cv::Mat 之间的相互转换
  4. TaskService API
  5. Web API-定时器
  6. 中国科学院图书馆分类法
  7. mac 终端 常用命令
  8. 计算机插曲符号怎么找不到,怎么打出来简谱的符号?
  9. iOS 强制旋转屏幕
  10. 北大光华女的超强面经! 感动之余,真的受益匪浅。
  11. python使用matplotlib绘图 -- barChart
  12. 各种时间指标的Power BI度量值,一次全分享给你
  13. python天眼查爬虫_普通用户的天眼查爬取
  14. 画一个椭圆形带扩散效果波纹展示效果
  15. (五)具名和匿名挂载
  16. 中国艺术孙溟㠭篆刻艺术
  17. 冯提出的计算机工作原理是,冯诺依曼提出的计算机的基本工作原理是什么
  18. 利用阿里云镜像加速器对docker镜像源加速
  19. dpdk中文-DPDK学习路线图
  20. Android手机App测试常用功能测试点

热门文章

  1. Android9.0 代码注入,[原创]Android9.0 hook dlopen问题/如何hook dlopen相关函数
  2. 极速版JavaScript学习-总结案例
  3. linux大文件分区工具,磁盘分区工具 GParted
  4. 安卓10修改系统ntp服务器,安卓修改ntp服务器地址
  5. 【概率论】随机试验、随机变量、离散型/连续型随机变量
  6. 数据包络分析-二阶段网络带feedback(第二篇)
  7. hadoop-hive1
  8. No.2 说地道的美语,最简单的句子,你行吗?
  9. 习题 11.9 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类。
  10. @拔赤:Web前端开发十日谈