Getting Started with EdgeVolution¶
This guide will help you set up and run EdgeVolution on your system.
Setup¶
Cloning the repository¶
Docker Build Targets¶
The Dockerfile provides two build targets. The embedded image extends ml — it contains everything in ml plus the hardware toolchain:
┌──────────────────────────────────────────────────────────────┐
│ embedded (docker build --target embedded .) │
│ │
│ nRF CLI tools, Segger J-Link, Zephyr SDK, west workspace │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ ml (docker build .) ← DEFAULT target │ │
│ │ │ │
│ │ TensorFlow 2.9.1-gpu · Python deps · project code │ │
│ └────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
ML/NAS only (default) — architecture search, training, evaluation:
Embedded — everything above plus cross-compilation and flashing to MCUs:
The embedded build downloads the Zephyr SDK and modules (~1.5 GB). Docker caches this layer, so subsequent builds are fast.
Running the Container¶
ML/NAS (GPU-accelerated):
Embedded (with USB passthrough for J-Link):
Configuration¶
Defining hyperparameters¶
Before the EdgeVolution optimization run is started, some configurations must be made. These include the definition of hyperparameters, the search space and the boards that are to be used for evaluating the candidates on the microcontroller.
-
Search space setup
Search Space -
Hyperparameters
Hyperparameters --> Important to update results path! -
Microcontroller setup
Microcontrollers -
Dataloader definition
Dataloader Definition
Execution¶
Running an experiment¶
python main.py +hyperparameters=<your_hyperparams> +search_space=<your_search_space> +boards=nrf52840dk
Visualization¶
The EvoVis Dashboard can be used to visualize and interpret the results of an EdgeVolution experiment run.