Task-Level Model Demo
Introduction
Each task in SleepKit has a corresponding demo mode that allows you to run a task-level demonstration using the specified backend inference engine (e.g. PC or EVB). This is useful to showcase the model's performance in real-time and to verify its accuracy in a real-world scenario. Similar to other modes, the demo can be invoked either via CLI or within sleepkit
python package. At a high level, the demo mode performs the following actions based on the provided configuration parameters:
- Load the configuration data (e.g.
configuration.json
) - Load the desired features (e.g.
FS-W-A-5
) - Load the trained model (e.g.
model.keras
) - Initialize inference engine backend (e.g.
pc
orevb
) - Generate input data (e.g.
x, y
) - Perform inference on backend (e.g.
model.predict
) - Generate report (e.g.
report.html
)
graph LR
A("`Load
configuration
__TaskParams__
`")
B("`Load
features
__FeatureFactory__
`")
C("`Load trained
__model__
`")
D("`Initialize
inference engine
__BackendFactory__
`")
E("`Generate
input stimulus
`")
F("`Perform
__inference(s)__
`")
G("`Generate
__report__
`")
A ==> B
B ==> C
C ==> D
subgraph CF["Inference Engine"]
D ==> E
E ==> F
end
F ==> G
Inference Backends
SleepKit includes two built-in backend inference engines: PC and EVB. Additional backends can be easily added to the SleepKit framework by creating a new backend class and registering it to the backend factory.
PC Backend
The PC backend is used to run the task-level demo on the local machine. This is useful for quick testing and debugging of the model.
- Create / modify configuration file (e.g.
stage-class-4.json
) - Ensure "pc" is selected as the backend in configuration file.
- Run demo
sleepkit --mode demo --task stage --config ./configs/stage-class-4.json
- HTML report will be saved to
${job_dir}/report.html
EVB Backend
The EVB backend is used to run the task-level demo on an Ambiq EVB. This is useful to showcase the model's performance in real-time and to verify its accuracy in a real-world scenario.
- Create / modify configuration file (e.g.
stage-class-2.json
) - Ensure "evb" is selected as the backend in configuration file.
- Plug EVB into PC via two USB-C cables.
- Build and flash firmware to EVB
cd evb && make && make deploy
- Run demo
sleepkit --mode demo --task beat --config ./configs/stage-class-4.json
- HTML report will be saved to
${job_dir}/report.html
Bring-Your-Own-Backend
Similar to datasets, tasks, and models, the demo mode can be customized to use your own backend inference engine. SleepKit includes a backend factory (BackendFactory
) that is used to create and run the backend engine.
How it Works
-
Create a Backend: Define a new backend class that inherits from the
sk.InferenceBackend
base class and implements the required methods. -
Register the Backend: Register the new backend with the
sk.BackendFactory
by calling theregister
method. This method takes the backend name and the backend class as arguments. -
Use the Backend: The new backend can now be used by setting the
backend
flag in the demo configuration settings.OR by creating the backend directly:
Usage
The following is an example of a task-level demo report for the sleep staging task.
Arguments
Please refer to TaskParams for the list of arguments that can be used with the demo
command.