TinyMaix es una librería ML ligera para microcontroladores

La librería de aprendizaje automático (Machine Learning) de código abierto Sipeed TinyMaix está diseñada para microcontroladores y es lo suficientemente liviana como para ejecutarse en una MCU Microchip ATmega328 que se encuentra en la placa Arduino UNO y sus muchos clones.

Desarrollado durante un hackathon de fin de semana, el código central de TinyMax tiene unas 400 líneas de largo, con un tamaño binario de aproximadamente 3 KB y un bajo uso de RAM, lo que le permite ejecutar la clasificación de dígitos escritos a mano MNIST en una MCU ATmega320 con solo 2 KB de SRAM y 32 KB de flash. .

TinyMaix ML Arduino

Aspectos destacados de TinyMax

  • Pequeño espacio
    • El código principal tiene menos de 400 líneas (tm_layers.c+tm_model.c+arch_O0.h), la sección de código .text tiene menos de 3 KB
    • Bajo consumo de RAM, con la clasificación MNIST ejecutándose en menos de 1 KB de RAM
  • Compatible con el modelo INT8/FP32, convertir de keras h5 o tflite.
  • Admite aceleración de múltiples arquitecturas: ARM SIMD/NEON, MVEI, RV32P, RV64V (extensiones vectoriales RISC-V de 32 y 64 bits)
  • Interfaces fáciles de usar, solo cargue/ejecute modelos
  • Admite configuración de memoria estática completa
  • La compatibilidad con MaixHub Online Model Training estará disponible próximamente

Sipeed dice que ya existen bibliotecas de aprendizaje automático como TensorFlow Lite para microcontroladores, microTVM o NNoM, pero TinyMax pretende ser una biblioteca TinyML más simple, no utiliza bibliotecas como CMSIS-NN y debería tardar unos 30 minutos en comprenderse. Teniendo en cuenta que puede ejecutarse en microcontroladores de 8 bits, podría ser más comparable a AIfES para Arduino, que Fraunhofer IMS hizo de código abierto en julio de 2021.

Las posibles características futuras de TinyMaix incluyen el modelo cuántico INT16 para una mayor precisión y un mejor soporte para la aceleración SIMD/RV32P, a costa de una mayor huella, Concat OPA para compatibilidad con Mobilenet v2 (pero usa el doble de memoria y puede ser lento) y Optimización de convolución de Winograd para velocidades de inferencia más altas a costa de un aumento en el consumo de RAM y ancho de banda de memoria.

Encontrará el código fuente y las instrucciones para comenzar en el repositorio de Github para el proyecto.

Traducido del artículo en inglés «TinyMaix is a lightweight machine learning library for microcontrollers«.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments