TinyML or Tiny Machine Learning refers to the use of Machine Learning in microcontrollers. In systems that unlike those used in traditional ML have few resources, are systems that have little CPU, little RAM and extremely low power consumption in the order of magnitude of milliwatts or microwatts.
Its official website is the TinyML Foundation.
What is done is to reduce large models for use with equipment with very few resources and microcontrollers. The preferred field of the Makers.
I have started a series of 3 courses offered by Harvard for free
- Fundamentals of TinyML (What do I build, what for and what are the problems)
- Applications of TinyML (data-driven, bias, etc)
- Deploying TinyML (where do we put our models, security and privacy)
The following notes are from the first Fundamentals of TinyML where they explain what it is, when it is applied, the different techniques that are used, etc, etc.
Embedded systems using microcontrollers cannot work with the large models, as they have memories up to 256kB. Here are some examples of operating systems that can be used with microcontrollers
Machine Learning consists of algorithms that search for patterns in data.
With TinyML, techniques are used to compress these algorithms so that they remain effective in finding patterns in data.
There are 5 quintillion bytes of data produced daily by IoT and only less than 1% is analyzed.
Algorithm compression techniques
Some algorithm compression techniques are:
Pruning
Pruning Synapsis: We remove network connections from the model. Sometimes it can decrease the accuracy.
Pruning Neurons: We can also eliminate entire neurons from our model which reduces the computational demand of the network.
Quantization
It consists of discretizing the values within a small range. For example if we discretize a float within the range -128 to 127 we only have to traverse 256 values. Going from a float point value that is stored in 4 bytes to an integer value that is stored in 1 byte implies a x4 reduction in size.
Quantization is going to be critical in TinyML due to the limited resources available.
Knowledge distillation
Apply our knowledge and know how to make the model small.
Tools
We use Tensor Flow Lite. While tensorFlow is focused on ML Researcher, Tensor Flow Lite is for Application Developer.
Uses of TinyML
Although they are not cited, of course being on this website we can find uses of TinyML dedicated to the DIY, Maker and Hacker world.
Uses of TinyML in Industry
In Industry, in maintenance, to warn us when there are vibrations that indicate that there will be breakage, etc, etc. increases efficiency and reduces costs. The negative points are the accuracy that can give us false alarms. In case of false alarm whose responsibility is the operator or the system.
TinyML in the environment
Instead of collecting data that then has to be processed, with TinyML we have real-time answers about changes in the environment, for example in the life of wild animals.
TinyML for humans
Helps people with disabilities to perform more tasks without having to use their hands. Improving the UI and UX of applications to make them easier to use.
We build technology to improve our experience as humans. Technology has to help people
Risks and downsides
- Will it work well across all population groups?
- Is the privacy of our data assured?
- Can we protect this data?
We have to create technology based on human-centered AI. Design, development and deployment