主要内容

定制深度学习处理器生成以满足性能要求

这个例子展示了如何创建自定义处理器配置和预训练系列网络的性能评估。然后,您可以修改自定义处理器配置的参数并重新估计性能。一旦达到了性能要求,就可以使用自定义处理器配置生成自定义位流。

先决条件

  • 深度学习HDL工具箱™Xilinx FPGA和SoC万博1manbetx支持包

  • 深度学习工具箱™

  • 深度学习HDL工具箱™

  • 深度学习工具箱模型量化库

  • 深度学习库的MATLAB编码器接口

负荷预训练串联网络

要加载预训练系列网络登录,请输入:

snet=getlogonnetwork;

创建自定义处理器配置

要创建自定义处理器配置,请使用dlhdl。ProcessorConfig对象。有关详细信息,请参阅dlhdl。ProcessorConfig。要了解处理器配置的可修改参数,请参阅getModulePropertysetModuleProperty

hPC = dlhdl.ProcessorConfig;高性能计算。TargetFrequency = 220;hPC
hPC =处理模块”conv“ModuleGeneration:‘“LRNBlockGeneration:”“ConvThreadNumber: 16 InputMemorySize: [227 227 3] OutputMemorySize: [227 227 3] FeatureSizeLimit: 2048处理模块“俱乐部”ModuleGeneration:”“SoftmaxBlockGeneration:‘off’FCThreadNumber: 4 InputMemorySize: 25088 OutputMemorySize:4096 Processing Module "adder" ModuleGeneration: 'on' InputMemorySize: 40 OutputMemorySize: 40 Processor Top Level Properties RunTimeControl: 'register' InputDataInterface: 'External Memory' OutputDataInterface: 'External Memory' ProcessorDataType: 'single' System Level Properties'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit' TargetFrequency: 220 SynthesisTool: 'Xilinx Vivado' ReferenceDesign: ' axio - stream DDR Memory Access: 3-AXIM' synthesistolchipfamily: 'Zynq UltraScale+' synthesistoldevicename: 'xczu9e -ffvb1156-2-e' synthesistolpackagename: " synthesistolspeedvalue: "

估计LogoNet性能

估计性能的LogoNet系列网络,使用估计性能的函数dlhdl。ProcessorConfig对象。该函数以帧/秒(frames /s)为单位返回估计的层延迟、网络延迟和网络性能。

hPC.estimatePerformance (snet)
###注意:类型为“nnet.cnn.layer.ImageInputLayer”的层“imageinput”在软件中实现。####注意:类型为“nnet.cnn.layer.ClassificationOutputLayer”的层“classoutput”在软件中实现。深度学习处理器估计器性能结果LastFrameLastLatency(周期)LastFrameLastLastLastLastLatency(秒)网络39926006 0.18148 1 39926006 6 6 6 6 6 6 6 5.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 0.5 7 7 7 7 10 10 10 10 0 0 0 0.3 3 3 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 6 7 7 7 7 7 7 7 7 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10.5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10_uuuuuuuuuuuuuuuuuuMaxpool_u428098 0.00013_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu2 1696632 0.00771_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu389511 0.00041*DL处理器的时钟频率为:220MHz

估计每秒帧数为5.5帧/秒。为了提高网络性能,修改自定义处理器卷积模块内核数据类型、卷积处理器线程数、全连接模块内核数据类型、全连接模块线程数。有关这些处理器参数的更多信息,请参见getModulePropertysetModuleProperty

创建修改的自定义处理器配置

要创建自定义处理器配置,请使用dlhdl。ProcessorConfig对象。有关详细信息,请参阅dlhdl。ProcessorConfig。要了解处理器配置的可修改参数,请参阅getModulePropertysetModuleProperty

hPCNew=dlhdl.ProcessorConfig;hPCNew.TargetFrequency=300;hPCNew.ProcessorDataType=“int8”;hPCNew.setModuleProperty(“conv”“ConvThreadNumber”, 64);hPCNew.setModuleProperty (“fc”“FCThreadNumber”,16);hPCNew
hPCNew=处理模块“conv”模块生成:'on'LRNBlockGeneration:'on'ConvThreadNumber:64 InputMemorySize:[227 227 3]OutputMemorySize:[227 227 227 3]功能大小限制:2048处理模块“fc”模块生成:'on'SoftmaxBlockGeneration:'off'FCThreadNumber:16 InputMemorySize:25088 OutputMemorySize:4096处理模块“加法器"ModuleGeneration:'on'InputMemorySize:40 OutputMemorySize:40处理器顶级属性运行时控件:'register'InputDataInterface:'External Memory'OutputDataInterface:'External Memory'处理器数据类型:'int8'系统级属性TargetPlatform:'Xilinx Zynq UltraScale+MPSoC ZCU102评估工具包'目标频率:300SynthesisTool:“Xilinx Vivado”引用设计:“AXI流DDR内存访问:3-AXIM”SynthesisToLChipFamily:“Zynq UltraScale+”SynthesisToLDeviceName:“xczu9eg-ffvb1156-2-e”SynthesisToLPackageName:“SynthesisToLSpeedValue:”

量化LogoNet系列网络

要量化LogoNet网络,输入:

dlquantObj = dlquantizer (snet,“ExecutionEnvironment”“FPGA”); Image=imageDatastore(“喜力,png”“标签”“喜力”)dlquantObj.校准(图像);

估计LogoNet性能

要估计LogoNet系列网络的性能,请使用估计性能的函数dlhdl。ProcessorConfig对象。该函数以帧/秒(frames /s)为单位返回估计的层延迟、网络延迟和网络性能。

hPCNew.estimatePerformance (dlquantObj)
###注意:类型为“nnet.cnn.layer.ImageInputLayer”的层“imageinput”在软件中实现。####注意:类型为“nnet.cnn.layer.ClassificationOutputLayer”的层“classoutput”在软件中实现。深度学习处理器估计器性能结果LastFrameLastLatency(周期)LastFrameLastLastLastLastLatency(秒)网络14 306694 0.04769 1 14 3066 6 6 6 9 9 14 6 6 6 6 6 6 6 6 4 4 4 4 4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7_uuuuuuuuuuuuuuuuuuuuuuuMaxpool_u414025 0.00005\uuuuuuuuuuuuuufc\u 1 665265 0.00222\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu 2 425425 0.00142\uuuuuuuuuuuuuuuuuuuuuufc\u 3 56558 0.00019*DL处理器的时钟频率为:300MHz

估计每秒帧数为21.2帧/秒。

生成自定义处理器和比特流

使用新的自定义处理器配置来构建和生成自定义处理器和位流。使用自定义比特流将LogoNet网络部署到目标FPGA板。

% hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C: Xilinx Vivado\2019.2\bin\ Vivado .bat');%dlhdl.buildProcessor(hPCNew);

要了解如何使用生成的位流文件,请参阅生成自定义比特流

本例中生成的比特流类似于zcu102_int8位流。使用zcu102_int8比特流,看获得量化LogoNet网络的预测结果