ARM-software/CMSIS-NN
CMSIS-NN Library
What it solves
CMSIS-NN provides a collection of highly efficient neural network kernels designed to maximize performance and minimize memory usage for AI models running on Arm Cortex-M processors. It solves the challenge of deploying neural networks on resource-constrained microcontrollers by providing optimized implementations of common operators.
How it works
The library implements neural network operators using three levels of optimization based on the target hardware's capabilities:
- Pure C: Reference implementations that work on all processors (e.g., Cortex-M0, M3).
- DSP Extension: Uses SIMD instructions for processors like Cortex-M4 or M33.
- MVE Extension: Uses Arm Helium Technology (M-profile Vector Extension) for high-performance vector processing on cores like Cortex-M55 or M85.
It primarily follows the int8 and int16 quantization specifications of TensorFlow Lite for Microcontrollers (TFLM) to ensure bit-exact compatibility, though it also offers experimental float16 and float32 APIs for MVE-enabled CPUs.
Who it’s for
It is intended for developers deploying machine learning models to Arm Cortex-M microcontrollers, particularly those using frameworks like TensorFlow Lite for Microcontrollers or ExecuTorch.
Highlights
- Hardware-Specific Optimization: Tailored kernels for Pure C, DSP, and MVE (Helium) architectures.
- Broad Operator Support: Includes Conv2D, DepthwiseConv2D, Fully Connected, LSTM, and various pooling and activation functions.
- Quantization Support: Bit-exact compatibility with TFLM int8 and int16 specifications.
- Experimental Float Support: Provides float16 and float32 APIs for specific use cases where quantization is not feasible.
- Python Bindings: Includes pybind11-based helpers to calculate host buffer sizes.
Related
- Project
- Project
- Project
- Project
- Project