Memory Footprint Optimization Techniques for Machine Learning Applications in Embedded Systems
- 1. Microprocessors and Digital Systems Laboratory, ECE, National Technical University of Athens, Greece
- 2. IMEC-NL, Eindhoven, The Netherlands
- 3. Katholieke Universiteit Leuven, Kasteelpark Arenberg 10, 3001 Heverlee, Belgium; IMEC, Kapeldreef 75, 3001 Heverlee, Belgium
Effective memory management is an important requirement for embedded devices that operate at the edges of Internet of Things(IoT) networks. In this paper, we present a set of memory optimization techniques for machine learning applications developed in Python. The proposed techniques aim to avoid the main drawbacks of static memory allocation and to promote dynamic memory management, in order to optimize memory usage and execution latency. The results of the presented techniques are evaluated in a biomedical application, showing significant memory utilization and performance improvements (64% reduction in memory size requirements and 51% execution time reduction). Additionally, we highlight the applicability of the proposed techniques to a wide variety of IoT applications that leverage machine learning algorithms. Finally, the results of the optimized biomedical application in Python are compared with the corresponding version of the application in C and we identify trade-offs between software maintainability and memory size requirements.