Разверните свою пользовательскую сеть, которая только имеет слои с выходным форматом модуля свертки, или только слои с полностью связанным выходным форматом модуля путем генерации ресурса оптимизировали пользовательский поток битов, который удовлетворяет требованиям к производительности и требованиям к ресурсам. Сгенерированное использование потока битов настройки процессора глубокого обучения по умолчанию состоит из свертки (conv), полностью связанный (ФК) и модули сумматора. Сгенерированные потоки битов по умолчанию могли превысить ваши требования использования ресурса, которые могли завысить затраты. Чтобы сгенерировать поток битов, который состоит только из слоев в вашей пользовательской нейронной сети для глубокого обучения, измените настройку процессора глубокого обучения при помощи setModuleProperty
функция dlhdl.ProcessorConfig
объект.
В этом примере у вас есть сеть, которая имеет только слои, которые имеют полностью связанный выходной формат модуля. Сгенерируйте пользовательский поток битов, который состоит из полностью связанного модуля только путем удаления свертки и модулей сумматора от настройки процессора глубокого обучения. Удалить модули сумматора и свертка:
Выключите ModuleGeneration
свойство для отдельных модулей в настройке процессора глубокого обучения.
Используйте optimizeConfigurationForNetwork
функция.
Функция берет объект нейронной сети для глубокого обучения в качестве входа и возвращает оптимизированную пользовательскую настройку процессора глубокого обучения.
Быстро проверьте использование ресурса оптимизированной настройки процессора глубокого обучения при помощи estimateResources
функция.
Пакет поддержки Deep Learning HDL Toolbox™ для FPGA Xilinx™ и SoC
Deep Learning Toolbox™
Deep Learning HDL Toolbox™
Создайте пользовательскую настройку процессора. Сохраните настройку в hPC
.
hPC = dlhdl.ProcessorConfig
hPC = Processing Module "conv" ModuleGeneration: 'on' LRNBlockGeneration: 'on' ConvThreadNumber: 16 InputMemorySize: [227 227 3] OutputMemorySize: [227 227 3] FeatureSizeLimit: 2048 Processing Module "fc" ModuleGeneration: 'on' 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 TargetPlatform: 'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit' TargetFrequency: 200 SynthesisTool: 'Xilinx Vivado' ReferenceDesign: 'AXI-Stream DDR Memory Access : 3-AXIM' SynthesisToolChipFamily: 'Zynq UltraScale+' SynthesisToolDeviceName: 'xczu9eg-ffvb1156-2-e' SynthesisToolPackageName: '' SynthesisToolSpeedValue: ''
Чтобы оптимизировать вашу настройку процессора, создайте пользовательский полносвязный слой только сеть. Вызовите пользовательскую сеть fcnet
.
layers = [ ... imageInputLayer([28 28 3],'Normalization','none','Name','input') fullyConnectedLayer(10,'Name','fc') regressionLayer('Name','output')]; layers(2).Weights = rand(10,28*28*3); layers(2).Bias = rand(10,1); fcnet = assembleNetwork(layers); plot(fcnet);
Получите использование ресурса для пользовательской настройки процессора по умолчанию при помощи estimateResources
.
Получите эффективность для пользовательской сети fcnet
при помощи estimatePerformance
.
hPC.estimateResources
Deep Learning Processor Estimator Resource Results DSPs Block RAM* LUTs(CLB/ALUT) ------------- ------------- ------------- Available 2520 912 274080 ------------- ------------- ------------- DL_Processor 368( 15%) 508( 56%) 224761( 83%) * Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
hPC.estimatePerformance(fcnet)
### Notice: The layer 'input' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software. ### Notice: The layer 'output' with type 'nnet.cnn.layer.RegressionOutputLayer' is implemented in software. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 137574 0.00069 1 137574 1453.8 ____fc 137574 0.00069 * The clock frequency of the DL processor is: 200MHz
Количества ресурса целевого устройства:
Количество среза цифрового сигнального процессора (DSP) — 240
Количество оперативной памяти блока (BRAM) — 128
Предполагаемая эффективность составляет 1 454 кадра в секунду (фут в секунду). Предполагаемые количества использования ресурса:
Количество среза цифрового сигнального процессора (DSP) — 368
Количество оперативной памяти блока (BRAM) — 508
Предполагаемое количество среза DSP и использование количества BRAM превышают бюджет ресурса целевого устройства. Настройте настройку потока битов, чтобы уменьшать использование ресурса путем настройки настройки процессора.
ModuleGeneration
СвойствоСоздайте объект настройки процессора нейронной сети для глубокого обучения. Сохраните его в hPC_moduleoff
.
Выключите свертку и модули сумматора в пользовательской настройке процессора глубокого обучения.
hPC_moduleoff = dlhdl.ProcessorConfig; hPC_moduleoff.setModuleProperty('conv','ModuleGeneration','off'); hPC_moduleoff.setModuleProperty('adder','ModuleGeneration','off');
Получите использование ресурса для пользовательской настройки процессора по умолчанию при помощи estimateResources.
Получите эффективность для пользовательской сети fcnet
при помощи estimatePerformance
.
hPC_moduleoff.estimateResources
Deep Learning Processor Estimator Resource Results DSPs Block RAM* LUTs(CLB/ALUT) ------------- ------------- ------------- Available 2520 912 274080 ------------- ------------- ------------- DL_Processor 17( 1%) 44( 5%) 40740( 15%) * Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
hPC_moduleoff.estimatePerformance(fcnet)
### Notice: The layer 'input' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software. ### Notice: The layer 'output' with type 'nnet.cnn.layer.RegressionOutputLayer' is implemented in software. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 137574 0.00069 1 137574 1453.8 ____fc 137574 0.00069 * The clock frequency of the DL processor is: 200MHz
Количества ресурса целевого устройства:
Количество среза цифрового сигнального процессора (DSP) — 240
Количество оперативной памяти блока (BRAM) — 128
Предполагаемая эффективность составляет 1 454 кадра в секунду (фут в секунду). Предполагаемые количества использования ресурса:
Количество среза цифрового сигнального процессора (DSP) — 17
Количество оперативной памяти блока (BRAM) — 44
Предполагаемые ресурсы индивидуально настраиваемого потока битов совпадают с пользовательским бюджетом ресурса целевого устройства. Предполагаемая эффективность совпадает с целевой производительностью сети.
optimizeConfigurationForNetwork
Создайте объект настройки процессора нейронной сети для глубокого обучения. Сохраните его в hPC_optimized
. Сгенерируйте оптимизированную настройку процессора глубокого обучения при помощи optimizeConfigurationForNetwork
функция.
hPC_optimized = dlhdl.ProcessorConfig; hPC_optimized.optimizeConfigurationForNetwork(fcnet);
### Optimizing processor configuration for deep learning network begin. ### Note: Processing module "conv" property "ModuleGeneration" changed from "on" to "off" because there is no conv layer in the deep learning network. ### Note: Processing module "fc" property "InputMemorySize" changed from "25088" to "2352". ### Note: Processing module "fc" property "OutputMemorySize" changed from "4096" to "128". ### Note: Processing module "adder" property "ModuleGeneration" changed from "on" to "off" because there is no adder layer in the deep learning network. Processing Module "conv" ModuleGeneration: 'off' Processing Module "fc" ModuleGeneration: 'on' SoftmaxBlockGeneration: 'off' FCThreadNumber: 4 InputMemorySize: 2352 OutputMemorySize: 128 Processing Module "adder" ModuleGeneration: 'off' Processor Top Level Properties RunTimeControl: 'register' InputDataInterface: 'External Memory' OutputDataInterface: 'External Memory' ProcessorDataType: 'single' System Level Properties TargetPlatform: 'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit' TargetFrequency: 200 SynthesisTool: 'Xilinx Vivado' ReferenceDesign: 'AXI-Stream DDR Memory Access : 3-AXIM' SynthesisToolChipFamily: 'Zynq UltraScale+' SynthesisToolDeviceName: 'xczu9eg-ffvb1156-2-e' SynthesisToolPackageName: '' SynthesisToolSpeedValue: '' ### Optimizing processor configuration for deep learning network complete.
Получите использование ресурса для пользовательской настройки процессора по умолчанию при помощи estimateResources.
Получите эффективность для пользовательского network fcnet
при помощи estimatePerformance
.
hPC_optimized.estimateResources
Deep Learning Processor Estimator Resource Results DSPs Block RAM* LUTs(CLB/ALUT) ------------- ------------- ------------- Available 2520 912 274080 ------------- ------------- ------------- DL_Processor 17( 1%) 20( 3%) 40740( 15%) * Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
hPC_optimized.estimatePerformance(fcnet)
### Notice: The layer 'input' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software. ### Notice: The layer 'output' with type 'nnet.cnn.layer.RegressionOutputLayer' is implemented in software. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 137574 0.00069 1 137574 1453.8 ____fc 137574 0.00069 * The clock frequency of the DL processor is: 200MHz
Количества ресурса целевого устройства:
Количество среза цифрового сигнального процессора (DSP) — 240
Количество оперативной памяти блока (BRAM) — 128
Предполагаемая эффективность составляет 1 454 кадра в секунду (фут в секунду). Предполагаемые количества использования ресурса:
Количество среза цифрового сигнального процессора (DSP) — 17
Количество оперативной памяти блока (BRAM) — 20
Предполагаемые ресурсы индивидуально настраиваемого потока битов совпадают с пользовательским бюджетом ресурса целевого устройства. Предполагаемая эффективность совпадает с целевой производительностью сети.
Сгенерируйте пользовательский поток битов с помощью настройки процессора, которая совпадает требованиями к производительности и требованиями к ресурсам.
Развернуть fcnet
использование потока битов сгенерировано при помощи ModuleOff
свойство, не комментирует эта строка кода:
% dlhdl.buildProcessor(hPC_moduleoff)
Развернуть fcnet
использование потока битов сгенерировано при помощи optimizeConfigurationForNetwork
функция, не комментирует эта строка кода:
% dlhdl.buildProcessor(hPC_optimized)
dlhdl.ProcessorConfig
| getModuleProperty
| setModuleProperty
| estimatePerformance
| estimateResources