Чтобы уменьшать время, требуемое спроектировать пользовательскую нейронную сеть для глубокого обучения, которая соответствует требованиям к производительности, прежде, чем развернуть сеть, анализируют задержки уровня слоя. Сравните эффективность нейронной сети для глубокого обучения на пользовательских настройках процессора потоков двоичных данных к эффективности на ссылке (поставляющей) настройки процессора потоков двоичных данных.
Изучить, как использовать информацию в табличных данных из estimatePerformance
функция, чтобы вычислить вашу производительность сети, смотрите Запуск Вывода Профиля.
В этом примере показано, как вычислить эффективность нейронной сети для глубокого обучения для пользовательской настройки процессора.
Создайте файл в своей текущей рабочей папке под названием getLogoNetwork.m
. В файле, введите:
function net = getLogoNetwork() if ~isfile('LogoNet.mat') url = 'https://www.mathworks.com/supportfiles/gpucoder/cnn_models/logo_detection/LogoNet.mat'; websave('LogoNet.mat',url); end data = load('LogoNet.mat'); net = data.convnet; end
Вызовите функцию и сохраните результат в snet
.
snet = getLogoNetwork;
Создайте dlhdl.ProcessorConfig
объект.
hPC = dlhdl.ProcessorConfig;
Вызовите estimatePerformance
с snet
получать задержки уровня слоя и эффективность для сети LogoNet.
hPC.estimatePerformance(snet)
3 Memory Regions created. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 39853460 0.19927 1 39853460 5.0 conv_1 6825287 0.03413 maxpool_1 3755088 0.01878 conv_2 10440701 0.05220 maxpool_2 1447840 0.00724 conv_3 9393397 0.04697 maxpool_3 1765856 0.00883 conv_4 1770484 0.00885 maxpool_4 28098 0.00014 fc_1 2644884 0.01322 fc_2 1692532 0.00846 fc_3 89293 0.00045 * The clock frequency of the DL processor is: 200MHz
Узнать о параметрах и значениях, возвращенных estimatePerformance
, смотрите.
Протестируйте эффективности в сравнении с эталоном нейронной сети для глубокого обучения на пользовательской настройке потока битов путем сравнения его с эффективностью на ссылке (поставляющей) настройку потока битов. Используйте результаты сравнения настроить ваши пользовательские параметры процессора глубокого обучения, чтобы достигнуть оптимальной эффективности.
В этом примере сравнивают эффективность сети ResNet-18 на zcu102_single
настройка потока битов к эффективности на пользовательской настройке потока битов по умолчанию.
Необходимые условия
Пакет поддержки Deep Learning HDL Toolbox™ для FPGA Xilinx и SoC
Deep Learning Toolbox™
Deep Learning HDL Toolbox™
Модель Deep Learning Toolbox для сети ResNet-18
Загрузите предварительно обученную сеть
Загрузите предварительно обученную сеть.
snet = resnet18;
Получите zcu102_single Bitstream Configuration
Получать zcu102_single
настройка потока битов, используйте dlhdl.ProcessorConfig
объект. Для получения дополнительной информации смотрите dlhdl.ProcessorConfig
. Чтобы узнать о модифицируемых параметрах настройки процессора, смотрите getModuleProperty
и setModuleProperty
.
hPC_shipping = dlhdl.ProcessorConfig('Bitstream',"zcu102_single")
hPC_shipping = 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: 220 SynthesisTool: 'Xilinx Vivado' ReferenceDesign: 'AXI-Stream DDR Memory Access : 3-AXIM' SynthesisToolChipFamily: 'Zynq UltraScale+' SynthesisToolDeviceName: 'xczu9eg-ffvb1156-2-e' SynthesisToolPackageName: '' SynthesisToolSpeedValue: ''
Оцените эффективность ResNet-18 для zcu102_single
Настройка потока битов
К estimate
эффективность сети ResNet-18 DAG, используйте estimatePerformance
функция dlhdl.ProcessorConfig
объект. Функция возвращает предполагаемую задержку слоя, сетевую задержку и производительность сети в кадрах в секунду (Frames/s).
hPC_shipping.estimatePerformance(snet)
### Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer' ### Notice: The layer 'data' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software. ### Notice: The layer 'ClassificationLayer_predictions' with type 'nnet.cnn.layer.ClassificationOutputLayer' is implemented in software. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 23634966 0.10743 1 23634966 9.3 ____conv1 2165372 0.00984 ____pool1 646226 0.00294 ____res2a_branch2a 966221 0.00439 ____res2a_branch2b 966221 0.00439 ____res2a 210750 0.00096 ____res2b_branch2a 966221 0.00439 ____res2b_branch2b 966221 0.00439 ____res2b 210750 0.00096 ____res3a_branch1 540749 0.00246 ____res3a_branch2a 763860 0.00347 ____res3a_branch2b 919117 0.00418 ____res3a 105404 0.00048 ____res3b_branch2a 919117 0.00418 ____res3b_branch2b 919117 0.00418 ____res3b 105404 0.00048 ____res4a_branch1 509261 0.00231 ____res4a_branch2a 509261 0.00231 ____res4a_branch2b 905421 0.00412 ____res4a 52724 0.00024 ____res4b_branch2a 905421 0.00412 ____res4b_branch2b 905421 0.00412 ____res4b 52724 0.00024 ____res5a_branch1 1046605 0.00476 ____res5a_branch2a 1046605 0.00476 ____res5a_branch2b 2005197 0.00911 ____res5a 26368 0.00012 ____res5b_branch2a 2005197 0.00911 ____res5b_branch2b 2005197 0.00911 ____res5b 26368 0.00012 ____pool5 54594 0.00025 ____fc1000 207852 0.00094 * The clock frequency of the DL processor is: 220MHz
Создайте пользовательскую настройку процессора
Чтобы создать пользовательскую настройку процессора, используйте dlhdl.ProcessorConfig
объект. Для получения дополнительной информации смотрите dlhdl.ProcessorConfig
. Чтобы узнать о модифицируемых параметрах настройки процессора, смотрите getModuleProperty
и setModuleProperty
.
hPC_custom = dlhdl.ProcessorConfig
hPC_custom = 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: ''
Оцените эффективность ResNet-18 для пользовательской настройки потока битов
К estimate
эффективность сети ResNet-18 DAG, используйте estimatePerformance
функция dlhdl.ProcessorConfig
объект. Функция возвращает предполагаемую задержку слоя, сетевую задержку и производительность сети в кадрах в секунду (Frames/s).
hPC_custom.estimatePerformance(snet)
### Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer' ### Notice: The layer 'data' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software. ### Notice: The layer 'ClassificationLayer_predictions' with type 'nnet.cnn.layer.ClassificationOutputLayer' is implemented in software. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 21219873 0.10610 1 21219873 9.4 ____conv1 2165372 0.01083 ____pool1 646226 0.00323 ____res2a_branch2a 966221 0.00483 ____res2a_branch2b 966221 0.00483 ____res2a 210750 0.00105 ____res2b_branch2a 966221 0.00483 ____res2b_branch2b 966221 0.00483 ____res2b 210750 0.00105 ____res3a_branch1 540749 0.00270 ____res3a_branch2a 708564 0.00354 ____res3a_branch2b 919117 0.00460 ____res3a 105404 0.00053 ____res3b_branch2a 919117 0.00460 ____res3b_branch2b 919117 0.00460 ____res3b 105404 0.00053 ____res4a_branch1 509261 0.00255 ____res4a_branch2a 509261 0.00255 ____res4a_branch2b 905421 0.00453 ____res4a 52724 0.00026 ____res4b_branch2a 905421 0.00453 ____res4b_branch2b 905421 0.00453 ____res4b 52724 0.00026 ____res5a_branch1 751693 0.00376 ____res5a_branch2a 751693 0.00376 ____res5a_branch2b 1415373 0.00708 ____res5a 26368 0.00013 ____res5b_branch2a 1415373 0.00708 ____res5b_branch2b 1415373 0.00708 ____res5b 26368 0.00013 ____pool5 54594 0.00027 ____fc1000 207351 0.00104 * The clock frequency of the DL processor is: 200MHz
Эффективность сети ResNet-18 на пользовательской настройке потока битов ниже, чем эффективность на zcu102_single
настройка потока битов. Различие между пользовательской настройкой потока битов и zcu102_single
настройка потока битов является целевой частотой.
Измените пользовательскую настройку процессора
Измените пользовательскую настройку процессора, чтобы увеличить целевую частоту. Чтобы узнать о модифицируемых параметрах настройки процессора, смотрите dlhdl.ProcessorConfig
.
hPC_custom.TargetFrequency = 220; hPC_custom
hPC_custom = 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: 220 SynthesisTool: 'Xilinx Vivado' ReferenceDesign: 'AXI-Stream DDR Memory Access : 3-AXIM' SynthesisToolChipFamily: 'Zynq UltraScale+' SynthesisToolDeviceName: 'xczu9eg-ffvb1156-2-e' SynthesisToolPackageName: '' SynthesisToolSpeedValue: ''
Повторно оцените эффективность ResNet-18 для модифицированной пользовательской настройки потока битов
Оцените эффективность сети ResNet-18 DAG на модифицированной пользовательской настройке потока битов.
hPC_custom.estimatePerformance(snet)
### Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer' ### Notice: The layer 'data' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software. ### Notice: The layer 'ClassificationLayer_predictions' with type 'nnet.cnn.layer.ClassificationOutputLayer' is implemented in software. Deep Learning Processor Estimator Performance Results LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 23634966 0.10743 1 23634966 9.3 ____conv1 2165372 0.00984 ____pool1 646226 0.00294 ____res2a_branch2a 966221 0.00439 ____res2a_branch2b 966221 0.00439 ____res2a 210750 0.00096 ____res2b_branch2a 966221 0.00439 ____res2b_branch2b 966221 0.00439 ____res2b 210750 0.00096 ____res3a_branch1 540749 0.00246 ____res3a_branch2a 763860 0.00347 ____res3a_branch2b 919117 0.00418 ____res3a 105404 0.00048 ____res3b_branch2a 919117 0.00418 ____res3b_branch2b 919117 0.00418 ____res3b 105404 0.00048 ____res4a_branch1 509261 0.00231 ____res4a_branch2a 509261 0.00231 ____res4a_branch2b 905421 0.00412 ____res4a 52724 0.00024 ____res4b_branch2a 905421 0.00412 ____res4b_branch2b 905421 0.00412 ____res4b 52724 0.00024 ____res5a_branch1 1046605 0.00476 ____res5a_branch2a 1046605 0.00476 ____res5a_branch2b 2005197 0.00911 ____res5a 26368 0.00012 ____res5b_branch2a 2005197 0.00911 ____res5b_branch2b 2005197 0.00911 ____res5b 26368 0.00012 ____pool5 54594 0.00025 ____fc1000 207852 0.00094 * The clock frequency of the DL processor is: 220MHz
dlhdl.ProcessorConfig
| getModuleProperty
| setModuleProperty
| estimatePerformance
| estimateResources