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

Разверните свою пользовательскую сеть, которая только имеет слои с выходным форматом модуля свертки, или только слои с полностью связанным выходным форматом модуля путем генерации ресурса оптимизировали пользовательский поток битов, который удовлетворяет требованиям к производительности и требованиям к ресурсам. Сгенерированное использование потока битов настройки процессора глубокого обучения по умолчанию состоит из свертки (conv), полностью связанный (ФК) и модули сумматора. Сгенерированные потоки битов по умолчанию могли превысить ваши требования использования ресурса, которые могли завысить затраты. Чтобы сгенерировать поток битов, который состоит только из слоев в вашей пользовательской нейронной сети для глубокого обучения, измените настройку процессора глубокого обучения при помощи setModuleProperty функция dlhdl.ProcessorConfig объект.

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

  • Выключите ModuleGeneration свойство для отдельных модулей в настройке процессора глубокого обучения.

  • Используйте optimizeConfigurationForNetwork функция. Функция берет объект нейронной сети для глубокого обучения в качестве входа и возвращает оптимизированную пользовательскую настройку процессора глубокого обучения.

  • Быстро проверьте использование ресурса оптимизированной настройки процессора глубокого обучения при помощи estimateResources функция.

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

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

  • Deep Learning Toolbox™

  • Deep Learning HDL Toolbox™

Создайте пользовательскую настройку процессора

Создайте пользовательскую настройку процессора. Сохраните настройку в hPC.

hPC = dlhdl.ProcessorConfig
hPC = 
                    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: ''

Оптимизируйте Настройку Процессора для Пользовательского Слоя Полностью соединенного (FC) только Сеть

Чтобы оптимизировать вашу настройку процессора, создайте пользовательский полносвязный слой только сеть. Вызовите пользовательскую сеть fcnet.

layers = [ ...
    imageInputLayer([28 28 3],'Normalization','none','Name','input')
    fullyConnectedLayer(10,'Name','fc')
    regressionLayer('Name','output')];
layers(2).Weights = rand(10,28*28*3);
layers(2).Bias = rand(10,1);
fcnet = assembleNetwork(layers);
plot(fcnet);

Получите использование ресурса для пользовательской настройки процессора по умолчанию при помощи estimateResources. Получите эффективность для пользовательской сети fcnet при помощи estimatePerformance.

hPC.estimateResources
              Deep Learning Processor Estimator Resource Results

                             DSPs          Block RAM*     LUTs(CLB/ALUT)  
                        -------------    -------------    ------------- 
Available                    2520              912           274080
                        -------------    -------------    ------------- 
DL_Processor                368( 15%)        508( 56%)     224761( 83%)
* Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
hPC.estimatePerformance(fcnet)
### Notice: The layer 'input' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software.
### Notice: The layer 'output' with type 'nnet.cnn.layer.RegressionOutputLayer' is implemented in software.


              Deep Learning Processor Estimator Performance Results

                   LastFrameLatency(cycles)   LastFrameLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                     137574                  0.00069                       1             137574           1453.8
    ____fc                  137574                  0.00069 
 * The clock frequency of the DL processor is: 200MHz

Количества ресурса целевого устройства:

  • Количество среза цифрового сигнального процессора (DSP) — 240

  • Количество оперативной памяти блока (BRAM) — 128

Предполагаемая эффективность составляет 1 454 кадра в секунду (фут в секунду). Предполагаемые количества использования ресурса:

  • Количество среза цифрового сигнального процессора (DSP) — 368

  • Количество оперативной памяти блока (BRAM) — 508

Предполагаемое количество среза DSP и использование количества BRAM превышают бюджет ресурса целевого устройства. Настройте настройку потока битов, чтобы уменьшать использование ресурса путем настройки настройки процессора.

Настройте настройку процессора при помощи ModuleGeneration Свойство

Создайте объект настройки процессора нейронной сети для глубокого обучения. Сохраните его в hPC_moduleoff. Выключите свертку и модули сумматора в пользовательской настройке процессора глубокого обучения.

hPC_moduleoff = dlhdl.ProcessorConfig;
hPC_moduleoff.setModuleProperty('conv','ModuleGeneration','off');
hPC_moduleoff.setModuleProperty('adder','ModuleGeneration','off');

Получите использование ресурса для пользовательской настройки процессора по умолчанию при помощи estimateResources. Получите эффективность для пользовательской сети fcnet при помощи estimatePerformance.

hPC_moduleoff.estimateResources
              Deep Learning Processor Estimator Resource Results

                             DSPs          Block RAM*     LUTs(CLB/ALUT)  
                        -------------    -------------    ------------- 
