20、高效稀疏CNN加速器Phantom-2D的实验与性能分析

高效稀疏CNN加速器Phantom-2D的实验与性能分析

1. 内核内平衡示例

内核内平衡对于提高计算线程利用率至关重要。以一个测试示例来说明,TDS操作确保在一个周期内选择所有三列。对生成的映射输入(如map11 = 111 000 000,map12 = 000 111 000,map13 = 000 000 111)进行循环左移,类似于第一步的循环右移,以确保映射器进行有效映射。

更新后的映射值用于map1x,无需调整位置/索引,就能准确地将数据映射到各个线程。此时,核心的线程利用率大幅提高,例如在这个例子中,有效计算/(周期×处理单元×每个处理单元的线程数)= 9/(1 × 3 × 3) = 100%。

2. 实验评估方法

为了准确模拟单个Phantom核心和Phantom - 2D加速器的性能,设计了一个基于软件的周期级性能模拟器。该模拟器可根据各种核心和架构级设计参数进行配置,以捕捉它们对性能的影响。
- 可修改的设计参数
| 操作 | 级别 | 参数 |
| ---- | ---- | ---- |
| TDS | Phantom | TDS_inOrder、TDS_outOrder |
| 平衡 | Phantom/intra_core、Phantom - 2D | unbalanced、inter_core、full(inter + intra) |
| 前瞻因子(Lf) | Phantom | 3 ≤ Lf ≤ 27 |
| CNN模型 | Phantom - 2D | dense、sparse |

  • 加速器配置
    | 配置参数 | 值 |
    | ---- | ---- |
    | 计算矩阵大小 | 28 (7 × 4) |
    | 每个核心的处理单元(PEs) | 3 |
    | 每个处理单元的乘法器线程 | 3 |
    | 总乘法器线程 | 252 |

模拟器有五个内置测试场景,涵盖了上述所有参数的扫描。同时,它还包含SparTen、SCNN和Eyeriss v2的例程,用于进行性能比较。在处理每一层时,每个Phantom核心会输出七个值,包括密集设计的总周期、TDS按顺序和乱序的周期、两级负载平衡以及各种Phantom - 2D配置的平均线程利用率。

3. 模拟模型

选择了稀疏版本的VGG16和MobileNet进行性能比较。使用MATLAB的深度学习工具箱对这些网络进行剪枝,确保达到与以往方法相同的权重稀疏度。对于激活稀疏度,通过对100个随机选择的输入进行平均来处理。

剪枝后,为每一层生成稀疏二进制掩码,并将其输入到模拟器中,模拟器的调度器会根据各层的数据流将二进制掩码分配到不同的Phantom核心。

4. 实验结果
4.1 TDS变体比较

对TDS的两种变体(按顺序的TDS - IO和乱序的TDS - OO)在稀疏VGG16网络上进行评估。当前瞻因子Lf = 6时,第一层由于稀疏度非常低,相对于密集架构没有显著的性能提升。但在后续层中,性能提升显著,TDS - IO平均快4.5倍,TDS - OO平均快4.8倍,TDS - OO比TDS - IO性能提高1.07倍。

随着Lf的增加,性能差异进一步扩大。当Lf = 18时,TDS - IO和TDS - OO分别比密集架构性能提升6.35倍和7.9倍,TDS - OO比TDS - IO性能提升1.24倍。因此,后续实验将使用TDS - OO变体。

graph LR
    A[设置Lf = 6] --> B[评估TDS - IO和TDS - OO在VGG16上的性能]
    B --> C{第一层性能}
    C -- 低稀疏度 --> D[无显著提升]
    C -- 后续层 --> E[性能提升显著]
    E --> F[TDS - IO平均快4.5倍]
    E --> G[TDS - OO平均快4.8倍]
    F --> H[TDS - OO比TDS - IO性能提高1.07倍]
    A --> I[增加Lf到18]
    I --> J[重新评估性能]
    J --> K[TDS - IO提升6.35倍]
    J --> L[TDS - OO提升7.9倍]
    K --> M[TDS - OO比TDS - IO提升1.24倍]
4.2 负载平衡的影响

在稀疏VGG16和MobileNet网络中,当Lf = 6时,负载平衡(内核间和内核内)对性能有显著影响。在初始层,性能有大幅提升,例如VGG16可达1.5倍,MobileNet可达1.3倍。平均而言,VGG16和MobileNet的性能分别提高1.1倍和1.08倍。

