MiniML/MiniTensor Engine
🚀 MiniML Engine v1.1.0: The Edge Deep Learning Release
I am proud to announce the release of MiniML Engine v1.1.0. After several months of preparing this update in the shadows, locally on my machine, a monumental update has been completed that transforms the framework from a classic Machine Learning suite into an industrial-grade Deep Learning ecosystem for Edge AI.
This version introduces MiniTensor, an automatic differentiation (Autograd) and N-Dimensional linear algebra engine built with zero external dependencies (no NumPy, no PyTorch), designed to export complex neural networks to microcontrollers with extreme resource constraints (SRAM < 2KB).
🔥 Technical and Architectural Milestones (Changelog)
1. Zero-Dependency Autograd Engine (MiniTensor)
A native tensor engine in pure Python has been integrated, supporting dynamic computational graphs and backpropagation. This allows for training complex architectures directly on the host PC, guaranteeing a strict mathematical translation (1:1) to C++ without relying on third-party libraries.
2. Hybrid INT8 Quantization (Post-Training Quantization in MLP)
To combat memory bottlenecks in 8-bit and 32-bit hardware, the engine implements automatic quantization.
- The floating-point neural network weights (
Float32) are compressed into 8-bit integers (INT8) during C++ compilation. - Result: A ~75% reduction in model size within physical storage. De-quantization occurs "on the fly" during inference, preserving mathematical precision up to the fourth decimal place.
3. Operator Fusion & Complex Topologies
The C++ code exporter now features compiler optimizations for advanced architectures:
- SeparableConv2D (MobileNet-Style): Implements Operator Fusion, fusing the Depthwise and Pointwise convolution operations into the same C++ loop to minimize memory access and drastically reduce clock cycles.
- ResidualBlock1D (ResNet-Style): Full support for Skip Connections, with strict geometric indexing to align dynamic tensor dimensions in static memory.
4. Extreme Memory Optimization (PROGMEM)
The exporter has been rewritten to protect the SRAM (dynamic RAM) of microcontrollers. All weight tensors, decision trees, SVM hyperplanes, and KNN datasets are now strictly indexed in Flash memory using the PROGMEM directive. Matrix operations are computed in-place by reading directly from non-volatile memory.
5. Industrial Packager (PlatformIO & Arduino IDE)
The outdated Header-Only export model has been replaced. The new LibraryPackager module generates a .zip file with a professional architecture:
- Strict separation of declarations and implementations (
src/*.cppandinclude/*.h) to prevent linker collisions (Multiple Definitions). - Generation of dual manifests:
library.json(for MLOps ecosystems in PlatformIO with-O3optimization build flags) andlibrary.properties(for legacy compatibility with the Arduino IDE).
"Train on PC, Run on Metal."
🚀 MiniML Engine v1.1.0: The Edge Deep Learning Release
Me enorgullece anunciar el lanzamiento de MiniML Engine v1.1.0. Luego de varios meses preparando la actualización desde las sombras, localmente desde mi equipo, se ha terminado una actualización monumental que transforma el framework de una suite de Machine Learning clásico a un ecosistema de Deep Learning de grado industrial para Edge AI.
Esta versión introduce MiniTensor, un motor de diferenciación automática (Autograd) y álgebra lineal N-Dimensional construido con cero dependencias externas (sin NumPy, sin PyTorch), diseñado para exportar redes neuronales complejas hacia microcontroladores con recursos extremos (SRAM < 2KB).
🔥 Hitos Técnicos y Arquitectónicos (Changelog)
1. Zero-Dependency Autograd Engine (MiniTensor)
Se ha integrado un motor tensorial nativo en Python puro que soporta grafos computacionales dinámicos y propagación hacia atrás (Backpropagation). Esto permite entrenar arquitecturas complejas directamente en el PC anfitrión, garantizando una traducción matemática estricta (1:1) al lenguaje C++ sin depender de librerías de terceros.
2. Cuantificación Híbrida INT8 (Post-Training Quantization en MLP)
Para combatir los cuellos de botella de memoria en hardware de 8-bits y 32-bits, el motor implementa cuantificación automática.
- Los pesos de la red neuronal en punto flotante (
Float32) se comprimen a enteros de 8 bits (INT8) durante la compilación a C++. - Resultado: Reducción del ~75% en el tamaño del modelo dentro del almacenamiento físico. La de-cuantización ocurre "al vuelo" durante la inferencia, preservando la precisión matemática hasta el cuarto decimal.
3. Operator Fusion & Topologías Complejas
El exportador de código a C++ ahora cuenta con optimizaciones de compilador para arquitecturas avanzadas:
- SeparableConv2D (MobileNet-Style): Implementa Operator Fusion, fusionando las operaciones de convolución Depthwise y Pointwise en el mismo bucle de C++ para minimizar el acceso a memoria y reducir drásticamente los ciclos de reloj.
- ResidualBlock1D (ResNet-Style): Soporte total para Skip Connections, con indexación geométrica estricta para alinear dimensiones dinámicas de tensores en memoria estática.
4. Optimización Extrema de Memoria (PROGMEM)
El exportador ha sido reescrito para proteger la SRAM (RAM dinámica) de los microcontroladores. Todos los tensores de pesos, árboles de decisión, hiperplanos SVM y conjuntos de datos KNN ahora se indexan forzosamente en la memoria Flash mediante la directiva PROGMEM. Las operaciones matriciales se calculan in-place leyendo directamente de la memoria no volátil.
5. Empaquetador Industrial (PlatformIO & Arduino IDE)
Se ha sustituido el modelo anticuado de exportación Header-Only. El nuevo módulo LibraryPackager genera un archivo .zip con arquitectura profesional:
- Separación estricta de declaraciones e implementaciones (
src/*.cppeinclude/*.h) para evitar colisiones de linker (Multiple Definitions). - Generación de manifiestos duales:
library.json(para ecosistemas MLOps en PlatformIO con build flags de optimización-O3) ylibrary.properties(para compatibilidad heredada con Arduino IDE).
"Train on PC, Run on Metal."