Implementación de un módulo de IoT habilitado para GPU en un dispositivo Azure Stack Edge Pro
SE APLICA A: Azure Stack Edge Pro con GPUAzure Stack Edge Pro 2Azure Stack Edge Pro R
Nota
Se recomienda encarecidamente implementar la versión más reciente de IoT Edge en una máquina virtual Linux. IoT Edge administrado en Azure Stack Edge usa una versión anterior del entorno de ejecución de IoT Edge que no tiene las características y revisiones más recientes. Para obtener instrucciones, consulte Implementación de una máquina virtual Ubuntu. Para más información sobre otras distribuciones de Linux compatibles que pueden ejecutar IoT Edge, consulte Sistemas compatibles con Azure IoT Edge: motores de contenedor.
En este artículo se describe cómo implementar un módulo de IoT Edge habilitado para GPU en un dispositivo Azure Stack Edge Pro con GPU.
En este artículo aprenderá a:
- Preparar Azure Stack Edge Pro para ejecutar un módulo GPU.
- Descargar e instalar código de ejemplo desde un repositorio de Git
- Compilar la solución y generar un manifiesto de implementación
- Implementar la solución en un dispositivo Azure Stack Edge Pro.
- Supervisar la salida del módulo
Información sobre el módulo de ejemplo
El módulo de ejemplo de GPU de este artículo incluye código de ejemplo de pruebas comparativas de PyTorch y TensorFlow entre CPU y GPU.
Requisitos previos
Antes de empezar, asegúrese de que tiene:
- Tiene acceso a un dispositivo Azure Stack Edge Pro con un nodo habilitado para GPU. Este dispositivo se activa con un recurso en Azure. Consulte Activación del dispositivo.
- Ha configurado el proceso en este dispositivo. Siga los pasos descritos en Tutorial: Configuración del proceso en el dispositivo Azure Stack Edge Pro.
- Una instancia de Azure Container Registry (ACR). Vaya a la hoja Claves de acceso y anote la contraseña, el nombre de usuario y el servidor de inicio de sesión de ACR. Para más información, vaya a Inicio rápido: Creación de un registro de contenedor privado mediante Azure Portal.
- Los siguientes recursos de desarrollo en un cliente Windows:
- CLI de Azure 2.0 o posterior
- Docker CE. Es posible que deba crear una cuenta para descargar e instalar el software.
- Visual Studio Code
- Extensión de Azure IoT Edge para Visual Studio Code.
- Extensión de Python para Visual Studio Code
- Python 3
- Pip para instalar paquetes de Python (normalmente, se incluye con la instalación de Python)
Obtención del código de ejemplo
Vaya a Patrones de Azure Intelligent Edge en ejemplos de Azure. Clone o descargue el archivo .zip del código.
Extraiga los archivos del archivo .zip. También puede clonar los ejemplos.
git clone https://github.com/Azure-Samples/azure-intelligent-edge-patterns.git
Compilación e implementación del módulo
Abra la carpeta GpuReferenceModules en Visual Studio Code.
Abra el archivo deployment.template.json e identifique los parámetros a los que se hacen referencia para el registro de contenedor. En el siguiente archivo, se usan CONTAINER_REGISTRY_USERNAME, CONTAINER_REGISTRY_PASSWORD y CONTAINER_REGISTRY_NAME.
{ "$schema-template": "2.0.0", "modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.0", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "${CONTAINER_REGISTRY_NAME}":{ "username": "$CONTAINER_REGISTRY_USERNAME", "password": "$CONTAINER_REGISTRY_PASSWORD", "address": "${CONTAINER_REGISTRY_NAME}.azurecr.io" } } } },
Cree un archivo nuevo. Rellene los valores de los parámetros del registro de contenedor (use los identificados en el paso anterior) de la manera siguiente:
CONTAINER_REGISTRY_NAME=<YourContainerRegistryName> CONTAINER_REGISTRY_USERNAME=<YourContainerRegistryUserName> CONTAINER_REGISTRY_PASSWORD=<YourContainerRegistryPassword>
A continuación, se muestra un archivo de ejemplo .env:
Guarde el archivo como .env en la carpeta SampleSolution.
Escriba el comando siguiente en el terminal integrado de Visual Studio Code para iniciar sesión en Docker.
docker login -u <CONTAINER_REGISTRY_USERNAME> -p <CONTAINER_REGISTRY_PASSWORD> <CONTAINER_REGISTRY_NAME>
Vaya a la sección Claves de acceso del contenedor registro en Azure Portal. Copie y use el servidor de inicio de sesión, la contraseña y el nombre del registro.
Una vez que se proporcionan las credenciales, el inicio de sesión se realiza correctamente.
Inserte la imagen en el registro de contenedor de Azure. En el explorador de Visual Studio Code, haga clic con el botón derecho en el archivo deployment.template.json y seleccione Build and Push IoT Edge solution (Compilar e insertar solución de IoT Edge).
Si no se instalan las extensiones de Python y Python, se hará al compilar e insertar la solución. Sin embargo, se producirían tiempos de compilación más largos.
Una vez completado este paso, verá el módulo en el registro de contenedor.
Para crear un manifiesto de implementación, haga clic con el botón derecho en el archivo deployment.template.json y seleccione Generate IoT Edge Deployment Manifest (Generar manifiesto de implementación de IoT Edge).
La notificación informa de la ruta de acceso en la que se generó el manifiesto de implementación. El manifiesto es el archivo
deployment.amd64.json
generado en la carpeta config.Seleccione el archivo deployment.amd64.json en la carpeta config y, a continuación, elija Create Deployment for Single Device (Crear una implementación para un dispositivo individual). No utilice el archivo deployment.template.json.
En la ventana Salida, debería ver un mensaje que indica que la implementación se realizó correctamente.
Supervisión del módulo
En la paleta de comandos de VS Code, ejecute Azure IoT Hub: Select IoT Hub.
Elija la suscripción y la instancia de IoT Hub que contienen el dispositivo IoT Edge que desea configurar. En este caso, seleccione la suscripción que se ha usado para implementar el dispositivo Azure Stack Edge Pro y seleccione el dispositivo IoT Edge creado para el dispositivo Azure Stack Edge Pro. Esto sucede cuando se configura el proceso mediante Azure Portal en los pasos anteriores.
En el explorador de Visual Studio Code, expanda la sección Azure IoT Hub. En Dispositivos, debería ver el dispositivo IoT Edge correspondiente a su dispositivo Azure Stack Edge Pro.
Seleccione ese dispositivo, haga clic con el botón derecho en Iniciar la supervisión del punto de conexión de eventos integrado.
Vaya a Dispositivos > Módulos; allí debería ver el módulo de GPU en ejecución.
El terminal de Visual Studio Code también debería mostrar los eventos de IoT Hub como salida de supervisión para el dispositivo Azure Stack Edge Pro.
Puede ver que el tiempo necesario para ejecutar el mismo conjunto de operaciones (5000 iteraciones de transformación de forma) por GPU es mucho menor que el de la CPU.
Pasos siguientes
- Obtenga más información sobre cómo configurar la GPU para usar un módulo.