神经网络加速器设计研究:GoSPA ISCA2021论文研读

本文详细介绍了GoSPA,一个针对稀疏卷积神经网络(CNN)的能效高的高性能加速器。针对现有CNN加速器存在的硬件开销、数据阻塞和传输问题,GoSPA提出了一种新的方法,利用静态流和动态流的即时交集操作,以及专用计算重定序,减少了非必要的乘法操作和数据传输。实验证明,GoSPA相比SparTen和ExTensor在速度和能效上均有显著提升。
摘要由CSDN通过智能技术生成

在这里插入图片描述

神经网络加速器设计研究:GoSPA: An Energy-efficient High-performance Globally Optimized SParse Convolutional Neural Network Accelerator∗ 论文研读

0. 写在前面

我个人主要研究方向为智能芯片,开此系列专题,意为留下学习研究痕迹,总结论文阅读中的所思所想。

此系列文章的首节除用于说明情况外,会摘要总结研读文章提到的要点,后续研究过程中如有新的体会想法也会写在此处。

  • 文章背景及现实存在的问题

    • 卷积神经网络模型在很多人工智能应用上取得了巨大的成功,但是由于该模型基于高分辨率激活图的2D卷积操作,在实际应用中往往受限于计算、存储等,需要大数据带宽。为克服现实存在的问题,加快模型计算,研究人员试图设计开发领域定制的CNN加速器,这种方案可以显著提高运算速度、吞吐量、减少功耗。研究人员提出了许多加速器模型设计方案。在这些方案中利用卷积神经网络稀疏性特点改进加速器,提高硬件计算能力,是十分重要的方法。利用模型的稀疏性,可以很好的降低功耗、提高吞吐量。那么如何利用模型中存在的稀疏性来设计加速器呢?
  • 已有的解决方法及其不足

    • 已有的解决方法:现有的稀疏卷积神经网络加速器利用交集操作来搜索、识别两个稀疏向量之间的关键位置,并借此减少计算量
    • 相关工作
      • 最先进的CNN加速器SCNN,存在架构级缺陷,其设计引入了许多非必要的乘法操作和数据传输
      • 为克服SCNN中非必要的乘法和数据传输,研究人员试图直接搜索和识别两个稀疏矩阵之间的非零点(SparTen和ExTensor)但是相关设计仍然存在不足
    • 不足:不能突破三个架构级缺陷
      • 交集操作的硬件耗费十分高
      • 交集和计算段之间存在的强数据相关会引发高频率阻塞
      • 显式交集操作带来不必要的数据传输
  • 发现规律或现象

    • 按照ExTensor中的术语,交集操作可以称为流。流可以划分为动态流和静态流,动态流应用于执行阶段,静态流出现在执行之前。作者在文中的相关改进,主要基于进行动态流和静态流之间的交集操作时,可以有更高效的实现方式的发现。
  • 提出了什么新方法

    • 静态流和动态流之间隐含即时交集操作,可用于优化交集方案,这种方法可用于稀疏神经网络推断。
    • 通过修改2D卷积的计算结构,提出一种专用计算重定序方法,来确保传输必要的激活数据,且仅传输一次。
  • 解决的效果如何

    • 通过改进交集操作,实现了性能提升。

    • 文中同SparTen在加速比和能效比上进行了比对,原文如下。

      Compared with SparTen, GoSPA achieves average 1.38×, 1.28×, 1.23×, 1.17×, 1.21× and 1.28× speedup on AlexNet, VGG, GoogLeNet, MobileNet, ResNet and ResNeXt, respectively. More importantly, GoSPA achieves 5.38×, 4.96×, 4.79×, 5.02×, 4.86× and 2.06× energy efficiency improvement on AlexNet, VGG, GoogLeNet, MobileNet, ResNet and ResNeXt, respectively. In the more rigid comparison including energy consumption incurred by off-chip DRAM access, GoSPA also shows great performance improvement than the existing DRAM-included sparse CNN accelerators.

  • 前提假设是什么

    • 卷积神经网络模型中存在大量的稀疏性
  • 不足?体会与感悟

1. 摘要

摘要处作者简要提到了本文的主要研究背景,存在的问题,解决的方法,并简要介绍了GoSPA性能上的优越表现。

主要研究背景为现阶段利用卷积神经网络固有的稀疏性来设计硬件加速器受到研究人员的青睐,但是现有方法仍然受到硬件架构级的三个缺陷,分别为硬件开销、数据相关引起的阻塞和不必要的数据传输。为克服现有缺陷,采用了两种基本设计思想,一是利用静态流和动态流之间隐含的即时交集操作,二是设计专用计算重定序来减少非必要传输。最后说明了本文设计的优越计算性能。

GoSPA is implemented with CMOS 28nm technology. Compared with the state-of-the-art sparse CNN architecture, GoSPA achieves average 1.38×, 1.28×, 1.23×, 1.17×, 1.21× and 1.28× speedup on AlexNet, VGG, GoogLeNet, MobileNet, ResNet and ResNeXt workloads, respectively. Also, GoSPA achieves 5.38×, 4.96×, 4.79×, 5.02×, 4.86× and 2.06× energy efficiency improvement on AlexNet, VGG, GoogLeNet, MobileNet, ResNet and ResNeXt, respectively. In more comprehensive comparison including DRAM access, GoSPA also shows significant performance improvement over the existing designs.

