工程论文哪里有?本文针对片外存储器的工作特点和深度可分离卷积计算特点,规划不同卷积层连接的特征写回地址映射,实现了不连续的输出特征在作为输入读取时以连续地址被读取,使片外存储器工作在较高的运行效率下。
第1章 绪论
1.2国内外研究历史与现状
自神经网络研究成为热门以来,已经有大量的研究为神经网络发展提供了各种新的思路和方案,接下去将从卷积神经网络模型的发展和硬件加速框架的发展进行描述。
1.2.1网络模型研究现状与发展趋势
早在上世纪末,Y. Lecun[8]等提出LeN et-5网络模型并应用在手写字体识别上,诞生了最早的图像分类网络。作为卷积神经网络的早期原型,LeN et-5结构简单,分类能力有限,2012年Alex K.等提出了AlexNet[9]。AlexNet具有5层卷积网络,约65万个神经元以及6000万个可训练参数,在网络规模上大大超越了LeNet-5。在ImageNet数据集[10]上实现了67.4%的分类准确率,奠定了卷积神经网络在图像处理上的核心地位。在AlexNet的基础上,K. Simonyan对网络的深度进行了加深,提出了VGGNet[11],证明提高网络深度对图像分类准确率的正面影响,使深层网络开始被广泛研究。K. He[12]等提出了一种残差网络ResNet,通过逆残差将低层的特征图直接映射到高层的网络中,缓解了网络训练过程中梯度消失和爆炸的问题。
随着网络深度越来越深,CNN往往伴随着大量参数和计算,且几乎都存在于卷积层中,相比于稀疏化处理,通过优化卷积方式来减少参数量是最直接的方法。近年来多种轻量级卷积方法被提出,包括交错卷积[13],深度可分离卷积[14]和特征交叉卷积[15]。与常规卷积相比,交错卷积和深度可分离卷积建立的网络较轻,参数较少,特征交叉卷积虽然计算量有所减少,但参数量反而增多。
第3章 加速器框架分析与设计
3.1加速器关键技术分析
以往的研究工作仅将关注点聚焦于FPGA所具备的可重构技术[19]、流水线技术[32]、并行计算技术[44],上述是FPGA进行算法加速的必要技术,在加速卷积神经网络时,更需要关注卷积必要组件,下文将从计算引擎、数据流和控制体系三个关键技术进行加速分析。
3.1.1计算引擎分析
卷积是一个计算密集型算法,因此计算引擎是加速器的核心部分,引擎的结构极大程度上决定了系统的数据通路和数据流规划。
从计算形式出发,引擎可分为网络全流水结构和部分流水结构。图3.1以4层网络为例展示了全流水引擎的运行示意图,全流水结构在于网络中每一层都部署一个专用引擎,其优势在于图像分类任务的延迟较小,约等于计算量最大的层所需的计算时间。
第5章 验证与测试结果
5.1 基础模块功能仿真
基于加速器框架硬件实现章节所设计的计算和数据通路控制硬件结构,本节将对所设计的各个模块进行功能仿真。基础模块功能仿真验证在Centos7系统下使用VCS、DVE、Verdi联合仿真环境运行。本节仅摘取各基础模块功能实现相关的信号进行说明。
5.1.1计算引擎功能仿真
由于计算引擎的可配置特性与并行复用性,由于在不同配置下的计算引擎均实现乘累加功能,因此此处仅对m = 16配置下的计算引擎的仿真结果进行描述。
计算引擎功能仿真结果截取如图5.1所示,考虑到乘法器和加法树均有输出延迟,因此仅摘取计算结果部分波形进行展示。另外,考虑到卷积浮点计算的真实性,所有计算均使用MobileNetV2中的参数和特征数据进行仿真。如图所示,截取了加速器其中一个计算引擎的仿真结果,可以通过计算验证乘法和加法树的计算结果正确,截取的波形为MobileNetV2第9层PWC层,该层IF = 96即累加器需要累加6个连续周期乘加结果,图中乘加结果和累加器输出结果验证了累加功能的正确性。
5.1.2读写指令生成功能仿真
读指令生成功能仿真结果截取如图5.2所示。截取波形为MobileNetV2第9层(layer_number_cur = 8)仿真结果,该层为带残差操作的PWC层,读指令生成功能涵盖权重、偏置、残差与特征。如图所示,生成器先生成权重和偏置读指令,其所在地址较低,随后交替生成残差和特征读指令,残差指令每次仅读一个地址,而特征指令为突发连续读多地址数据。
5.2 整体功能验证
上一节中,提出加速器框架的主要模块功能仿真验证工作已经完成,但是仅模块功能仿真验证并不能确保集成后系统的功能,因此还需要对加速器整体功能即图像分类进行验证。
5.2.1验证方法分析
卷积神经网络可视为从RGB图像到一条与分类标签相对应的概率向量的端到端系统,而中间需要经过多层卷积计算,将产生巨大量的中间特征数据与控制信号变化。在运行特点上,CNN加速器不同于传统处理器的指令执行。对于传统处理器,验证可以通过产生随机指令激励RTL代码执行并与标准结果对比验证,通常使用通用验证方法学(Universal Verification Methodology, UVM)搭建验证环境。而传统卷积神经网络模型性能验证方法为在测试数据集上执行图像分类任务统计准确率。对于CNN加速器而言,图像输入至分类结果输出相隔几个甚至几十个毫秒,而卷积带有的大量浮点计算造成仿真时间缓慢,这意味加速器执行一张图片分类在验证环境中需要大量时间。本文使用搭载Intel i9900K处理器的主机进行了测试,结果显示,在VCS、Verdi联合仿真环境下,运行MobileNetV2网络执行一张图像分类的仿真时间超过6小时。显然传统CNN验证方法不适用于加速器验证,一个测试数据集通常有几万甚至几十万张测试图片,即使对数据集中的小部分图片进行测试,时间代价也是巨大的。因此本文结合CNN的计算特点并借鉴UVM的执行流程提出了加速器整体功能简化验证方案。
第6章 总结与展望
6.1本课题研究内容总结
随着机器视觉领域和以卷积神经网络为代表的深度学习领域的快速发展,图像分类网络在自动驾驶、工业控制、机器人控制、城市安防等领域起着越来越重要的作用,计算性能和功耗需求越来越强烈。除了在云端服务器部署卷积神经网络,在嵌入式端和移动端以低功耗实现卷积神经网络不仅能免去远程数据传输,还能降低功耗和延迟,成为卷积神经网络应用的热点,重多硬件加速器研究工作不断开展。FPGA作为可重构、低功耗器件被广泛应用于算法加速,也收到卷积神经网络加速研究人员的青睐。本文通过对基于FPGA的卷积神经网络加速技术的发展脉络分析,总结不同优化手段的优劣,以轻量化、高性能和低功耗为目标,分析了加速器关键技术与方案,面向深度可分离网络设计了完整加速器框架,本文具体工作如下:
(1)从计算引擎、数据流、控制体系、模型量化四个加速器关键计数出发分析了不同框架和结构对FPGA硬件资源的需求,从轻量化目标出发确定或设计了本文所设计加速器关键计数方案。针对深度可分离网络卷积形式多样,运算丰富的特点确定全复用单引擎方案,分析片内外存储需求确定了缓存复用且输出特征不缓存的方案,基于常用指令控制和FSM控制优劣设计了状态自生成的FSM控制体系,从兼容性出发选择以浮点数字格式设计基本框架,并能够实现向下兼容。
(2)将深度可分离网络逐通道、逐点卷积和其他常见运算抽象为多输入卷积运算,设计了多尺寸卷积计算引擎,并面向MobileNets网络设计了所有运算与所提出计算引擎的映射关系。对计算引擎进行了可重构设计,面向不同网络版本和硬件平台可灵活缩放,并基于计算引擎利用率定量分析了不同网络下加速器的最佳配置参数。
(3)本文提出一种用于深度可分离卷积网络数据流设计的多向融合卷积计算顺序设计方法,通过循环展开和循环排序的方法优化卷积计算的数据复用。定量分析了逐点和逐通道卷积下各种卷积计算顺序的存储需求和计算引擎利用率,并为两种卷积选择了最佳的计算顺序。此外,多向统合卷积计算顺序的最大贡献是仅使用小规模存储块缓存参数的前提下,实现了部分层融合,减缓了外部存储器带宽瓶颈,降低了计算延迟。
参考文献(略)