exponenta event banner

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

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

Чтобы узнать, как использовать информацию в данных таблицы из 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, см..

Оцените производительность сети Deep Learning Network в пользовательской конфигурации процессора

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

В этом примере сравните производительность сети ResNet-18 в zcu102_single конфигурации битового потока до производительности в пользовательской конфигурации битового потока по умолчанию.

Предпосылки

  • Пакет поддержки HDL Toolbox™ глубокого обучения для Xilinx FPGA и SoC

  • Глубокое обучение Toolbox™

  • Глубокое обучение HDL 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 объект. Функция возвращает предполагаемую задержку уровня, задержку сети и производительность сети в кадрах в секунду (кадров/с).

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 объект. Функция возвращает предполагаемую задержку уровня, задержку сети и производительность сети в кадрах в секунду (кадров/с).

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

См. также

| | | |

Связанные темы