600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 记录 FPGA加速器设计CNN(论文笔记)

记录 FPGA加速器设计CNN(论文笔记)

时间:2019-12-11 09:59:33

相关推荐

记录 FPGA加速器设计CNN(论文笔记)

一、清华论文《An Asynchronous Energy-Efficient CNN Accelerator with Reconfigurable Architecture 》

platform:Xilinx VC707

摘要:

1.全局时钟被局部时钟替代,在时钟下形成异步流水线

2.每个计算单元全连接5*5的寄存器,保证输入数据被重复使用

3.提出集成化 卷积和池化,减少访问中间数据,减少访问片外内存

二、网络结构()

1、为了获得良好的灵活性和能源效率;一些CNN加速器采用粗粒度,动态可重构的异步加速器;

缺点:FPGA显示良好性能,但其细粒度的计算和路由资源,限制了不同的CNN能效和运行时重新配置。

2、数据和控制流在异步电路控制下运算,这不同于全局时钟驱动的同步设计,这不同于全局时钟驱动的同步设计流程。这个特性使异步电路的不同模块能够在各自理想频率下运行,在需要的时候工作或停止;时钟选通,只有在需要的时候才选通,异步逻辑,被看作一种降功耗的方法

三、计算结构(why)

Mesh Network 它是一个动态的可以不断扩展的网络架构

1、每个计算核心有25个寄存器阵列;每个计算单元包括:一个寄存器和一个乘法器;每个运算单元都能实现乘法和存储;所有的PE都是网状连接,每个PE可以从它临近单元的任意方向接受数据;全连接网络使数据重用成为可能;计算核心的数据size和通路可以根据不同模型和卷积层配置,每个PE单元可以单独工作或者一起协同工作;使用握手协议代替全局时钟确保数据流正常,由于异步握手协议的特性,当没收到请求信号时,处理单元会被关闭;因此会降低功耗;将每个乘法器结果累加,并产生请求信号,将数据发送到可配置的池化单元做下次计算

2、Bundled-data是这种机制的一个标准术语,其含义是数据和控制信号捆绑在一起,而其中控制信号则起到了在同步电路中时钟信号所起的作用;(/d/662787.html)采用两阶段异步握手协议,在四阶段协议中,请求和确认信号需要返回到零,而在两阶段协议中,请求和确认的每个转换都代表一个事件,两阶段在速度和功耗上胜过四阶段;当请求信号到来,产生门控并使能寄存器;

