面向深度神经网络加速芯片的高效硬件优化策略

2021-06-24 09:41张经纬李国庆吴瑞霞曾晓洋
电子与信息学报 2021年6期
关键词:计算资源加速器低功耗

张 萌 张经纬* 李国庆 吴瑞霞 曾晓洋

①(东南大学电子学院国家专用集成电路系统工程技术研究中心 南京 210096)

②(复旦大学专用集成电路与系统国家重点实验室 上海 200433)

1 引言

人工智能算法的理论研究相比于几年前取得了突出的进步。因此,一部分研究人员开始将精力投在把人工智能算法特别是深度神经网络(Deep Neural Networks, DNN)部署在各种硬件平台上,包括中央处理器(Central Processing Unit, CPU)、图形处理器(Graphics Processing Unit, GPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、专用集成电路(Application Specific Integrated Circuit, ASIC)上[1,2]。这些基于硬件平台而专门构建出来的神经网络加速器被证明在应用于图像分类[3]、目标检测[4,5]和语音识别等方面有着很好的效果,而像无人机检测、自动驾驶这类的强实时性的人工智能(Artificial Intelligence, AI)、物联网应用不仅对网络识别精度有较高要求,而且对网络推理速度以及硬件平台功耗同样是严峻的挑战。相比较基于性能优先的CPU/GPU这类通用处理器很难满足功耗约束,FPGA和ASIC具有高能效、低功耗的特性成为当前边缘AI应用方案的首选[6]。

但是想要基于低功耗硬件平台,构建出符合要求的DNN加速器是非常有挑战性的[7,8]。要求开发人员不仅了解AI算法,更加需要包括:(1)专用于低功耗平台的DNN体系结构;(2)高效的内存管理方案;(3)并行可靠的工作流。整个任务严重依赖设计者跨越机器学习和集成电路设计的专业知识。设计过程中如果只实现AI算法却不考虑硬件优化策略,就很难满足边缘计算方案低功耗和高实时性的严格要求。因此硬件优化策略具有较高的普适性和重要的研究价值。

为了解决以上诸多问题,本文提出用于DNN加速芯片设计的一系列高效率优化策略,并在FPGA上验证性能,包括可堆叠共享计算引擎(Process Engine, PE)、可调的循环次数、通道增强和预加载工作流优化方法,利用有限的低功耗硬件资源获得最好的性价比。本文所提硬件优化策略:(1)基于SkyNet网络模型应用,设计出SEUer A型加速器,其精度和功耗都要优于iSmart3-SkyNet(the 1st place in the DAC’2019-SDC)[9];(2)基于SkrSkr-SkyNet(the 2nd place in the DAC’2020-SDC)[10]应用优化出了SEUer B型加速器,最终分数会超过UltraNet(the 1st place in the DAC’2020-SDC)。本文的主要贡献如下:

(1)提出一种可堆叠共享PE用于组装成并行度灵活的卷积计算模块,可以独立且高效率地完成逐点卷积(PointWise Convolution, PWC)计算和深度可分离卷积(DepthWise Convolution, DWC)计算,并且采用了行缓冲区结构解决PWC单次读取特征图的限制。

(2)针对可堆叠共享PE提出了循环次数可调,可根据网络层数自动优化计算模块中循环次数,提高计算的效率。

(3)通道增强的方法不仅可以大幅度增强图片输入层的并行度,还可以增加与外部存储器的通信带宽。

(4)预加载工作流可以更好地协同处理系统(Processing System, PS)与可编程逻辑(Programmable Logic, PL),从而加速整个系统,降低系统的延迟和功耗。

本文其余安排如下:第2节介绍专用于低功耗平台的SkyNet的网络结构以及存在的问题,然后使用Roofline模型[11]分析基于SkyNet网络设计出的iSmart3-SkyNet加速器的性能瓶颈;第3节针对这些问题给出对应的优化策略;第4节将讨论我们为低功耗平台提出的优化策略的实验结果;第5节给出结论。

2 SkyNet网络模型及其加速器问题分析

2.1 专注于低功耗目标检测的SkyNet模型

SkyNet是一个冠军模型,它被设计出来专门用于嵌入式边缘设备的目标检测和追踪任务[9]。可以为低功耗嵌入式系统提供可靠的推理精度的同时满足实时响应这类的低延时要求。SkyNet采用自下而上的DNN设计方法[12],将3×3深度卷积层、1×1点卷积层、批量归一化的组合层和ReLU6组合成捆绑包(bundle)。将捆绑包反复堆叠形成如表1所示的网络结构。表1所示的超参数(包括网络通道数和池化层的位置)是通过使用实际硬件进行神经网络搜索而获得的最佳解决方案。从硬件执行效率角度考虑,SkyNet网络比自上而下设计的卷积神经网络(Convolutional Neural Network, CNN)更有效[13]。

CNN网络的图像输入通道一般为3个光学三原色(Red Green Blue, RGB)或4个三原色加不透明参数(Red Green Blue Alpha, RGBA),因此很难在固定计算通道的PE上提高浅层网络的计算效率[14,15]。例如,表1最后两列反映了iSmart3-SkyNet理论计算量占比跟实际硬件延时占比差异,在第1个捆绑包中,虽然SkyNet的输入层是3,但在理论计算中第1层的PWC的输入层却是32,DWC的输出层却是64而不是48。因为加速器中计算模块输入输出通道固定,iSmart-SkyNet的输入并行度为16,输出并行度为32。在计算第1层时,即便通道当中存在无效数据,它在输入输出通道维度依旧各自循环两次,也因此在表格中第1个、第2个捆绑包的计算量之和为34.48%;而实际加上异构计算平台的计算耗时,仅仅第1个捆绑包的延时就占了整体时间的33.90%,实际延时相比较计算量,增加了69%。在这种情况下,第1个、第2个捆绑包的延时占到整个系统延时的1/2。因此考虑到带宽限制等诸多现实因素,提高浅层网络的计算效率,使得延时与计算量一致是非常困难的。

表1 SkyNet的体系结构和每个捆绑包的推理速度表格

2.2 Roofline模型

计算和通信是系统吞吐量优化中的两个主要限制。加州大学洛杉矶分校丛京生教授团队[11]的Roofline性能模型,反映了系统性能与片外内存流量的关系,更重要的是,突出了硬件平台的峰值性能与神经网络模型之间的相关性。式(1)描述了Roofline模型,PP是系统中所有可用计算资源提供的浮点吞吐量,也称为计算屋顶。B是内存带宽(Memory Bandwidth, BW),而CC代表计算与通信之比(Computing To Communication, CTC)是每个片上存储器流量的操作。加速器的实际计算性能不能超过计算屋顶和计算与通信比率×内存带宽的最小值。在第1种情况下,可达到的性能受到处理器可提供的最大计算资源限制;第2种情况则可达到的性能受到内存带宽的限制,并且无法充分利用计算资源

对于不同类型卷积以及不同循环展开的相同卷积,加速器计算通信比公式都是不一样的。对于深度可分离卷积,计算通信比如式(2)所示

对于逐点卷积的计算通信比如式(4)和式(5)所示,其中出现的参数量的含义与式(2)和式(3)的一致

在iSmart3-SkyNet中,DWC和PWC分别由不同的计算引擎计算。DWC和PWC的Roofline模型的说明如图1所示。对于DWC的Roofline模型的图示如图1(a)所示,第1层可获得的性能非常低,这受到带宽的限制。因此,捆绑包#1的等待时间百分比大于捆绑包#1的浮点操作次数(Floating Point of OPeration, FLOP)。此外,计算上限仅约为6.88 GFLOPS,这受计算资源的限制,因为PWC计算引擎占用了最多的计算资源。图1(b)显示了PWC层的Roofline模型,所有层的可达到的性能都达到了计算上限110 GFLOPS。但是,计算能力不高。此外,DWC和PWC由不同的计算引擎计算。换句话说,当PWC引擎工作时,DWC引擎是自由的,反之亦然。计算资源的利用率不高。在第1层中,输入通道为3,但是iSmart3-SkyNet计算32个通道。冗余计算会增加推理延迟。这些问题在其他用于轻量级目标检测网络的加速器中也存在。为了解决这些问题,提出了几种方法,这些方法在第3节介绍。

图1 iSmart3-SkyNet加速器上的SkyNet Roofline模型分析

3 优化策略

本节首先介绍高效优化策略下的加速器总体架构,该架构可专用于低功耗平台。以专用于低功耗平台的网络SkyNet为例,经问题分析,可堆叠共享PE、通道增强、循环次数可调、预加载工作流优化方法依次被提出。这样,基于低功耗平台有限的硬件资源,可充分发挥并行计算优势,实现更加高效的边缘计算。

3.1 系统整体结构

系统的整体架构如图2所示,架构基于异构结构,包含了可编程逻辑(Progarmmable Logic,PL)和高性能处理系统(Processing System, PS)。PL由4个模块组成:内存判决模块通过高性能总线接口(Advanced eXtensible Interface, AXI)直接访问外部存储器以及调度双倍的数据缓冲区形成乒乓结构,最大化利用片上存储器;多个可堆叠共享计算引擎(Process Engine, PE)堆叠成为计算模块来处理PWC和DWC计算;池化激活模块完成池化与激活计算;控制模块被设计用来控制PL逻辑和时序,保证每个模块在正确的时刻被正确地重用。PS采用了多进程优化,以提高图像预处理和后处理的计算速度。

图2 系统-计算模块-线性缓冲区结构示意图

加速器开始工作时,图像和权重被存储在外部存储器中。PS做图像预处理的同时,向PL发出启动信号。PL中的控制模块接收启动信号后,控制内存判决模块通过AXI4接口从外部存储器中读取权重和图像并存储到相应的缓冲区中,接着控制模块按照网络模型顺序依次重复调用计算模块和池化激活模块,最后内存判决模块将结果输出给PS做后处理完成所有任务。

3.2 可堆叠共享PE

由于有限的硬件资源,并且PWC计算引擎占用了大多数计算资源[16],因此DWC计算引擎的峰值性能非常低。本文提出一种可堆叠的共享PE,以提高DWC计算引擎的峰值性能。几个这样的PE被组装并堆叠到一个大型计算模块中。PWC和DWC操作都共享此计算模块。这意味着在整个任务中只有一个这样的计算模块就可以完成PWC和3×3 的DWC。

如图2(b)所示,共享PE由9个DSP组成,因此可以在1个时钟周期内完成3×3 DWC计算。受双端口块随机存取存储器(dual-port Block Random Access Memory, BRAM)功能的限制,1个时钟周期内最多可以读取两个像素。为了解决这个问题,共享PE利用BRAM和DWC计算引擎之间的行缓冲区。如图2(c)所示,红色特征图的像素被存储在行缓冲区中,而滑动窗口的像素被用于当前计算。在每个时钟周期,窗口中的像素都会移动,新的像素会从行缓冲区中移入,而旧的像素会从窗口中弹出,以便可以展开内核,并且可以映射特征图的9个像素1个时钟周期内即可轻松获得。

对于SkyNet,选择32个共享PE堆叠到计算模块中,并且在计算PWC时,将展开18个输入通道和16个输出通道。16/18输入通道用于传输数据,其他两个通道的值为0。在计算DWC时,所有通道都用于传输数据,并且计算速度将比访问外部存储器更快,并且会触及加速器的存储墙。

3.3 循环次数可调

从表1可以看出,SkyNet的前两层实际耗时比理论上花费更多的时间。浅网络层的通道很少,图像输入通道通常只有3(RGB)或4(RGBA)。具有固定输入和输出通道尺寸的计算引擎将在处理浅层网络时导致某些通道的计算资源空闲,并且其他循环将导致额外的系统延迟。具有不变循环计数的计算模块不能完美地应用于浅层网络。因此,本文提出循环计数可调节的优化方法。

可调节的循环计数方法建立在可堆叠共享PE基础上。通过提供的参数变量[输入通道并行度(Channel Input, CI)],可以自由地堆叠到计算模块中,它根据不同的层自动调节循环计数,以达到最小功耗和最低延迟。例如,iSmart3-SkyNet的输入通道并行度为16。在计算PWC的第1层时,在输入通道尺寸上循环了两次,而第2个循环为无效计算。最终iSmart3-SkyNet第1层中超过90%的计算资源处于空闲状态,这也导致更长的延迟和更多的功耗。如果iSmart3-SkyNet使用可调节的循环计数优化,则可以基于不同的层调节循环计数。在计算第1个PWC层时,输入通道尺寸将仅循环1次,而不是原始的两倍。即使图像输入通道尺寸仅循环1次,仍然有13/16 DSP处于空闲状态,第1个PWC层的这种无用计算可以通过3.4节描述的通道增强优化来解决。

3.4 通道增强

由表1分析,相比较于第2层网络,第1层网络硬件延时远远大于计算量,占整个系统延时的1/3。这是因为在像SkyNet这样的CNN中,第1层图片的输入通道只有3个(RGB)。即使使用了循环次数可调优化,iSmart3-SkyNet的第1层PWC的通道利用率并不高,DSP的利用效率仅为3/16。为了解决这一问题,通道增强优化被提出。方法如图3所示,先将特征图以像素单位裁剪,并以RGB的顺序在通道维度上重新排列。从低位开始一直排列到高位。下一轮从上一轮结束的像素开始,重复以上操作直至最后一个像素点。如此使得处理后的特征图的通道展宽,提高了第1层的计算并行性。

图3 通道增强流程说明图

本文提出的通道增强不同于传统通道增强技术[17]。通道增强优化不仅提高了图片输入层的计算并行性,还大大提高了与外部存储器的传输带宽。例如在iSmart3-SkyNet中,传输图像的AXI4的数据位宽只有8位,在Skrskr-SkyNet中传输图像的AXI4的数据位宽度为32位,但只有24位有效。而在使用了通道增强优化的SkrSkr-SkyNet,用于传输图像的AXI4总线数据宽度为128位并且没有原先的无效数据。因此传输图像的带宽大大提升,访问存储器的次数减少,系统延时和功耗也随之减少。

3.5 预加载工作流

当前可用于计算CNN的工作流程如下:获取图像(picture)、对该图像进行预处理、将处理后的图像复制到DDR存储器进行存储、在加速器上计算DNN模型以及后处理,如图4(a)所示,尽管DNN是在PL上并行计算的,但其工作受到串行工作流程的限制,并且必须等待上一幅图像的后处理完成,才能对DNN进行预处理。将处理后的图像复制到DDR内存中,然后才能开始工作。此串行工作流程效率低下。一般的并行工作流程如图4(b)所示。与串行工作流程相比,在并行工作流程中,PL正在执行DNN计算,而PS也在预处理下一张图片。但是,PL仍处于空闲状态。因此,提出了预加载工作流程。如图4(c)所示,在计算图像的第1层之后,PS将预处理的下一个图像复制到DDR以替换旧图像。由于PL几乎始终处于工作状态,因此预加载工作流程的效率高于图4(b)。

图4 3种工作流比较图

值得一提的是,其中PS上的预处理速度一般都要快于PL上DNN的计算速度。而要想做到这一点,需要对PS做多进程优化。以多个进程对摄像头采集的照片同时预处理,然后将图像放入队列并等待存入DDR中。PL在计算完DNN之后会将结果存入另一个队列,PS也会以多进程优化确保后处理时间快于DNN第1层的计算时间。如此一来,系统的关键路径在PL处,且PL的效率接近100%。

4 实验结果分析

根据第3节提出的优化方法优化iSmart3-SkyNet加速器后,优化后的DWC层的Roofline模型如图5(a)所示。可以看出,与原始Roofline模型相比,第1层DWC的性能不再比其他DWC层的性能更弱,因为通道增强优化增加了带宽。由于共享计算资源,DWC的计算能力从原来的6.88 GFLOPS增加到172.8 GFLOPS。它使所有DWC层从计算限制变为内存限制,使得可达到的性能得到了显著提高。PWC的Roofline模型如图5(b)所示。优化的PWC计算屋顶从原来的110 GFLOPS增加到307.2 GFLOPS。计算屋顶的增加导致该层的一部分从计算限制更改为内存限制,使得每层可获得的性能都比iSmart3-SkyNet高。

图5 优化后加速器上的SkyNet Roofline模型分析

图6 iSmart3和Skrskr加速优化前后性能对比

为了更好地说明本文优化方法在低功耗目标检测方面的性能改进,分别选择了iSmart3-SkyNet和SkrSkr-SkyNet作为基准模型。本文iSmart3-SkyNet和Skrskr-SkyNet中提出的方法的有效性如图6所示,其中它们的性能(包括延迟和能量)被标准化为1。与iSmart3-SkyNet和SkrSkr-SkyNet相比,使用预加载的工作流方法处理1000幅图像,分别可以将运行时间减少约4.44%和1.11%,并将能耗分别减少13.27%和3.45%。当处理的图像数量增加时,预加载工作流程可以减少更多的运行时间和能耗。对于iSmart3和Skrskr,可调节循环次数方法的运行时间分别减少了1.78%和3.10%,能耗分别减少了12.92%和11.29%。考虑到可调节循环计数仅应用于前两个PWC层,因此更改为合适的网络模型将获得更显著的效果。对于iSmart3,可堆叠共享PE减少了10.87%的运行时间和16.07%的能耗。对于Skrskr,可堆叠共享PE减少了5.49%的运行时间和13.55%的能量。由于内存的限制,运行时间的减少并不重要。但是,由于减少了计算资源的消耗,因此能源的节省非常重要。通道增强方法具有最大的改进,可以减少Skrskr和iSmart3的运行时间10.85%和17.98%。它们的功耗降低了约1/4。通道增强不仅可以提高硬件资源的利用率,而且可以大大提高加载图像的带宽。将所有优化方法应用于SkrSkr,运行时间缩短了30.29%,能耗降低了35.49%。iSmart3的改进更加明显,运行时间缩短了35.98%,能耗降低了52.06%。

与之前的DAC-SDC目标检测加速器相比,结果如表2所示。与iSmart3- SkyNet相比,Skrskr-SkyNet使用了更有效的量化,这也使得Skrskr的GOPS/W值为iSmart3的2.24倍,准确率也因为DWC使用了线性缓冲区从0.716增加到0.731。根据第3节所述的优化策略,可以在不改变量化方法的情况下对每个加速器进行进一步优化。基于iSmart3改进的SEUer A型不仅由于行缓冲区使精度提升到0.724,GOPS/W和Energy/Picture还分别优化了1.85倍和2.14倍。基于Skrskr改进的SEUer B型帧率从52.429提高到78.576,功耗降低了近1/2。此外,SEUer B型的GOPS/W和Energy/Picture分别比Skrskr增加了1.5倍和1.9倍。

表2 优化策略效果对比

5 结束语

本文利用Roofline模型对深度可分离卷积进行分析,然后面向低功耗目标检测提出了DNN加速芯片的优化策略,包括可堆叠共享PE、可调节循环次数、通道增强和预加载工作流等优化措施,通过选择iSmart3-SkyNet和Skrskr-SkyNet作为基础网络,FPGA验证效果显著。对于iSmart3-SkyNet,本文提出的方法可以增加精度并提高能效;对于Skrskr-SkyNet,本文基于提出的优化策略所设计的加速器以78.576 fps的速度和0.068 J/图像的速度进行计算,性能超过2020年DAC低功耗目标检测国际顶尖竞赛第1名UltraNet,目前在此类目标检测加速器设计领域处于较为领先地位。

猜你喜欢
计算资源加速器低功耗
莫比斯加速器众创办公空间
知识快餐店 科学加速器
全民小康路上的“加速器”
一种高速低功耗比较器设计
基于模糊规划理论的云计算资源调度研究
改进快速稀疏算法的云计算资源负载均衡
基于Wi-Fi与Web的云计算资源调度算法研究
耦合分布式系统多任务动态调度算法
ADI推出三款超低功耗多通道ADC
IDT针对下一代无线通信推出低功耗IQ调制器