Оцените эффективность нейронной сети для глубокого обучения

Чтобы уменьшать время, требуемое спроектировать пользовательскую нейронную сеть для глубокого обучения, которая соответствует требованиям к производительности, прежде, чем развернуть сеть, анализируют задержки уровня слоя. Сравните эффективность нейронной сети для глубокого обучения на пользовательских настройках процессора потоков двоичных данных к эффективности на ссылке (поставляющей) настройки процессора потоков двоичных данных.

Изучить, как использовать информацию в табличных данных из estimatePerformance функция, чтобы вычислить вашу производительность сети, смотрите Запуск Вывода Профиля.

Оцените эффективность пользовательской нейронной сети для глубокого обучения для пользовательской настройки процессора

В этом примере показано, как вычислить эффективность нейронной сети для глубокого обучения для пользовательской настройки процессора.

  1. Создайте файл в своей текущей рабочей папке под названием 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;
  2. Создайте dlhdl.ProcessorConfig объект.

    hPC = dlhdl.ProcessorConfig;
  3. Вызовите 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"
                            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: 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'
5 Memory Regions created.



              Deep Learning Processor Estimator Performance Results

                   LastFrameLatency(cycles)   LastFrameLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                   22576184                  0.10262                       1           22576184              9.7
    ____conv1              2165372                  0.00984 
    ____pool1               646226                  0.00294 
    ____res2a_branch2a      966221                  0.00439 
    ____res2a_branch2b      966221                  0.00439 
    ____res2b_branch2a      966221                  0.00439 
    ____res2b_branch2b      966221                  0.00439 
    ____res3a_branch2a      757716                  0.00344 
    ____res3a_branch2b      919117                  0.00418 
    ____res3a_branch1       540749                  0.00246 
    ____res3b_branch2a      919117                  0.00418 
    ____res3b_branch2b      919117                  0.00418 
    ____res4a_branch2a      509261                  0.00231 
    ____res4a_branch2b      905421                  0.00412 
    ____res4a_branch1       509261                  0.00231 
    ____res4b_branch2a      905421                  0.00412 
    ____res4b_branch2b      905421                  0.00412 
    ____res5a_branch2a     1013837                  0.00461 
    ____res5a_branch2b     1939661                  0.00882 
    ____res5a_branch1      1013837                  0.00461 
    ____res5b_branch2a     1939661                  0.00882 
    ____res5b_branch2b     1939661                  0.00882 
    ____pool5                54594                  0.00025 
    ____fc1000              207850                  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"
                            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: ''

Оцените эффективность 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'
5 Memory Regions created.



              Deep Learning Processor Estimator Performance Results

                   LastFrameLatency(cycles)   LastFrameLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                   22575683                  0.11288                       1           22575683              8.9
    ____conv1              2165372                  0.01083 
    ____pool1               646226                  0.00323 
    ____res2a_branch2a      966221                  0.00483 
    ____res2a_branch2b      966221                  0.00483 
    ____res2b_branch2a      966221                  0.00483 
    ____res2b_branch2b      966221                  0.00483 
    ____res3a_branch2a      757716                  0.00379 
    ____res3a_branch2b      919117                  0.00460 
    ____res3a_branch1       540749                  0.00270 
    ____res3b_branch2a      919117                  0.00460 
    ____res3b_branch2b      919117                  0.00460 
    ____res4a_branch2a      509261                  0.00255 
    ____res4a_branch2b      905421                  0.00453 
    ____res4a_branch1       509261                  0.00255 
    ____res4b_branch2a      905421                  0.00453 
    ____res4b_branch2b      905421                  0.00453 
    ____res5a_branch2a     1013837                  0.00507 
    ____res5a_branch2b     1939661                  0.00970 
    ____res5a_branch1      1013837                  0.00507 
    ____res5b_branch2a     1939661                  0.00970 
    ____res5b_branch2b     1939661                  0.00970 
    ____pool5                54594                  0.00027 
    ____fc1000              207349                  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"
                            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: 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'
5 Memory Regions created.



              Deep Learning Processor Estimator Performance Results

                   LastFrameLatency(cycles)   LastFrameLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                   22576184                  0.10262                       1           22576184              9.7
    ____conv1              2165372                  0.00984 
    ____pool1               646226                  0.00294 
    ____res2a_branch2a      966221                  0.00439 
    ____res2a_branch2b      966221                  0.00439 
    ____res2b_branch2a      966221                  0.00439 
    ____res2b_branch2b      966221                  0.00439 
    ____res3a_branch2a      757716                  0.00344 
    ____res3a_branch2b      919117                  0.00418 
    ____res3a_branch1       540749                  0.00246 
    ____res3b_branch2a      919117                  0.00418 
    ____res3b_branch2b      919117                  0.00418 
    ____res4a_branch2a      509261                  0.00231 
    ____res4a_branch2b      905421                  0.00412 
    ____res4a_branch1       509261                  0.00231 
    ____res4b_branch2a      905421                  0.00412 
    ____res4b_branch2b      905421                  0.00412 
    ____res5a_branch2a     1013837                  0.00461 
    ____res5a_branch2b     1939661                  0.00882 
    ____res5a_branch1      1013837                  0.00461 
    ____res5b_branch2a     1939661                  0.00882 
    ____res5b_branch2b     1939661                  0.00882 
    ____pool5                54594                  0.00025 
    ____fc1000              207850                  0.00094 
 * The clock frequency of the DL processor is: 220MHz

Смотрите также

| | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте