本站小编为你精心准备了可重构电路图编译器设计分析参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
【摘要】本文基于AI领域面向终端应用中使用非常广泛的CNN推理算法,以FPGA可重构电路芯片为硬件载体,设计一款可重构电路的图编译器,用来实现特定CNN网络定制加速的功能,最大化的提高硬件电路利用效率。
目前硬件加速器中,分为如下几大派别:(1)采用NVIDIA公司的云产品,但是功耗太高,延迟很大,在端侧无法应用。(2)采用AI芯片,苦于算法还在不断更新中,流片成本和风险高。(3)采用可重构电路结构,那就是FPGA芯片作为加速电路,FPGA加速电路本身具有一定的重构能力,但是面对众多类型的神经网络,最常用的属于CNN卷积神经网络,因此我们把目光投向了CNN神经网络的推理加速任务上。考虑到CNN推理加速网络,模型也繁多,如果做到既能考虑FPGA芯片的灵活性,又能准确适配各种神经网络,面对这种需求和难点,本文提出了一种电路可重构的图编译器架构,对CNN神经网络进行适配和优化,然后生成一组配置CNN加速器的参数接口,方便调度CNN加速器进行离线推理加速。
1CNN推理算法原理
CNN推理算法大部分是大量的密集乘加计算,该算法包括计算量最密集的卷积层、Relu激活层,池化层以及全连接层等信息。这里定义不同类别的层,命名为算子。面对大量的算子,每层算子中参数不一致等情况,国内外顶尖公司提出了TensorFlow、Caffe,Torch等深度学习平台,将深度学习网络层进行抽象和封装,方便研发人员使用平台,将权重信息,配置文件以及输入图像FeatureMaps信息导入到平台后,即可进行大面积计算,这种方式适合GPU、CPU等平台芯片产品,对于FPGA芯片来说,直接移植平台架构会导致FPGA芯片利用率偏低,因此本文提出了电路可重构图编译器CRGC,目的在于将CNN网络层数进行抽象化、网络优化、数据量化、寄存器指令流生成等方式,最后得到能方便做FPGA加速的参数堆。一种可重构电路图编译器设计文/邱超1冯肖雄2本文基于AI领域面向终端应用中使用非常广泛的CNN推理算法,以FPGA可重构电路芯片为硬件载体,设计一款可重构电路的图编译器,用来实现特定CNN网络定制加速的功能,最大化的提高硬件电路利用效率。摘要除了配置FPGA对CNN网络加速的参数外,还要配置FPGA电路可重构的参数信息,这样能够最大性能挖掘FPGA天然的电路可重构特性,接下来会重点介绍。
2电路可重构图编译器实现结构
2.1工作流程
电路可重构图编译器的重点在于,不仅需要配置CNN每层网络信息,内存分配信息,定点化信息等参数数据。更为关键的是还提供了针对CNN加速器硬件ZCNNA的电路重构指令。接下来参考图1的流程,重点介绍图编译器的工作流程。当外部权重数据、FeatureMap数据输入到图编译器时,首先需要经过参数解析模块,将参数、权重信息进行抓取,解析来进行网络层优化工作,具体优化方法后文会介绍。网络优化结束后,进行网络参数的定点化,主要包括权重和FeatureMap两类信息。接下来是寄存器配置流生成模块,这部分包括网络参数信息和可重构电路信息参数,可重构电路信息参数有,卷积核的KernelSize层信息,是否有Pooling层信息,是否有FC全连接层信息等模块,FPGA会根据生成的配置信息,针对特定的网络,生成不同的电路结构,进而最大化提升电路工作效率,并且达到降低功耗的目的。
2.2网络优化
CNN加速器平台中,优化的任务分成前端软件优化和后端电路优化两种,本节介绍软件优化的方法。一般Conv卷积层后面的Relu层、Norm层等信息,可以通过合并的方法,直接合成Conv层,通过这种方式再网络送给硬件加速器FPGA之前,达到了预处理加速的效果,从源头上节省了计算量和带宽开销。
3结论
本文提出了基于电路可重构方式的图编译器框架,与GPU、ASIC、CPU等实现CNN的硬件加速相比,充分发挥了FPGA电路可重构的技术优势,针对特定网络生成定制化电路结构,峰值算力得到了很大提升,功耗也得到了有效降低,是一种非常高效的技术手段。
作者:邱超 冯肖雄 单位:中兴通讯股份有限公司技术规划部