[en] TinyML aims to implement machine learning (ML) applications on small, and low-powered devices like microcontrollers. Typically, edge devices need to be connected to data centers in order to run ML applications. However, this approach is not possible in many scenarios, such as lack of connectivity. This project investigates the tools and techniques used in TinyML, the constraints of using low-powered devices, and the feasibility of implementing advanced machine learning applications on microcontrollers. To test the feasibility of implementing ML applications on microcontrollers, three TinyML programs were developed. The first, a basic keyword spotting application able to recognize a set of words. The second, a program for training a neural network model on a microcontroller following an online learning approach. And the third, a federated learning program able to train a single global model with the aggregation of local models trained on multiple microcontrollers. The results show optimal performance in all three applications once deployed on microcontrollers. The development of basic TinyML applications is straightforward when the machine learning pipeline is understood. However, the development of advanced applications turned out to be very complex, as it requires a deep understanding of both machine learning and embedded systems. These results prove the feasibility of successfully implementing advanced ML applications on microcontrollers, and thus, unveil a bright future for TinyML.

[es] TinyML tiene como objetivo la implementación de aplicaciones de aprendizaje automático en dispositivos de poco tamaño y baja potencia, como los microcontroladores. Normalmente los dispositivos periféricos necesitan estar conectados a centro de datos para poder ejecutar aplicaciones de aprendizaje automático. Sin embargo, este método no es posible en muchos escenarios, como en la falta de conectividad. Este estudio investiga las herramientas y técnicas utilizadas en TinyML, las limitaciones en la utilización de dispositivos de baja potencia y la viabilidad de implementar aplicaciones avanzadas de aprendizaje automático en microcontroladores. Se desarrollaron tres programas para comprobar la viabilidad de implementar aplicaciones de aprendizaje automático en microcontroladores. El primero, una aplicación capaz de reconocer un conjunto de palabras claves. El segundo, un programa capaz de entrenar un modelo de red neuronal en el microcontrolador siguiendo un enfoque de aprendizaje en línea. Y el tercero, un programa de aprendizaje federado capaz de entrenar un único modelo global con la agregación de modelos locales entrenados en múltiples microcontroladores. Los resultados muestran un óptimo rendimiento de las tres aplicaciones una vez desplegadas en los microcontroladores. El desarrollo de aplicaciones básicas de TinyML resulta sencillo una vez entendidos el proceso de aprendizaje automático. Sin embargo, el desarrollo de aplicaciones avanzadas es muy complejo, ya que requiere un profundo conocimiento tanto del aprendizaje automático como de los sistemas embebidos. Estos resultados demuestran la viabilidad de implementar con éxito aplicaciones avanzadas de aprendizaje automático en microcontroladores, y por lo tanto, desvelan un futuro brillante para TinyML.