{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using XyloSamna and XyloMonitor to deploy a model on XyloAudio 3 HDK" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext", "vscode": { "languageId": "raw" } }, "source": [ "\n", "In this tutorial, we go through an example of deploying an audio classification model (trained in Rockpool) into XyloAudio 3 SNN core in two modes:\n", "\n", "- *Accelerated time* mode using :py:class:`~.syns65302.XyloSamna`\n", "\n", "- *Real-time* mode using :py:class:`~.syns65302.XyloMonitor`\n", " \n", "*Accelerated time* mode is recommended for a quick check of the trained model's validity. Before running the pipeline in real-time, the user can test the model by bypassing the microphone in *Accelerated time* mode and feeding pre-recorded spike trains. The trained model will be quantized and mapped to the Xylo SNN core as it will be done in *Real-time* mode." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext", "vscode": { "languageId": "raw" } }, "source": [ "\n", "The steps for deploying a model are as follows:\n", "\n", "1. Load, map, and quantize the trained checkpoint with tools and transforms from Rockpool\n", "\n", "2. Build the configuration object for the SNN core\n", "\n", "For *Accelerated time* mode:\n", "\n", " 3. Instantiate a :py:class:`~.syns65302.XyloSamna` by passing the configuration object and the connected Xylo HDK device\n", "\n", " 4. Feed the input (pre-generated spike train)\n", "\n", " 5. Analyze the output of the SNN core \n", "\n", "For *Real-time* mode:\n", "\n", " 3. Instantiate a :py:class:`~.syns65302.XyloMonitor` by passing the configuration object and the connected Xylo HDK device\n", "\n", " 4. Play the audio files and record the output of SNN Core \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Common steps for both Accelerated and Real-time mode" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loading the trained model\n", "\n", "In this example, we use a trained model for a binary classification task: detecting a baby's cry. The model is composed of 16 input channels, three layers of LIF (Leak Integrate & Fire) neurons, and one single output neuron. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING /home/vleite/SynSense/rockpool/rockpool/nn/networks/__init__.py:15: UserWarning: This module needs to be ported to the v2 API.\n", " warnings.warn(f\"{err}\")\n", " [py.warnings]\n", "WARNING /home/vleite/SynSense/rockpool/rockpool/nn/networks/__init__.py:20: UserWarning: This module needs to be ported to the v2 API.\n", " warnings.warn(f\"{err}\")\n", " [py.warnings]\n" ] } ], "source": [ "from rockpool.nn.networks import SynNet\n", "from rockpool.nn.modules import LIFTorch\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "ckpt = 'model_sample/to_deploy_inXylo.json'\n", "\n", "# trained model architecture parameters\n", "arch_params = {'n_classes': 1,\n", "'n_channels': 16,\n", "'size_hidden_layers':[63, 63, 63],\n", "'time_constants_per_layer':[3,7,7],\n", "'tau_syn_base': 0.02,\n", "'tau_mem': 0.02,\n", "'tau_syn_out': 0.02,\n", "'neuron_model': LIFTorch,\n", "'dt': 0.00994,\n", "'output': 'vmem'}\n", "\n", "# instantiating the model backbone and loading trained checkpoint\n", "model = SynNet(** arch_params)\n", "model.load(ckpt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mapping, quantizing and building the configuration object for XyloAudio 3 HDK " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from rockpool.devices.xylo.syns65302 import config_from_specification, mapper\n", "import rockpool.transform.quantize_methods as q\n", "\n", "# getting the model specifications using the mapper function\n", "spec = mapper(model.as_graph(), weight_dtype='float', threshold_dtype='float', dash_dtype='float')\n", "# quantizing the model\n", "spec.update(q.channel_quantize(**spec))\n", "\n", "xylo_conf, is_valid, msg = config_from_specification(**spec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using XyloSamna in Accelerated time mode\n", "In *Accelerated time* mode we can give a specific input to XyloAudio that will be processed as quickly as possible, while allowing the monitoring of the internal network state.\n", "This mode is ideal for benchmarking and validating models.\n", "\n", "In *Accelerated time*, the input has to be a list of spike events ordered by timestep. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating XyloSamna: API to interact with HDK in *Accelerated time* mode\n", "\n", "**Note: We need an AudioXylo 3 connected to run this step**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from rockpool.devices.xylo.syns65302 import xa3_devkit_utils as hdu\n", "from rockpool.devices.xylo.syns65302 import XyloSamna\n", "import samna\n", "\n", "# getting the connected devices and choosing xyloa3 board\n", "xylo_nodes = hdu.find_xylo_a3_boards()\n", "xa3 = xylo_nodes[0]\n", "# changing the default operation mode\n", "xylo_conf.operation_mode = samna.xyloAudio3.OperationMode.AcceleratedTime\n", "# instantiating XyloSamna, make sure your dt corresponds to the dt of your input data\n", "Xmod = XyloSamna(device=xa3, config=xylo_conf, dt = 0.01, record = True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feeding the test sample to XyloSamna\n", "- Please see [this tutorial](AFESim3_as_transform.ipynb) as an example on how to convert audio signals into spike trains." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cry detected: True\n" ] } ], "source": [ "import numpy as np\n", "\n", "test_sample = np.load('afesim_sample/AFESimExternalSample.npy', allow_pickle=True)\n", "out, _, rec = Xmod(test_sample)\n", "print(f'cry detected: {np.sum(out)>0}') \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyzing recorded states" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext", "vscode": { "languageId": "raw" } }, "source": [ "In :py:class:`~.syns65302.XyloSamna`, by setting ``record = True`` at instantiation, we can record spikes and internal states for the output and hidden neurons of the model. This feature can be helpful for debugging. Here, we plot the membrane potential (Vmem) of the output neuron, output spikes, and hidden neuron spikes." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABOEAAAGJCAYAAADMuid7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD0JElEQVR4nOydd3wUdf7Gn23pBSlJ6FUFFAhFIYqoCESCnbOcBUTUU8FTcmfhTqWIcjbEUxBRit79ONvp2aIQELAASkd67ykUQ0ggyWZ3fn8sszszOzM7s9nNbpLn/XrltbPf+bbZTXazzz6fz8ciCIIAQgghhBBCCCGEEEJI2LBGegOEEEIIIYQQQgghhNR3KMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhBBCCCGEEBJmKMIRQgghhJBaY9myZbBYLFi2bJm37aqrrsLFF18cuU0RQoiEiRMnwmKx4Pjx4wH7tmvXDvfee2/AfvPnz4fFYsH+/ftDNieJXtSe73bt2uG6666L3KZIVEARjhBCCCEkCpg5cybmz59fK2tt3boVEydONPRhkBBCCCGEhAZ7pDdACCGEEEI8IlzTpk1rxf2wdetWTJo0CVdddRXatWsX9vWkDBgwAGfPnkVMTEytrksIIeFgx44dsFrpbSFy7rnnHtxxxx2IjY2N9FZIlEERjhBCCCGE1BpWqxVxcXGR3gYhhIQEiizho7q6Gm63u05+aWOz2WCz2SK9DRKFULInhBBCCAmC9evXY+jQoUhJSUFSUhKuueYarFq1StZHzCukRJkrpl27dtiyZQuWL18Oi8UCi8WCq666Stb3hx9+wJ/+9Cc0adIEKSkpGDFiBH7//XfZvBaLBRMnTvRbT5pfaP78+bj11lsBAFdffbV3PWmONiWFhYUYNWoUWrVqhdjYWDRv3hw33nijaq6bRYsWITMzE3FxcejatSs+++wz2VxqOeHUWLRoERISEvDHP/4R1dXVAIDt27fjD3/4Axo3boy4uDj06dMHX375pWyc0+nEpEmTcP755yMuLg5NmjRB//79kZ+fr7seIYQoKSkpwb333otGjRohNTUVo0aNwpkzZ2R91PK3bdmyBQMHDkR8fDxatWqFKVOmwO12+80vCAKmTJmCVq1aISEhAVdffTW2bNmiuZfHH38crVu3RmxsLDp16oSXXnpJNu/+/fthsVjw6quvYvbs2ejYsSNiY2NxySWXYPXq1QGvV3y/+fnnn5Gbm4tmzZohMTERN998M44dO+bX/9tvv8UVV1yBxMREJCcnY9iwYX77v+qqq7zvZ1LuvfdemRNbuvfp06d7975161YAwPfff+9dq1GjRrjxxhuxbds22Zzie+7u3bsDPm9q7Nq1C8OHD0dGRgbi4uLQqlUr3HHHHTh16pS3j8ViwdixY/F///d/uPDCCxEXF4fevXvjhx9+UH0sA6V9eP/992G32/HEE09423755Rdce+21SE1NRUJCAq688kr8/PPPsnGnT5/G448/jnbt2iE2NhZpaWkYPHgw1q1bF/A6SWShE44QQgghxCRbtmzBFVdcgZSUFDz55JNwOBx45513cNVVV2H58uXo27evqfmmT5+ORx99FElJSfj73/8OAEhPT5f1GTt2LBo1aoSJEydix44dePvtt3HgwAGvqGWUAQMG4M9//jP++c9/4m9/+xu6dOkCAN5bNYYPH44tW7bg0UcfRbt27VBcXIz8/HwcPHhQ9iFq165duP322/HQQw9h5MiRmDdvHm699VZ89913GDx4sOE9fv311/jDH/6A22+/HXPnzoXNZsOWLVtw+eWXo2XLlnj66aeRmJiIjz/+GDfddBP++9//4uabbwbg+RA2depU3H///bj00ktRWlqKNWvWYN26dab2QAght912G9q3b4+pU6di3bp1eO+995CWloaXXnpJc0xhYSGuvvpqVFdXe1+rZs+ejfj4eL++zz33HKZMmYKcnBzk5ORg3bp1GDJkCKqqqmT9zpw5gyuvvBJHjhzBn/70J7Rp0wYrVqzA+PHjUVBQgOnTp8v6L1iwAKdPn8af/vQnWCwWvPzyy7jllluwd+9eOByOgNf96KOP4rzzzsOECROwf/9+TJ8+HWPHjsVHH33k7fOvf/0LI0eORHZ2Nl566SWcOXMGb7/9Nvr374/169cHnepg3rx5qKiowIMPPojY2Fg0btwYixcvxtChQ9GhQwdMnDgRZ8+exZtvvonLL78c69at81srmOetqqoK2dnZqKysxKOPPoqMjAwcOXIEX3/9NUpK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nn/+eTRt2hS1atVCWloajhw5EsQee89kMmHmzJlITk5GrVq1cP311+Oll16Cbd2acBj3li1bMGLECDRr1gySJGHt2rV2r2sZY3FxMcaOHYu4uDgkJCTg4YcfxqVLlwI4isjDeSa8f+ZaRNJcw3kmfOcZgHNNMIX7fKGG84i6SJpb1ETinKMmkuYiZ0JmfhLksZUrV4ro6Gjx4Ycfin379omJEyeKhIQEUVRUFOyu+cyQIUPE0qVLxd69e0V+fr5IT08XrVq1EpcuXVLaPProo6Jly5YiJydH7Ny5U/Tt21f069cviL32nR07dog2bdqILl26iCeeeEI5Hq5jLi4uFq1btxYPPvig2L59uzh+/Lj45ptvxNGjR5U2r732moiPjxdr164VP/30k/jjH/8okpOTxZUrV4LYc++88soromHDhmLdunXixIkTYtWqVaJu3bri3XffVdqEw7izsrLE3//+d7F69WoBQKxZs8budS1jHDp0qOjatavYtm2b+P7770Xbtm3FmDFjAjySyMF5RhauP3MtImmu4TwT3vOMEJxrgiUS5gs1nEeci6S5RU2kzjlqImkuciZU5icG4bzQp08fMWXKFOW5yWQSzZo1E3PmzAlir/zr7NmzAoD47rvvhBBClJSUCIPBIFatWqW0OXDggAAgcnNzg9VNn7h48aJo166dyM7OFn/4wx+UySucx/y3v/1NDBgwQPV1s9kskpKSxBtvvKEcKykpETExMeKTTz4JRBf94o477hAPPfSQ3bG7775bjB07VggRnuN2nHi0jHH//v0CgPjxxx+VNl9//bWQJEn8+uuvAet7JOE8E94/c4WIvLmG84xVuM8zQnCuCaRInC/URNo84kykzS1qInXOUROpc5EzwZyfuBzVQxUVFcjLy0NaWppyTKfTIS0tDbm5uUHsmX9duHABANCgQQMAQF5eHoxGo9370L59e7Rq1arGvw9TpkzBHXfcYTc2ILzH/MUXX6BXr14YPXo0mjRpgu7du2PJkiXK6ydOnEBhYaHd2OPj45GSklKjx96vXz/k5OTg8OHDAICffvoJW7duxbBhwwCE77htaRljbm4uEhIS0KtXL6VNWloadDodtm/fHvA+hzvOM+E/zwCRN9dwnonceQbgXOMvkTpfqIm0ecSZSJtb1ETqnKOGc5G6QM5PUb7rdmQ5f/48TCYTEhMT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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.figure(figsize=(15,4))\n", "plt.subplot(131); plt.plot(rec['Vmem_out'], 'b'); plt.grid(True); plt.xlabel('Time (10ms)'); plt.ylabel('output Vmem'); \n", "plt.subplot(132); plt.plot(out, 'g');plt.grid(True); plt.xlabel('Time (10ms)'); plt.title('output spikes'); \n", "plt.subplot(133); plt.imshow(rec['Spikes'].T, aspect='auto'); plt.xlabel('Time (10ms)'); plt.ylabel('hidden neuron index'); plt.title('hidden neuron spikes');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using XyloMonitor in Real Time mode\n", "In *Real-time* mode, XyloAudio 3 continuously processes events as they are received.\n", "Events are received directly from one of the onboard microphones instead of event-based input.\n", "\n", "In this mode, the chip operates autonomously, collecting inputs and processing them. Once the processing is done, XyloAudio 3 outputs all generated spike events. It is not possible to interact with the chip during this period. Thus, the collection of internal neuron states is not permitted." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating XyloMonitor: API to interact with HDK in *Real-time* mode" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext", "vscode": { "languageId": "raw" } }, "source": [ ":py:class:`~.syns65302.XyloMonitor` uses the XyloAudio 3 embedded microphone to feed input to the SNN Core. \n", "We will use the previously created configuration object to instantiate :py:class:`~.syns65302.XyloMonitor` and test it by playing an audio file. \n", "\n", "**Note: We need an AudioXylo 3 connected to run this step**" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import samna\n", "from rockpool.devices.xylo.syns65302 import xa3_devkit_utils as hdu\n", "from rockpool.devices.xylo.syns65302 import XyloMonitor\n", "\n", "# getting the connected devices and choosing xyloa3 board\n", "xylo_nodes = hdu.find_xylo_a3_boards()\n", "xa3 = xylo_nodes[0]\n", "\n", "# changing operation mode\n", "xylo_conf.operation_mode = samna.xyloAudio3.OperationMode.RealTime \n", "xylo_monitor = XyloMonitor(device=xa3, config=xylo_conf, dt = 0.01, output_mode='Spike', dn_enable = True, digital_microphone=True)\n", " " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", "Requirement already satisfied: simpleaudio in /home/vleite/.local/lib/python3.10/site-packages (1.0.4)\n" ] } ], "source": [ "from scipy.io import wavfile\n", "!pip install simpleaudio\n", "import simpleaudio as sa\n", "import numpy as np\n", "\n", "def get_wave_object(test_file): \n", " sample_rate, data = wavfile.read(test_file)\n", " \n", " duration = int(len(data)/sample_rate) # in seconds\n", " n = data.ndim\n", "\n", " if data.dtype == np.int8:\n", " bytes_per_sample = 1\n", " elif data.dtype == np.int16:\n", " bytes_per_sample = 2\n", " elif data.dtype == np.float32:\n", " bytes_per_sample = 4 \n", " else:\n", " raise ValueError(\"recorded audio should have 1 or 2 bytes per sample!\")\n", "\n", " wave_obj = sa.WaveObject(\n", " audio_data= data,\n", " num_channels=data.ndim,\n", " bytes_per_sample=bytes_per_sample,\n", " sample_rate=sample_rate\n", " ) \n", "\n", " return duration,wave_obj " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cry detected: True\n" ] } ], "source": [ "test_audio = 'audio_sample/cry_sample_3sec.wav'\n", "duration, wave_obj = get_wave_object(test_audio)\n", "\n", "play_obj = wave_obj.play()\n", "out, state, rec = xylo_monitor.evolve(read_timeout=duration)\n", "play_obj.wait_done()\n", "\n", "print(f'cry detected: {np.sum(out)>0}') \n" ] } ], "metadata": { "interpreter": { "hash": "80082753f825f5fd87c9e01bdff400ed5e0a1d73f0e7712adc135a3cda2f38fe" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }