Introducción a la inteligencia artificial en el borde con VIDIA Jetson y Azure
El Internet de las cosas (IoT) es mucho más que las luces parpadeantes y los sensores de lectura. IoT también es un mecanismo para entregar cargas de trabajo de inteligencia artificial a las masas. Tradicionalmente, es habitual pensar en IoT como hardware especializado con sensores físicos que hacen informes de lecturas a un servicio en la nube para su procesamiento.
Con la llegada de los dispositivos habilitados para GPU de factor de forma pequeño y habilitados para la matriz de puertas programables (FPGA), se ha vuelto habitual ver aplicaciones de inteligencia artificial más pesadas que se ejecutan directamente en el hardware incrustado. Con este paradigma, puede reducir el flujo de datos, pero también centrarse en los resultados importantes que proceden del procesamiento de datos en el borde.
Al pasar de depender de la nube para el procesamiento a aprovechar las cargas de trabajo aceleradas en el dispositivo, se obtienen resultados mucho más rápidos, incluso en un entorno sin conexión. La plataforma Azure IoT Edge de Microsoft está diseñada exactamente para este tipo de caso de uso.
Azure IoT Edge realiza la implementación segura del código en dispositivos IoT mediante los módulos en contenedores. Los módulos pueden incluir formas en contenedores de servicios populares de Azure domo funciones sin servidor, Azure Stream Analytics, módulos de Machine Learning, servicios de inteligencia artificial de Custom Vision e incluso almacenamiento local con SQL Server. Puede usar la plataforma IoT Edge para obtener las mismas características y funcionalidades eficaces de los servicios en la nube que ya conoce y adora en su entorno de borde. De forma similar, puede modularizar las cargas de trabajo en contenedores que se desarrollaron con NVIDIA Graph Composer y, a continuación, implementar las cargas de trabajo en hardware compatible con IoT Edge.
En este módulo, explorará el desarrollo de las cargas de trabajo aceleradas por GPU destinadas al hardware incrustado de NVIDIA con el fin de implementar una carga de trabajo de IA en el borde mediante Azure IoT Edge y servicios de Azure IoT relacionados.
Hardware incrustado de NVIDIA Jetson
Las cargas de trabajo aceleradas por GPU en dispositivos incrustados de factor de forma pequeño y que son ideales para entornos de borde se pueden ejecutar en la plataforma NVIDIA Jetson. El hardware de NVIDIA Jetson es un sistema completo en módulo (SOM) que tiene toda la CPU, GPU y memoria necesarias para ejecutar las cargas de trabajo de Computer Vision en un dispositivo del tamaño de un teléfono móvil moderno.
NVIDIA ofrece varios dispositivos que son adecuados para la inteligencia artificial en el borde en su línea de ofertas de dispositivos Jetson. Entre las ofertas se incluyen las sólidas (Jetson AGX Xavier de 512 núcleos y Jetson Xavier NX), la de gama media (JetsonTX2 de 256 núcleos) y la de nivel básico (Jetson Nano de 128 núcleos).
En el siguiente gráfico se muestran las especificaciones de estas ofertas de hardware:
Todos los dispositivos de la familia NVIDIA Jetson usan hardware de CPU basado en ARM para el procesamiento. La plataforma Azure IoT Edge puede tener como destino esta arquitectura, por lo que puede instrumentar dispositivos incrustados NVIDIA para trabajar con el entorno de ejecución de Azure IoT Edge y con servicios de Azure IoT relacionados.
Para seguir este módulo, necesitará uno de los siguientes dispositivos incrustados NVIDIA Jetson aprovisionados con JetPack 4.6:
Azure IoT Edge
Azure IoT Edge está diseñado para simplificar el proceso de generación de análisis en el borde. IoT Edge usa un enfoque moderno para la distribución de aplicaciones a través de las cargas de trabajo en contenedores, conocidas como módulos. Los dispositivos que se instrumentan con el entorno de ejecución de Azure IoT Edge pueden publicar información en la nube de Azure mediante protocolos de mensajería de baja latencia y alto rendimiento. Un dispositivo incluso puede seguir generando esa información en escenarios sin conexión. Debido a estas y otras características, Azure IoT Edge es una solución ideal para adoptar cargas de trabajo de IA en tiempo real en entornos de borde.
Una solución basada en IoT Edge tiene tres componentes:
- Módulos IoT Edge: Los módulos IoT Edge son contenedores que ejecutan servicios de Azure, de terceros o código propio del usuario. Los contenedores se implementan mediante una especificación definida en un centro de Azure IoT Hub y se ejecutan localmente en los dispositivos instrumentados IoT Edge.
- Entorno de ejecución de Azure IoT Edge: El entorno de ejecución es un servicio que se ejecuta en un dispositivo IoT Edge para administrar las cargas de trabajo de módulo, proporcionar mecanismos para la mensajería de módulo a módulo y del dispositivo a la nube o de la nube al dispositivo, y orquestar las cargas de trabajo definidas en un centro.
- Interfaz basada en la nube: La interfaz es una colección de servicios de Azure que se incluyen en una instancia del recurso de Azure IoT Hub. Los servicios proporcionan un mecanismo para el registro seguro de dispositivos, un mecanismo de alto rendimiento para la ingesta de datos (a través de AMQP, MQTT o HTTPS), una capacidad para definir y aplicar especificaciones de implementación y una capacidad de supervisar y administrar de forma remota los dispositivos IoT Edge.
De manera opcional, una solución IoT Edge puede incorporar una instancia de Azure Container Registry para proporcionar una distribución segura de módulos en contenedores. Se recomienda este enfoque para los escenarios de implementación de producción. En la imagen siguiente se muestra cómo pueden funcionar los tres componentes principales para usar un registro de contenedor con el fin de lograr una arquitectura de la solución del borde a la nube y de un extremo a otro:
En la imagen anterior, (1) Azure IoT Hub distribuye una especificación de implementación que (2) define los módulos que se ejecutarán en yourEdgeDevice, que se ha instrumentado con el entorno de ejecución de IoT Edge y se ha registrado de forma segura como un dispositivo IoT Edge en el centro. A continuación, (3) el entorno de ejecución de Azure IoT Edge recibe esta especificación, que (4) hace referencia a un módulo de sensor que se almacena en Azure Container Registry. Este módulo se recupera de forma segura y se ejecuta localmente en el dispositivo de borde, en el que luego genera telemetría que fluye del dispositivo al centro.
En este módulo, implementará una solución que tiene una arquitectura similar a la que se muestra aquí. La principal diferencia es que incluirá una especificación de implementación que define un módulo IoT Edge basado en DeepStream para publicar los resultados de la detección de objetos en un centro de IoT. La implementación se ejecuta en un dispositivo incrustado NVIDIA Jetson que admite de forma nativa la distribución ARM64 del entorno de ejecución de IoT Edge.
Pruebe esto
Si su tarea es implementar una solución de inteligencia artificial en el borde, ¿cómo podría ahorrar tiempo hasta la producción mediante las ofertas de servicios en la nube? ¿Qué ventajas obtendría al usar un servicio como Azure IoT Edge durante la implementación?