Blog Post

Block Versioning Simplifies Iterative ML Model Development

Embedded Devices, Machine Learning, TinyMLIntroduction to Block Versioning in Edge Impulse for Simplifying

Dan Situnayake and Zin Thein Kyaw

January 26, 2021

    Iterative development is a crucial part of the machine learning workflow. For embedded ML developers working to maximize the performance and efficiency of their deep learning models, this commonly involves training multiple models in order to test different hyperparameter values side-by-side.

    We’ve seen the Edge Impulse developer community discover many creative ways to do this within our existing tooling, including creating multiple neural network blocks for rapid comparison of different configurations. Inspired by these ideas, we’ve added a new feature to the core of Edge Impulse: Block versioning.

    Designed for rapid iterative development and experiment tracking, block versioning allows users to:

    • Create and compare multiple versions of blocks with different configurations
    • Instantly clone any block version to easily experiment with hyperparameter tweaks
    • Add descriptions to help document and track experiments

    We’re excited that this feature gives developers the freedom to experiment without fear of losing their previous work—something which is really important when learning about embedded ML (or any new technology).

    Let’s take a closer look at how one uses the block versioning feature. The interface is available whenever you’re editing a learning block. As shown below, selecting the drop-down menu will expose some further menu options.

    You can create a new version of a learning block by cloning any existing version. The new version will appear in the list of versions in the drop-down menu. Selecting a version will load all the learning block settings that were previously saved with that version, so you can easily modify and compare models. Once you decide which model works best, you can mark it as Primary so that it is included in the Edge Impulse SDK during deployment.

    When “Manage versions” is selected (as shown below), one can choose which signal processing blocks are used as input to the current version, edit the description of each block version, and change the selection of the primary version.

    In the near future we’ll also be bringing this feature to our signal processing and input blocks to make experimenting with different configurations of these just as convenient.

    We would like to thank our wonderful Edge Impulse community for inspiring us to keep introducing new features such as this so that machine learning can be accessible and easy-to-use for everyone.



    Dan Situnayake is the Founding TinyML engineer at Edge Impulse and an embedded Machine Learning guru. Zin Thein Kyaw is a Senior User Success Engineer at Edge Impulse.


    Are you interested in bringing machine learning intelligence to your devices? We're happy to help.

    Subscribe to our newsletter