Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部机器之心报道

FPGA加速BCNN,模型20倍剪枝率、边缘设备超5000帧/秒推理吞吐量

来自康涅狄格大学等机构的研究者提出了一种基于结构剪枝的 BCNN 加速器,它能以较小的准确率损失获得 20 倍的剪枝率,并且在边缘设备上提供了超过 5000 帧 / 秒的推理吞吐量。

对于许多信号处理应用来说,能够从具有相位信息的复数数据中进行学习是必不可少的。当前实值深度神经网络(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 倍的加速。


理论FPGA模型剪枝
相关数据
池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

二值化技术

二值化是将像素图像转换为二进制图像的过程。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

二值化神经网络技术

 二值网络是将权值W和隐藏层激活值二值化为1或者-1。通过二值化操作,使模型的参数占用更小的存储空间(内存消耗理论上减少为原来的1/32倍,从float32到1bit);同时利用位操作来代替网络中的乘加运算,大大降低了运算时间。由于二值网络只是将网络的参数和激活值二值化,并没有改变网络的结构。因此我们主要关注如何二值化,以及二值化后参数如何更新。

批归一化技术

批归一化(Batch Normalization,BN)由谷歌于2015年提出,是一个深度神经网络训练的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中的“梯度弥散”问题,从而使得训练深层网络模型更加容易和稳定。目前BN已经成为几乎所有卷积神经网络的标配技巧了。从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

推荐文章
暂无评论
暂无评论~