Available                    2520              912           274080
                        -------------    -------------    ------------- 
DL_Processor                 17(  1%)         44(  5%)      40740( 15%)
* Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
hPC_moduleoff.estimatePerformance(fcnet)
### Notice: The layer 'input' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software.
### Notice: The layer 'output' with type 'nnet.cnn.layer.RegressionOutputLayer' is implemented in software.


              Deep Learning Processor Estimator Performance Results

                   LastFrameLatency(cycles)   LastFrameLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                     137574                  0.00069                       1             137574           1453.8
    ____fc                  137574                  0.00069 
 * The clock frequency of the DL processor is: 200MHz

Количества ресурса целевого устройства:

  • Количество среза цифрового сигнального процессора (DSP) — 240

  • Количество оперативной памяти блока (BRAM) — 128

Предполагаемая эффективность составляет 1 454 кадра в секунду (фут в секунду). Предполагаемые количества использования ресурса:

  • Количество среза цифрового сигнального процессора (DSP) — 17

  • Количество оперативной памяти блока (BRAM) — 44

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

Настройте настройку процессора при помощи optimizeConfigurationForNetwork

Создайте объект настройки процессора нейронной сети для глубокого обучения. Сохраните его в hPC_optimized. Сгенерируйте оптимизированную настройку процессора глубокого обучения при помощи optimizeConfigurationForNetwork функция.

hPC_optimized = dlhdl.ProcessorConfig;
hPC_optimized.optimizeConfigurationForNetwork(fcnet);
### Optimizing processor configuration for deep learning network begin.
### Note: Processing module "conv" property "ModuleGeneration" changed from "on" to "off" because there is no conv layer in the deep learning network.
### Note: Processing module "fc" property "InputMemorySize" changed from "25088" to "2352".
### Note: Processing module "fc" property "OutputMemorySize" changed from "4096" to "128".
### Note: Processing module "adder" property "ModuleGeneration" changed from "on" to "off" because there is no adder layer in the deep learning network.

                    Processing Module "conv"
                            ModuleGeneration: 'off'

                      Processing Module "fc"
                            ModuleGeneration: 'on'
                      SoftmaxBlockGeneration: 'off'
                              FCThreadNumber: 4
                             InputMemorySize: 2352
                            OutputMemorySize: 128

                   Processing Module "adder"
                            ModuleGeneration: 'off'

              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: ''

### Optimizing processor configuration for deep learning network complete.

Получите использование ресурса для пользовательской настройки процессора по умолчанию при помощи estimateResources. Получите эффективность для пользовательского network fcnet при помощи estimatePerformance.

hPC_optimized.estimateResources
              Deep Learning Processor Estimator Resource Results

                             DSPs          Block RAM*     LUTs(CLB/ALUT)  
                        -------------    -------------    ------------- 
Available                    2520              912           274080
                        -------------    -------------    ------------- 
DL_Processor                 17(  1%)         20(  3%)      40740( 15%)
* Block RAM represents Block RAM tiles in Xilinx devices and Block RAM bits in Intel devices
hPC_optimized.estimatePerformance(fcnet)
### Notice: The layer 'input' with type 'nnet.cnn.layer.ImageInputLayer' is implemented in software.
### Notice: The layer 'output' with type 'nnet.cnn.layer.RegressionOutputLayer' is implemented in software.


              Deep Learning Processor Estimator Performance Results

                   LastFrameLatency(cycles)   LastFrameLatency(seconds)       FramesNum      Total Latency     Frames/s
                         -------------             -------------              ---------        ---------       ---------
Network                     137574                  0.00069                       1             137574           1453.8
    ____fc                  137574                  0.00069 
 * The clock frequency of the DL processor is: 200MHz

Количества ресурса целевого устройства:

  • Количество среза цифрового сигнального процессора (DSP) — 240

  • Количество оперативной памяти блока (BRAM) — 128

Предполагаемая эффективность составляет 1 454 кадра в секунду (фут в секунду). Предполагаемые количества использования ресурса:

  • Количество среза цифрового сигнального процессора (DSP) — 17

  • Количество оперативной памяти блока (BRAM) — 20

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

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

Сгенерируйте пользовательский поток битов с помощью настройки процессора, которая совпадает требованиями к производительности и требованиями к ресурсам.

Развернуть fcnet использование потока битов сгенерировано при помощи ModuleOff свойство, не комментирует эта строка кода:

%   dlhdl.buildProcessor(hPC_moduleoff)

Развернуть fcnet использование потока битов сгенерировано при помощи optimizeConfigurationForNetwork функция, не комментирует эта строка кода:

%   dlhdl.buildProcessor(hPC_optimized)

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

| | | |

Похожие темы