CS249r: Tiny Machine Learning

Applied Machine Learning for Embedded IoT Devices

Welcome

Course Overview

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.


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

Reference Book

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!

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.


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.

Syllabus*

CS249R:tinyML syllabus

*The syllabus is tenative and subject to change.

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: 10%

  • Class Participation: 10%

  • Programming assignments: 35%

  • Final Project: 35%

Instructors

Vijay
Janapa Reddi

Associate Professor,
Harvard University


Pete
Warden

Technical lead of TensorFlow
Mobile and Embedded, Google


Teaching Assistants

Colby
Banbury

Website / Contact

Office Hours:

Fri: 12-1 PM

Srivatsan Krishnan

Website / Contact

Office Hours:

Mon: 3-4 PM

Brian
Plancher

Website / Contact

Office Hours: TBD

Radhika
Ghosal

Website / Contact

Office Hours:

Tue: 3-4 PM

Active Learning Labs Staff

Evan
Smith

Website / Contact

Office Hours: TBD

Benjamin
Brown

Website / Contact

Office Hours: TBD

We are grateful for support from:

Google

Arduino