exponenta event banner

Использовать выходные данные компилятора для системной интеграции

compile способ:

  • Создает карту адресов внешней памяти.

  • Оптимизация сетей для развертывания.

  • Разбивает сети на ветви для развертывания.

Для интеграции созданного IP-ядра процессора глубокого обучения в эталонный проект системы используйте compile выход способа.

Карта адресов внешней памяти

При создании dlhdl.Workflow объект и используйте compile формируют внешнюю карту адресов памяти. compile метод генерирует эти смещения адресов на основе сети глубокого обучения и целевой платы: Используйте карту адресов для:

  • Загрузите сетевые входы.

  • Загрузите инструкции IP-ядра процессора глубокого обучения.

  • Загрузка весов и смещений сети.

  • Извлеките выходные результаты.

compile метод генерирует следующие смещения адреса:

  • InputDataOffset - смещение адреса, в которое загружаются входные изображения.

  • OutputResultOffset - Выходные результаты записываются, начиная с этого смещения адреса.

  • SchedulerDataOffset - смещение адреса, в которое записываются данные активации во время выполнения планировщика. Данные активации во время выполнения включают в себя информацию, такую как передача обслуживания между различными ядрами процессора глубокого обучения, инструкции для различных ядер процессора глубокого обучения и так далее.

  • SystemBufferOffset - Не используйте адрес памяти, начинающийся с этого смещения и заканчивающийся в начале InstructionDataOffset.

  • InstructionDataOffset - Все команды конфигурации уровня (LC) записываются, начиная с этого смещения адреса.

  • ConvWeightDataOffset - Все веса модуля обработки конвейера записываются, начиная с этого смещения адреса.

  • FCWeightDataOffset - Все веса полностью подключенных (FC) модулей обработки записываются, начиная с этого смещения адреса.

  • EndOffset - смещение конца памяти DDR для сформированного IP процессора глубокого обучения.

В примере показана внешняя карта памяти, созданная для сети распознавания ResNet-18, которая использует zcu102_single битовый поток. См. раздел Компиляция сетевого объекта dagnet.

Оптимизация компилятора

compile функция оптимизирует сети для развертывания путем определения сетевых уровней, которые можно выполнить за одну операцию на оборудовании, а затем объединить их вместе. compile функция выполняет следующие слияния слоев и оптимизации:

  • Уровень нормализации партий (batchNormalizationLayer) и 2-D слой свертки (convolution2dLayer).

  • 2-D нулевой слой заполнения (nnet.keras.layer.ZeroPadding2dLayer) и 2-D слой свертки (convolution2dLayer).

  • 2-D нулевой слой заполнения (nnet.keras.layer.ZeroPadding2dLayer) и 2-й макс. слой опроса (maxPooling2dLayer).

Этот выходной код является примером оптимизации компилятора в журнале компилятора.

Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer'

Компиляции на уровне ног

compile функция разбивает сеть на ветви во время компиляции. Ветвь - это подмножество сети, которое можно преобразовать в последовательную сеть. compile функция группирует ветви на основе формата вывода слоев. Формат вывода уровня определяется как формат данных модуля процессора глубокого обучения, который обрабатывает этот уровень. Формат вывода слоя - conv, fc или сумматор. Например, на этом изображении compile функция группирует все слои в Leg 2 вместе, поскольку они имеют формат вывода конвейера. Сведения о форматах вывода слоев см. в разделе Поддерживаемые слои.

ResNet-18 leg grouping

На этом рисунке показаны ветви сети ResNet-18, созданной compile функции и тех ветвей, которые выделены на архитектуре ResNet-18 уровня.

ResNet-18 architecture and compiler legs

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