exponenta event banner

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

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

Оценка использования ресурсов

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

  1. Создать 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: ''
  2. Звонить 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

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

См. также

| | | |

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