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

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

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

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

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

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

Необходимые условия

  • Пакет поддержки Deep Learning HDL Toolbox™ для Xilinx FPGA и SoC

  • Deep Learning Toolbox™

  • Deep Learning HDL Toolbox™

  • Deep Learning Toolbox модель для ResNet-18 сети

Загрузка предварительно обученной сети

Загрузите предварительно обученную сеть.

snet = resnet18;

Извлечение zcu102_single Bitstream Configuration

Как извлечь zcu102_single bitstream строения, используйте 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

См. также

| | | |

Похожие темы