CS249r: Tiny Machine Learning
Applied Machine Learning on Embedded IoT Devices
Fall 2022
Previous Years: [Fall 2020]
Course Overview
About the Course
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 rapid growth of machine learning and how easy it is to use platforms like TensorFlow (TF) make it an important subject for computer science and electrical engineering students to learn about today.
Course Topics
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
Instructor
Teaching Assistants
John L. Loeb Associate Professor of Engineering and Applied Sciences,
Harvard University
Class Information
Schedule
Class meets every Monday
12:45 PM - 3:30 PM
General Information
Resources
Reference Book
We recommend 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!
Coding Assignments
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.
Projects
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.
Prerequisites
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.
Grading
Paper Reviews: 10%
Paper Presentation: 25%
Class Participation: 5%
Programming assignments: 15%
Final Project: 45%
Development Platforms
Cortex-M4 Microcontroller
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.