内核内平衡在高稀疏度和较大Lf值时,性能差异会急剧增加。而内核间平衡在通道数较多的后续层中起主导作用,但由于模拟时仅使用约25%的通道滤波器,限制了内核间平衡的充分发挥。实验表明,增加15%的滤波器可使速度平均提高7%。

graph LR
    A[设置Lf = 6] --> B[评估负载平衡对VGG16和MobileNet的影响]
    B --> C{初始层}
    C -- 性能提升 --> D[VGG16可达1.5倍]
    C -- 性能提升 --> E[MobileNet可达1.3倍]
    B --> F{平均性能}
    F --> G[VGG16提高1.1倍]
    F --> H[MobileNet提高1.08倍]
    B --> I{高稀疏度和大Lf值}
    I --> J[内核内平衡性能差异增加]
    B --> K{通道数多的后续层}
    K --> L[内核间平衡主导]
    L --> M[模拟使用25%滤波器限制发挥]
    M --> N[增加15%滤波器速度提高7%]
4.3 对稀疏度和Lf的敏感性

性能模拟器可以扫描权重/激活稀疏度从低(0.1/0.1,即10%)到高(1.0/1.0,即100%)的范围。对于密集架构,低稀疏度时线程利用率高,高稀疏度时线程利用率低。而Phantom - 2D在高稀疏度下仍能保持较高的线程利用率。

为了方便比较,将Phantom - 2D加速器的不同版本重命名为Phantom - 2D - CV(保守版,Lf = 9,平衡)、Phantom - 2D - MD(中等版,Lf = 18,平衡)和Phantom - 2D - HP(高性能版,Lf = 27,平衡)。在低稀疏度时,这三个版本的速度和线程利用率相似,但在高稀疏度(如80%)时,Phantom - 2D - MD和Phantom - 2D - HP分别比Phantom - 2D - CV快1.43倍和1.65倍。

分析硬件资源可知,Phantom - 2D - HP仅比Phantom - 2D - CV多需要1.05倍的查找表(LUT),因为较高的Lf值仅增加了LAM和TDS块的LUT计数,而映射器、计算引擎和输出缓冲块的LUT计数保持不变。

4.4 与以往方法的比较

将不同版本的Phantom - 2D加速器与密集架构、SCNN和SparTen在稀疏VGG16网络上进行速度比较。平均而言,Phantom - 2D - CV比SparTen、SCNN和密集架构分别好1.05倍、2.56倍和6.4倍。Phantom - 2D - MD和Phantom - 2D - HP的速度提升更明显。

在稀疏MobileNet网络上与Eyeriss v2比较,Phantom - 2D - CV平均比Eyeriss v2好1.04倍,MD和HP版本分别好1.71倍和2.86倍。虽然Eyeriss v2在CONV2 - DW层表现较好,但Phantom - 2D - HP在更深层能赶上并提供改进,尤其是点积层,平均速度比Eyeriss v2快4.5倍,比密集架构快25倍。

比较不同加速器的能量消耗具有挑战性,通过估计DRAM访问量可以近似比较。与CSC格式相比,稀疏掩码表示不仅需要更少的编码/解码逻辑,而且在内存需求方面更高效。在初始层,CSC格式的DRAM内存访问量比稀疏掩码高约4倍(VGG16)和3.7倍(MobileNet);在深层,CSC格式的内存需求约为稀疏掩码的1.7倍。

4.5 RTL综合结果

编写了Lf = 27的单个Phantom核心的RTL Verilog代码,并在Xilinx Zynq 7100 SoC的可编程逻辑(PL)上进行综合,运行频率为150 MHz。该设计的功率消耗为2.48 W,其中PS占主导(55%)。

与其他加速器相比,Eyeriss v2在65 nm ASIC上实现时,面积成本比原始半稀疏Eyeriss增加了108%,这是由于其CSC格式所需的复杂编码/解码逻辑。SCNN的面积比其密集设计增加了35%,而SparTen未报告其处理单元的资源利用率。

