MLLite is a TinyML software library for on-device training and deployment of Machine Learning Models.
This is a demo of a prototype using MLLite on various devices and microcontrollers.
You will find here some firmware binaries that demonstrate their usage on some SOTA datasets.
All these firmwares use the same MLLite C++ machine learning library code with a scikit-learn-like C++ API.
X86_64 Linux versions (built on Debian) are provided as a benchmark.
Ordered by increasing computational power and market price.
Approximate figures ;)
Usual firmware flashing software/methods.
- STM32F4 (With FPU), BlackPill. ARM Cortex-M4 CPU. 128KB RAM, 512 KB Flash
- ESP32, Espressif Systems. Tensilica (Cadence) L6 CPU. 320KB of RAM, 4MB of Flash
- ESP32s2, Espressif. Wemos Mini. ESP32-S2FNR2, Tensilica L7 CPU. 320KB RAM, 2MB of PSRAM, 4MB of Flash.
- ESP32c3, Espressif. RiscV CPU. RV32IMC ISA. 384KB RAM, 4MB Flash.
- K210. Sipeed Maix M1 Dock. Kendryte K210 CPU. RV64GC ISA. 8MB Ram. 16MB Flash.
- MIPS32. OpenWRT on Xiaomi Mi Router 4A Gigabit Edition network router. 128MB RAM, 16MB Flash.
- ARMv7_32. Samsung Exynos 5422 32-bit ARM SOC. 2GB RAM. 32GB MMC Disk.
- X86_64. HP Z600 workstation running Debian. Intel Xeon CPU X5650 @ 2.67GHz. 32 GB of RAM. 128 GB of disk. Used for development and as desktop.
Classification and Regression models.
- Usual scikit-learn models : Decision Trees, Ridge Regressions, SVMs, MLPs.
- XGBoost.
- Random Forests.
Available in this repository. Both as CSV and embedded in C++ code. In three different sizes each.
- Classification datasets : iris, census, digits, Breast Cancer, ...
- Regression datasets : diabetes, california housing, freidman3, ...