Упражнение. Создание образа контейнера с помощью модели YOLO и его развертывание в IoT Edge
Перед началом работы убедитесь, что на локальном компьютере установлены необходимые компоненты.
- Установите Docker на компьютер.
- Установите curl.
Создание реестра контейнеров Azure
Откройте Azure Cloud Shell на портале Azure, нажав значок Cloud Shell.
Создайте реестр контейнеров Azure с помощью команды az acr. Выполните следующую команду, чтобы определить переменную с именем ACR_NAME. Имя реестра контейнеров должно быть уникальным в Azure и содержать от 5 до 50 букв и цифр.
ACR_NAME=<enter-registry-name>
Введите команду в редакторе Cloud Shell, чтобы создать новый реестр контейнеров.
az acr create --resource-group <replace-with-resource-group> --name $ACR_NAME --sku Standard
Перейдите к созданному ресурсу реестра контейнеров, а затем к разделуКлючи доступа.
Скопируйте имя реестра, сервер входа, имя пользователя и пароль.
Скачайте модель вывода YOLOv4 (tiny) TensorFlow Lite.
Перейдите к
https://github.com/Azure/live-video-analytics
и скачайте zip-файл на свой локальный компьютер.Перейдите по этому пути в загруженную папку.
live-video-analytics-master/utilities/video-analysis/yolov4-tflite-tiny
Создайте новый каталог на компьютере, а затем скопируйте все файлы (включая вложенные папки) из папки GitHub в созданный каталог.
Создание образа контейнера с помощью модели YOLO
Появится Dockerfile с инструкциями по сборке образа контейнера.
Откройте терминал в этом каталоге. Для создания образа контейнера выполните команду Docker из командного окна в этом каталоге.
docker build . -t yolov4-tflite-tiny:latest
Отправка образа Docker в Реестр контейнеров Azure
Теперь у вас есть образ Docker с моделью YOLO. Прежде чем отправить образ в реестр, нужно добавить в него тег с полным именем сервера входа для реестра. Имя для входа на сервер имеет формат azurecr.io (все символы в нижнем регистре).
На локальном компьютере войдите в Azure, используя Azure CLI.
az login
Войдите в реестр контейнеров Azure с помощью Azure CLI (также можно использовать Docker).
docker login <replace-with-your-acr-login-server>
Присвойте образу тег с помощью команды docker tag. Замените <login-server> именем входа на сервер для экземпляра реестра контейнеров Azure.
docker tag <original-image-name:tag> <registry-name>.azurecr.io/<image-name:tag>
Используйте команду Отправка Docker для отправки образа в экземпляр реестра. Замените <login-server> именем входа на сервер для экземпляра реестра.
docker push <registry-name>.azurecr.io/<image-name:tag>
Отправка контейнерной модели в реестр контейнеров Azure займет некоторое время. После отправки образа в реестр контейнеров его URI-адрес будет следующим.
<registry-name>.azurecr.io/<image-name:tag>
Чтобы проверить, отправлен ли образ, перейдите к ресурсу реестра контейнеров, а затем к репозиторию.
Развертывание модели YOLO как модуля Azure IoT Edge
Найдите нужный ресурс Центра Интернета вещей на портале Azure.
В меню на левой панели выберите IoT Edge в разделе "Автоматическое управление устройствами".
Выберите устройство IoT Edge, на которое будет выполняться развертывание.
На верхней панели выберите Задание модулей.
Укажите следующие сведения.
Имя: замените именем реестра в реестре контейнеров Azure.
Адрес: замените на сервер входа реестра контейнеров Azure.
Имя пользователя: замените именем пользователя реестра контейнеров Azure.
Пароль: замените паролем реестра контейнеров Azure.
Выберите Добавить.
В разделе "Модули IoT Edge" щелкните "Добавить" и в раскрывающемся меню выберите "Модуль IoT Edge".
Присвойте имя модулю IoT Edge и введите URL-адрес образа, который представляет собой путь, как показано ниже.
<registry-name>.azurecr.io/<image-name:tag>
Выберите Добавить.
Проверить и создать
После настройки модуля выберите Просмотр и создание. В разделе обзорной информации вы увидите манифест развертывания в формате JSON, созданный на основе заданных модулей. Убедитесь, что модуль, заданный в предыдущем разделе, определен в манифесте.
Проверка развертываемого модуля на пограничном устройстве
После развертывания модуль можно проверить на пограничном устройстве. Подключитесь к виртуальной машине и запустите команду docker ps.
docker ps
Теперь у вас есть собственный модуль вывода на пограничном устройстве. Доступ к конечной точке прогнозирования можно получить посредством команды /score с портом 80 в том случае, если образ создан из модели Tiny YOLOv4 TensorFlow Lite.
Запишите конечную точку прогнозирования, которая представлена в формате http://{module-name}:80/score и доступна только на пограничном устройстве.