High Level Architecture
High Level Architecture
High Level Architecture
General overview
Like other machine learning platforms, the Akida Execution Engine (AEE) is composed of a python
framework library and a C++ kernel library.
In the current version, all AEE features are provided by the C++ kernel library, which is actually a simulator
library that replicates on a CPU the behaviour of the Akida NSoC.
The python framework library is a very thin layer of interface wrapping in python the calls to the simulator.
Models can only be instantiated through the deserialization of YAML network description files that can be
either written manually, or generated by the C++ kernel engine from an already instantiated model.
The trained model variables for each layer can be saved along the network description in dedicated binary
files using the Google Flatbuffer format.
In the upcoming release of the AEE, the python framework library will be extended to allow:
The C++ kernel library will still only provide a CPU implementation of the Akida training and inference.
The serialization of the models and layers will still be handled by the C++ kernel library using the hybrid
YAML/Flatbuffer format, but each layer Flatbuffer file will also contain the layer configuration, allowing
them to be instantiated independently.
In the target release of the AEE, the legacy hybrid serialization will be removed, replaced by a full
Flatbuffer-based serialization.
The YAML format will still be supported as a template mechanism to quickly create new networks. It will
however only be available through the python API.
With our current understanding of the Akida hardware interface, the abstraction interface is intended to
be layer-wise. The corresponding implementation is expected to be able to:
• configure the layer network nodes from the provided configuration and variables,
• accept dense (images) or sparse (spikes) inputs and return sparse outputs.
If that is the case, then it would allow the instantiation of hybrid networks with some layers running in the
simulator and some running on the Akida NSoC, allowing us to integrate the different layer types in
multiple iterations.