3、点击之间的延迟匹配电路(图5中未示出。使每个阶段都是自计时的,而不管。通过匹配组合逻辑的延迟来实现整个电路。

没有请求信号,异步电路将被关闭;当请求信号到达,信号fire1有效,配置数据被写到DFF1;——》中间的click电路使fire2信号有效,从其中一个方向读取输入数据存入DFF2。并同时将其作为操作数发送到乘法器;——》最终,fire3信号有效,使输入数据存入DFF3。以便相邻PE单元可以复用。

*************

Fire信号产生逻辑没搞懂(电路图没搞懂)

没搞清楚运算单元电路在计算核心框图中的位置;

*************

4、从一个核中所有PE单元的输出req信号都连接到异步Muller电路(当两个输入同时为0或者同时为1时,输出才变化成两个输入值,否则维持原输出值。) 换句话说,当所有request信号到来,Muller单元会产生下一个request信号;确保PE单元准备好乘法结果,然后池化单元开始工作;激活函数,池化方式和size根据配置信息动态修改,最后采用256KB的ROM存储激活函数的结果,通过激活函数,输入定点数据被认为地址去寻找输出数值;因为避免了复杂计算过程,所以此方法会更快

四、卷积-池化集成计算和数据重用方法

1、在传统加速器中,卷积核需要按从左到右和从上到下的顺序读取输入数据;卷积结果必须临时存储并等待池化

2、相反,在异步电路中,使用事件驱动功能。读取输入数据的方向与每个池化结果相匹配。

3、池化时需要A、B、H、G;A,B先被存储等H,G准备;当卷积池化集成后,通过设置卷积核的移动方式,四个操作数会同时进行池化,换句话说,没有存储中间数据过程;当四个卷积后,每个池化结果将被计算;最大值池化时,最大的卷积结果将代替最小的;平均池化时,我们需要一个个求和,在求和之前已经一个个被划分了,因此最终求和结果是平均池化结果,总之,池化层的中间结果减少为0

B:数据复用

1、在两个相邻的卷积运算中,相邻的输入数据,可以复用,一次卷积,权重是固定的,只需要读入一次;所以我们选择权重不变方法,四次卷积后得到四个结果,因为这四个PE单元由Mesh网络连接,没有数据复用时,需要读取数据66.4KB,采用卷积-池化集成计算和数据重用方法,读取数据7.8 KB,降幅88%

**********

1、在oblivious算法中每个电路元件会在每一个模拟时刻进行求值。而在事件驱动算法中电路中元件状态的改变被记录下来并且在给定的模拟时刻只有这些元件

2、88% decrease下降的是能量or时间

**********

4、fixed-point number:定点数

二、越南论文《FPGA Platform applied for Facial Expression Recognition System using Convolutional Neural Networks》

1、架构非常清晰,弄清楚使用DMA原因(/weixin_39290638/article/details/81155489)

三、北大论文《Optimizing fpga-based accelerator design for deep convolutional neural network》

platform:VC707 FPGA board

/xiuxin121/article/details/78999697

/kkk584520/article/details/47450159

摘要:本文提出一种基于roofline模型的分析设计方案; 定量分析计算使用多种优化技术(循环分块与转换),计算吞吐和所需内存带宽;例如

roofline模型:/dcrmg/article/details/79652587

looptiling:/lbf-19940424/p/7709285.html

1、介绍:

部分设计采用数据复用方法,以此减少外部数据访问;不同层间需要重新配置,方法不够灵活

公式中:

1、先是将bias存到output_fm;计算结果代表输出通道的X,Y数值;

2、weights代表:第几个卷积核中哪个通道的数值:

3、R代表行数;C代表列数;M:输出通道数;N:输入通道数;K卷积核;

算法流程:1、先将卷积核为:第to个(输出通道),第ti个(输入通道),第i行,第j列参数,乘以输入为:第ti个(通道),第row行,第col列数值;再加上偏置为:第to个,第row行,第col列;

3.2、计算优化:

无关,如果循环变量i不出现在数组A的任何访问函数,则称相应循环维度与数组A是无关的; ( 生成广播式连接)

独立,如果数组A沿着某个循环维度i是完全可分的,称i对数组A独立; (buffer和计算引擎直接连接)

相关,如果数组A沿某个循环维度i不可分,称i对数组A依赖; (产生带多路开关的互联;)

循环流水线是高级综合中的一项关键优化技术,通过重叠执行不同循环迭代的操作,来提高系统吞吐量。

四、日本东芝存储器公司论文《FPGA-based CNN Processor with Filter-Wise-Optimized Bit Precision》

platform:Xilinx ZCU102(1.7W RMB)

Fpga : 逐滤波器优化位精度

摘要:本文提出变精度的滤波,优化量化方法,并给出支持该算法的硬件结构, 由于粒度优化权值降低了运算的位精度,执行时间相应下降,计算总数乘以权重也按比例减少

一、Introduction:

本文为提高CNN能效,采用量化过的权重和激活数值,适用于大规模并行计算,因为减少了计算数目,在没降低计算密度,不像剪枝和可分离卷积;尽管极低比特量化方法(如1比特和2比特)在效率方面很有吸引力,但识别精度损失是显著的,识别精度下降13.8%和9.9%,相比之下,若没有量化参数,则AlexNet在ImageNet上的识别精度为83%。另一方面,为了保持均匀的位宽精度,一般要求8位以上的精度

最近的工作揭示了分层优化量化,对于减少总比特数非常有效;

对于cnn,保持精度所需的比特宽度不仅在层之间变化,而且在像素(即空间位置)、信道和滤波器之间也变化。

在本文中,我们建议对权重采用滤波器优化的位精度,并提出满足上述要求的硬件架构。通过在fpga上的实现和图像分类任务的执行,验证了该结构的有效性。

二、架构

0、图1示出了所提出的具有滤波器级可变比特精度的mac处理器的概念。此架构旨在执行以下算法。有符号h位权重表示为

1、N是累积长度,它是通道数与卷积核长宽之间的乘积 ,在高效稀疏Winograd卷积神经网络;因此,一种具有多位权值的MAC计算,相当于,将一位权重的乘累加(MAC)结果适当移位;把这个过程称作位合成;

2、如图1所示,并行展开1位权重的mac单元。由于权重为1位,因此使用带enable(en)信号的累加器,即仅当权重值为1时,累加器才被使能并累加输入激活值。

3、激活值从垂直方向输入重用,8个不同的1位权重与激活值在8个MAC单元相乘;权重从水平方向输入重用,2个不同的输入激活值与权重在2个MAC单元相乘;这种2-d重用策略减少了执行MAC时从缓冲区加载权重和激活的次数

4、在图1所示的例子中,我们在一列中有8个单元,我们想计算5个mac滤波;每个滤波器的位宽度为{3,2,4,2,5}。在第一阶段,执行滤波器0和滤波器1的mac计算,以及滤波器2的一部分(4位中的上3位)。

5、在每个阶段,在不存储和/或加载中间结果下,每个MAC单元被执行N次循环累积,这减少了输出带宽;完成N次循环累积后,执行bit-synthesis;注意,从方程(2)到方程(3)计算顺序发生变化。累加后的bit-synthesis而不是bit-synthesis后累加;能够减少每个累加器所需的动态范围,并将加法次数从b x n减少到b+n

6、在第二阶段,对滤波器2、滤波器3和滤波器4的剩余1位执行mac计算。在累加后,对滤波器2执行位合成,并计算已在寄存器的中间结果

7、本文所提结构:不仅能使同时执行滤波器的数目最大化,而且还可以使资源利用保持在100%,即使滤波器的位宽与MAC单元的位宽不一致

B、

1、为了验证所提出的体系结构的有效性,

我们用16位定点权值来评估执行时间。

2、首先,我们量化预先训练的权重。

3、与逐层优化相比,MAC运算x权值位宽显著减少

4、假设硬件有64个MAC,权值是16位,并且,执行周期数与MAC * bit成正比,则灰色实线显示执行周期的理论下限;

7、Batchnorm是深度网络中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法

问题:

1、X 0,n ; X1,n什么含义;

2、bit-synthesis?

3、每层卷积运算完,结果保存在片上RAM还是片外DRAM

五、复旦论文《一种基于FPGA的卷积神经网络加速器的设计与实现》

platform:XC7Z020 SOC(ZC702开发板发售5000+RMB)

首先,我们采用了数据量化的方式将网络参数从浮点数转化为定点数,从而降低了加速系统所需的硬件开销其次,提出了一种从 FPGA 端发起数据访问的系统架构, 避免了系统运行中因处理器对 FPGA 频繁干预而引起性能下降的问题最后,为 CNN的计算设计了高效的数据处理和缓存电路,缓存电路采用一 种“双-BRAM”的 缓 存 结 构,其中一块 BRAM用于数据处理时,另一块用于数据加载,数据加载和数据处理完全并行操作,使 FPGA的计算能力得到了最大化利用从电路层面保证了加速器的计算效率

六、复旦论文<Accelerating Low Bit-Width Convolutional Neural Networks With Embedded FPGA>

1、platform:Zynq XC7Z020 FPGA (2000+RMB);使用 HLS

1、Introduction:二值化神经网络是一种具有二值化权重和激活能力的神经网络;其对内存和算术资源的需求大大减少;

主要贡献:2、设计低位宽计算模块,用于迭代实现不同的卷积层;

七、大阪大学IEEE会议论文<Hardware Architecture for Fast General Object Detection using Aggregated Channel Features>

platform:ZC706($2,495)

关键字解释:聚合通道特征(Aggregate Channel Feature,ACF)是由Piotr Dollar这个大神提出的,一开始叫积分通道特征(Integral Channel Feature,ICF)

所谓聚合通道特征,其实就是把几个不同的特征叠加在一起,形成一个统一的特征。要理清这个概念,首先需要说明特征通道是什么。

我们证明了我们提出的快速特征金字塔与三个不同的检测框架的有效性:

积分通道特征(ICF)聚集通道特征(积分通道特征的新颖变体)可变形零件模型(DPM)

摘要:本文提出了一种面向嵌入式系统的。用于具有聚合通道的目标检测硬件加速器。(ACF);该加速器由专用HOG特征、量化和增强的决策树的硬件架构组成;FPGA实验结果表明:对于全高清图像,该加速器可以170 fps检测行人,对于全高清图像,可以78 fps检测6类交通目标。

1、实现算法-硬件协同优化,提高ACF与硬件实现的兼容性;2、通过并行实现和系数隐藏加快分类速度;3、为节省内存和降低功耗;采用鲁棒性算法避免精度下降,

向留学生求助5、7引用文献;

八、伦敦帝国学院<Optimizing CNN-Based Object Detection Algorithms on Embedded FPGA Platforms>

三、架构包括卷积层和全连接层,每个内核包括输入buffer缓冲(存储数据)以便数据复用和执行卷积或矩阵向量乘法,输出缓冲器存储部分结果在最终结果准备好之前,以下是详细的每个核中三个部分:

1、具有三种不同卷积并行度的通用架构;左上角是缓冲buffer,卷积的计算内核中包括多个并行卷积单元,由多个乘法器和一个加法器树组成;假设系数核的宽度是k;则乘法数量需要k^2个;加法器的深度为取对数log2(k);乘法器从自定义缓冲区中获取输入;该缓冲区允许从输入特征图中一个时钟周期读取k个数据;缓冲器的另一侧连接一个更大的输入缓冲区包括部分或全部的输入特征图;乘法器同样连接到另一个输入用来缓存系数;卷积核连接的输出缓冲区保存卷积结果;在每次循环中,加法树中的结果将被更新;卷积核中的数据类型是单精度浮点型;

2、全连接层功能主要是在(变形后)输入特征向量和系数矩阵之间进行点积运算;计算内核包含几个并行的乘法器,用于计算系数矩阵的每一行与特征向量之间的点积,有两种组织缓冲区的方法;缓存整个特征向量,不存储输出;存储部分结果,没有输入缓冲;两种方法与全连接层选择的计算顺序有关,在第四节讲述;因为在点积中存在反馈环,所以使用定点数据类型提高性能;所使用定点数据类型为32位,包括23位分数位和8位整数位;

四、该设计模型提供一个重要观点:不同策略和硬件参数如何影响硬件资源的使用;如何使用模型参数优化性能;表概概括使用的参数:卷积计算划分为三个部分:第一是blocking(阻塞)将输入特征划分为几个部分减少缓冲区的使用;第二个是数据访问模式;与卷积层可嵌套循环有关;第三个是设计内核复用;

九、商汤科技《Evaluating Fast Algorithms for Convolutional Neural Networks on FPGAs》

1、platform:Xilinx ZCU102(1.7W RMB);使用 HLS

Ⅲ、架构设计

本文展示了使用 Winograd 算法的卷积算法 [21] 如何大幅降低算法复杂度,改善 FPGA 上的 CNN 性能。使用 Winograd 算法,利用元素之间的结构相似性生成输出特征图中的一列元素。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。