Чтобы оценить использование ресурсов пользовательской конфигурации процессора, сравните использование ресурсов пользовательской конфигурации процессора с использованием ресурсов эталонной (доставочной) конфигурации процессора битового потока. Анализ влияния пользовательских параметров процессора глубокого обучения на использование ресурсов.
Расчет использования ресурсов для пользовательской конфигурации процессора.
Создать 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 кадров в секунду (FPS) на устройстве Xilinx ZCU102 ZU4CG. Подсчет ресурсов целевого устройства:
Количество фрагментов цифрового сигнального процессора (DSP) - 240
Количество блоков оперативной памяти (BRAM) -128
Ссылка (отгрузка) zcu102_int8 конфигурация потока битов предназначена для устройства Xilinx ZCU102 ZU9EG. Счетчики ресурсов платы по умолчанию:
Количество фрагментов цифрового сигнального процессора (DSP) - 2520
Количество блоков оперативной памяти (BRAM) -912
Количество ресурсов платы по умолчанию превышает бюджет ресурсов пользователя и находится на более высоком уровне спектра затрат. Можно достичь целевой производительности и бюджета использования ресурсов, квантуя целевую сеть глубокого обучения и настраивая пользовательскую конфигурацию битового потока по умолчанию.
В этом примере создайте пользовательскую конфигурацию битового потока в соответствии с бюджетом ресурсов и требованиями к производительности.
Предпосылки
Пакет поддержки HDL Toolbox™ глубокого обучения для Xilinx FPGA и SoC
Глубокое обучение Toolbox™
Глубокое обучение HDL Toolbox™
Библиотека квантования модели набора инструментов для глубокого обучения
Загрузить предварительно обученную сеть
Для загрузки предварительно обученной сети серии, прошедшей обучение в базе данных Модифицированного национального технологического института (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 объект. Функция возвращает предполагаемую задержку уровня, задержку сети и производительность сети в кадрах в секунду (кадров/с).
Для оценки использования ресурсов zcu102_int8 bitstream, использовать 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
Расчетная производительность составляет 4314 FPS, а расчетные значения использования ресурсов:
Количество фрагментов цифрового процессора сигналов (DSP) - 768
Количество блоков оперативной памяти (BRAM) -386
Предполагаемое количество срезов DSP и использование RAM превышает целевой бюджет ресурсов устройства. Настройте конфигурацию битового потока, чтобы уменьшить использование ресурсов.
Создание пользовательской конфигурации битового потока
Для создания пользовательской конфигурации процессора используйте dlhdl.ProcessorConfig объект. Дополнительные сведения см. в разделе dlhdl.ProcessorConfig. Сведения о изменяемых параметрах конфигурации процессора см. в разделе getModuleProperty и setModuleProperty.
Чтобы уменьшить использование ресурсов для пользовательского битового потока, измените KernelDataType для conv, fc, and сумматорные модули. Изменение ConvThreadNumber для уменьшения количества фрагментов DSP. 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 объект. Функция возвращает предполагаемую задержку уровня, задержку сети и производительность сети в кадрах в секунду (кадров/с).
Для оценки использования ресурсов hPC_custom bitstream, использовать 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 FPS, а расчетные значения использования ресурсов:
Количество фрагментов цифрового сигнального процессора (DSP) - 120
Количество блоков оперативной памяти (BRAM) -108
Оценочные ресурсы настроенного битового потока соответствуют бюджету ресурсов целевого устройства пользователя, а оценочная производительность соответствует производительности целевой сети.
dlhdl.ProcessorConfig | estimatePerformance | estimateResources | getModuleProperty | setModuleProperty