Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: 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
Cuenta de Azure: creación de una cuenta gratuita
Azure IoT Hub: creación de un centro de IoT
Azure IoT Edge
Si no tiene un dispositivo IoT Edge y desea crear uno rápidamente, ejecute el siguiente comando. Usa Azure Cloud Shell en el portal de Azure. Cree un nuevo nombre de dispositivo para
<DEVICE-NAME>
y reemplace<YOUR-IOT-HUB-NAME>
por el nombre del centro de IoT.az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
Para más información sobre cómo crear un dispositivo IoT Edge, consulte Inicio rápido: Implementación del primer módulo de IoT Edge en un dispositivo Linux virtual. Más adelante en este artículo, añadirá un módulo NVIDIA a su dispositivo de IoT Edge.
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.
Vaya a la plantilla de implementación de máquina virtual de IoT Edge en GitHub en Azure/iotedge-vm-deploy.
Seleccione el botón Implementar en Azure para empezar a crear una máquina virtual personalizada en Azure Portal.
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
enStandard_N
significa que es una máquina virtual habilitada para GPU.az vm list-skus --___location <YOUR-REGION> --size Standard_N --all --output table
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.
Abra la máquina virtual en Azure Portal y seleccione Extensiones y aplicaciones en el menú de la izquierda.
Seleccione Agregar y elija la Extensión de controlador de GPU de NVIDIA en la lista y, a continuación, seleccione Siguiente.
Seleccione Revisar y crear y, luego, Crear. La implementación puede tardar hasta 30 minutos en completarse.
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.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
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. SeleccioneY
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 ejecutanvidia-smi
sin instalarlo primero, esta lista se imprime en la consola.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.
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.
Vaya a su centro de IoT en Azure Portal y elija Dispositivos en el menú Administración de dispositivos.
Seleccione el dispositivo IoT Edge para abrirlo.
Seleccione la pestaña Configurar módulos en la parte superior.
Seleccione el módulo que desea habilitar para el uso de GPU en la lista módulos de IoT Edge.
Se abrirá un panel lateral, elija la pestaña Opciones de creación de contenedores.
Copie esta
HostConfig
cadena JSON y péguela en el cuadro Crear opciones.{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }
Seleccione Actualizar.
Seleccione Revisar + crear. El nuevo objeto
HostConfig
ahora está visible en elsettings
del módulo.Seleccione Crear.
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.
Seleccione el dispositivo IoT Edge en Azure Portal en el menú Dispositivos de su centro de IoT.
Seleccione la pestaña Configurar módulos en la parte superior.
Seleccione + Agregar en el encabezado los módulos de IoT Edge y elija Módulo IoT Edge.
Proporcione un nombre en el campo Nombre del módulo IoT Edge.
En la pestaña Configuración del módulo, agregue
nvidia/digits:6.0
al campo URI de imagen.Seleccione la pestaña Variables de entorno.
Añada el nombre de la variable de entorno
NVIDIA_VISIBLE_DEVICES
con el valor0
. Esta variable controla qué GPU son visibles para la aplicación contenedorizada que se ejecuta en el dispositivo perimetral. La variable de entornoNVIDIA_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 Seleccione Agregar.
Seleccione Revisar + crear. Aparecen las propiedades del manifiesto de implementación.
Seleccione Crear para crear el módulo.
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.
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
.
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.