单个Phantom核心(Lf = 27)的资源利用率如下:
| 属性 | 可用 | 已使用 | 利用率(%) |
| ---- | ---- | ---- | ---- |
| LUTs | 277k | 3.4k | 1.23 |
| FFs | 554k | 6k | 1.1 |
| 片上SRAM | 26.5Mb | 2.1kB | 0.01 |

综上所述,Phantom - 2D加速器在性能上表现出色,平均比等效的密集CNN架构、SCNN、SparTen和Eyeriss v2分别好12倍、4.1倍、1.98倍和2.36倍,同时保留了SparTen的能源效率。它通过利用双边稀疏性,在相对较低的硬件复杂度下实现了高性能,并且支持CNN的所有层,包括全连接层和非单位步长卷积。

高效稀疏CNN加速器Phantom-2D的实验与性能分析

5. 关键技术点分析
  • 内核内平衡技术
    • 原理 :通过对生成的映射输入进行循环左移或右移操作,确保映射器能有效映射数据到各个线程。例如在示例中,对map11、map12、map13进行循环左移,更新后的映射值用于map1x,无需调整位置/索引就能准确映射数据。
    • 效果 :显著提高了核心的线程利用率,在示例中线程利用率达到了100%。
  • TDS技术
    • 变体差异 :TDS - IO和TDS - OO在性能上有差异,TDS - OO在多数情况下表现更优。随着前瞻因子Lf的增加,TDS - OO相对TDS - IO的性能提升更为明显。
    • 选择依据 :根据实验结果,后续实验选择TDS - OO变体以获得更好的性能。
  • 负载平衡技术
    • 内核内平衡 :在高稀疏度和较大Lf值时,内核内平衡能大幅提高性能。通过合理分配计算任务,减少计算线程的空闲时间。
    • 内核间平衡 :在通道数较多的后续层中起主导作用,但模拟时滤波器使用比例限制了其效果的充分发挥。增加滤波器数量可提高速度。
  • 稀疏掩码表示
    • 优势 :与CSC格式相比,稀疏掩码表示需要更少的编码/解码逻辑,并且在内存需求方面更高效,能减少DRAM访问量,从而降低能量消耗。
6. 性能提升总结
比较对象 Phantom - 2D - CV Phantom - 2D - MD Phantom - 2D - HP
密集架构 6.4倍 9.9倍 11倍
SCNN 2.56倍 3.8倍 4.1倍
SparTen 1.05倍 1.57倍 1.98倍
Eyeriss v2 1.04倍 1.71倍 2.86倍

从表格中可以清晰地看到,不同版本的Phantom - 2D加速器在与其他架构和加速器的比较中都有不同程度的性能提升,且随着版本从CV到MD再到HP,性能提升效果更加显著。

7. 硬件资源分析
  • LUT和FF成本 :Phantom核心的新颖组件(LAM、TDS、Mapper和内核内平衡器)仅占约48%的LUT成本和35%的FF成本。
  • SRAM利用 :本地SRAM利用主要由映射器和输出缓冲块主导,约占78%。
8. 整体优势概述
  • 功能支持全面 :支持CNN的所有层,包括单位和非单位步长卷积以及全连接层,而许多以往的方法不支持FC层和非单位步长卷积。
  • 性能提升显著 :通过内核内平衡、TDS技术、负载平衡和稀疏掩码表示等多种技术手段,在不同的实验中都表现出了比其他加速器更好的性能。
  • 硬件复杂度低 :虽然性能提升明显,但硬件资源利用率相对合理,没有大幅增加硬件成本。
graph LR
    A[Phantom - 2D加速器] --> B[功能支持全面]
    A --> C[性能提升显著]
    A --> D[硬件复杂度低]
    B --> E[支持所有CNN层]
    C --> F[多种技术提升性能]
    D --> G[合理利用硬件资源]

综上所述,Phantom - 2D加速器是一种高效的稀疏CNN加速器,它在性能、功能支持和硬件复杂度之间取得了较好的平衡,为稀疏CNN的计算提供了一种优秀的解决方案。在实际应用中,可以根据具体的需求和场景选择不同版本的Phantom - 2D加速器,以达到最佳的性能和资源利用效果。例如,对于对性能要求极高且硬件资源相对充足的场景,可以选择Phantom - 2D - HP版本;而对于对成本较为敏感的场景,Phantom - 2D - CV版本可能是一个更合适的选择。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值