2. 介绍

卷积神经网络模型在很多人工智能应用上取得了巨大的成功,但是由于该模型基于高分辨率激活图的2D卷积操作,在实际应用中往往受限于计算、存储等,需要大数据带宽。为克服现实存在的问题,加快模型计算,研究人员试图设计开发领域定制的CNN加速器,这种方案可以显著提高运算速度、吞吐量、减少功耗。研究人员提出了许多加速器模型设计方案。在这些方案中利用卷积神经网络稀疏性特点改进加速器,提高硬件计算能力,是十分重要的方法。利用模型的稀疏性,可以很好的降低功耗、提高吞吐量。

在种类众多的CNN加速器中,稀疏感知设计受到研究者青睐,相比于非稀疏感知的设计,它可以提供更好的能耗比和吞吐量。

在所有的稀疏卷积硬件加速器中,SCNN同时考虑了激活值和权重的稀疏性,并由此获得了高性能。但是SCNN难以优化,因为其引入了多余的乘法和不必要的数据传输,并且是架构级的浪费。SCNN为实现稀疏核和稀疏激活图之间的卷积,将所有的非零权重同所有的非零激活值相乘,并从其中选择需要的结果。考虑到卷积操作仅需要部分非零权重同一小部分非零激活值,SCNN基于结果的操作进行了不必要的乘法,同时也需要一些不必要的传输。

为了减少SCNN中出现的资源浪费(多余乘法和数据传输),SparTen和ExTensor试图通过搜索识别稀疏向量中符合条件的数据的位置。一旦确定位置,就可以进行高效卷积,而不用进行多余的乘法。

虽然SparTen和ExTensor消除了SCNN中存在的多余乘法,但还是没有解决三个主要问题:

  • 用于定位非零部分的交集操作存在高延迟。在实现方面,SparTen使用前缀加来实现,这中操作开销巨大,同时其功能远不止寻找非零部分;ExTensor使用CAM来实现交集操作
  • 交集操作在执行部件的关键路径上,会引起频繁的执行阻塞。
  • SparTen和ExTensor均在交集操作之前,读入两个非零向量,这种方法,尽避免了多余的乘法,仍不能解决存在的多余数据传输问题

基于以上观察,在加上作者对2D卷积的研究,发现可以通过加快静态流和动态流之间的交集操作来实现更快的加速器。(SparTen和ExTensor的优化,均是建立在两个动态向量的交集操作上的,这是更一般的方式,但是其实现也因此可以加以优化)在此基础上,提出了两个主要的设计思想。

  • 即时交集。当确定一个静态流之后,对应的动态流的匹配规则就已经确定下来,这可以在执行之前做到。因此可以通过对静态流稀疏信息进行编码,用于过滤动态流中的零和某些非零数据。采用这种方法,送到执行部件的数据均为必须的数据。这种方法是通过在数据流中添加信息来避免硬件花销。(Tradeoff)
  • 专用计算重定序。在SparTen和ExTensor中,同一个激活值会在不同的时间同不同的权重计算,并且会读取多次,此处作者的优化思想为将线管操作一次执行。其具体实现是通过修改数据流,同时检查相关位置,并重定计算操作,使得链接到同一个数据的交集操作可以同时执行。

3. 关注稀疏性的深度神经网络模型加速器

此节作者首先讲述了该类加速器的设计背景和其基本实现目标。稀疏性在深度神经网络模型中是一个重要的问题。因为现代神经网络模型为降低模型规模,所使用的压缩技术,如剪枝,使得模型计算数据中充斥着大量的零。但是更小的模型并没有带来更好的性能提升,因为处理吞吐量主要受到间接或突发访问稀疏权重的影响的。因此设计开发支持稀疏性计算的加速器十分重要。关注稀疏性的结构可以避免一些或所有的不必要的乘法。下面介绍一些相关设计并说明这些设计方案存在的缺点。

3.1 SCNN:基于笛卡尔积的算法

在这里插入图片描述

SCNN模型是第一个被提出的考虑稀疏性的CNN加速器。在卷积计算上,为剔除零的影响,该设计采用基于笛卡尔积的算法。具体来说就是直接在非零激活值和非零权重上直接进行笛卡尔积。这种算法人为引入了卷积操作中不需要的乘法。这种缺点成为架构级乘法冗余。如图一所示,权重中的3和-3,不应该同-1和-2进行乘法,因为其位置不会对应。由此,图中需要进行的四次卷积均因采用笛卡尔积方法带来浪费。除了计算了多余的乘法,SCNN还引入了非必要的数据传输,如图1中-1和-2不应从SRAM中取出。

总结一下,SCNN作为第一个使用稀疏性设计出来的加速器,由于其算法进行了多余的乘法,引入了非必要的数据传输,导致其并不是最优化的。作为一个利用稀疏性的加速器,理想的情况应是仅进行必要的计算。

3.2 SparTen and ExTensor: 基于交集的算法

在这里插入图片描述

这两个设计均实现了仅进行必要的计算的目标,它们主要的计算步骤如图2所示。这两种方案,均使用交集操作匹配非零值,然后在非零值之间进行乘法操作。两者的不同主要在于实现方式&

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值