Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Incrustado

Optimización de la IA para aplicaciones integradas

En mi blog anterior hablé sobre cómo la demanda de interfaces basadas en IA se ha vuelto casi inevitable, y que agregar una interfaz basada en IA como face-id para autorizar el acceso a una máquina puede parecer al principio un gran salto, no es así. Habrá sido tan difícil como podría pensar. Hay una gran cantidad de plataformas de inteligencia artificial disponibles, muchas opciones de capacitación e incluso aplicaciones de código abierto, como el ejemplo de identificación facial. Puede estar listo y probando rápidamente con un prototipo que puede ejecutar en su PC.


(Fuente:CEVA)

Restricciones

Mover una red capacitada a su aplicación integrada puede parecer otro gran obstáculo. Las redes capacitadas para PC o en la nube no optimizan mucho el uso de memoria o la energía. Es posible que utilicen palabras dobles o de coma flotante para los cálculos de la red, y se apoyarán en gran medida en los accesos a la memoria fuera del chip a medida que procesan las ventanas deslizantes sobre una imagen. Eso no es un problema para un prototipo que se ejecuta en una PC de alto rendimiento conectada a una toma de corriente, pero debe ser mucho más eficiente en su aplicación final, sin comprometer el rendimiento.

Lo esencial para optimizar

Un paso clave en la optimización se llama cuantificación. Cambiar las ponderaciones de coma flotante a coma fija y reducir el tamaño de la coma fija, digamos de coma flotante de 32 bits a enteros de 8 bits, afecta el tamaño no solo de las ponderaciones sino también de los valores de cálculo intermedios. Esto por sí solo puede reducir significativamente la huella de memoria, con un impacto mínimo en la calidad del reconocimiento en la mayoría de los casos.

Una segunda manipulación consiste en aprovechar la escasez de pesos con un impacto de precisión mínimo. Esta práctica aprovechará los pesos que están cerca de cero y los redondeará a cero, mientras se mantiene un seguimiento cercano del impacto de precisión. Los pesos se utilizan para multiplicar sumas parciales, un ejercicio inútil cuando uno de los factores es cero, por lo que no es necesario realizar la operación.

En implementaciones prácticas, las imágenes se procesan de forma incremental, por lo que los pesos deben actualizarse a medida que la ventana de cálculo se mueve por la imagen. Eso puede generar muchas actualizaciones y mucho tráfico. Al forzar a que un gran porcentaje de los pesos sea cero, la matriz de pesos se puede comprimir, lo que hace posible almacenar todo o gran parte de la matriz en SRAM en el chip, para descomprimir a pedido. Eso, a su vez, minimiza la necesidad de ir a la memoria principal y, por lo tanto, aumenta el rendimiento y reduce la energía. También reduce incidentalmente el tráfico en el chip al cargar pesos. Menos contención de tráfico significa mayor rendimiento.

Debe considerarse un factor más. Como la mayoría de las aplicaciones complejas, las redes neuronales dependen de bibliotecas sofisticadas. Deberá utilizar una biblioteca diseñada para su uso en entornos de microcontroladores y un compilador para la plataforma que elija. Un buen punto de partida podría ser una biblioteca de código abierto, como TensorFlow Lite, pero para la utilización completa del microcontrolador, se requerirá una solución personalizada dedicada.

Por supuesto, saber lo que tienes que hacer no te lo pone fácil. Ahora necesita encontrar una plataforma que agilice estas operaciones y proporcione bibliotecas optimizadas para hardware.

¿Cómo puedo hacer que este flujo sea fácil de usar?

Lo que desea es un flujo en el que pueda tomar la red que entrenó a través de su plataforma específica, TensorFlow por ejemplo, y compilar esto directamente en su solución integrada, sin ninguna intervención más que marcar algunos requisitos básicos. Por supuesto, también desea que la opción pueda optimizar aún más a mano, tal vez estableciendo diferentes niveles de cuantificación en diferentes planos. Quizás experimentando con umbrales de peso versus tamaños de memoria en chip. Y desea bibliotecas optimizadas para el hardware y hardware optimizado para las bibliotecas.

Plataformas de IA probadas como CDNN de CEVA están diseñadas para proporcionar este tipo de flujo. CDNN ofrece un conjunto de herramientas de procesador fuera de línea para la cuantificación y la generación de tareas en tiempo de ejecución, así como bibliotecas de tiempo de ejecución personalizadas para los aceleradores de hardware de CEVA DSP y los usuarios del cliente. La solución de CEVA es compatible con todos los formatos populares de modelos de IA, incluidos TensorFlow Lite, ONNX, Caffe y otros.


Contenidos relacionados:

Para obtener más información sobre Embedded, suscríbase al boletín informativo semanal por correo electrónico de Embedded.


Incrustado

  1. VersaLogic lanza computadoras de clase servidor para aplicaciones integradas
  2. Infineon lanza la serie de energía integrada TLE985x para aplicaciones automotrices
  3. Sundance:módulo de procesador integrado VCS-1 para aplicaciones de robótica de precisión
  4. PPA para aplicaciones de movilidad eléctrica
  5. 4 consejos para optimizar su chorro de agua
  6. Aplicaciones ideales para actuadores neumáticos
  7. 4 tipos de herramientas para aplicaciones de minería
  8. Aplicaciones típicas para frenos de pinza
  9. Aplicaciones militares para aleaciones de bronce
  10. Aplicaciones para Aluminio Bronce C63200
  11. ¿Para qué se utiliza Monel?