主要内容

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

此示例演示如何创建自定义处理器配置并评估预训练串行网络的性能。然后,您可以修改自定义处理器配置的参数并重新评估性能。一旦达到性能要求,就可以使用自定义处理器配置生成自定义比特流。

先决条件

  • 深度学习HDL工具箱™Xilinx FPGA和SoC金宝app支持包

  • 深度学习工具箱™

  • 深度学习HDL工具箱™

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

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

负荷预训练串联网络

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

snet=getlogonnetwork;

创建自定义处理器配置

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

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

估计LogoNet性能

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

hPC.估计性能(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帧/s。要提高网络性能,请修改自定义处理器卷积模块内核数据类型、卷积处理器线程数、全连接模块内核数据类型和全连接模块线程数。有关这些处理器参数的更多信息,请参阅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,“执行环境”,“FPGA”); Image=imageDatastore(“喜力,png”,“标签”,“喜力”)dlquantObj.校准(图像);

估计LogoNet性能

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

hPCNew.估计性能(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帧/s。

生成自定义处理器和位流

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

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

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

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