Руководство. Настройка, подключение и проверка модуля IoT Edge для GPU

Область применения:IoT Edge 1.5 проверка mark IoT Edge 1.5 IoT Edge 1.4 проверка mark IoT Edge 1.4

Внимание

Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

В этом руководстве показано, как создать виртуальную машину с поддержкой GPU. На виртуальной машине вы увидите, как запустить устройство IoT Edge, которое выделяет работу из одного из его модулей на GPU.

Для этого мы будем использовать портал Azure, Azure Cloud Shell и командную строку виртуальной машины:

  • Создание виртуальной машины с поддержкой GPU
  • Установка расширения драйвера NVIDIA на виртуальной машине
  • Настройка модуля на устройстве IoT Edge для выделения работы на GPU

Необходимые компоненты

Создание оптимизированной для GPU виртуальной машины

Чтобы создать оптимизированную для GPU виртуальную машину, важно выбрать нужный размер. Не все размеры виртуальных машин будут соответствовать обработке GPU. Кроме того, существуют различные размеры виртуальных машин для разных рабочих нагрузок. Дополнительные сведения см. в статье о размерах оптимизированных для GPU виртуальных машин или опробуйте селектор виртуальных машин.

Давайте создадим виртуальную машину IoT Edge с шаблоном Azure Resource Manager (ARM) в GitHub, а затем настройте ее для оптимизации GPU.

  1. Перейдите к шаблону развертывания виртуальной машины IoT Edge в GitHub: Azure/iotedge-vm-deploy.

  2. Нажмите кнопку "Развернуть в Azure", которая инициирует создание пользовательской виртуальной машины в портал Azure.

  3. Заполните поля пользовательского развертывания учетными данными и ресурсами 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
    
  4. Нажмите кнопку "Просмотр и создание " в нижней части экрана, а затем нажмите кнопку "Создать ". Развертывание может занять одну минуту.

Установка расширения NVIDIA

Теперь, когда у нас есть оптимизированная для GPU виртуальная машина, давайте установим расширение NVIDIA на виртуальной машине с помощью портал Azure.

  1. Откройте виртуальную машину в портал Azure и выберите "Расширения и приложения" в меню слева.

  2. Выберите " Добавить " и выберите расширение драйвера GPU NVIDIA в списке, а затем нажмите кнопку "Далее".

  3. Нажмите кнопку "Рецензирование и создание", а затем "Создать". Развертывание может занять до 30 минут.

  4. Чтобы подтвердить установку в портал Azure, вернитесь в меню "Расширения и приложения" на виртуальной машине. Новое расширение NvidiaGpuDriverLinux должно находиться в списке расширений и показать , что подготовка выполнена успешно в разделе "Состояние".

  5. Чтобы подтвердить установку с помощью Azure Cloud Shell, выполните следующую команду, чтобы получить список расширений. Замените <> заполнители значениями:

    az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
    
  6. С помощью модуля 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.

  7. После установки выполните следующую команду, чтобы подтвердить ее установку:

    nvidia-smi
    

    Появится таблица подтверждения, аналогичная этой таблице.

    Снимок экрана: таблица драйверов NVIDIA.

Примечание.

Расширение NVIDIA — это упрощенный способ установки драйверов NVIDIA, но может потребоваться дополнительная настройка. Дополнительные сведения о пользовательских установках на виртуальных машинах серии N см. в статье Установка драйверов GPU NVIDIA на виртуальных машинах серии N под управлением Linux.

Включение модуля с ускорением GPU

Существует несколько способов включения модуля IoT Edge, чтобы он использовал GPU для обработки. Одним из способов является настройка существующего модуля IoT Edge на устройстве для ускорения GPU. Другой способ — использовать предварительно подготовленный модуль контейнера, например модуль из NVIDIA DIGITS , который уже оптимизирован для GPU. Давайте посмотрим, как выполняются оба способа.

Включение GPU в существующем модуле с помощью DeviceRequests

Если у вас есть модуль на устройстве IoT Edge, добавление конфигурации, используемой DeviceRequests в createOptions манифесте развертывания, делает модуль оптимизированным для GPU. Выполните следующие действия, чтобы настроить существующий модуль.

  1. Перейдите к Центр Интернета вещей в портал Azure и выберите "Устройства" в меню управления устройствами.

  2. Выберите устройство IoT Edge, чтобы открыть его.

  3. Выберите вкладку "Задать модули" в верхней части окна.

  4. Выберите модуль, который вы хотите включить для использования GPU в списке модулей IoT Edge.

  5. Откроется боковая панель, перейдите на вкладку "Параметры создания контейнера".

  6. Скопируйте эту HostConfig строку JSON и вставьте в поле " Параметры создания".

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. Выберите Обновить.

  8. Выберите Review + create (Просмотреть и создать). Новый HostConfig объект теперь отображается в settings модуле.

  9. Нажмите кнопку создания.

  10. Чтобы подтвердить работу новой конфигурации, выполните следующую команду на виртуальной машине:

    sudo docker inspect <YOUR-MODULE-NAME>
    

    В консоли должны отображаться параметры, указанные DeviceRequests в печати JSON.

Примечание.

Чтобы лучше понять параметр, просмотрите исходный DeviceRequests код: moby/host_config.go

Включение GPU в предварительно созданном модуле NVIDIA

Давайте добавим модуль NVIDIA DIGITS на устройство IoT Edge, а затем выделите GPU в модуль, задав переменные среды. Этот модуль NVIDIA уже находится в контейнере Docker.

  1. Выберите устройство IoT Edge в портал Azure в меню устройств Центр Интернета вещей.

  2. Выберите вкладку "Задать модули" в верхней части окна.

  3. Выберите и добавьте под заголовком модулей IoT Edge и выберите модуль IoT Edge.

  4. Укажите имя в поле "Имя модуля IoT Edge".

  5. На вкладке "Модуль Параметры" добавьте nvidia/digits:6.0 в поле URI изображения.

  6. Перейдите на вкладку "Переменные среды".

  7. Добавьте имя NVIDIA_VISIBLE_DEVICES переменной среды со значением 0. Эта переменная определяет, какие графические процессоры видны контейнеризованному приложению, работающему на пограничном устройстве. Переменная NVIDIA_VISIBLE_DEVICES среды может иметь разделенный запятыми список идентификаторов устройств, которые соответствуют физическим GPU в системе. Например, если в системе есть два GPU с идентификаторами устройств 0 и 1, переменная может иметь значение "NVIDIA_VISIBLE_DEVICES=0,1", чтобы сделать оба GPU видимыми для контейнера. В этой статье, так как виртуальная машина имеет только один GPU, мы будем использовать первый (и только) один.

    Имя. Тип значение
    NVIDIA_VISIBLE_DEVICES Текст 0
  8. Выберите Добавить.

  9. Выберите Review + create (Просмотреть и создать). Будут отображаться свойства манифеста развертывания.

  10. Нажмите кнопку "Создать" , чтобы создать модуль.

  11. Выберите "Обновить", чтобы обновить список модулей. Модуль займет несколько минут, чтобы отобразить состояниесреды выполнения, поэтому продолжайте обновлять устройство.

  12. На устройстве выполните следующую команду, чтобы убедиться, что новый модуль NVIDIA существует и запущен.

    iotedge list
    

    Модуль NVIDIA должен отображаться в списке модулей на устройстве IoT Edge с состоянием running.

    Снимок экрана: результат команды iotedge list.

Примечание.

Дополнительные сведения о модуле контейнера 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. В этом руководстве показано, как разрабатывать оптимизированные интеллектуальные видеотрансляций, которые могут использовать несколько видео, изображений и звуковых источников.