zoukankan      html  css  js  c++  java
  • FPGA加速BCNN,模型20倍剪枝率、边缘设备超5000帧/秒推理吞吐量

    https://mp.weixin.qq.com/s/1na-AFgJUZO6vXCudj3PeA

    转自机器之心对于许多信号处理应用来说,能够从具有相位信息的复数数据中进行学习是必不可少的。当前实值深度神经网络(DNN)在潜在信息分析方面表现出了较高的效率,但在复数领域的应用还不够。而深度复数网络(Deep complex networks, DCN)可以从复数数据中学习,但计算成本较高,因此,这些技术都不能满足可部署系统处理短观测或短信号突发的即时决策需求。
    近年来,将 DCN 与二值化神经网络(BNN) 相结合的二值化复数神经网络 (BCNN),在实时分类复数数据方面显示出巨大潜力。
    本文中,来自康涅狄格大学、斯蒂文斯理工学院等机构的研究者提出了一种基于结构剪枝的 BCNN 加速器,它能够在边缘设备上提供超过 5000 帧 / 秒的推理吞吐量

    图片


    论文地址:https://arxiv.org/pdf/2108.04811v1.pdf

    实现这一高性能的结果来自算法和硬件两个方面:

    • 在算法方面,研究者对原始 BCNN 模型进行结构剪枝,获得 20 倍的剪枝率,但准确率损失可以忽略不计; 

    • 在硬件方面,研究者为二值复数神经网络提出了一种新颖的 2D 卷积运算加速器。


    实验结果表明,该研究所用方法的利用率超过 90%,使用 CIFAR-10 数据集和 Alveo U280 Board,对于复数 NIN-Net 和 ResNet-18 来说,其推理吞吐量分别达到 5882 帧 / 秒和 4938 帧 / 秒。
    BCNN 训练和压缩
    本节详细讨论 了 BCNN 模型细节,包括模型结构、BCNN 的基本构建块和操作、使用 SLR 进行权重剪枝以及基于象限二值化、 STE 的权重量化。
    BCNN 结构
    BCNN 与原始卷积神经网络 (CNN)结构的比较如图 1 所示。Fig. 1a 表示原始 CNN,由卷积层、add bias、非线性层和池化层组成。对于 BCNN,其结构与原始 CNN 有所不同(如 Fig. 1b 所示)。池化层和批归一化层应该在卷积层之后,从网络中去除了 bias 以减少计算开销而不会损失准确率。对于 BCNN,批归一化是模型收敛的强制性操作。

    图片

    图 1:CNN 与 BCNN 的比较

    对于以三通道(RGB)作为输入的图像,初始输入仅包含实部。为了生成复数的输入,研究者设计了一个两层残差 CNN 来学习虚部。用于生成复数输入的网络如图 2 所示。

    图片

    图 2:复数输入生成过程
    BCNN 与普通 DNN 的构建部分略有不同,主要表现在卷积层、池化层、批归一化和二值化函数的复数版本。
    以二值化为例,目前有两种广泛使用的二值化方法,即确定性二值化和随机二值化。确定性二值化在方程式 7 中给出,激活值被二值化 + 1 和 - 1。随机二值化如式 8 所示,式中δ(x) 是裁剪函数,并满足因素δ(x) = max(0, min(1, (x+1) /2 ))。然而,随机二值化的实现需要一个随机数生成器,导致硬件设计成本变高。因此,软硬件实验均采用确定性二值化方法。

    图片


    FPGA 硬件架构
    FPGA 是 DNN 应用最流行的硬件平台之一。FPGA 平台具有可重构结构和硬件设计的高并行性。随着 DNN 模型增大,权重矩阵和激活值太大而无法存储在 FPGA 芯片存储器中。然而,剪枝和权重量化技术同时压缩了激活和权重表征,使得 FPGA 平台可以将所有中间结果存储在存储器中。该研究基于 Vivado HLS 2020.1 进行硬件设计,并展示了用于 BCNN 模型的 FPGA 硬件结构。
     FPGA 结构
    用于 BCNN 的整体 FPGA 结构如图 4 所示。本节中介绍了 2 个 BCNN 模型设计:基于 BCNN 模型的 NIN(network in network)和基于 BCNN 模型的 ResNet-18。这两个模型由 3 个主要层组成:复数输入生成层(图 2)、全精度复数卷积层(图 1a)、二值化复数卷积层(图 1b)。最后将使用全连接(FC)层来生成预测输出。

    图片

    图 4:硬件设计架构

    对于 ResNet-18 网络,有 2 种残差块,这两种残差块都是 BCNN 模型的二值化块。残差块 1 如图 5 所示,输入经过 2 个二值化的复数卷积层,加上原始输入得到最终输出。

    图片


    残差块 2 如图 6 所示,其中一条路径有 2 个二值化复数卷积层,另一条路径只有 1 个二值化复数卷积层,然后将这 2 条路径的输出相加以生成最终输出。

    图片


    实验
    BCNN 模型的训练
    研究者将 SLR 剪枝和基于 STE 的量化技术用于 NiN-Net 和 ResNet-18,这两个网络都是基于 BCNN。对于 CIFAR-10 数据集,研究展示了基于 NiN-Net 和 ResNet-18 的 BCNN 的训练结果;对于 ImageNet 数据集,研究只展示了基于 ResNet18 的 BCNN 结果。
    首先,为了确定最终模型池化层功能,在 BCNN 模型上比较了光谱(spectral)池化、平均剪枝和最大池化。比较三种池化可达到的精度,结果如表 1 所示。由结果可得,平均池化比其他两种池化方法的性能更好,计算复杂度可以接受。所以平均池化将用于 BCNN 模型。

    图片


    对于模型的复数版本,通道数减少了一半,以确保不同 BCNN 模型大小相同。对于权重剪枝,大多数中间层的剪枝比设置为 0.5。该研究在四种模型上进行了测试:NIN-Net、复数 NIN-Net、ResNet-18 和复数 ResNet-18 在 CIFAR-10 数据集上的准确率如下表所示。 

    图片


    在 ImageNet 数据集,对基于 ResNetE-18 模型的 BCNN 进行剪枝和量化,结果如表 III 所示。由结果可得,网络的复数版本性能优于普通版本。因此,基于复数二进制网络的 NIN-Net 和 ResNet-18 将用于硬件设计评估。

    图片


    硬件评估
    下表是基于 NIN-Net 的 BCNN 单个推理核资源利用率。对于单核而言,执行延迟为 1.53 毫秒。最大资源利用率受到 LUT 资源限制,可以同时使用九个核以实现更高级别的并行性。可实现的最大吞吐量为 5882 帧 / 秒。

    图片


    对于基于 ResNet-18 模型的 BCNN,单个推理核的资源利用情况如下表所示:

    图片


    此外,该研究还对 BCNN 模型跨平台吞吐量进行了比较,结果如下表所示,由结果可得,本文所提出的 FPGA 设计在基于 NIN-Net 模型的 BCNN 上实现了 1.51 倍的加速,在基于 ResNet-18 模型的 BCNN 上实现了 1.58 倍的加速。

    图片

  • 相关阅读:
    自己遇到的冲突及解决方案
    怎么解决代码冲突及切换分支
    程序员修养
    代码回退
    gitlab两种连接方式:ssh和http配置介绍
    gitlab创建项目及分支
    github,gitlab的区别
    代码托管有什么用
    新手搭建云服务器详细过程
    UNP学习笔记(第十一章 名字与地址转换)
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/15383882.html
Copyright © 2011-2022 走看看