作者:张海军,来源:傅里叶的猫微信公众号
今天来看一篇新鲜出炉的论文:
这篇论文主要介绍了在边缘设备上部署卷积神经网络(CNN)的一种方法,使用现场可编程门阵列(FPGA)和Gemmini加速器。作者们的目标是简化在非标准边缘设备上部署CNN的复杂性和劳动密集型任务,特别是针对实时应用的需求。
我们前面就写过几个用FPGA做AI加速的文章,这也是现在学术界的一个主流方向,当然也是FPGA的热门方向,我一直有个观点,FPGA作为一个实时性非常强的平台,什么方向火就去加速什么,早些年的信号处理,十年前的挖矿,现在的AI,可以认为是蹭热点,但FPGA作为一个计算平台也确实应该在各种场景发挥它的优势。
下面我们看论文的具体内容。
尽管现在已经存在许多预先训练好的CNN模型,能够覆盖常见的任务如物体检测和跟踪,但将这些模型部署到非标准的边缘设备上仍然是一个复杂且耗时的任务。为了简化这一过程,论文介绍了一种基于FPGA的端到端工作流程,利用Gemmini加速器来部署CNN。Gemmini加速器被特别修改以在FPGA上实现高效的部署。工作流程包括了从硬件感知的模型修改、量化、层调度优化、模型分割等多个方面。
最终,研究团队成功地在Xilinx ZCU102 FPGA开发板上的Gemmini加速器上部署了YOLOv7模型,并达到了实时性能水平。
Gemmini加速器概述
Gemmini是一个高度可定制的基于阵列的加速器,它非常适合用于加速卷积神经网络(CNN)的计算任务。该加速器由三个解耦的模块组成:
负载控制器:负责将外部内存中的数据块移动到加速器内部的缓冲区。 执行控制器:负责将已存在于缓冲区的数据分配给阵列进行计算。 存储控制器:负责将加速器内部缓冲区的数据移动回外部内存系统。
Gemmini相较于其他开源FPGA加速器具有更低的抖动和延迟。
作者列出了他们对Gemmini加速器所做的配置调整:
平行元素(PE)的数量从原来的16×16增加到了32×32。 数据流向支持双向流动,且权重保持不动。 增加了缓冲区容量,包括内部缓冲区和累加器容量分别从256KiB和64KiB增加到了512KiB和128KiB。 提升了缓冲区端口数量、读取延迟和同时进行的内存请求的最大数量。
作者还介绍了如何使用AutoTVM对Gemmini加速器上的卷积操作进行自动调优,以找到最佳的调度策略。通过这种方式,他们能够在不同的模型版本上实现显著的性能提升。
论文提到,模型可以通过量化过程分割成两个部分:主要部分使用int8表示,适合在Gemmini加速器上执行;另一部分涉及边界框后处理(如非最大抑制算法),通常使用浮点表示,更适合在FPGA的处理系统(PS)部分执行。
CNN到FPGA的部署
CNN模型选择
选用了最先进的YOLOv7模型,这是一种预先训练好的用于对象检测的CNN模型,并且选择了YOLOv7的较小版本YOLOv7-tiny(拥有6.2百万个参数)作为部署的目标模型。
硬件优化
Gemmini加速器被优化以适应FPGA的特性,通过DSP打包技术实现了DSP(数字信号处理器)的高效利用。DSPs可以高效地执行乘积累加运算,这是Gemmini加速器核心处理单元(PE)中使用的相同数学运算。通过修改加速器,使得每个PE映射到一个DSP上,并实施了DSP打包技术,使得两个8位权重的乘法可以在同一个DSP上完成,从而减少了DSP的使用。另外,一些不需要的模块被禁用以进一步优化设计,比如归一化功能、转置模块、虚拟地址翻译表和内核膨胀能力。
软件流程
描述了一个端到端的软件流程,该流程从预先训练好的CNN模型开始,一直延伸到在选定硬件上的完全调优系统。流程包括了硬件感知的模型修改、量化、层调度优化、模型分割等步骤。对于输出缩放模块,通过将缩放因子从float32改为float16,减少了输出的比特宽度,而没有明显影响模型的性能。最终的硬件架构图显示了如何实现DSP打包技术以修改阵列结构。
流程步骤
通过DSP打包技术和禁用不必要的模块来优化Gemmini加速器,选择了YOLOv7-tiny作为目标模型,进行硬件感知的模型修改、量化等步骤,根据需要在FPGA的不同部分之间分割模型,通过上述步骤完成模型的部署。
实验评估
模型分割
在模型量化之后,整个模型被分为两大部分:主要部分采用int8表示,适合在Gemmini加速器上执行;第二部分涉及边界框后处理,使用浮点数表示,这部分更适合在FPGA的PS部分执行。通过TVM框架分析CNN的操作图并根据数据类型将模型分割成两部分。
能效评估
对比了不同硬件平台的能效,其中包括不同版本的YOLOv7-tiny模型。实验结果表明,基于FPGA的解决方案在能量效率方面显著优于所有其他硬件平台,包括服务器级GPU和嵌入式GPU。相比于NVIDIA Jetson AGX Xavier,能效提高了85%,相比于服务器级GPU,能效提高了93%。研究团队提出的基于Gemmini的解决方案达到了36.5 GOP/s/W的能量效率。