CS249r: Tiny Machine Learning
Applied Machine Learning for Embedded IoT Devices
Tiny Machine Learning (TinyML) is an introductory course at the intersection of Machine Learning and Embedded IoT Devices. The pervasiveness of ultra-low-power embedded devices, coupled with the introduction of embedded machine learning frameworks like TensorFlow Lite for Microcontrollers, will enable the mass proliferation of AI-powered IoT devices. The explosive growth in machine learning and the ease of use of platforms like TensorFlow (TF) make it an indispensable topic of study for modern computer science and electrical engineering students.
The course will cover all things related to machine learning on embedded devices. The topics range from tinyML applications and algorithms to the design of the frameworks built for running ML on embedded systems to the microcontroller hardware designed, optimized, and built for ultra-low power (milliwatts) computing:
tinyML Applications and Usecases
tinyML algorithms machine learning algorithms and optimizations
tinyML frameworks, tools, and techniques
Ultra-low-power system design
What You'll Learn & Do in the Course
At the end of the course, you would have been exposed to the following:
Brief introduction to ML and IoT
Industry talks about real-world deployments
Discussion of bleeding edge academic research
Practical experience through hands-on project assignments
At the end of the course, you would have achieved the following:
Gained familiarity with cutting edge literature in the field of tinyML
Learnt to train and deploy models on microcontrollers with TF-micro
Conceived and developed a (novel) TinyML application running on a MCU
We recommend Pete's TinyML book as a reference for the projects and programming assignments. The book is a good primer for anyone new to embedded devices and machine learning. It serves as a good starting point for understanding the machine learning workflow, starting from data collection to training a model that is good enough for deploying on ultra-low power computing devices.
The course builds on top of some concepts covered within this book. We are also preparing an e-book that is a good primer to fill-in material that is supplementary to this book. Stay tuned!
To get everyone familiar with coding on embedded systems with ML, we will be using the examples provided in this book as a starting point. Each assignment will build on the examples provided.
The course will culminate with project demos! You will have an opportunity to showcase what you have learned by incorporating your experience into a hands-on project of your liking. Alternatively, we will provide a list of suggested projects that will allow you to start from the class assignments.
You will learn to run your ML models on a Nordic nrf52840 processor (256KB RAM, 1 MB Flash, 64 MHz) on the Arduino Nano 33 BLE Sense platform.
TensorFlow Lite (Micro)
You will use TF Lite (Micro) to deploy your ML models,
which is offered free of cost by Google.
You must be confident and comfortable with the following topics:
Proficiency in C/C++ and Python. All class assignments will be involve one or both languages.
Familiarity with command line tools in Mac, Windows or Linux. Assignments will require you to operate a terminal.
You will get more out of the class if you have familiarity with:
College Calculus, Linear Algebra, Basic Probability, and Statistics: Many ML topics revolve around taking derivatives, understanding matrix vector operations and notation, and the concepts of gaussian distributions, means, standard deviations, etc.
Basic Machine Learning / Aritificial Intellifence: The class will provide some introductory material but/and any previous knowledge you have will allow you to dive deeper into the material.
Paper Reviews: 10%
Paper Presentation: 10%
Class Participation: 10%
Programming assignments: 35%
Final Project: 35%
Technical lead of TensorFlow
Mobile and Embedded, Google