高效稀疏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版本可能是一个更合适的选择。
超级会员免费看
48

被折叠的 条评论
为什么被折叠?



