We are pleased to announce the release of NxSDK 0.9.0. The installation files are located at /nfs/ncl/releases. Installation steps stay the same as of 0.9.0. Please refer to getting started guides within Startup Materials[also available in nxsdk-apps-0.9.tar.gz/docs]
The release is available for all participants who have signed the INRC participation agreement and have access to the INRC Cloud.
Highlights
Improved DNN Integration via NxTF Interface, Slayer and SNN Toolbox
Run your pre-trained Keras or Slayer models now on Loihi. SNN Toolbox now supports Loihi as a backend configuration. Or, use NxTF layers with Keras interface to compile models directly.
Integrate & Pipeline Models, Processes & Input Generators using Composability
Create pipelines which can compose of models and features developed by others and use the composability framework to compile it down to Loihi. Promotes feature reuse and faster collaboration using a common interface
Compact packaging using Embedded Execution Engine for running networks and models on devices with memory constraints
Improved support for running models on devices such as ODROID or UP Squared where you just want to ship pre-packaged network with snips and get it running using host snips for external interaction
Improved Performance - Compilation, DVS, Spike Injection and more
0.9.0 comes with many performance improvements. Serializing/Deserializing of networks have been improved. Spike Injection now uses a compact encoding making it 10x faster
New Features/Improvements
General
NxTF : Users should be able to create (or port from existing) deep neural networks on Loihi. NxTF implements the Keras interface. Users can also use SNN Toolbox to port exist DNNs to Loihi.
Composability : Provides an interface to enable modules, applications and frameworks to be stitched together and compiled down to the NxBoard Graph.
Slayer : Slayer integration has been added within nxsdk_modules. It allows to run models pre-trained using slayer on Loihi
**Embedded Execution Engine ** : A new execution engine to run on embedded platform with minimum memory requirements
Concurrent Host Snips are now available for users to run concurrent execution on host while neurocore execution is in progress
DVS :
Performance improvement - Access to the snip for users to modify the spike injection
Basic Spike Generator : Optimized the spike gen (5-10x improvement)
Users can specify which LMT it will run on (removing the requirement that they are on the same LMT in same phase)
Dependencies for nxsdk_modules have been moved out of nxsdk into its own requirements.txt. Hence, you might need to optionally run
pip install -r nxsdk-apps/nxsdk_modules/requirements.txt
to fetch dependencies for some of these modules.
NxNet
NxSDK compiler now supports user specified custom partitioners and mappers. A custom partitioner and mapper can be individually specified for each network in a network tree.
Updated documentation for APIs to use and query resource maps
Jupyter Tutorials | Feature Covered | Description | Category |
---|---|---|---|
s_multicx_neuron_self_reward.ipynb | Mutlicompartment neurons, reward channels | This tutorial illustrates learning a synaptic weight to synchronise spiking of soma and dendrite compartments | NxNet |
t_vMinExp_and_vM axExp.ipynb | Compartment settings | This tutorial demonstrates the usage of vMaxExp and vMinExp in compartments | NxNet |
Python Tutorials | Feature Covered | Description | Category |
---|---|---|---|
tutorial_26_conc urrent_host_snip s_with_yarp_int egration | Host Snips | This tutorial demonstrates using yarp ports with concurrent host snips. | Snips |
NxSDK Modules
Jupyter Tutorials | Feature Covered | Description | Category |
---|---|---|---|
nxsdk_modules/dnn/ tutorials/a_nxtf_ partitioning_mappi ng | DNN mapping | This tutorial demonstrates how to use the NxTF framework to partition a DNN for Loihi. | NxTF |
nxsdk_modules/dnn/ tutorials/b_nxtf_ mnist | DNN mapping | This tutorial demonstrates how to use the NxTF framework to run a DNN on Loihi. | NxTF |
nxsdk_modules/dnn/ tutorials/c_snntb_mnist | DNN mapping | This tutorial demonstrates how to use the SNN Toolbox to run a DNN on Loihi. | NxTF |
nxsdk_modules/dnn/ tutorials/d_mnist_using_composables | Composables | This tutorial demonstrates how to use the composability interface to compose DNN with Input Generator and run the MNIST network on Loihi. | NxTF |
nxsdk_modules/slay er/tutorials/nmnist /NMNIST | SLAYER fully connected | This tutorial demonstrates how to run a SLAYER-trained fully connected model on Loihi. | SLAYER |
nxsdk_modules/slay er/tutorials/gestur e/gesture | SLAYER convnet | This tutorial demonstrates how to run a SLAYER-trained convolutional model on Loihi. | SLAYER |
NxCore
Embedded Execution: Use board.generateEEEArtifacts() to package and distribute execution artifact to be run in an embedded environment. This is primarily useful when the only interaction is via host snips (All communication and execution happen between host and neurocores/lmt)
Serialization/Deserialization performance has been improved by using binary format. This makes board.dumpNeuroCores(...) and board.dumpNeuroCores(...) faster
Python Tutorials | Feature Covered | Description | Category |
---|---|---|---|
tutorial_22_host _snips_with_yar p_integration | Host Snips | This tutorial demonstrates using yarp ports with host snips. | Snips |
tutorial_23_host _snips_with_ros _integration | Host Snips | This tutorial demonstrates using ros with host snips. | Snips |
tutorial_24_cont rol_loop_using_ rospy | Snips | This tutorial demonstrates using ros with channels from superhost useful for proto-typing with ROS. | Snips |
API Changes/Deprecations
Custom partitioners that partitioned an entire network tree is no longer supported. Custom partitioners are now specified on a per NxNet object level.
In createChannel : elementType would be deprecated in 0.9 in favor of messageSize, which provides more flexibility of specifying size of a message.
Major bug fixes for release
Fixed the slowness issue while loading neurocores (board.loadNeuroCores) on KapohoBay
Fixed a bug related to logical id spilling over core boundary