我是 Gemini-2.0-flash-exp 打造的 AI 助手,我的小脑袋瓜可厉害啦,帮你咻咻咻地概括文章重点!✨

这篇论文提出了一种基于FPGA的低功耗、低延迟脉冲神经网络(SNN)加速器。该加速器通过融合卷积层和池化层,设计了卷积池化(CONVP)单元,减少了延迟和资源消耗。对于全连接层,采用内部输出并行性和跨输出并行性加速推理。实验结果表明,该加速器在MNIST数据集上比其他FPGA实现快约28倍,在DVSGesture数据集上比ASIC设计快约15倍,且功耗较低。该设计在Xilinx Zynq XA7Z020 FPGA上实现,采用8位定点量化,工作频率为100 MHz,并展示了优化方法(如CONVP、并行性)对性能和资源利用率的影响。

A Low Power and Low Latency FPGA-Based Spiking Neural Network Accelerator

摘要

翻译自 ChatGPT:

脉冲神经网络(SNNs),被称为神经网络的第三代,因其生物合理性和类似大脑的特征而著名。最近的努力进一步展示了 SNN 在高速推断方面的潜力,通过设计具有时间或空间维度并行性的加速器。然而,由于硬件资源的限制,加速器设计必须利用片外内存来存储许多中间数据,这导致了高功耗和长延迟。本文侧重于层间数据流以提高算术效率。基于脉冲的离散特性,我们设计了一个卷积池化(CONVP)单元,将卷积层和池化层的处理合并,以减少延迟和资源利用率。此外,对于全连接层,我们应用了内部输出并行性和跨输出并行性来加速网络推理。我们通过在 Zynq XA7Z020 FPGA 上实现不同的 SNN 模型,并使用不同的数据集来展示我们提出的硬件架构的有效性。实验结果显示,我们的加速器在 MNIST 数据集上与 FPGA 实现相比,可以实现约 28 倍的推断速度提升,并在 DVSGesture 数据集上与 ASIC 设计相比,可以实现约 15 倍的推断速度提升,功耗较低。

相关工作

  1. 使用 rate codingIF 神经元模型,没给出具体的时间步是多少。

设计方法

  1. PC 端负责脉冲编码,通过 UART 协议输出给 PL 端;PL 端负责网络推理对输入脉冲做 Line Buffer 做卷积(Adder Tree),输出结果再传回 PC 端进行验证,系统框图如图:系统框图

  2. 所谓的 CONVP 就是把 Conv 和 MaxPooling 融合(呃呃不就是很常见的多加个 buffer 吗,而且作者所做的似乎是 Valid Conv ),然后做了 Intra-Row PoolingInter-Row Pooling,说白了就是比如做 MP2 的时候,第一行先做 Intra-Row Pooling,每两个做一次 OR 操作再写入 Buffer,在第二行的时候则作 Inter-Row Pooling,本来是应该读出第一行的 pooling 结果然后接着做 OR 操作的,但作者似乎是偷懒多开了一行 Buffer 再一一做 OR 操作,如图:

    MaxPooling

  3. 卷积过程也有 Inter-Output ParallelismIntra-Output Parallelism,其中 Intra-Output Parallelism 是把对某个神经元有贡献的权重(n bits)分成 k 个作为一组,即并行度为 k,经过 Ci / k 个 Clock 后就可以算完一个输出神经元的膜电势;Intra-Output Parallelism 没怎么理解,我估计是对上个 FC 层计算完的结果直接拿来做运算,而不需要存起来再被这层 FC 取出来作为 Input,如图:全连接并行范式全连接权重存储

实验与评估

  1. 在 Xilinx Zynq XA7Z020 FPGA 上进行了部署,Verilog 设计,8 bits 定点量化,100 MHz 时钟频率,性能对比如图:

    性能对比

  2. 其他也没啥好说的了,作者最后还对比了下 CONVPCONV-POOLING 以及有无 Inter-Output ParallelismIntra-Output Parallelism 的推理速率、资源使用率的差别,只能说增加了下工作量吧。