-
Notifications
You must be signed in to change notification settings - Fork 38
Manual
This guide contains a detailed description of the procedure for launching the main scenario of the DLI benchmarking system on remote computing nodes in Docker containers. The example uses Intel Distribution of OpenVINO toolkit 2022.1 to infer deep models. Note that these instructions are also valid for other supported frameworks.
This section contains a step-by-step description of the procedure for deploying
a DLI system on remote computing nodes using the deployment module included
in the system. At the moment, the DLI system supports two modes for launching experiments:
experiments will be launched directly in the current environment or in the corresponding
Docker container. If the system has already been deployed, you can skip this step.
Вручную развернуть окружение на вычислительных узлах. Для этого необходимо пошагово выполнить команды из соответствующих Docker-файлов, которые хранятся в директории docker, на каждом вычислительном узле. После чего, на каждой машине будет развернута система DLI в текущем окружении.
-
Подготовить Docker-образ системы, который будет удаленно развернут на вычислительных узлах. Для этого необходимо перейти в директорию с Docker-файлами и собрать необходимый образ, используя инструкцию, которая находится в соответствующей директории docker и указав все необходимые переменные
ARGиз соответствующего Docker-файла. Сохранить образ в архив, который будет скопирован на необходимые удаленные узлы.docker build -t openvino:2022.1 --build-arg DATASET_DOWNLOAD_LINK=<path> docker save openvino:2022.1 > openvino_2022.1.tar
-
Подготовить удаленные вычислительные узлы для запуска массовых экспериментов. Для удобства предположим, что на каждой машине с пользователем
itmmсоздается директория/home/itmm/validation, в которой содержатся все необходимые файлы для работы: репозиторий системы DLI и репозиторий OpenVINO™ Toolkit - Open Model Zoo. Помимо клонирования репозиториев в директории следует создать отдельную папкуresults, в которой в будущем будут хранится файлы с результатами экспериментов. Кроме того, необходимо заранее на удаленных машинах примонтировать расшаренные директории с моделями и наборами данных. Это можно сделать с помощью следующих команд:cd ~ mkdir validation && cd validation git clone https://github.com/itlab-vision/dl-benchmark.git --depth 1 git clone https://github.com/openvinotoolkit/open_model_zoo.git --recursive --branch 2022.1.0 --single-branch --depth 1 mkdir results sudo mount -t cifs -o username=itmm,password=itmm //10.0.32.14/linuxshare /mnt
Далее считаем, что по адресу
/mntсодержатся новые директории:/mnt/models/- директория с моделями и/mnt/datasets- директория с наборами данных для запуска модуля оценки качества работы моделей. -
Подготовить конфигурационный файл для модуля удаленного развертывания системы. В текущем эксперименте предполагается наличие трех вычислительных узлов. Для каждого узла имеется IP-адрес (тег
IP), логин и пароль для доступа к узлу (тегиLoginиPassword), ОС (тегOS), название рабочей директории с исходными кодами системы бенчмаркинга DLI (тегDownloadFolder) и пути до расшаренных директорий с тестовыми наборами данных и моделями (тегиDatasetFolderиModelFolder). Пример заполненного конфигурационного файла представлен ниже.<?xml version="1.0" encoding="utf-8" ?> <Computers> <Computer> <IP>10.0.32.12</IP> <Login>itmm</Login> <Password>itmm</Password> <OS>Linux</OS> <DownloadFolder>/home/itmm/validation</DownloadFolder> <DatasetFolder>/mnt/datasets</DatasetFolder> <ModelFolder>/mnt/models</ModelFolder> </Computer> <Computer> <IP>10.0.32.13</IP> <Login>itmm</Login> <Password>itmm</Password> <OS>Linux</OS> <DownloadFolder>/home/itmm/validation</DownloadFolder> <DatasetFolder>/mnt/datasets</DatasetFolder> <ModelFolder>/mnt/models</ModelFolder> </Computer> <Computer> <IP>10.0.32.16</IP> <Login>itmm</Login> <Password>itmm</Password> <OS>Linux</OS> <DownloadFolder>/home/itmm/validation</DownloadFolder> <DatasetFolder>/mnt/datasets</DatasetFolder> <ModelFolder>/mnt/models</ModelFolder> </Computer> </Computers>
-
Запустить модуль автоматического развертывания системы, используя руководство.
python3 deploy.py -s 10.0.32.15 -l itmm -p itmm \ -i ~/dl-benchmark/docker/OpenVINO_DLDT/openvino_22.1.tar \ -d /home/itmm/ftp \ -n OpenVINO_DLDT \ --machine_list deploy_config.xml \ --project_folder /home/itmm/validation/dl-benchmarkСкрипт копирует архив с Docker-образом на FTP-сервер (в данном примере IP-адрес FTP-сервера - 10.0.32.15, после чего уже с FTP-сервера скрипт копирует его на все удаленные узлы, описанные в соответствующем конфигурационном файле, а после развертывает их.
Для каждого узла можно создать свой конфигурационный файл для запуска экспериментов производительности.
Это удобно, когда на одном из них, например, нет GPU (Xeon), и соответственно на такой машине есть смысл запускать
эксперименты только на CPU. Создадим конфигурационные файлы, используя руководство. Для примера запустим
эксперимент для классической модели alexnet в latency-режиме на всех трех машинах.
Отметим, что для валидации производительности моделей используется отдельный закрытый репозиторий с данными itlab-vision-dl-benchmark-data,
клонирование которого происходит в процессе развертывания системы в директорию /tmp.
<?xml version="1.0" encoding="utf-8"?>
<Tests>
<Test>
<Model>
<Task>classification</Task>
<Name>alexnet</Name>
<Precision>FP32</Precision>
<SourceFramework>Caffe</SourceFramework>
<ModelPath>/media/models/public/alexnet/FP32/alexnet.xml</ModelPath>
<WeightsPath>/media/models/public/alexnet/FP32/alexnet.bin</WeightsPath>
</Model>
<Dataset>
<Name>ImageNET</Name>
<Path>/tmp/itlab-vision-dl-benchmark-data/Datasets/ImageNET/</Path>
</Dataset>
<FrameworkIndependent>
<InferenceFramework>OpenVINO DLDT</InferenceFramework>
<BatchSize>1</BatchSize>
<Device>CPU</Device>
<IterationCount>1000</IterationCount>
<TestTimeLimit>180</TestTimeLimit>
</FrameworkIndependent>
<FrameworkDependent>
<Mode>sync</Mode>
<Extension></Extension>
<AsyncRequestCount></AsyncRequestCount>
<ThreadCount></ThreadCount>
<StreamCount></StreamCount>
<!-- The following options may be missing -->
<Frontend></Frontend>
<InputShape></InputShape>
<Layout></Layout>
<Mean></Mean>
<InputScale></InputScale>
</FrameworkDependent>
</Test>
</Tests>Заметим, что в конфигурационных файлах пути прописываются относительно Docker-контейнера в случае развертывания системы
в Docker-окружении и относительно текущего окружения в случае развертывания непосредственно на текущей машине.
Конфигурационные файлы предварительно копируются на FTP-сервер, в процессе развертывания системы скрипт
копирует конфигурации тестов на соответствующие удаленные машины.
Для определенности в примере на FTP-сервере конфигурационные файлы сохраняются по адресу /home/itmm/ftp/remote.
scp benchmark_config_i3.xml [email protected]:/home/itmm/ftp/remote
scp benchmark_config_i7.xml [email protected]:/home/itmm/ftp/remote
scp benchmark_config_tower.xml [email protected]:/home/itmm/ftp/remoteАналогично создаем конфигурационные файлы для модуля проверки качества работы глубоких моделей.
В качестве примера возьмем ту же модель alexnet, что и для системы бенчмаркинга. Заметим, что
путь до модели указывается относительно окружения Docker-контейнера в случае развертывания системы
в Docker-окружении и относительно текущего окружения в случае развертывания непосредственно на текущей машине,
а путь до конфигурационного файла для инструмента проверки качества модели всегда описывается относительно хост-машины.
<?xml version="1.0" encoding="utf-8"?>
<Tests>
<Test>
<Model>
<Task>classification</Task>
<Name>alexnet</Name>
<Precision>FP32</Precision>
<SourceFramework>Caffe</SourceFramework>
<Directory>/media/models/public/alexnet/FP32</Directory>
</Model>
<Parameters>
<InferenceFramework>OpenVINO DLDT</InferenceFramework>
<Device>CPU</Device>
<Config>/home/itmm/validation/open_model_zoo/tools/accuracy_checker/configs/alexnet.yml</Config>
</Parameters>
</Test>
</Tests>Конфигурационный файл копируется на FTP-сервер, впоследствии скрипт развертывания перенесет
конфигурации тестов на соответствующие удаленные машины. Допустим, что в текущем примере
конфигурационные файлы на FTP-сервере сохраняются по адресу /home/itmm/ftp/remote.
scp accuracy_checker_config_i3.xml [email protected]:/home/itmm/ftp/remote
scp accuracy_checker_config_i7.xml [email protected]:/home/itmm/ftp/remote
scp accuracy_checker_config_tower.xml [email protected]:/home/itmm/ftp/remoteУдаленный запуск экспериментов включает следующую последовательность действий.
-
Подготовить конфигурационный файл
config.xmlдля модуля удаленного запуска экспериментов, используя руководство, и сохранить его на FTP-сервере по адресу/home/itmm/ftp/remote/. Пример ниже представлен для случая, когда система развернута в Docker-контейнерах. В случае развертывания системы DLI непосредственно на хост-машинах необходимо везде заменить значение тэга<Executor>docker_container</Executor>на<Executor>host_machine</Executor>.<?xml version="1.0" encoding="utf-8" ?> <Computers> <Computer> <IP>10.0.32.16</IP> <Login>itmm</Login> <Password>itmm</Password> <OS>Linux</OS> <FTPClientPath>/home/itmm/validation/dl-benchmark/src/remote_control/ftp_client.py</FTPClientPath> <Benchmark> <Config>/home/itmm/ftp/remote/benchmark_config_i3.xml</Config> <Executor>docker_container</Executor> <LogFile>/home/itmm/validation/log_bench.txt</LogFile> <ResultFile>/home/itmm/validation/result_bench_table.csv</ResultFile> </Benchmark> <AccuracyChecker> <Config>/home/itmm/ftp/remote/accuracy_checker_config_i3.xml</Config> <Executor>docker_container</Executor> <DatasetPath>/media/datasets/</DatasetPath> <DefinitionPath>/home/itmm/validation/open_model_zoo/tools/accuracy_checker/dataset_definitions.yml</DefinitionPath> <LogFile>/home/itmm/validation/log_ac.txt</LogFile> <ResultFile>/home/itmm/validation/result_ac_table.csv</ResultFile> </AccuracyChecker> </Computer> <Computer> <IP>10.0.32.12</IP> <Login>itmm</Login> <Password>itmm</Password> <OS>Linux</OS> <FTPClientPath>/home/itmm/validation/dl-benchmark/src/remote_control/ftp_client.py</FTPClientPath> <Benchmark> <Config>/home/itmm/ftp/remote/benchmark_config_i7.xml</Config> <Executor>docker_container</Executor> <LogFile>/home/itmm/validation/log_bench.txt</LogFile> <ResultFile>/home/itmm/validation/result_bench_table.csv</ResultFile> </Benchmark> <AccuracyChecker> <Config>/home/itmm/ftp/remote/accuracy_checker_config_i7.xml</Config> <Executor>docker_container</Executor> <DatasetPath>/media/datasets/</DatasetPath> <DefinitionPath>/home/itmm/validation/open_model_zoo/tools/accuracy_checker/dataset_definitions.yml</DefinitionPath> <LogFile>/home/itmm/validation/log_ac.txt</LogFile> <ResultFile>/home/itmm/validation/result_ac_table.csv</ResultFile> </AccuracyChecker> </Computer> <Computer> <IP>10.0.32.13</IP> <Login>itmm</Login> <Password>itmm</Password> <OS>Linux</OS> <FTPClientPath>/home/itmm/validation/dl-benchmark/src/remote_control/ftp_client.py</FTPClientPath> <Benchmark> <Config>/home/itmm/ftp/remote/benchmark_config_tower.xml</Config> <Executor>docker_container</Executor> <LogFile>/home/itmm/validation/log_bench.txt</LogFile> <ResultFile>/home/itmm/validation/result_bench_table.csv</ResultFile> </Benchmark> <AccuracyChecker> <Config>/home/itmm/ftp/remote/accuracy_checker_config_tower.xml</Config> <Executor>docker_container</Executor> <DatasetPath>/media/datasets/</DatasetPath> <DefinitionPath>/home/itmm/validation/open_model_zoo/tools/accuracy_checker/dataset_definitions.yml</DefinitionPath> <LogFile>/home/itmm/validation/log_ac.txt</LogFile> <ResultFile>/home/itmm/validation/result_ac_table.csv</ResultFile> </AccuracyChecker> </Computer> </Computers>
-
Запустить эксперименты удаленно. Для этого необходимо воспользоваться утилитой
screenдля Linux, которая позволяет создавать фоновые процессы. В результате ее использования можно запустить скрипт с массовыми экспериментами, а после выключить терминал.screen -S validation
В результате выполнения указанной команды создается новое окно
validation, в котором можно выполнить удаленный запуск. Теперь для запуска необходимо прописать следующую команду на FTP-сервере:python3 remote_start.py -c /home/itmm/ftp/remote/config.xml \ -s 10.0.32.15 -l itmm -p itmm \ -br benchmark_results.csv \ -acr accuracy_checker_results.csv \ --ftp_dir /home/itmm/ftp/resultsТаким образом, скрипт пройдется по всем описанным машинам из конфигурационного файла
/home/itmm/ftp/remote/config.xml, скопирует соответствующие конфигурационные файлы с описанием экспериментов и запустит их. Для перехода из данной сессии необходимо нажать следующие клавиши:CTRL + A + D. Чтобы вернуться к нашей сессии с запуском экспериментов и узнать статус, необходимо прописать следующую команду:screen -R validation
По окончании работы в screen-сессии validation должны выводиться следующие строки:
[ INFO ] Ended process on Linux with id 0
[ INFO ] Ended process on Linux with id 0
[ INFO ] Ended process on Linux with id 0По завершении экспериментов на FTP-сервере в директории /home/itmm/ftp/results
будут храниться csv-таблицы с результатами экспериментов оценки производительности глубоких моделей и
проверки качества их работы с каждого удаленного узла, а также обобщенные таблицы benchmark_results.csv и accuracy_checker_results.csv.
Данные файлы можно скачать на локальную машину и сконвертировать в HTML- и/или XSLX-формат, с помощью следующих команд.
scp [email protected]:/home/itmm/ftp/results/benchmark_results.csv /tmp
scp [email protected]:/home/itmm/ftp/results/accuracy_checker_results.csv /tmp
cd /tmp/dl-benchmark/src/csv2html
python3 converter.py -t /tmp/benchmark_results.csv -r /tmp/benchmark_results.html -k benchmark
python3 converter.py -t /tmp/accuracy_checker_results.csv -r /tmp/accuracy_checker_results.html -k accuracy_checker
cd /tmp/dl-benchmark/src/csv2xlsx
python3 converter.py -t /tmp/benchmark_results.csv -r /tmp/benchmark_results.xlsx -k benchmark
python3 converter.py -t /tmp/accuracy_checker_results.csv -r /tmp/accuracy_checker_results.xlsx -k accuracy_checker