【FINN-R】论文笔记-3.2layers

是对论文FINN-R: An End-to-End Deep-Learning Framework for Fast Exploration of Quantized Neural Networks的3.2小节笔记,主要阅读目的是了解PE和SIMD的概念、神经网络各层的结构、P和Q参数的定义

3.2 层

构成典型卷积层的主要元素是矩阵矢量阈值单元(MVU)和滑动窗口单元(SWU)。 MVU处理计算方面:对于卷积层,卷积本身可以降低为矩阵矩阵乘法,这是众所周知的[10]。 然后可以将它们以流方式映射到MVU。 来自卷积过滤器的相应权重被打包到过滤器矩阵中,同时在输入图像上移动滑动窗口以形成图像矩阵。 然后将这些矩阵相乘以生成输出图像。
我们将卷积层或完全连接层的主要计算组件称为处理元素(PE)。 其结构如图6所示。PE执行并行乘法,Q对应于SIMD值。 然后,将它们在加法器树中进行归约,以将其随后累加至当前计算的点积。 最后,使用阈值比较从累积结果中得出输出值。 P个并行PE的阵列包括MVU。 引入了第三级并发度,该并发度支持并行计算同一通道内共享相同权重的多个输出像素(称为M)。这可以提高BRAM利用率并进行性能缩放。 参数P,Q(SIMD的数量)和M的选择确定了层的计算并行度。 它们是权衡资源与任何层计算性能之间关系的关键参数。
【FINN-R】论文笔记-3.2layers_第1张图片
SWU是生成降低到矩阵乘法的卷积所需的图像表示的单元(图Fig.7a)(为了读懂这个图,大家可以对照原始FINN论文的4.3.2节以及下图Figure.7FINN论文的翻译)。 它产生与[10](论文名:一个高效的卷积神经网络)中相同的向量,但具有(interleaved channels)交错的信道[58],以简化存储器访问并避免在层之间进行转置。与完整图像缓冲区相比,这表现出显着更低的延迟,并减少了缓冲区大小要求。 *只须保持与卷积核的高度一样多的连续行可用(所以设置了(K/s+1)s=K+s行buffer)。 出于弹性的原因,额外的一行用于收集新的传入图像数据
【FINN-R】论文笔记-3.2layers_第2张图片
【FINN-R】论文笔记-3.2layers_第3张图片

3.2.1层成本模型

从图8可以看出,层由不同的元素组成。
【FINN-R】论文笔记-3.2layers_第4张图片

卷积层由SWU,MVU以及权重和阈值存储器(WM和TM)组成。 Maxpool层包含一个SWU和一个maxpool单元,完全连接的层仅需要MVU。 因此,层成本是基本组件的总和,如等式(1)所示。 注意,与WM( L U T W M LUT_{WM} LUTWM)和MVUs的BRAM成本( B R A M M V U BRAM_{MVU} BRAMMVU)有关的逻辑成本可忽略不计。
在这里插入图片描述
在以下各段中,我们分别得出所有组件(SWU,MVU,WM,MP)的BRAM,LUT和DSP成本。
Tab2

全连接层 D,D’ 输入和输出向量大小
卷积层 N,C 输入图的宽度和通道
K×K,S 内核尺寸和步幅
C ’ 输出图通道数
MVU尺寸 M MVU处理的并行向量
P,Q 并行计算的输出和输入通道数
A,W 激活/权重的位宽(精度)

SWU成本。 滑动窗口单元的硬件成本由BRAM要求决定,BRAM要求可以直接从实现的内存布局中得出,如Tab2中的参数所示。行缓冲区占用的BRAM模块与公式(4)指定的一样多。
在这里插入图片描述
多向量计数在等式的最高级别线性缩放线性缩放(scales linearly)。 否则,将为每行使用独立的内存条,一旦处理了整个行的宽度,便可以独立释放这些行。 附加的内存条用作传入的新图像数据的汇编缓冲区。这占第一个括号因子( parenthesized factor)。 剩下的两个因素捕获了存储条的深度和宽度,由于内置BRAM模块的深度和字宽,它们可能会碎片化。 逻辑资源中也存在恒定的开销。 这取决于加速器体系结构的类型。 对于完整的前馈数据流,每个SWU需要426个LUT和0个DSP,因为在编译时已知确切的尺寸,并且可以将参数烧录到体系结构中。 对于在相同硬件组件之上执行许多不同层的多层offload(a multilayer offload),参数化发生在运行时,因此开销分别较大,分别为1050个LUT和15个DSP。
WM成本。 对于卷积层,等式(5)捕获了实现卷积层权重存储器所需的BRAM模块数量。 它的整体大小由内核维数的平方与输入以及输入输出要素图通道数的乘积确定。该存储量被分到了每个处理元件一个的,单独的存储器。 Q权重的并行访问确定实现使用的字宽。 同样,存储深度和字大小可能会因可用BRAM模块的物理尺寸而分散。
在这里插入图片描述
MVU费用。 卷积层的计算并发性受以下因素控制:(a)在不同的输出通道上同时工作的PE的数量P,(b)Q,在一个时钟周期内处理的输入通道的SIMD(结合fig.8理解),以及(c)M,多向量计数捕获卷积层在多个输出像素上的此计算结构的并发重复(个人理解:具有相同权重的像素进行并行计算)。 这些参数允许在广泛范围内扩展层实现的性能,但也直接影响硬件成本。 为了生成网络实施方案,FINN-R必须意识到这些成本,以便能够在目标设备的资源限制内将各个层的实施方案扩展到平衡的性能。
MVU的硬件成本可以建模为本质上恒定的控制部分和点积算法。 后者的扩展通过复制到并行的PEs和并行多向量处理。 各个算术模块的内部成本模型可以从Sec3.1中的微基准测试结果得出。 结合控制和算术补分,我们得出以下模型:LUTs = c 0 c_0 c0 + c 1 c_1 c1·M·(P·Q)(W·A)。 回想一下,对于完全连接的层,M = 1,因为它们无法在多个内核应用程序之间共享权重。(问题: c 0 c_0 c0 c 1 c_1 c1是个啥)
为了确定该模型的两个参数并验证其适用性,我们再次使用并行化参数M = 1,P∈{2,4,8,8,16,32,64}和Q∈{2,4 ,8,16,32,64},进行HLS综合实验。 由 c 1 c_1 c1缩放的完整乘积被视为单图复杂度度量。 LUT经验模型相对于综合结果的对比如图9所示。 但是,对于单个实验,预测可能会超出后期综合结果的30%。(问题:项目之中,P和Q值究竟怎么定,是一次一次地尝试吗?)
阈值操作的成本在很大程度上取决于输出激活函数的精度,因为要存储并与之比较的阈值数量依据精度呈指数增长。 对于像FINN-R那样的小型精度,这些成本实际上在剩余的MVU成本中消失了。 如果要求精度显着高于4位,将很快导致相关成本变昂贵,或者使阈值方法完全不可行。
MP成本。 实际上最大池化层所需的BRAM和LUT很少。 该模块基本上实现了C个并行比较器,每个通道一个,因此每个通道依次比较两个A-bit字,并保持其池化窗口的最大值。 计算LUT的总成本大致等于A和C的乘积。

你可能感兴趣的:(PYNQ,FPGA,神经网络,fpga)