Чтобы оценить использование ресурса пользовательской настройки процессора, сравните использование ресурса для пользовательской настройки процессора, чтобы снабдить использование ссылки (поставляющей) настройку процессора потоков двоичных данных. Анализируйте эффекты пользовательских параметров процессора глубокого обучения на использовании ресурса.
Вычислите использование ресурса для пользовательской настройки процессора.
Создайте dlhdl.ProcessorConfig
объект.
hPC = dlhdl.ProcessorConfig
hPC = Processing Module "conv" ConvThreadNumber: 16 InputMemorySize: [227 227 3] OutputMemorySize: [227 227 3] FeatureSizeLimit: 2048 KernelDataType: 'single' Processing Module "fc" FCThreadNumber: 4 InputMemorySize: 25088 OutputMemorySize: 4096 KernelDataType: 'single' Processing Module "adder" InputMemorySize: 40 OutputMemorySize: 40 KernelDataType: '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: ''
Вызовите estimateResources
получать использование ресурса.
hPC.estimateResources
Deep Learning Processor Estimator Resource Results DSPs Block RAM* ------------- ------------- DL_Processor 368 524 conv_module 343 481 fc_module 17 34 adder_module 8 6 debug_module 0 2 sched_module 0 1 * Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
Возвращенная таблица содержит использование ресурса для целого процессора и отдельных модулей.
Пользователь хочет развернуть сеть распознавания цифры с целевой эффективностью 500 кадров в секунду (фут в секунду) к устройству ZCU102 ZU4CG Xilinx. Количества ресурса целевого устройства:
Количество среза цифрового сигнального процессора (DSP) - 240
Количество-128 оперативной памяти блока (BRAM)
Ссылка (поставляющая) zcu102_int8
настройка потока битов для устройства ZCU102 ZU9EG Xilinx. Количества ресурса платы по умолчанию:
Количество среза цифрового сигнального процессора (DSP) - 2520
Количество-912 оперативной памяти блока (BRAM)
Количества ресурса платы по умолчанию превышают пользовательский бюджет ресурса, и находится на более верхнем уровне спектра стоимости. Можно достигнуть целевой эффективности и бюджета на использование ресурса путем квантования целевой нейронной сети для глубокого обучения и настройки пользовательской настройки потока битов по умолчанию.
В этом примере создают пользовательскую настройку потока битов, чтобы совпадать с вашим бюджетом ресурса и требованиями к производительности.
Необходимые условия
Пакет поддержки Deep Learning HDL Toolbox™ для FPGA Xilinx и SoC
Deep Learning Toolbox™
Deep Learning HDL Toolbox™
Библиотека квантования модели Deep Learning Toolbox
Загрузите предварительно обученную сеть
Загружать предварительно обученную серийную сеть, которая была обучена на базе данных Modified National Institute Standards of Technology (MNIST), введите:
snet = getDigitsNetwork;
Квантуйте сеть
Квантовать MNIST основывало сеть цифр, введите:
dlquantObj = dlquantizer(snet,'ExecutionEnvironment','FPGA'); Image = imageDatastore('five_28x28.pgm','Labels','five'); dlquantObj.calibrate(Image)
ans=21×5 table
Optimized Layer Name Network Layer Name Learnables / Activations MinValue MaxValue
____________________________ __________________ ________________________ _________ ________
{'conv_1_Weights' } {'batchnorm_1'} "Weights" -0.017061 0.013648
{'conv_1_Bias' } {'batchnorm_1'} "Bias" -0.025344 0.058799
{'conv_2_Weights' } {'batchnorm_2'} "Weights" -0.54744 0.51019
{'conv_2_Bias' } {'batchnorm_2'} "Bias" -1.1787 1.0515
{'conv_3_Weights' } {'batchnorm_3'} "Weights" -0.39927 0.44173
{'conv_3_Bias' } {'batchnorm_3'} "Bias" -0.85118 1.1321
{'fc_Weights' } {'fc' } "Weights" -0.22558 0.29637
{'fc_Bias' } {'fc' } "Bias" -0.011837 0.016848
{'imageinput' } {'imageinput' } "Activations" 0 255
{'imageinput_normalization'} {'imageinput' } "Activations" -22.566 232.43
{'conv_1' } {'batchnorm_1'} "Activations" -7.9196 6.7861
{'relu_1' } {'relu_1' } "Activations" 0 6.7861
{'maxpool_1' } {'maxpool_1' } "Activations" 0 6.7861
{'conv_2' } {'batchnorm_2'} "Activations" -8.4641 7.2347
{'relu_2' } {'relu_2' } "Activations" 0 7.2347
{'maxpool_2' } {'maxpool_2' } "Activations" 0 7.2347
⋮
Получите zcu102_int Bitstream Configuration
Получать zcu102_int8
настройка потока битов, используйте dlhdl.ProcessorConfig
объект. Для получения дополнительной информации смотрите dlhdl.ProcessorConfig
. Чтобы узнать о модифицируемых параметрах настройки процессора, смотрите getModuleProperty
и setModuleProperty
.
hPC_reference = dlhdl.ProcessorConfig('Bitstream','zcu102_int8')
hPC_reference = Processing Module "conv" ConvThreadNumber: 64 InputMemorySize: [227 227 3] OutputMemorySize: [227 227 3] FeatureSizeLimit: 2048 KernelDataType: 'int8' Processing Module "fc" FCThreadNumber: 16 InputMemorySize: 25088 OutputMemorySize: 4096 KernelDataType: 'int8' Processing Module "adder" InputMemorySize: 40 OutputMemorySize: 40 KernelDataType: 'int8' System Level Properties TargetPlatform: 'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit' TargetFrequency: 250 SynthesisTool: 'Xilinx Vivado' ReferenceDesign: 'AXI-Stream DDR Memory Access : 3-AXIM' SynthesisToolChipFamily: 'Zynq UltraScale+' SynthesisToolDeviceName: 'xczu9eg-ffvb1156-2-e' SynthesisToolPackageName: '' SynthesisToolSpeedValue: ''
Оцените использование производительности сети и ресурса для zcu102_int8
Настройка потока битов
Чтобы оценить эффективность серийной сети цифр, используйте estimatePerformance
функция dlhdl.ProcessorConfig
объект. Функция возвращает предполагаемую задержку слоя, сетевую задержку и производительность сети в кадрах в секунду (Frames/s).
Оценить использование ресурса zcu102_int8
bitstream,
используйте the estimateResources
функция dlhdl.ProcessorConfig
объект. Функция возвращает предполагаемый срез DSP и использование BRAM.
hPC_reference.estimatePerformance(dlquantObj)
### Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer' 3 Memory Regions created. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 57955 0.00023 1 57955 4313.7 ____conv_1 4391 0.00002 ____maxpool_1 2877 0.00001 ____conv_2 2351 0.00001 ____maxpool_2 2265 0.00001 ____conv_3 2507 0.00001 ____fc 43564 0.00017 * The clock frequency of the DL processor is: 250MHz
hPC_reference.estimateResources
Deep Learning Processor Estimator Resource Results DSPs Block RAM* ------------- ------------- DL_Processor 768 386 conv_module 647 315 fc_module 97 50 adder_module 24 12 debug_module 0 8 sched_module 0 1 * Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
Предполагаемая эффективность составляет 4 314 кадр/с, и предполагаемые количества использования ресурса:
Количество среза цифрового сигнального процессора (DSP) - 768
Количество-386 оперативной памяти блока (BRAM)
Предполагаемое количество среза DSP и использование количества BRAM превышают бюджет ресурса целевого устройства. Настройте настройку потока битов, чтобы уменьшать использование ресурса.
Создайте пользовательскую настройку потока битов
Чтобы создать пользовательскую настройку процессора, используйте dlhdl.ProcessorConfig
объект. Для получения дополнительной информации смотрите dlhdl.ProcessorConfig
. Чтобы узнать о модифицируемых параметрах настройки процессора, смотрите getModuleProperty
и setModuleProperty
.
Чтобы уменьшать использование ресурса для пользовательского потока битов, измените KernelDataType
для conv, fc, and
модули сумматора. Измените ConvThreadNumber
уменьшать срез DSP count. Reduce the InputMemorySize
и OutputMemorySize
для conv
модуль, чтобы уменьшать количество BRAM.
hPC_custom = dlhdl.ProcessorConfig; hPC_custom.setModuleProperty('conv','KernelDataType','int8'); hPC_custom.setModuleProperty('fc','KernelDataType','int8'); hPC_custom.setModuleProperty('adder','KernelDataType','int8'); hPC_custom.setModuleProperty('conv','ConvThreadNumber',4); hPC_custom.setModuleProperty('conv','InputMemorySize',[30 30 1]); hPC_custom.setModuleProperty('conv','OutputMemorySize',[30 30 1]); hPC_custom
hPC_custom = Processing Module "conv" ConvThreadNumber: 4 InputMemorySize: [30 30 1] OutputMemorySize: [30 30 1] FeatureSizeLimit: 2048 KernelDataType: 'int8' Processing Module "fc" FCThreadNumber: 4 InputMemorySize: 25088 OutputMemorySize: 4096 KernelDataType: 'int8' Processing Module "adder" InputMemorySize: 40 OutputMemorySize: 40 KernelDataType: 'int8' 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: ''
Оцените использование производительности сети и ресурса для пользовательской настройки потока битов
Чтобы оценить эффективность серийной сети цифр, используйте estimatePerformance
функция dlhdl.ProcessorConfig
объект. Функция возвращает предполагаемую задержку слоя, сетевую задержку и производительность сети в кадрах в секунду (Frames/s).
Оценить использование ресурса hPC_custom
bitstream,
используйте the estimateResources
функция dlhdl.ProcessorConfig
объект. Функция возвращает предполагаемый срез DSP и использование BRAM.
hPC_custom.estimatePerformance(dlquantObj)
### Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer' 3 Memory Regions created. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 348511 0.00174 1 348511 573.9 ____conv_1 27250 0.00014 ____maxpool_1 42337 0.00021 ____conv_2 45869 0.00023 ____maxpool_2 68153 0.00034 ____conv_3 121493 0.00061 ____fc 43409 0.00022 * The clock frequency of the DL processor is: 200MHz
hPC_custom.estimateResources
Deep Learning Processor Estimator Resource Results DSPs Block RAM* ------------- ------------- DL_Processor 120 108 conv_module 89 63 fc_module 25 33 adder_module 6 3 debug_module 0 8 sched_module 0 1 * Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
Предполагаемая эффективность составляет 574 кадр/с, и предполагаемые количества использования ресурса:
Количество среза цифрового сигнального процессора (DSP) - 120
Количество-108 оперативной памяти блока (BRAM)
Предполагаемые ресурсы индивидуально настраиваемого потока битов совпадают с пользовательским бюджетом ресурса целевого устройства, и предполагаемая эффективность совпадает с целевой производительностью сети.
dlhdl.ProcessorConfig
| estimatePerformance
| estimateResources
| getModuleProperty
| setModuleProperty