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. .
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«.
Publicaciones traducidas automáticamente