[en] In the last decade there have been great and numerous advances made in the field of artificial intelligence and machine learning. These advances were initially driven by the discovery that GPUs' matrix computing capabilities could be applied in deep learning model training, so models that would have taken weeks to train at the beginning of the decade can now be trained in a matter of hours, and the revolution brought by cloud computing, which makes it possible to transfer the execution of machine learning application models to large computing centers. This new reality has allowed the creation of increasingly large and complex machine learning models, capable of providing solutions to problems that might have been unthinkable in the past. Even so, at the second half of the last decade, people started to notice situations where it would be very beneficial to be able to run machine learning models on devices with reduced computational power without having to resort to the use of the aforementioned computing centers. This changed the paradigm from only trying to get models with the highest accuracy, to instead trying to maximize the accuracy of the models while minimizing the resources required to run them. TinyML is the ultimate expression of this paradigm shift. TinyML is a rapidly growing field within machine learning technologies, which includes algorithms, hardware, and software capable of performing data analysis from sensors present in a microcontroller, in the same device that has said sensors, with extremely low energy consumption. This type of application allows the use of machine learning techniques for many new situations yet to be explored, but due to the fact that it is a recently popularized technology, the information related to it is very limited. The objective of this project is to document and analyze the process of creating TinyML applications and provide information on what decisions can be made during their development and the consequences of those decisions, in addition to evaluating the real effectiveness of this type of applications once deployed. The information resulting from this research will shall be used by developers interested in this technology, so that they can learn to use it properly and have enough data to make informed decisions throughout the development of this type of applications.

[es] En la última década han sido grandes y numerosos los avances realizados en el campo de la inteligencia artificial y el aprendizaje automático. Estos avances fueron impulsados inicialmente gracias al descubrimiento de que la capacidad para el cálculo matricial que tienen las GPUs podía aplicarse en el entrenamiento de modelos de aprendizaje profundo, de forma que modelos que hubieran tardado semanas en entrenarse a principios de la década ahora se pueden entrenar en cuestión de horas, a lo que se añadió la revolución que supone el cloud computing, que permite trasladar la ejecución de los modelos de aplicaciones de aprendizaje automático a grandes centros de computación. Esta nueva realidad ha permitido la creación de modelos de aprendizaje automático cada vez más grandes y complejos, capaces de aportar soluciones a problemas que podrían resultar impensables en el pasado. Aun así, en la segunda mitad de la última década se han detectado situaciones donde sería muy beneficioso poder ejecutar modelos de aprendizaje automático en dispositivos de potencia computacional reducida sin tener que recurrir al uso de los centros de computación antes mencionados, de forma que el paradigma cambia de intentar únicamente conseguir que los modelos tengan el mayor grado de acierto a intentar maximizar la eficacia de los modelos a la vez que se minimizan los recursos necesarios para ejecutarlos. TinyML es la máxima expresión de este cambio de paradigma. TinyML es un campo de rápido crecimiento dentro de las tecnologías de aprendizaje automático, que incluye algoritmos, hardware y software capaces de realizar análisis de datos provenientes de sensores presentes en un microcontrolador, en el mismo dispositivo que tiene los sensores, con un consumo energético extremadamente reducido. Este tipo de aplicaciones permiten utilizar técnicas de aprendizaje automático en gran número de nuevas situaciones aun por explorar, pero debido a que se trata de una tecnología de reciente popularización la información relativa a la misma es muy limitada. Este trabajo tiene el objetivo que documentar y analizar el proceso de creación de aplicaciones TinyML y aportar información sobre que decisiones se pueden tomar durante su desarrollo y sus consecuencias, además de evaluar la eficacia real de este tipo de aplicaciones una vez desplegadas. La información resultante de esta investigación servirá para que nuevos desarrolladores interesados en esta tecnología puedan aprender a usarla de forma adecuada y dispongan de datos suficientes para tomar decisiones informadas a lo largo del desarrollo de este tipo de aplicaciones.