Embedded Learning Library (ELL)

An Open Source Library for Embedded AI and Machine Learning from Microsoft

The Embedded Learning Library (ELL) allows you to design and deploy intelligent machine-learned models onto resource constrained platforms and small single-board computers, like Raspberry Pi, Arduino, and micro:bit. The deployed models run locally, without requiring a network connection and without relying on servers in the cloud. ELL is an early preview of the embedded AI and machine learning technologies developed at Microsoft Research.

We built ELL for makers, technology enthusiasts, students, entrepreneurs, and developers who aspire to build intelligent devices and AI-powered gadgets. Our tools, our code, and all of the other resources available on this website are free for anyone to adapt and use (for details, see licensing below). Just keep in mind that ELL is a work in progress and that we expect it change rapidly, including breaking API changes.

ELL is a software library and an accompanying set of software tools, written in modern C++, with an optional interface in Python. Download ELL from our GitHub repository, either as a zip file, or with the following command:

git clone https://github.com/Microsoft/ELL.git

While the goal of ELL is to deploy software onto resource constrained platforms and small single-board computers, most of the interaction with ELL occurs on a laptop or desktop computer (Windows, Ubuntu Linux, or macOS). Technically, you can think of ELL as a cross-compiler for embedded intelligence - the compiler itself runs on your laptop or desktop computer and the machine code that it generates runs on your single-board computer.

Installation and Setup

Install ELL on a Windows, Ubuntu Linux, or macOS laptop or desktop computer. If you intend to deploy models onto a Raspberry Pi, follow our instruction on Raspberry Pi Setup.

Getting Started

A great place to start is our tutorials section. As we develop and release new functionality in ELL, we also publish tutorials that showcase that functionality. Currently, our tutorials are focused on simple embedded computer vision tasks on Raspberry Pi, but we expect the scope to grow with time. Have fun!

Our gallery is a collection of bits and pieces that you can download and use in your projects. Currently, the gallery includes a handful of pre-trained computer vision models and instructions for 3D printing an active cooling attachment for your Raspberry Pi.


The ELL code and sample code in our tutorials are released under the MIT Open Source License. Some of the other content on this website, such as the 3D models in our gallery, are released under the Creative Commons Attribution 4.0 license.

Conduct and Privacy

ELL has adopted the Microsoft Open Source Code of Conduct. For more information on this code of conduct, see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments. Read Microsoft’s statement on Privacy & Cookies.