Класс: dlhdl. Рабочий процесс
Пакет: dlhdl
Развертывание указанной нейронной сети на целевой плате FPGA
deploy программирует указанную целевую плату с битовым потоком и развертывает на ней нейронную сеть для глубокого обучения.
Примечание
Прежде чем вы запустите deploy убедитесь, что ваш хост-компьютер подключен к системной плате Intel Arria 10. Для получения дополнительной информации смотрите Хост-компьютер Подключение к платам FPGA
Развертывание VGG-19 в Intel® Arria® 10 Комплект для разработки SoC, который имеет single типы данных.
snet = vgg19; hTarget = dlhdl.Target('Intel'); hW = dlhdl.Workflow('Network', snet, 'Bitstream', 'arria10soc_single','Target',hTarget); hW.deploy
### Programming FPGA bitstream using JTAG ...
### Programming FPGA bitstream has completed successfully.
tableOut =
offset_name offset_address allocated_space
_______________________ ______________ _________________
"InputDataOffset" "0x00000000" "24.0 MB"
"OutputResultOffset" "0x01800000" "4.0 MB"
"SystemBufferOffset" "0x01c00000" "52.0 MB"
"InstructionDataOffset" "0x05000000" "20.0 MB"
"ConvWeightDataOffset" "0x06400000" "276.0 MB"
"FCWeightDataOffset" "0x17800000" "472.0 MB"
"EndOffset" "0x35000000" "Total: 848.0 MB"
### Loading weights to FC Processor.
### 4% finished, current time is 14-Jun-2020 18:31:07.
### 8% finished, current time is 14-Jun-2020 18:31:32.
### 12% finished, current time is 14-Jun-2020 18:31:58.
### 16% finished, current time is 14-Jun-2020 18:32:23.
### 20% finished, current time is 14-Jun-2020 18:32:48.
### 24% finished, current time is 14-Jun-2020 18:33:13.
### 28% finished, current time is 14-Jun-2020 18:33:39.
### 32% finished, current time is 14-Jun-2020 18:34:04.
### 36% finished, current time is 14-Jun-2020 18:34:30.
### 40% finished, current time is 14-Jun-2020 18:34:56.
### 44% finished, current time is 14-Jun-2020 18:35:21.
### 48% finished, current time is 14-Jun-2020 18:35:46.
### 52% finished, current time is 14-Jun-2020 18:36:11.
### 56% finished, current time is 14-Jun-2020 18:36:36.
### 60% finished, current time is 14-Jun-2020 18:37:02.
### 64% finished, current time is 14-Jun-2020 18:37:27.
### 68% finished, current time is 14-Jun-2020 18:37:52.
### 72% finished, current time is 14-Jun-2020 18:38:17.
### 76% finished, current time is 14-Jun-2020 18:38:43.
### 80% finished, current time is 14-Jun-2020 18:39:08.
### 84% finished, current time is 14-Jun-2020 18:39:33.
### 88% finished, current time is 14-Jun-2020 18:39:58.
### 92% finished, current time is 14-Jun-2020 18:40:23.
### 96% finished, current time is 14-Jun-2020 18:40:48.
### FC Weights loaded. Current time is 14-Jun-2020 18:41:06 deploy функция начинает программировать устройство FPGA, отображает сообщения о прогрессе и время развертывания сети.
Создайте файл в вашей текущей рабочей директории под названием getLogoNetwork.m. Введите эти линии в файл:
function net = getLogoNetwork data = getLogoData; net = data.convnet; end function data = getLogoData 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'); end
Создайте image datastore и разделите 70 процентов изображений на набор обучающих данных и 30 процентов изображений на набор данных валидации.
curDir = pwd; newDir = fullfile(matlabroot,'examples','deeplearning_shared','data','logos_dataset.zip'); copyfile(newDir,curDir); unzip('logos_dataset.zip'); imds = imageDatastore('logos_dataset', ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); [imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomized');
Создайте dlhdl.Workflow объект, квантовавший LogoNet как сетевой аргумент, zcu102_int8 как битовый поток, и hTarget в качестве целевого аргумента.
Чтобы квантовать сеть, вам нужны продукты, перечисленные в FPGA в необходимых условиях «Предпосылки рабочего процесса квантования».
% Save the pretrained SeriesNetwork object snet = getLogoNetwork; % Create a Target object and define the interface to the target board hTarget = dlhdl.Target('Xilinx','Interface','Ethernet'); % Create a Quantized Network Object dlquantObj = dlquantizer(snet,'ExecutionEnvironment','FPGA'); dlquantObj.calibrate(imdsTrain); % Create a workflow object for the SeriesNetwork and using the FPFA bitstream hW = dlhdl.Workflow('Network', dlquantObj, 'Bitstream', 'zcu102_int8','Target',hTarget);
Развертывание dlhdl.Workflow объект для целевой платы FPGA с помощью deploy способ.
% Deploy the workflow object
hW.deploy;
Когда вы вызываете deploy метод, метод возвращает:
### Programming FPGA Bitstream using Ethernet...
Downloading target FPGA device configuration over Ethernet to SD card ...
# Copied /tmp/hdlcoder_rd to /mnt/hdlcoder_rd
# Copying Bitstream hdlcoder_system.bit to /mnt/hdlcoder_rd
# Set Bitstream to hdlcoder_rd/hdlcoder_system.bit
# Copying Devicetree devicetree_dlhdl.dtb to /mnt/hdlcoder_rd
# Set Devicetree to hdlcoder_rd/devicetree_dlhdl.dtb
# Set up boot for Reference Design: 'AXI-Stream DDR Memory Access : 3-AXIM'
Downloading target FPGA device configuration over Ethernet to SD card done. The system will now reboot for persistent changes to take effect.
System is rebooting . . . . . .
### Programming the FPGA bitstream has been completed successfully.
offset_name offset_address allocated_space
_______________________ ______________ _________________
"InputDataOffset" "0x00000000" "48.0 MB"
"OutputResultOffset" "0x03000000" "4.0 MB"
"SystemBufferOffset" "0x03400000" "60.0 MB"
"InstructionDataOffset" "0x07000000" "8.0 MB"
"ConvWeightDataOffset" "0x07800000" "8.0 MB"
"FCWeightDataOffset" "0x08000000" "12.0 MB"
"EndOffset" "0x08c00000" "Total: 140.0 MB"
### Loading weights to FC Processor.
### FC Weights loaded. Current time is 12-Jun-2020 13:17:56calibrate | compile | dlquantizationOptions | dlquantizer | getBuildInfo | predict | validate