论文部分内容阅读
卷积神经网络源自于传统的人工神经网络,其作为机器学习中的一类重要算法已经被广泛部署于人工智能、计算机视觉等应用场景中。由于现实世界中应用的复杂度与日俱增,网络模型的规模和深度也在不断增加,导致通用计算平台在处理相关任务时面临严峻性能、能效挑战。在这种背景下,基于ASIC、FPGA的硬件加速方法已经在卷积神经网络的部署中被普遍采用,并成为提高计算效率的重要手段。然而,目前主流加速器的单核片上结构和计算模式与卷积神经网络的内在计算特性存在失配性问题。尤其是在FPGA一类的可重构器件上,硬件的可重构特性将这种失配性进一步凸显,严重影响了计算效率的进一步提升。本文面向卷积神经网络的高效硬件部署,将可重构计算技术与异构多核体系结构深度结合,在静态重构和动态重构两个层面上系统性地提出了基于异构多核片上结构的加速器设计和优化方法,有效缓解了硬件加速中的软硬件特征失配问题。具体工作内容和创新点如下:·我们在静态重构层面上针对特定网络模型在特定FPGA平台上的部署提出了在片上固化全网络层的异构多核加速器结构。在该结构中,不同网络层的计算被各自映射至独享的计算核心,在局部上各片上计算核心可根据所对应网络层的并行特征进行单独部署和优化;在宏观上,不同计算核心以层间流水的方式充分挖掘了层间计算并行度;在此基础上,我们使用Roofline多核性能分析模型在宏观和局部上进行片上计算与片外访存间的相互协调。该加速器结构在高性能FPGA平台上对AlexNet和VGG16D的部署相较以往在相同FPGA平台上的单核加速器部署性能提升了2.44倍,能效提升了2.35倍。·在片上固化全网络层结构的基础上,我们在静态重构层面上提出了面向层级特征的异构多核片上结构。通过对目前常见卷积神经网络硬件加速过程的分析,我们发现了两点规律:第一,不同卷积层对不同类型数据的访存行为存在差异,从而在异构多核结构中进行分别部署可以最大程度降低访存开销;第二,尽管不同网络层在整体结构上存在差异,但在经过循环展开和分片操作后其中某些层会呈现出相似的层级特征,从而在这一类网络层间进行硬件单元复用可以达到较高的硬件资源利用效率。分别基于以上两点,我们面向网络的层级特征提出了粗粒度和细粒度的网络层聚类方法,并在此基础上将软、硬件间的特征匹配粒度增大,提出了面向层级特征的异构多核加速器部署方法。该方法在高性能FPGA平台上对AlexNet、VGG16C、VGG16D、VGG19的部署相较以往在相同FPGA平台上的单核加速器部署性能平均提升了1.64倍,能效提升了1.84倍。·在动态重构层面上,我们基于FPGA的动态部分重构技术提出了软、硬件特征动态适配的异构多核加速方法。我们首次将FPGA的动态部分重构技术引入到卷积神经网络的硬件加速器设计中,为底层硬件结构提供在运行时根据上层应用特征进行动态调整的机制。在此基础上,我们对硬件加速过程进行了面向马尔科夫决策过程的系统建模,并通过深度强化学习的方法为特定网络模型的硬件加速器部署确定最优的运行时重构策略,从而更加全面、充分地挖掘可重构硬件特性来提高计算适配性。该方法在嵌入式FPGA平台上对AlexNet和VGG16D的部署相较以往在同类型FPGA平台上的单核加速器结构性能密度平均提升了1.48倍。