目录
一、简介
1.题目:
2.时间:
3.来源:
4.摘要:
5.论文主要贡献:
二、相关名词
三、相关背景知识
1.FPGA
2.卷积神经网络
3.同步数据流(SDF)
4.设计空间探索(DSE)
四、处理流程概述
1.用一组参数元组表示卷积模型,如卷积层表示方法:
2.用R表示目标fpga的资源预算:
3.使用SDFG表示ConvNets
4.fpgaConvNets架构空间设计中的四种类型转换
(1)graph partitioning with reconfiguration(带有重构的图划分)
(2)coarse-grained folding(粗粒度折叠)
(3)fine-grained folding(细粒度折叠)
(4)weights reloading(权重重装)
fpgaConvNet: Mapping Regular and Irregular Convolutional Neural Networks on FPGAs
2019.02
IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS
由于现如今的人工智能模型越来越大,参数量不断上升,如何低功耗、高性能的进行模型部署成为了重点关注方向。人工智能框架Caffe\Torch等运行在昂贵的GPU加速平台上,而另一选项ASIC芯片的功能在制造后功能固定,缺少灵活性。此时,FPGA由于其强大的计算能力、低功耗性、可定制性以及可重构性等成为了加速深度学习的可选平台。此文章提出的fpgaConvNet,是一种用于在fpga上优化卷积神经网络映射的端到端框架,实现了ConvNets在FPGA上的自动化映射。
1.通过提出的SDF模型来形式化执行DSE任务。
2.生成的设计对于吞吐量、延迟以及多目标标准等都进行了优化。
3.是第一个针对三大神经网络(Inception-based, residual, and dense)通用的框架。
FPGA:field-programmable gate array,现场可编程门阵列
ConVNets:convoluntional neural network,卷积神经网络
SDF:synchronous dataflow,同步数据流
DSE:design space exploration,设计空间探索
MOO:multiobjective optimization,多目标优化
DAG:directed acyclic graph,有向无环图
是一个可以通过编程来改变内部结构的芯片,作为专用集成电路(ASIC)领域中的一种半定制电路而出现的。FPGA功能实现:需要通过编程即设计硬件描述语言,经过EDA工具编译、综合、布局布线后转换为可烧录的文件,最后加载到FPGA器件中。主要应用于大数据量运算以及大数据并行通信。
CNN 是深度学习主要算法之一,其余还有DNN(深度神经网络)和RNN(循环神经网络等)。卷积神经网络模型一般分为特征提取(卷积层、非线性层、池化层)和分类(全连接层)两部分,其中特征提取部分计算量大,主导了ConvNets的计算成本。
一种用于并行系统分析和设计的计算模型,硬件或软件计算系统被描述为有向图,称为同步数据流图(SDFG),节点代表计算,并用弧表示它们之间的数据流。
本文中DSE 任务为约束优化问题,目的是优化感兴趣的性能指标。通过 SDF 变换遍历设计空间,直到获得优化目标的设计点。
Kh 和 Kw 是filter的高度和宽度,Sh 和 Sw 是确定沿特征图高度和宽度的连续窗口之间的步幅,P是零填充,N是filter的个数
Rfpga = {DSP, LUT, FF, BRAM} FPAG包含的一组异构资源
Rmem = {Bmem,Cmem} 片外存储器的带宽和容量
R = Rfpga ∪ Rmem
将SDFG使用拓扑矩阵表示,并分解为S(streams matrix)、C(channels matrix)、R(rates matrix)做Hadamard乘积,并允许矩阵中包含实数。
将原始SDFG按深度分割为若干子图,每个子图都映射到一个独特的硬件架构,专门针对特定的子图进行优化,可以有效利用FPGA资源。在每个子图中,片上存储器用于存储权重和构建块之间的缓冲特征映射。此外,与片外存储器的通信被最小化,只包含子图的输入和输出流。此外,为了避免输入子图时都要重复配置整个fpga,采用将多个输入作为批处理的方式,这样重新配置的开销可以摊销。
权重重新加载转换旨在解决两个问题:(1)提供一种执行多个子图的机制,而不会因FPGA重新配置而造成延迟惩罚;(2)启用具有超过FPGA片上内存容量的权重层的目标,这是通过输入特征映射折叠来处理的。类似于带重构的图划分,这种转换将给定的SDFG沿深度划分为几个子图。但是,不是为每个子图生成不同的体系结构,而是派生出一个单一的灵活的体系结构,可以通过在不同模式下操作来执行所有结果子图的工作负载。