Руководство. Настройка, подключение и проверка модуля IoT Edge для GPU
Область применения: IoT Edge 1.5 IoT Edge 1.4
Внимание
IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
В этом руководстве показано, как создать виртуальную машину с поддержкой GPU. На виртуальной машине вы увидите, как запустить устройство IoT Edge, которое выделяет работу из одного из его модулей на GPU.
Для этого мы будем использовать портал Azure, Azure Cloud Shell и командную строку виртуальной машины:
- Создание виртуальной машины с поддержкой GPU
- Установка расширения драйвера NVIDIA на виртуальной машине
- Настройка модуля на устройстве IoT Edge для выделения работы на GPU
Необходимые компоненты
Учетная запись Azure— создание бесплатной учетной записи
Центр Интернета вещей Azure — создание Центр Интернета вещей
Azure IoT Edge
Если у вас еще нет устройства IoT Edge и необходимо быстро создать его, выполните следующую команду. Используйте Azure Cloud Shell, расположенную в портал Azure. Создайте новое имя устройства и
<DEVICE-NAME>
замените IoT<IOT-HUB-NAME>
собственным.az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
Дополнительные сведения о создании устройства IoT Edge см . в кратком руководстве по развертыванию первого модуля IoT Edge на виртуальном устройстве Linux. Далее в этом руководстве мы добавим модуль NVIDIA на устройство IoT Edge.
Создание оптимизированной для GPU виртуальной машины
Чтобы создать оптимизированную для GPU виртуальную машину, важно выбрать нужный размер. Не все размеры виртуальных машин размещают обработку GPU. Кроме того, существуют различные размеры виртуальных машин для разных рабочих нагрузок. Дополнительные сведения см. в статье о размерах оптимизированных для GPU виртуальных машин или опробуйте селектор виртуальных машин.
Давайте создадим виртуальную машину IoT Edge с шаблоном Azure Resource Manager (ARM) в GitHub, а затем настройте ее для оптимизации GPU.
Перейдите к шаблону развертывания виртуальной машины IoT Edge в GitHub: Azure/iotedge-vm-deploy.
Нажмите кнопку "Развернуть в Azure", которая инициирует создание пользовательской виртуальной машины в портал Azure.
Заполните поля пользовательского развертывания учетными данными и ресурсами Azure:
Свойство Описание или пример значения Отток подписок Выберите подписку учетной записи Azure. Группа ресурсов Добавьте группу ресурсов Azure. Область/регион East US
Виртуальные машины GPU недоступны во всех регионах.Префикс DNS-метки Создайте имя виртуальной машины. Имя администратора adminUser
Кроме того, создайте собственное имя пользователя.Строка подключения устройства Скопируйте строка подключения с устройства IoT Edge, а затем вставьте здесь. Размер виртуальной машины Standard_NV6
Тип аутентификации Выберите пароль или открытый ключ SSH, а затем при необходимости создайте пароль или имя пары ключей. Совет
Проверьте, какие виртуальные машины GPU поддерживаются в каждом регионе: продукты, доступные по регионам.
Чтобы проверить регион, в котором разрешена подписка Azure, воспользуйтесь этой командой Azure из портал Azure.
Standard_N
ЭтоN
означает, что это виртуальная машина с поддержкой GPU.az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
Нажмите кнопку "Просмотр и создание " в нижней части экрана, а затем нажмите кнопку "Создать ". Развертывание может занять одну минуту.
Установка расширения NVIDIA
Теперь, когда у нас есть оптимизированная для GPU виртуальная машина, давайте установим расширение NVIDIA на виртуальной машине с помощью портал Azure.
Откройте виртуальную машину в портал Azure и выберите "Расширения и приложения" в меню слева.
Выберите " Добавить " и выберите расширение драйвера GPU NVIDIA в списке, а затем нажмите кнопку "Далее".
Нажмите кнопку "Рецензирование и создание", а затем "Создать". Развертывание может занять до 30 минут.
Чтобы подтвердить установку в портал Azure, вернитесь в меню "Расширения и приложения" на виртуальной машине. Новое расширение
NvidiaGpuDriverLinux
должно находиться в списке расширений и показать , что подготовка выполнена успешно в разделе "Состояние".Чтобы подтвердить установку с помощью Azure Cloud Shell, выполните следующую команду, чтобы получить список расширений. Замените
<>
заполнители значениями:az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
С помощью модуля NVIDIA мы будем использовать программу интерфейса управления системой NVIDIA, также известную как
nvidia-smi
.На устройстве установите
nvidia-smi
пакет на основе вашей версии Ubuntu. В этом руководстве мы установимnvidia-utils-515
для Ubuntu 20.04. ВыберитеY
при появлении запроса в установке.sudo apt install nvidia-utils-515
Ниже приведен список всех
nvidia-smi
версий. При первом запускеnvidia-smi
без установки этот список будет напечатан в консоли.После установки выполните следующую команду, чтобы подтвердить ее установку:
nvidia-smi
Появится таблица подтверждения, аналогичная этой таблице.
Примечание.
Расширение NVIDIA — это упрощенный способ установки драйверов NVIDIA, но может потребоваться дополнительная настройка. Дополнительные сведения о пользовательских установках на виртуальных машинах серии N см. в статье Установка драйверов GPU NVIDIA на виртуальных машинах серии N под управлением Linux.
Включение модуля с ускорением GPU
Существует несколько способов включения модуля IoT Edge, чтобы он использовал GPU для обработки. Одним из способов является настройка существующего модуля IoT Edge на устройстве для ускорения GPU. Другой способ — использовать предварительно подготовленный модуль контейнера, например модуль из NVIDIA DIGITS , который уже оптимизирован для GPU. Давайте посмотрим, как выполняются оба способа.
Включение GPU в существующем модуле с помощью DeviceRequests
Если у вас есть модуль на устройстве IoT Edge, добавление конфигурации, используемой DeviceRequests
в createOptions
манифесте развертывания, делает модуль оптимизированным для GPU. Выполните следующие действия, чтобы настроить существующий модуль.
Перейдите к Центр Интернета вещей в портал Azure и выберите "Устройства" в меню управления устройствами.
Выберите устройство IoT Edge, чтобы открыть его.
Выберите вкладку "Задать модули" в верхней части окна.
Выберите модуль, который вы хотите включить для использования GPU в списке модулей IoT Edge.
Откроется боковая панель, перейдите на вкладку "Параметры создания контейнера".
Скопируйте эту
HostConfig
строку JSON и вставьте в поле " Параметры создания".{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }
Выберите Обновить.
Выберите Review + create (Просмотреть и создать). Новый
HostConfig
объект теперь отображается вsettings
модуле.Нажмите кнопку создания.
Чтобы подтвердить работу новой конфигурации, выполните следующую команду на виртуальной машине:
sudo docker inspect <YOUR-MODULE-NAME>
В консоли должны отображаться параметры, указанные
DeviceRequests
в печати JSON.
Примечание.
Чтобы лучше понять параметр, просмотрите исходный DeviceRequests
код: moby/host_config.go
Включение GPU в предварительно созданном модуле NVIDIA
Давайте добавим модуль NVIDIA DIGITS на устройство IoT Edge, а затем выделите GPU в модуль, задав переменные среды. Этот модуль NVIDIA уже находится в контейнере Docker.
Выберите устройство IoT Edge в портал Azure в меню устройств Центр Интернета вещей.
Выберите вкладку "Задать модули" в верхней части окна.
Выберите и добавьте под заголовком модулей IoT Edge и выберите модуль IoT Edge.
Укажите имя в поле "Имя модуля IoT Edge".
На вкладке "Параметры модуля" добавьте
nvidia/digits:6.0
в поле URI изображения.Перейдите на вкладку "Переменные среды".
Добавьте имя
NVIDIA_VISIBLE_DEVICES
переменной среды со значением0
. Эта переменная определяет, какие графические процессоры видны контейнеризованному приложению, работающему на пограничном устройстве. ПеременнаяNVIDIA_VISIBLE_DEVICES
среды может иметь разделенный запятыми список идентификаторов устройств, которые соответствуют физическим GPU в системе. Например, если в системе есть два GPU с идентификаторами устройств 0 и 1, переменная может иметь значение "NVIDIA_VISIBLE_DEVICES=0,1", чтобы сделать оба GPU видимыми для контейнера. В этой статье, так как виртуальная машина имеет только один GPU, мы будем использовать первый (и только) один.Имя. Тип значение NVIDIA_VISIBLE_DEVICES Текст 0 Выберите Добавить.
Выберите Review + create (Просмотреть и создать). Будут отображаться свойства манифеста развертывания.
Нажмите кнопку "Создать" , чтобы создать модуль.
Выберите "Обновить", чтобы обновить список модулей. Модуль займет несколько минут, чтобы отобразить состояние среды выполнения, поэтому продолжайте обновлять устройство.
На устройстве выполните следующую команду, чтобы убедиться, что новый модуль NVIDIA существует и запущен.
iotedge list
Модуль NVIDIA должен отображаться в списке модулей на устройстве IoT Edge с состоянием
running
.
Примечание.
Дополнительные сведения о модуле контейнера NVIDIA DIGITS см. в документации по цифрам глубокого обучения.
Очистка ресурсов
Если вы хотите продолжить работу с другими учебниками IoT Edge, можно использовать устройство, созданное для этого руководства. Если нет, вы можете удалить созданные ресурсы Azure, чтобы избежать расходов.
Если вы создали виртуальную машину и Центр Интернета вещей в новой группе ресурсов, вы можете удалить эту группу, которая приведет к удалению всех связанных ресурсов. Внимательно проверьте содержимое группы ресурсов. В ней не должно быть важных ресурсов. Если вы не хотите удалить всю группу, вместо этого можно удалить отдельные ресурсы (виртуальную машину, устройство или модуль GPU).
Внимание
Удаление группы ресурсов — процесс необратимый.
Чтобы удалить группу ресурсов Azure, используйте следующую команду. Удаление группы ресурсов может занять несколько минут.
az group delete --name <YOUR-RESOURCE-GROUP> --yes
Чтобы проверить, удалена ли группа ресурсов, просмотрите список групп ресурсов.
az group list
Следующие шаги
В этой статье показано, как настроить виртуальную машину и устройство IoT Edge для ускорения GPU. Чтобы запустить приложение с аналогичной настройкой, попробуйте использовать схему обучения для разработки NVIDIA DeepStream с помощью Microsoft Azure. В этом руководстве показано, как разрабатывать оптимизированные интеллектуальные видеотрансляций, которые могут использовать несколько видео, изображений и звуковых источников.