软件研发与应用SOFTWARE DEVELOPMENT&APPLICATION
红胸田鸡基于DPU加速的CNN推理系统设计与实现
徐畅,刘一镔
(三峡大学计算与信息学院,湖北宜昌443000)
摘要:针对卷积神经网络推理阶段的高性能需求与边缘设备的性能限制导致的推理实时性问题,利用软硬件协同设计的思想,采用DPU实现了CNN的推理加速,提高计算性能的同时降低了推理时间。首先搭建了基于DPU加速器的硬件与软件平台,其次为了降低CNN模型的存储体积和计算量,对模型的数据进行量化与预编译处理,最后使用DPU对ResNet50进行了加速测试。在单次推理测试中,DPU 的运算性能为76.43GOPS,平均负载为73%,耗时100.88ms,与CPU相比推理速度提升了40.48倍。在多次推理过程中,两次推理之间间隔最长为746.343ms,最短为418.776ms,DPU的平均调度效率为21.88%。经过数据定点处理的模型Top1加Top2的精度为92.61%,与未处理的模型相比,精度丢失仅为 1.9%。
关键词:DPU系统;卷积神经网络;硬件加速器;软硬件协同设计
近年来,卷积神经网络(Convolutional Nerual Network,CNN)由于具有优秀的算法性能,已被广泛应用在目标检测、语言识别、人脸识别、自动驾驶等领域,但是卷积运算的算力需求高,且目前的边缘设备能
提供的计算性能不足,从而导致推理实时性不足,因此提高边缘设备上CNN的推理速度是目前的研究热门遥
加速推理阶段通常采用FPGA、DSP、ASIC等高能效比的芯片进行硬件加速,其中FPGA具有硬件可编程性和低功耗的优势,是CNN推理加速的重要研究方向。早期FPGA加速CNN采用的硬件结构是静态脉动整列(Static Systolic Aarry,SSA)结构[1]。SSA含有多个静态PE(Processing Element)模块,CPU通过不同的脉动数据流加以控制遥这种结构存在FPGA硬件资源利用率低、数据吞吐量小等问题。为了解决这些问题,单指令多数据(Single Instruction Multiple Data,SIMD)结构的CNN加速器被提出了,通过指令队列可对加速器进行参数配置与实时控制遥在SIMD结构的加速器中,卷积层的运算过程本质上是一个循环优化问题[2」,包括Loop Unrolling、Loop Tiling和Loop Interchange袁选择合适的优化系数从而设计出性能最优的PE模块和满足最大数据吞吐量的存储结构叫循环优化算法主要优化卷积层,对CNN中其他层的加速是不足的,为了进一步地加速CNN的推理过程,Xilinx在SIMD加速器的基础上引入双倍数据率DSP技术,提出了一种Deep Learning Processing Unit(DPU)加速器IP core[4]。DPU不仅仅只提供了卷积计算的加速,还支持深度可分卷积、最大池化、全连接和激活函数的计算加速,因此使用DPU可以方便地对CNN的推理过程进行全加速叫
为了便捷地解决卷积神经网络推理过程的实时性问题,采用软硬件协同设计的方法,在ZYNQ7020上搭建了以DPU为加速器的CNN推理加速系统,使用DPU对ResNet50进行了加速测试,并分析与对比
了DPU的计算性能与加速效果。
1DPU的基本结构
Deep Learning Processor Unit(DPU)是一种采用了 单指令多数据(Single Instruction Multiple Data,SIMD)结构的卷积神经网络IP核,具有参数可配置、灵活可控的特点。DPU不仅仅只提供了卷积计算的加速,还支持深度可分卷积、最大池化、全连接和激活函数的计算加速,从可支持的参数上来看,DPU可支持常见CNN 结构的推理加速[6]。
如图1所示,DPU由指令调度器(IS)、片上缓存控制器(OCBC)和计算引擎(CE)构成遥处理系统(PS)通过AXI总线启动DPU后,IS捕捉PS发送的控制指令,经过译码和调度后控制指令被发送至OCBC。OCBC将片外存储数据传输至计算引擎(CE),同时也
作者简介:徐畅(1996-),男,硕士,研究方向:嵌入式系统、图像处理算法的FPGA加速设计;刘一镔(1994-),男,硕士,研究方向:嵌入式系统
。
实用第一智慧密集
负责缓存CE计算的结果来增加数据的复用程度。CE包
含卷积引擎(ConvE)和完成其他运算的引擎(MiscE),
这些运算引擎由加法器、累加器、乘法器等基本计算电
路构成。
图1DPU结构与典型SIMD结构
DPU由多种不同功能的模块构成,因而含有多种数据接口、时钟类型与中断信号,其中dpu_2x_clk时钟信号是DDR DSP的工作时钟,应当是DPU系统工作信号m_axi_dpu_aclk的两倍,此外参数配置时钟s_axi_clk与m_axi_dpu_clk时钟可配置为相同的频率。在搭建DPU 硬件电路时需要特别注意这些特殊的时钟信号。
2CNN模型的量化与编译
通常CNN模型文件的数据类型是Float32,但是DPU是一种基于FPGA实现的硬件加速器,擅长定点数据类型(FIXED8、FIXED16)的运算,因此需要采用合适的数据量化方法对模型进行预处理,好处是可以降低计算量。此外为了压缩模型文件的存储体积,以及使模型更符合编程模型中的DPU内核概念,对模型进行编译是必要的。
使用Deep Compression Tool(DECENT)和Deep Neural Network Compiler(DNNC)17对ResNet50[9模型进行裁剪与编译,其中DECENT完成模型数据量化,DNNC 则对数据量化后模型进行编译。经过DNNC编译输出的DPU内核,不仅含有模型数据还有穿插在模型数据之间的DPU指令。
根据图2所示的量化与编译流程,首先使用Caffe 深度学习框架训练获得了ResNet50的模型描述文件与模型参数文件,其次依据图3-A中的量化配置参数,将模型数据从Float32量化为FIXED8o最后使用图3-B 中的编译参数对模型进行编译,从而获取已编译的ResNet50的可部署DPU内核文件。
图2模型的量化与编译流
decenL quantize-model ResNeL50.proLotxL
-w eigh L s ResNe
-output_dir deploy_dir
-meLhod1
A量化模型
dnnc-proLoLxL=deploy.proLoLxL
——caffemodel=deploy.c alTemodel
——ouLpuL_dir=ouLpuL_dir
--neL_name=ResNeL50
——def=board.dcf
——mode=normal
一一cpu_arch=arm32
B模型模型
图3量化与编译的参数配置
3DPU的加速系统设计
3.1DPU硬件环境的搭建
DPU被部署在FPGA上,在整个硬件系统中相当于ARM CPU的协处理器,因此硬件系统的设计核心就是DPU与ARM CPU之间的数据和时钟的连接。选定的DPU 的模块参数为B1152,激活函数选择ReLU+LeakyReLU+ ReLU6o在电路的时钟参数上,DPU的工作频率为90MHz,DDR-DSP的工作频率为180MHz,S_AXI总线的频率为100MHzo
根据对DPU的参数选择,图4是设计的硬件原理图。图4中ZYNQ_PS为ARM CPU,dpu_eu_0是DPU 模块的实例,hier_clk_rst_gen产生DPU模块的时钟与复位信号,hier_dpu2hp模块是DPU与ZYNQ_PS之间数据和指令的传输中介,能够增加数据传输的吞吐量。系统的整体复位信号由proc_sys_ret_0提供。完成设计后,由Vivado导出FPGA的比特流文件和硬件描述文件(Xilinx Shell Archive,XSA),为搭建嵌入式Linux 系统提供硬件信息。
14
良眾爲如'
软件研发与应用
SOFTWARE DEVELOPMENT & APPLICATION
proc sys re L ()
鬼子姜的功效
slowcs(_sync_clk mb_rcsc(
cxt —rcsct —in aux_ret_in pcriphcral_rcscL[0:0]
mb —dcbug —sys —rst 血(熙'0皿1皿(_111^“11[0:0]1 dcm_lockcd
pcriphcral_arcscLn[0:0]'
clk _in1
Processor System Ret
hier dpu 2hp
Deep Leaming Processing Unit(DPU)
M_AXI_HP0 丄M_AXI_HP1
M_AXI_INSTR 丄—
+ S_AXI
s _axi _aclk DPU0_M_AXI_DATA0 +
[_赢严器徂 dpu 『m
「AX 「
DATA1 +dpu 2x clk —-dpHrcsctn
DPU0_M _AXI _INSTR +
m_axi_dpu_aclk
d p u _in 顾叩幼
m_axi_dpu_arcscln
hie r _clk_rs t _gen
&~~- - '~
DPU_CLK_90Mnz
•悄c t n
RSTN_INTC[0:0]
RSTN_PERI[0:0] DSP_CLK_180Mnz
R5TN_D5P[0:0]
dup eu 0
E
+ DPU0_M_AX1_DATA0
DPU0_M_AX1_DATA1 DPU0_M_AXI_INSTR
aclk _iip J:lk RSTN_INTC
RSTN_PERI
ZYNQ PS
II + 5_AXI_11TO_FIFO_CTRL II + 5_AXI_11P1_FIFO_CTRL
!! + 5_AXI_11P2_FIFO_CTRL
茫 + 5_AXI_11TO 电 + 5_AXI_11P1
€ + 5_AXI_11P2
M_AXI_GP0_ACLK
S_AXI_nP0_ACLK
5_AXI_11P1_ACLK
S_AXI_11P2_ACLK IRQ_F2P[0:0]
DDR + FIXED_IO + USBIND_0+ ||
M_AXI_GP0+
ZYNQ. rrc0_wAVE0_OU r
TrC0_WAVE1_OUT
门⑺一啊丫也卫口
FCLK_CLK0 FCLK_RESE'ro_N ZYNQ7 Processing System
III -----------DDR
|||^^^FIXED_IO 3.2加速系统的软件环境搭建
由于加速系统需要实现的功能较为复杂,涉及 ARM CPU 和DPU 之间的多核控制与管理,因此需要为 ARM CPU 构建Linux 操作系统,再在Linux 上为DPU
的编程模型搭建软件环境。如图5所示,系统的软件环 境搭建分为3个步骤遥首先根据XSA 文件提供的硬件
信息搭建Linux 系统,包含使用Petalinux 编译生成内
核、u-boot 和根文件系统等文件。其次是在Linux 系统 下配置应用软件的运行支持,即使用Vitis 为应用软件
添加依赖库,例如Python 、OpenCV 与DNNDK 等运行
与支持库。最后是完成应用软件进行编译,使软件借助
依赖库运行在Linux 系统中。如图5所示。
SoC 硬件环境
1 ~
操作系统软件环境
应用软件
Vivado
1
Vitis Platform Project
在Linux 系统中配置 应用程序的运行支持 <___________________>
Vitis Application Project
对应用程序进行编译 获取可执行文件V 丿
设计硬件结构
\___________X 输出XSA 文件
1
Petalinux
• root file system • linux kernel • u-boot
9 zynq_fsbl.elf l …
丿
I
图5软件环境搭建流程
3.3 DPU 测试程序的编写
测试软件的基本流程是ARM CPU 将存储在SD 卡 中的样图送入DPU 中,DPU 根据DPU 内核完成对
ResNet50的分类推理加速,ARM CPU 接收到中断后从
内存中获取DPU 的计算结果,同时完成SoftMax 的计算 以及输岀分类结果。测试程序的伪代码如表1所示,函
数执行的流程:首先开启DPU,读取DPU 内核,创建
推理加速任务;其次执行加速任务,CPU 抽取全连接层
的计算结果;根据全连接层的结果CPU 完成SoftMax 值 和分类概率值的计算。
图4系统的硬件原理图
表1 DPU 测试程序伪代码
DPU 加速伪代码
void runResNel50 () {
dpuOpen ();
kernel=dpuLoadKerne / (kerneldeploy); task =dp uCreale Task (ke rne l );dpuRunTask ( ask )
dp u G e tOutp ut Te n os r HW C FP32 (FCRe s u ll ); CPU C alc u SoftMox (FCResuh);TopK () ;}
4实验结果与分析
实验硬件平台是ZedBoard,板载芯片为XC7Z020C LG484,操作系统是嵌入式Linux 系统。使用的设计工
具为 Vivado 、Vitis 和 Petalinux ,版本均为 2020.1。编程
语言为C++。使用Vivado 搭建的加速系统的硬件资源
使用情况如表2所示。
表2资源使用情况
资源类型
使用情况
资源上限
使用百分比
LUT
319705320060.09%LUTRAM
1728
174009.93%.FF 58599
106400
55.07%BRAM 139.514099.64%
DSP 194
22088.18%
MMCM
14
25%
通过运行DPU 的测试程序分析DPU 的运算性能遥
测试程序中的输入是图6-C,标签为Border Collie ,输
岀的分类结果为图6-A 。测试结果表明,经过DPU 加速 的推理过程总耗时为100.88ms ,计算性能为76.42GOPS,
分类结果中top0的分类准确率为75.96%, top1的分类准
确率为16.95%, top0加top1的准确率为92.61%。此外
图6-B 展示的是在处理器为AMD Ryzen7 1700 3.0GHz 的 PC 机上进行相同推理测试的结果,模型为未量化的
ResNet50,推理过程耗时4.04s,计算性能为0.99GFLOPS,
top0 准确率为 87.70%, top1 准确率为 6.81%, top0 加 top1
的准确率为94.51%遥对比分类准确度可知,DPU
加速的
可能性。
量化模型top0下降了 11%,但是top0+top1准确度与未
量化的分类精度基本一致。从推理耗时上看,DPU 的推
理耗时比CPU 快40.48倍,虽然计算性能上由于模型数
据精度不同因而不具备可比性,可从数量级上定性分
析,DPU 的计算性能比CPU 强。
2782.865ms
727.4 s
392.9ms
418.776ms 391.715ms
746.343ms
图6推理结果
表3整理并列出了 DPU 加速ResNet50的详细结果 与参数情况,同时与目前已有的加速结果进行了对比遥 DPU 的DSP 资源与计算性能之比是2.5片/GOPS ,文献
[10]的是2.45片/GOPS ,DPU 中DSP 资源向性能的转
化率要高。
③ Core0-resnet50_0Timclinc(us)
图7 DPU 负载率与调度效
表3加速结果比较
方式
频率
大小MACs 耗时
DSPs
性能
Zynq7020DPU 90MHz 24.35MB 7.72GOPs
100.88ms 19476.43GOPS Ryzen 1700无
3.0GHz 97.7MB
4.0 GFLOPs
4.02s -0.99 GFLOPS
Arria10
GX1150"
HDL 200MHz 25.5MB
7.8 GOPs 12.51ms
1518
619.13 GOPS
为了进一步分析DPU 的运算性能,统计了进行多
次推理时DPU 的负载率和调度率情况。图7-A 是DPU
在6次推理中的耗时情况,图7中标出了每次之间DPU 的调度间隔,调度最长间隔为746.343ms ,最短间隔为 418.776ms ,调度效率为21.88%,调度效率较低。图7-
B 是单次推理的统计结果,DPU 的平均负载率为73%,
说明在整个推理过程中运算量并没有达到DPU 的运算
氨溴特罗>外滩公园瓶颈,配置的B1152还可以运行计算量更大的卷积神经
网络。图7-C 展示了单次推理中运算步骤之间的间隔
为28us o 从上述分析可以看出,DPU 在单次推理过程
描写心理活动的成语中利用率和运算步骤的调度效率都非常高,但是在多次
推理之间DPU 的调度间隔明显远大于单次推理耗时,
导致调度效率低下。CPU 计算softmax 和topk 导致的延
迟可能是间隔时间的主要构成,此外CPU 调度DPU 的
方法问题也是增加间隔时间的可能原因°利用CPU 的
多线程编程、进行多线程多DPU 调度的ping-pong 操作 等方法存在缩短多次推理间隔,提咼DPU 调度效率的
5结语
卷积神经网络在目标检测与图像分类的精确度上已 经超过了人类,获得高精度的代价是对计算性能的高需
求,这与边缘设备有限的计算性能相冲突,从而导致了 算法运算的实时性问题。基于DPU 硬件加速器显著提 高了卷积神经网络的推理速度。此外由于DPU 是SIMD
西半球有哪些国家结构的硬件加速器,具有配置灵活和参数可调的特点,
因而设计的具有推理加速功能的软硬件系统能够较好地 支持现有CNN 结构。此外,通过分析DPU 的多次推理
过程发现DPU 的调度效率并不高,因而未来的工作方
向是设计一种高效的DPU 调度算法。
参考文献
[1] Farabet C, Poulet C, Han J Y, et al. Cnp: An fpga-
bad processor for convolutional networks [C] //2009
International Conference on Field Programmable Logic and Applications. IEEE, 2009: 32-37.
[2] Qiu J, Wang J, Yao S, et al. Going deeper with embed
ded fpga platform for convolutional neural network [C]
//Proceedings of the 2016 ACM/SIGDA International
Symposium on Field-Programmable Gate Arrays. 2016: 26-35.
[3] Shen J, Huang Y, Wang Z, et al. Towards a uniform tem-
(下转第48页)
2021.6
电脑编程技巧与维*y
/
SreeaeBBHI*>SBSI3EIEIEIEIffiEBBI!IBBBeaeBI3BigBlslBBai3IIBBEISBHI3glBBIIIIIIBSSI3aBIIIglEISa3BEIQISB>E 实用第一f智慧密集
“新资源”冷启动问题得以解决。
4.5专家多维度特征标注
干部在线学习平台的推荐机制刚开始投入使用时,参学干部的历史行为数据很少,学习资源的特征信息也很少,无法通过计算相似度来形成适合干部需求和兴趣的推荐列表。此时,为了让参学干部刚进入在线学习平台就能得到较好的推荐结果,拥有更好的学习体验,可以利用专家对学习资源进行多维度特征标注,降低推荐系统对参学干部的历史行为数据的依赖,从而解决系统冷启动问题。通过专家多维度标注的每个学习资源都可以用一个多维特征向量来表示,特征信息描述更详细,代表该资源的
特征属性也更容易被抓取,使用调整的余 弦相似度计算学习资源之间的相似度更准确,推荐结果更满意。学习资源的多维特征向量表示如下:
R={(R1,W1),(R2,W2),噎,(Rm,Wm))
其中,m代表学习资源搜索的维度,Rk表示对学习资源的属性、特征等信息进行说明的关键词,Wk为关键词的权重,表示Rk能代表学习资源R的程度。权重越大,说明该学习资源的关键词比权重小的关键词更能代表该资源。
5结语
参加在线学习的各级、各类干部一般都是在工作之
(上接第27页)
要合理地使用GPU渲染。
4结语
HTML5是用于Web开发的新技术。分析了可以优化的领域,并将其应用于移动设备的前端设计。使用HTML5开发的Web应用程序具有良好的兼容性,无疑具有良好的发展前景。
参考文献
[1]唐俊开.HTML5移动Web开发指南[M].北京:余进行碎片化学习,为了让参学干部在碎片的学习时间内学习更有成效,收获更有价值,解决干部在线学习中的冷启动问题。提出了多种有针对性的解决方案,包括提取参学干部注册信息、抓取学习资源特征信息和专家多维度特征标注等。以上解决方案还需要在干部在线学习过程中逐步迭代,不断改进和完善,才能提高推荐质量,从而更好地为干部在线学习服务。
参考文献
[1]邵煜,谢颖华.协同过滤算法中冷启动问题研究
[J].计算机系统应用,2019,(02).
[2]雷秋雨.个性化推荐系统中冷启动问题研究[D].
北京交通大学,2019.清晨歌曲
⑶乔雨.面向冷启动问题的推荐算法研究[D].南京
邮电大学,2018.
[4]乔雨,李玲娟.推荐系统冷启动问题解决策略研究
[J].计算机技术与发展.2018,(02).
[5]陈妍,洪蕾,李广水,刘佳玮.关于推荐系统中冷
启动问题的研究[J].中国高新区,2018,(14). [6]刘畅,王玉龙.推荐系统冷启动问题分析[J].电
信网技术,2017,(1).
[7]王春才,邢晖,李英韬.个性化推荐系统冷启动问
题研究[J].现代计算机(专业版),2015,(29).
电子工业出版社,2012.
[2]李东博.HTML5+CSS3从入门道精通[M].北京:
清华大学出版社,2013.
⑶杨毅.Web前端开发技术探讨[J]-软件设计开发,
2014,(08).
[4]李国华.HTML5下一代Web开发技术[J].大众
科技,2015,(07).
[5]郑子伟,陈奋.HTML5离线应用开发技术研究[J].
厦门城市职业学院学报,2015,(03).
(上接第16页)
plate-bad architecture for accelerating2d and3d cnns on fpga[C]//Proceedings of the2018ACM/SIG-DA International Symposium on Field-Programmable Gate Arrays.2018:97-106.
767股票学习网官网
[4]Xilinx.ZYNQ DPU v3.3DPU IP Product Guide[EB/
OL].[2020-12-07].
[5]Zhu J,Wang L,Liu H,et al.An Efficient Task As
signment Framework to Accelerate DPU-Bad Convolutional Neural Network Inference on FPGAs[J].
IEEE Access,2020,8:83224-83237.
[6]Xilinx.DNNDK Ur Guide[EB/OL].[2019-08-13].
[7]He K,Zhang X,Ren S,et al.Deep residual learning
for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition.
2016:
770-778.