Compartir a través de


Tutorial: Configuración, conexión y comprobación de un módulo de IoT Edge para una GPU

Se aplica a:Marca de verificación de IoT Edge 1.5 IoT Edge 1.5

Importante

IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS finaliza su ciclo de vida el 12 de noviembre de 2024. Si está en una versión anterior, consulte Actualización de IoT Edge.

Este tutorial le muestra cómo construir una máquina virtual (VM) habilitada para GPU. Desde la máquina virtual, se ejecuta un dispositivo IoT Edge que asigna trabajo desde uno de sus módulos a la GPU.

Use Azure Portal, Azure Cloud Shell y la línea de comandos de la máquina virtual para:

  • Compilar de una máquina virtual compatible con GPU
  • Instalar la extensión de controlador NVIDIA en la máquina virtual
  • Configurar un módulo en un dispositivo IoT Edge para asignar trabajo a una GPU

Prerrequisitos

Creación de máquinas virtuales optimizadas para GPU

Para crear una máquina virtual optimizada para GPU, elija el tamaño correcto. No todos los tamaños de máquina virtual admiten el procesamiento de GPU y los diferentes tamaños de máquina virtual funcionan mejor para diferentes cargas de trabajo. Para obtener más información, consulte Tamaños de máquina virtual optimizados para GPU o pruebe el selector de máquinas virtuales.

Cree una máquina virtual de IoT Edge con la plantilla de Azure Resource Manager (ARM) en GitHub y configúrela para que esté optimizada para GPU.

  1. Vaya a la plantilla de implementación de máquina virtual de IoT Edge en GitHub en Azure/iotedge-vm-deploy.

  2. Seleccione el botón Implementar en Azure para empezar a crear una máquina virtual personalizada en Azure Portal.

  3. Escriba las credenciales y la información de recursos de Azure en los campos Implementación personalizada :

    Propiedad Valor de descripción o ejemplo
    Suscripción Elija la suscripción a la cuenta de Azure.
    Grupo de recursos Añada su grupo de recursos de Azure.
    Región East US
    Las máquinas virtuales de GPU no están disponibles en todas las regiones.
    Prefijo de etiqueta DNS Cree un nombre para la máquina virtual.
    Nombre de usuario administrador adminUser
    O bien cree su propio nombre de usuario.
    Cadena de conexión de dispositivo Copie la cadena de conexión del dispositivo IoT Edge y péguela aquí.
    Tamaño de VM Standard_NV6
    Tipo de autenticación Elija contraseña o clave pública SSH y, a continuación, cree un nombre de par de claves o contraseña si es necesario.

    Sugerencia

    Compruebe qué máquinas virtuales de GPU se admiten en cada región: productos disponibles por región.

    Para comprobar qué región permite la suscripción de Azure, pruebe este comando de Azure en Azure Portal. N en Standard_N significa que es una máquina virtual habilitada para GPU.

    az vm list-skus --___location <YOUR-REGION> --size Standard_N --all --output table
    
  4. Seleccione el botón Revisar y crear en la parte inferior y, a continuación, seleccione el botón Crear . La implementación puede tardar hasta un minuto.

Instalación de la extensión NVIDIA

Ahora que tiene una máquina virtual optimizada para GPU, instale la extensión NVIDIA en la máquina virtual mediante Azure Portal.

  1. Abra la máquina virtual en Azure Portal y seleccione Extensiones y aplicaciones en el menú de la izquierda.

  2. Seleccione Agregar y elija la Extensión de controlador de GPU de NVIDIA en la lista y, a continuación, seleccione Siguiente.

  3. Seleccione Revisar y crear y, luego, Crear. La implementación puede tardar hasta 30 minutos en completarse.

  4. Para confirmar la instalación en Azure Portal, vuelva al menú Extensiones y aplicaciones de la máquina virtual. La nueva extensión denominada NvidiaGpuDriverLinux debe estar en la lista de extensiones y mostrar Aprovisionamiento realizado correctamente en Estado.

  5. Ejecute este comando para enumerar las extensiones para confirmar la instalación mediante Azure Cloud Shell. Reemplace los marcadores de posición <> por sus valores:

    az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
    
  6. Con un módulo NVIDIA, usaremos el programa NVIDIA System Management Interface, también conocido como nvidia-smi.

    Desde el dispositivo, instale el paquete nvidia-smi en función de la versión de Ubuntu. En este tutorial, se instalará nvidia-utils-515 para Ubuntu 20.04. Seleccione Y cuando se le solicite en la instalación.

    sudo apt install nvidia-utils-515
    

    Esta es una lista de todas las versiones nvidia-smi. Si se ejecuta nvidia-smi sin instalarlo primero, esta lista se imprime en la consola.

    Captura de pantalla de todas las versiones

  7. Después de la instalación, ejecute este comando para confirmar que se ha instalado:

    nvidia-smi
    

    Aparece una tabla de confirmación, similar a esta tabla.

    Captura de pantalla de la tabla de controladores de NVIDIA.

Nota:

La extensión NVIDIA es una manera simplificada de instalar los controladores NVIDIA, pero es posible que necesite más personalización. Para más información sobre las instalaciones personalizadas en máquinas virtuales de la serie N, consulte Instalación de controladores de GPU de NVIDIA en máquinas virtuales de la serie N que ejecutan Linux.

Habilitación de un módulo con aceleración de GPU

Hay diferentes maneras de habilitar un módulo de IoT Edge para que use una GPU para el procesamiento. Una manera es configurar un módulo de IoT Edge existente en el dispositivo para que se acelere con GPU. Otra manera es usar un módulo de contenedor prefabricado, por ejemplo, un módulo de NVIDIA DIGITS que ya está optimizado para GPU. Veamos cómo se realizan ambas maneras.

