El desarrollo de aplicaciones de aprendizaje automático basado en el borde se está volviendo mucho más fácil

El desarrollo de aprendizaje automático (ML) se ha vuelto mucho más accesible gracias a un conjunto cada vez mayor de herramientas de desarrollo, en particular las de los principales proveedores de servicios en la nube, como Amazon Web Services (AWS), Google y Microsoft. Estas herramientas hacen que el desarrollo de ML sea accesible, pero no necesariamente facilitan la implementación de aplicaciones basadas en el borde para Internet de las Cosas (IoT), hogares inteligentes, sistemas de automatización industrial y otras áreas integradas. Sin embargo, un conjunto de recursos de hardware y software en rápido crecimiento está comenzando a abordar los requisitos únicos del desarrollo de aplicaciones del ML para sistemas integrados.

Gran parte del enfoque del "Big ML" (ML grande) está en modelos de gran tamaño y aplicaciones de nivel empresarial que se ejecutan en ámbitos escalables masivamente de unidades de procesamiento de gráficos (GPU) y servidores. Por el contrario, el "tinyML" (ML pequeño) para aplicaciones perimetrales presenta un conjunto completamente diferente de problemas derivados, en parte, de las limitaciones de recursos de los microcontroladores (MCU) y, en parte, de los requisitos en tiempo real de la aplicación.

En el pasado, los MCU fueron diseñados para cumplir requisitos relativamente simples de memoria y periféricos. El rendimiento a menudo no presentaba una gran preocupación para la mayoría de las aplicaciones integradas que especificaban tiempos de ciclo medidos en milisegundos, en el mejor de los casos. Hoy en día, los requisitos de recursos, conectividad y rendimiento más robustos han aumentado en las aplicaciones integradas más convencionales. Además, el creciente deseo de ejecutar algoritmos de ML con una latencia mínima en aplicaciones integradas ha cambiado drásticamente lo que se necesita y se espera de los MCU avanzados. Como tal, los fabricantes de semiconductores han respondido con MCU avanzados como los MCU cruzados i.MX RT1170 de NXP, que ofrecen características y capacidades que no hace mucho tiempo se consideraban de clase de servidor.

Una base de hardware capaz es esencial para implementar una aplicación integrada basada en ML, pero la entrega de una aplicación de este tipo depende en última instancia de la capacidad de desarrollar con éxito el complemento relativamente grande de software necesario para las soluciones perimetrales basadas en ML. Además de implementar el software de adquisición de datos en el corazón de casi todos los sistemas integrados, los desarrolladores también deben crear un modelo de aprendizaje automático adecuado entrenado en datos representativos e implementar el modelo de inferencia correspondiente en el MCU (Figura 1).

Figura 1: La implementación de una aplicación basada en ML para el borde agrega fases de proyecto específicas de ML que amplían el desarrollo más allá de las tareas más familiares necesarias para crear productos inteligentes basados en sensores. (fuente de la imagen: NXP Semiconductors).

Para los desarrolladores integrados que implementan aplicaciones basadas en ML en el borde, el trabajo adicional requerido para el esfuerzo de creación de modelos se reduce a cuatro tareas clave:

  • Definir el conjunto de datos: En este paso inicial crítico, los desarrolladores deciden las fuentes de datos y las características requeridas de interés para su aplicación.
  • Definir el modelo: Aquí, los desarrolladores determinan la topología del modelo y los hiperparámetros necesarios para ajustarlo.
  • Entrenar el modelo: Este paso intensivo en computación generalmente se realiza en servidores robustos y granjas de GPU.
  • Generar el modelo de inferencia: Antes de la implementación real, los desarrolladores convierten el modelo de entrenamiento en un modelo de inferencia optimizado al eliminar las características del modelo que solo se necesitan durante el entrenamiento o que contribuyen poco o nada a la inferencia.

Si se toman individualmente, estos pasos están dentro de las capacidades de un desarrollador integrado. Al implementar los sensores y el sistema de adquisición de datos, el desarrollador conoce lo suficiente sobre los datos para manejar el rol de científico de datos que normalmente se requiere en las aplicaciones de ML de nivel empresarial. Sin embargo, más allá de ese paso inicial, a los desarrolladores se los ha dejado en gran medida solos para descifrar la definición, el entrenamiento y la conversión del modelo.

Los primeros usuarios se han aprovechado rápidamente de los fragmentos de tecnología que surgieron rápidamente para crear modelos ML adecuados para el borde. Las bibliotecas como TensorFlow Lite aportan gran parte del poder del ecosistema TensorFlow de código abierto de Google a los sistemas móviles y perimetrales con recursos limitados. Las bibliotecas de desarrollo, como el Estándar de interfaz de software de microcontrolador común (Common Microcontroller Software Interface Standard) de Arm y la Red neuronal (CMSIS-NN) con su kit de desarrollo de software (SDK) de red neuronal (NN), aprovechan las capacidades de hardware de las GPU y las unidades centrales de procesamiento de Arm. Herramientas como el compilador Glow ML de Facebook y el optimizador ONNX Runtime ML de Microsoft ayudan a generar modelos de inferencia. Para la implementación, el software especializado, como el motor de inferencia DeepViewRT de Au-Zone Technologies, proporciona un motor de inferencia listo para producción diseñado para simplificar la conversión de modelos.

El software aquí mencionado apenas llega a la superficie de las bibliotecas y herramientas de software disponibles diseñadas (o adaptables) para el desarrollo de aplicaciones de ML basadas en MCU. Una de las tendencias más interesantes en ML de borde ha sido la aparición de soluciones de desarrollo de ML directamente de los fabricantes de semiconductores de MCU.

Si bien los investigadores de ML pueden estar mejor equipados para crear algoritmos de ML excepcionales, el proveedor de MCU está especialmente calificado para resolver el problema de ingeniería de crear un entorno de desarrollo de ML efectivo para sistemas basados en MCU con recursos limitados. Diseñadas específicamente para este problema, las herramientas como eIQ Toolkit de NXP ayudan a acelerar el desarrollo de modelos de ML destinados a ejecutarse en MCU (Figura 2).

Figura 2: La disponibilidad de herramientas como eIQ Toolkit de NXP ha simplificado drásticamente el desarrollo de aplicaciones de ML basadas en MCU para el borde. (fuente de la imagen: NXP Semiconductors).

Conclusión

Debido a los requisitos únicos de los dispositivos integrados, es posible que el desarrollo de aplicaciones de ML de borde no alcance el tipo de implementación llave en mano que se busca para las aplicaciones de ML de nivel empresarial, pero ya está ganando el tipo de soporte de hardware y software que ha permitido tantos dispositivos inteligentes.

Nos sumergiremos en el desarrollo de ML de borde y el ecosistema de ML de NXP en un próximo artículo que muestra lo fácil que se ha vuelto implementar las distintas aplicaciones de ML en el borde. Es posible que aún no esté completamente listo para usar, pero el ML de borde se está volviendo mucho más accesible y fácil de implementar.

Acerca de este autor

Image of Stephen Evanczuk

Stephen Evanczuk tiene más de 20 años de experiencia escribiendo para y sobre la industria de electrónica en un amplio rango de temas, entre ellos hardware, software, sistemas y aplicaciones, que incluyen IoT. Se doctoróen neurociencias (redes neuronales) y trabajó en la industria aeroespacial en sistemas seguros con distribución masiva y métodos de aceleración de algoritmos. Actualmente, cuando no escribe artículos sobre tecnología e ingeniería, trabaja en aplicaciones de aprendizaje profundo sobre sistemas de reconocimiento y recomendaciones.

More posts by Stephen Evanczuk
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum