高技术通讯2021年第31卷第5期:479488
doi:10.3772/j.issn.1002-0470.2021.05.003
基于NVDLA与FPGA结合的神经网络加速器平台设计①
管兆康②*张志伟③”
(*华中科技大学人工智能与自动化学院武汉430074)
("中国科学院自动化研究所北京100190)
摘要随着深度神经网络对算力的需求不断增加,传统通用处理器在完成推理运算过程中出现了性能低、功耗高的缺点,因此通过专用硬件对深度神经网络进行加速逐步成为了深度神经网络的重要发展趋势。现场可编程门阵列(FPGA)具有重构性强、开发周期短以及性能优越等优点,适合用作深度神经网络的硬件加速平台。英伟达深度学习加速器(NVDLA)是英伟达开源的神经网络硬件加速器,其凭借自身出的性能被学术界和工业界高度认可。本文主要研究NVDLA在FPGA平台上的优化映射问题,通过多种优化方案高效利用FPGA内部的硬件资源,同时提高其运行性能。基于搭建的NVDLA加速器平台,本文实现了对RESNET-50神经网络的硬件加速,完成了在ImageNet数据集上的图像分类任务。研究结果表明,优化后的NVDLA能显著提高硬件资源使用效率,处理性能最高可达30.8fps,
实现了较边缘中央处理器(CPU)加速器平台28倍的性能提升。
关键词英伟达深度学习加速器(NVDLA);现场可编程门阵列(FPGA);硬件加速;模块优化
0引言
随着人工智能的飞速发展,神经网络作为一种重要的深度学习框架愈发引起人们的重视。相比于传统算法,神经网络凭借其在图像识别等领域的优越表现,已经在无人驾驶⑴、人脸识别⑵以及目标跟踪⑶等众多领域得到广泛应用。然而,神经网络在实际的应用过程中依然存在计算量大、存储复杂等问题,因此为神经网络的应用选择合适的计算平台对于推动神经网络的发展至关重要。神经网络推理的大部分计算工作都基于数学运算,其主要包含卷积运算、激活函数运算、池化运算和规范化运算4部分。以上操作的内存访问模式是有规律、可预测且易于并行进行的,适合通过特殊用途的硬件来实现。近年来,各种神经网络硬件加速器平台应运而生。在ASIC设计方面,谷歌提出了张量处理器(tensor processing unit,TPU)⑷,其通过脉动矩阵的方式实现神经网络加速,主要针对TensorFlow框架进行设计。寒武纪推出了DianNao系列芯片⑸,其中包括基于单核的DianNao⑷和基于多核架构的DaDianNao[7],以及针对多种机器学习算法进行优化的PuDianNao同和针对深度卷积神经网络数据访存问题进行优化的ShiDianNao⑼等。Farabet等人提出了一种可扩展的数据流硬件体系结构神经网络硬件加速器,专门针对通用视觉算法进行了硬件加速。此外Chen等人⑴〕也针对卷积神经网络硬件
加速器的功耗问题进行优化,提出了一种低功耗的加速器Eyeriss o在现场可编程门阵列(field-programmable gate array,FPGA)设计方面,Zhang等人〔⑵釆用roofline model对神经网络推理的计算吞
①中国科学院战略性先导科技专项(XDB32000000)资助项目。
②男,1995年生,硕士生;研究方向:基于FPGA的神经网络硬件加速;E-mail:981625562@qq
(3)通信作者,E-mail:zhiwei.zhang@ia.ac
(收稿日期:2020-04-01)
479
高技术通讯2021年5月第31卷第5期
吐量和所需的内存带宽进行定量分析,选择最佳设计方案,在FPGA上实现了61.62GFLOPS的处理性能。余子健等人基于粗粒并行层对卷积神经网络进行并行化加速,实现了对MNIST手写数字字符的识别。陈鹏等人皿提出了一种基于SDSoc的FP-GA设计方案,该设计方案采用流水线的层间复用方法,
实现了在FPGA上更低功耗的深度神经网络硬件加速。Ding等人〔切同时从深度神经网络算法和硬件设计两方面进行考虑,提出一种异构权重量化方法,即交替方向乘数法(alternating direction method of multipliers,ADMM),并使用块循环矩阵方法对卷积模块进行设计,提升了FPGA上加速器的处理性能。
神经网络硬件加速器平台中,基于FPGA的加速器平台由于高能效、高并行性、灵活性以及安全性等优势被广泛应用于深度学习加速器。英伟达深度学习加速器(NVIDIA deep learning accelerator,NVD-LA)是英伟达开源的神经网络硬件加速器项目。该项目以IP核的形式提供RTL级的综合模型和仿真模型,并鼓励开发者们在此基础上进行进一步地开发和设计。但是NVDLA本身是从ASIC的角度出发进行设计的,并没有针对FPGA平台进行性能、设计尺寸和功耗等方面的优化。二十不惑结局
本文首先针对NVDLA在FPGA上综合实现过程中存在的问题进行分析,提出相应的优化方案,使其能充分利用FPGA内部的各种硬件资源,实现较高性能的神经网络推理。其次,基于优化的NVDLA 模块搭建FPGA的神经网络硬件加速器平台并设计相应的神经网络编译器和运行时程序。最后,利用设计的加速器平台实现RESTNET-50深度卷积神经网络的硬件加速并通过实验验证加速器的性能。
1NVDLA的介绍
NVDLA提供了一种简单、灵活、强大的推理加速解决方案,其采用模块化结构,具有良好的可扩展性
、高度可配置性以及可移植性,能够根据具体的应用场景进行设计和集成,支持多种规模的物联网设备。11硬件结构
NVDLA的内部硬件架构如图1所示。其主要通过4个接口与外部进行数据交互,4个接口分别为控制信号接口、中断接口以及两个数据传输接口□控制信号接口是一个同步的、低带宽的、低功耗的32位控制总线接口,用于中央处理器(central processing unit,CPU)访问NVDLA配置寄存器,控制NVDLA实现特定的功能。中断接口是一个1bit的输出接口,当NVDLA完成任务或者出现错误时,通过此接口向CPU发送中断信息。数据传输接口是一种同步、高速、高度可配置的数据总线接口。其中,主数据传输接口与外部存储器相连。二级数据传输接口是可选的,与高数据吞吐量、低数据访问延迟的边上存储器相连,以实现更快的数据交互。
配置接口模块
控制借号標口
Y----►
中断接口
图1NVDLA的内部硬件架构图党校培训学习总结
NVDLA内部采用模块化的设计方式,并且每个模块之间是相互独立的。例如,不需要池化功能,亦可直接将池化模块裁剪。或者,想要优化卷积模块的性能,只需对卷积模块进行调整,无需修改加速器的其他模块。这样的设计方式在保持设计的灵活性的同时简化了集成,但需要专用微处理器或者CPU 来完成对每个模块的调度操作。
1.2编译器
编译器是负责将通用深度学习框架描述的网络模型,直接映射至专有硬件的软件。目前NVDLA 的编译器支持caffe网络框架,通过定点化来减少模型参数,并提高计算效率。编译的流程包括解析网
480
管兆康等:基于NVDLA与FPGA结合的神经网络加速器平台设计
络结构、经典计算图构建、NVDLA计算图构建、图优化和操作输出。解析网络结构从模型定义读入网络并配置属性,同时检查网络的结构合法性、配置文件的匹配性。经典计算图构建直接从模型定义构建计算图,以节点的形式描述每个层的操作。NVDLA计算图的构建根据NVDLA硬件结构的特性,进一步调整经典计算图的结构。图优化是进一步优化计算图的结构,对计算图内的节点进行拆分合并,并为每一个节点分配内存。操作输出负责将优化后的节点操作映射至具体的硬件寄存器配置。编译完成后,软件生成自定义格式的可执行文件供运行时程序使用,文件主要组成包括权重和特征分配的内存物理地址、各层的配置参数以及网络的输入输出格式。
2NVDLA的优化
本节对NVDLA在FPGA平台综合实现过程中出现的问题进行分析,同时提出解决相应问题的优化策略和方案。
2.1门控时钟的优化
哲 学在ASIC设计中通常会采用门控时钟的策略来降低功耗。当系统中的某个模块处于不工作状态时,系统通过关闭时钟的方式使其处于非激活的状态,从而达到降低功耗的目的,NVDLA也引入了门控时钟来
降低功耗。在FPGA中,常规的时钟信号从管脚进入芯片后,首先会被送入全局时钟缓冲器(global clock buffer,BUFG),再经专用的全局时钟网络扇到各级寄存器中,故采用全局时钟网络能有效地减少寄存器之间的时钟偏斜。但由于FPGA无法主动对门控时钟插入BUFG,导致门控时钟模块的输出时钟只能占用传统布线资源,无法使用全局时钟网络进行布线。时钟信号采用传统布线资源一方面会抢占其他关键路径的布线资源,另一方面会导致到各寄存器之间的时延差距增大,进而导致严重的时序违例。表1列出了门控时钟优化前后时序分析工具对模块保持时间的分析结果。由表1可知,采取门控时钟策略的电路中37.5%的时钟路径都无法实现时序收敛,此类布线生成的电路将无法正常工作。而不采取门控时钟策略的电路则没有出现保持时间的违例。
表1门控时钟优化前后时序分析工具对模块保持时间的分析结果
门控时钟优化前/ns门控时钟优化后/ns 最差保持时间松弛-5.3930.010
总共违例保持时间松弛-361338.3740.000
时序违例的时钟路径个数3713380总共的时钟路径个数990093990093
根据保持时间松弛的计算公式对优化前保持时间违例最严重的时钟路径进行分析°
CPS=SCD+CPR-DCD(5) HS=CPS+DPD(6)其中CPS为时钟路径偏斜,SCD为源时钟延时, CPR为时
钟悲观度余量,DCD为目的时钟延时,HS 为保持时间松弛,DPD为数据路径延时。表2列出了该时钟路径在门控时钟优化前后,时序分析工具给出的各项参数。由表2可得,优化前后DPD和CPR只有2ps以内的差距,故DCD过大是保持时间违例的主要原因。因此剔除NVDLA的门控时钟模块,使时钟信号进入全局时钟网络,方能减小各寄存器之间的时钟偏斜,确保NVDLA在FPGA上的正常工作。
表2门控时钟优化前后关键时钟路径的各项时序参数
门控时钟优化前/ns门控时钟优化后/ns SCD8.533 6.841
CPR-0.145-0.143
DCD13.946 6.848
DPD0.1650.166
481
中伏是几月几号2020高技术通讯2021年5月第31卷第5期
2.2模块的裁剪
模块的裁剪能够减少NVDLA对FPGA硬件资源的占用,有利于其在FPGA上的实现。
2.2.1片上缓存的裁剪
NVDLA本身是基于ASIC进行设计,其工作频率能够达到1GH z以上,端口拥有很高的数据传输带宽。而外部存储器受限于功耗和性能,数据传输的带宽通常无法满足NVDLA的数据传输带宽。故NVDLA引入了高带宽的片上存储器以缓解数据传输带宽不足的问题。有别于ASIC芯片,FPGA被设计成了岛状逻辑块矩阵电路以满足可重构的特性,每个逻辑块内部有实现任意电路的硬件资源。模块化的电路结构导致FPGA在实现同样的电路功能时,需要占用更多的逻辑资源、采用更复杂的布线结构。以上两点导致FPGA内部的网络延时较大,亦限制了FPGA的工作频率。有相关研究表明,在FP-GA上实现一个只有组合和时序逻辑的电路,平均需要相当于ASIC电路40倍的面积和3~4倍的关键路径延时购。在FPGA中,NVDLA由于受限于工作频率,其端口的数据传输带宽一般情况下小于外部存储器的带宽。以本设计为例,NVDLA的数据位宽为256bit,最高工作频率为188MHz,可得NVDLA数据端口的最大理论带宽为256x188/8= 6.016GB/s。其外部存储器为双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,DDR SDRAM),数据位宽为64bit,工作频率为1200MHz,理论带宽为2x1200 x64/8=19.2GB/s,故外部存储器已经满足NVD-LA的带宽需求,无需添加额外片上缓存。此外, NVDLA需要引入32MB以上的片上存储器才能保证其正常工作。然而FPGA内部的片上存储资源有限,且均布局在FPGA内部的固定位置,若使用过多的片上存储资源则会增大
时序收敛的难度。因此在 FPGA设计中可以裁剪用于实现片上存储器和片外存储器之间数据传输的BDMA模块和片上存储器模块。
2.2.2CDP模块的裁剪
CDP模块主要实现了局部响应标准化层(local response normalization,LRN)的功能,LRN层多岀现于早期的神经网络结构中(例如alexnet[17]和GOOGLENET[I8]),其主要是实现数据局部归一化的功能,但日后的研究证明LRN层对神经网络的训练结果的提升并不明显少1,故目前普遍应用的神经网络结构均不采用这一层(例如RESNET】20〕和VGG[19])。因此,在FPGA设计中该模块亦可进行裁剪。
2.3乘加器阵列的优化
乘加器阵列模块是NVDLA的核心,主要实现了卷积过程中部分和计算的功能。NVDLA在FP-GA上主要利用查表(look up table,LUT)资源实现乘加器阵列模块的功能。一方面,该方法占用了FPGA内部大量的查表资源,加大了布局的难度,甚至会导致布局无法完成;另一方面,利用查表实现的乘法器和加法器在布线过程中存在网络延时(net delay)较长的问题,增加了时序收敛的难度,限制了NVDLA工作频率,影响了整体运行性能。
DSP48模块是XILINX公司FPGA内部的数字信号处理器(digital signal processor, DSP)资源,由加法器
、乘法器和算数逻辑单元3部分组成,可以实现乘法、乘法累加、幅度比较器等复杂的算术操作。相比用FPGA内部的LUT资源实现同样的功能, DSP48模块占用的面积更小,工作频率更快,性能更高。但NVDLA要调用FPGA内部的DSP资源实现
482
管兆康等:基于NVDLA与FPGA结合的神经网络加速器平台设计
过乘法器获得运算结果,再和掩码(MASK)信号进行与运算,最后电路将与运算结果求和输出。此电路结构无法利用DSP高效实现,其原因在于单个DSP模块内部只有一个算数逻辑单元,无法同时完成对乘法结果的按位与和累加操作,故需要更多逻辑资源对4个与运算结果进行求和。为解决上述问题,本设计对乘加器阵列的电路进行调整,将权重和MASK信号进行与运算后作为输入送入DSP模块和数据进行乘法运算,并利用DSP模块的乘法累加运算,逐级累加获得最终输出结果,优化后电路如图3所示。中间插入多级流水的目的是减少多个DSP 模块串联带来的逻辑延时(logic delay),有利于时序的收敛。通过这种方式,只需4个DSP模块就可实现乘累加的功能。
2.3.2DSP模块的复用
NVDLA支持8位定点数的乘法运算,远少于DSP模块支持的乘法运算位数,为此可以考虑一个DSP模块并行执行两个8位乘法运算,从而提高复用,减少FPGA资源使用。为了实现在一个DSP模块并行完成1组输入特征与2组权重的乘法操作,针对DSP的设计需要满足以下两点要求。什么牌子的口罩好
(1)高位的乘积结果不受低位乘积结果的影响。
(2)低位乘累加结果对高位乘累加结果的影响是可恢复的。
NVDLA内部支持的数据类型为8位定点数,1对输入特征和权重的乘积结果的位宽为8+8=16位。为满足第1点要求,高位乘积结果的最低有效位不得进入16位,即高位的输入权重至少从17位开始。故DSP模块的被乘数位宽至少为16+8=24位,输出数据位宽至少为16+16=32位。本设计中DSP模块内部的乘法器被乘数位宽最大为27位,乘数位宽最大为18位,输出位宽最大为48位,具体实现DSP复用的乘累加功能的方式如图4所示。
外部电路将权重1左移18位送入输入端口A,权重2和特征以二进制补码形式分别送入输入端口B和D。以防低位累加结果溢出,进而导致低位累加结果对高位累加结果产生不可恢复的影响,故此处权重1被左移18位。权重1和权重2在预加法器求和后与特征一起送入乘法器完成运算,获得乘积结果。最后乘积结果和送入C端口的累加输入进行累加,获得输出,送往下一级DSP模块。
进一步分析低位乘累加结果对高位结果产生影响的原因。首先根据图4可以推出DSP模块的输出为
O=(W1«18+W2)xF+(Il«18+/2)(1)
=(W1xF+11)«18+(W2xF+12)(2)其中0为DSP的输出,W1和旳为权重1和权重
483
科技手工简单小制作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论