Habilitación de GPU en un módulo existente mediante DeviceRequests

Si tiene un módulo existente en el dispositivo IoT Edge, agregar una configuración mediante DeviceRequests en createOptions el manifiesto de implementación hará que el módulo esté optimizado para GPU. Siga estos pasos para configurar un módulo existente.

  1. Vaya a su centro de IoT en Azure Portal y elija Dispositivos en el menú Administración de dispositivos.

  2. Seleccione el dispositivo IoT Edge para abrirlo.

  3. Seleccione la pestaña Configurar módulos en la parte superior.

  4. Seleccione el módulo que desea habilitar para el uso de GPU en la lista módulos de IoT Edge.

  5. Se abrirá un panel lateral, elija la pestaña Opciones de creación de contenedores.

  6. Copie esta HostConfig cadena JSON y péguela en el cuadro Crear opciones.

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. Seleccione Actualizar.

  8. Seleccione Revisar + crear. El nuevo objeto HostConfig ahora está visible en el settings del módulo.

  9. Seleccione Crear.

  10. Para confirmar que la nueva configuración funciona, ejecute este comando en la máquina virtual:

    sudo docker inspect <YOUR-MODULE-NAME>
    

    Debería ver los parámetros para los que especificó para DeviceRequests en la impresión JSON en la consola.

Nota:

Para comprender mejor el parámetro DeviceRequests, vea el código fuente: moby/host_config.go

Habilitación de una GPU en un módulo NVIDIA prefabricado

Vamos a agregar un módulo NVIDIA DIGITS al dispositivo IoT Edge y, después, asignar una GPU al módulo estableciendo sus variables de entorno. Este módulo NVIDIA ya está en un contenedor Docker.

  1. Seleccione el dispositivo IoT Edge en Azure Portal en el menú Dispositivos de su centro de IoT.

  2. Seleccione la pestaña Configurar módulos en la parte superior.

  3. Seleccione + Agregar en el encabezado los módulos de IoT Edge y elija Módulo IoT Edge.

  4. Proporcione un nombre en el campo Nombre del módulo IoT Edge.

  5. En la pestaña Configuración del módulo, agregue nvidia/digits:6.0 al campo URI de imagen.

  6. Seleccione la pestaña Variables de entorno.

  7. Añada el nombre de la variable de entorno NVIDIA_VISIBLE_DEVICES con el valor 0. Esta variable controla qué GPU son visibles para la aplicación contenedorizada que se ejecuta en el dispositivo perimetral. La variable de entorno NVIDIA_VISIBLE_DEVICES se puede establecer en una lista separada por comas de identificadores de dispositivo, que corresponden a las GPU físicas del sistema. Por ejemplo, si hay dos GPU en el sistema con identificadores de dispositivo 0 y 1, la variable se puede establecer en "NVIDIA_VISIBLE_DEVICES=0,1" para que ambas GPU sean visibles para el contenedor. En este artículo, dado que la máquina virtual solo tiene una GPU, usaremos la primera (y solo) una.

    Nombre Tipo Valor
    NVIDIA_VISIBLE_DEVICES Texto 0
  8. Seleccione Agregar.

  9. Seleccione Revisar + crear. Aparecen las propiedades del manifiesto de implementación.

  10. Seleccione Crear para crear el módulo.

  11. Seleccione Actualizar para actualizar la lista de módulos. El módulo tarda un par de minutos en mostrarse en ejecución en el estado de tiempo de ejecución, así que siga refrescando el dispositivo.

  12. Desde el dispositivo, ejecute este comando para confirmar que el nuevo módulo NVIDIA existe y se está ejecutando.

    iotedge list
    

    Debería ver el módulo NVIDIA en una lista de módulos en el dispositivo IoT Edge con un estado de running.

    Captura de pantalla del resultado del comando

Nota:

Para obtener más información sobre el módulo contenedor NVIDIA DIGITS, consulte la Documentación sobre dígitos de aprendizaje profundo.

Limpieza de recursos

Si desea continuar con otros tutoriales de IoT Edge, puede usar el dispositivo que creó para este tutorial. En caso contrario, puede eliminar los recursos de Azure que creó para evitar gastos.

Si ha creado la máquina virtual y el centro de IoT en un nuevo grupo de recursos, puede eliminar ese grupo, que elimina todos los recursos asociados. Vuelva a comprobar el contenido del grupo de recursos para asegurarse de que no haya nada que desee conservar. Si no desea eliminar todo el grupo, puede eliminar recursos individuales en su lugar (máquina virtual, dispositivo o módulo de GPU).

Importante

La eliminación de un grupo de recursos es irreversible.

Use el siguiente comando para quitar el grupo de recursos de Azure. La eliminación de un grupo de recursos puede tardar unos minutos.

az group delete --name <YOUR-RESOURCE-GROUP> --yes

Puede confirmar que se ha eliminado el grupo de recursos mediante la visualización de la lista de grupos de recursos.

az group list

Pasos siguientes

Este artículo le ayudó a configurar la máquina virtual y el dispositivo IoT Edge para que se acelere con GPU. Para ejecutar una aplicación con una configuración similar, pruebe la ruta de aprendizaje para el desarrollo de NVIDIA DeepStream con Microsoft Azure. En el tutorial de Learn se muestra cómo desarrollar aplicaciones de vídeo inteligente optimizadas que pueden consumir varios orígenes de vídeo, imagen y audio.