TinyMaix,一个面向微控制器的轻量级机器学习库

原文链接:TinyMaix is a lightweight machine learning library for microcontrollers 由Jean-Luc Aufranc撰写。
本文共计 540 字,预计阅读 1 分钟

矽速科技(Sipeed)的 TinyMaix 是一款专为微控制器设计的轻量级开源机器学习库。  TinyMaix 可以在 Arduino UNO 开发板及其克隆板中的 Microchip ATmega328 MCU 上运行。

TinyMax 其实是矽速科技利用两个周末的业余时间完成的项目,其核心代码不到 400 行、二进制大小约有 3KB、内存使用率低,这些特性使 TinyMax 能够在仅有 2KB SRAM 和 32KB 闪存的 ATmega320 MCU 上运行 MNIST 手写数字识别。

在 Arduino 上运行的 TinyMaix 机器学习

TinyMaix 的亮点

  • 核心代码少于400 (tm_layers.c+tm_model.c+arch_O0.h),代码段(.text)少于3KB
  • 低内存消耗,甚至Arduino ATmega328(32KB Flash, 2KB Ram) 都能基于TinyMaix跑mnist(手写数字识别)
  • 支持INT8/FP32/FP16模型,支持keras h5或tflite模型转换
  • 支持多种芯片架构的专用指令优化: ARM SIMD/NEON/MVEI,RV32P, RV64V
  • 友好的用户接口,只需要load/run模型~
  • 支持全静态的内存配置(无需malloc)
  • 即将支持MaixHub在线模型训练

矽速科技方面表示,现在已经有挺多 TinyML 推理库了,比如用于微控制器的 TensorFlow Lite、microTVM 或 NNoM。但他们仍然希望 TinyMax 成为一个足够简单的 TinyML 推理库,它可以让用户们放弃了使用 CMSIS-NN 等加速库,而且可以在 30 分钟内走读完代码。考虑到它可以在 8 位微控制器上运行,我觉得它可能更类似于 Fraunhofer IMS 在2021年7月开源的AIfES for Arduino。

TinyMaix未来的特性包括 INT16 量化模型、以更高的精度更好地支持 SIMD/RV32P 加速、(不过这一点要牺牲的是更大的占用空间)、支持 Mobilenet v2 的 Concat OPA (但使用两倍的内存并且可能很慢),以及以增加 RAM 和内存带宽消耗为代价提高推理速度的Winograd卷积优化。

该项目使用的源代码和说明可以在 Github 库中查询。

本文消息来源于 Hackster.io。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论