Cross-posted from the RSE website.
Introducing 2021 RSE Fellow James Knight from the University of Sussex. Read about his background and fellowship plans here.
I originally trained as an electronic engineer but, after spending a large proportion of a summer internship ‘debugging’ a circuit using an oscilloscope, I quickly realised my strengths lay in a field where hand-eye-coordination was less important. This same lack of hand-eye coordination had always meant that I was better at programming computer games than playing them so, off the back of a vaguely Egyptian themed technical demo, I got a job at (the now-defunct) Ideaworks Games Studio who were expanding their team in order to develop an ambitious Resident Evil game for a selection of under-powered feature phones. This was the stuff of my childhood dreams and, over the course of five years at Ideaworks, I worked on many more games and learned a huge amount about software engineering. However, the blight of free-to-play games spelled the end for the expensive, technically-challenging games I loved working on. Therefore, I needed a new challenge and one evening in the pub, I realised that returning to university might be the best way of discovering it… Luckily, it worked!
During my MPhil at Cambridge, I encountered Spiking Neural Networks (SNNs): a type of neural network where, like neurons in biological brains, units exchange information using relatively infrequent electrical pulses known as ‘spikes’ rather than the more abstract ‘rates’ that are continuously exchanged by units in standard Artificial Neural networks (ANNs). SNNs are exciting in all kinds of ways as, not only can they be used for simulating biological brains but, with the right hardware and software, they have the potential to save energy and improve performance in Machine Learning applications.
During my PhD at Manchester and postdoc at Sussex, I have become an expert in hardware and software for SNN simulation but, until recently, the ‘dirty secret’ in this field has been that it was extremely difficult to train SNNs to do anything useful! However, over the last few years, this has started to change as new techniques have enabled SNNs trained using either back propagation (the algorithm used to train the majority of deep networks) or more efficient, biologically-inspired techniques to obtain competitive results in machine learning tasks. However, most current SNN simulators are designed for brain simulation rather than machine learning so, not only do they provide unfamiliar abstractions for ML researchers but they also aren’t optimised for their workflows.
This means that many ML researchers have stuck with familiar tools such as JAX and PyTorch for SNN research. While these tools are great for accelerating machine learning using standard ANNs, they do not take advantage of the sparsity of spikes in SNNs — precisely the property that underpins their potential performance advantages. Therefore, the primary aim of my fellowship is to address this problem and unlock the potential of spike-based machine learning by developing a new Python-based framework which will provides familiar abstractions and processes to ML researchers but, ‘under the hood’, will use the efficient spike-based algorithms that myself and others have developed for large-scale computational neuroscience simulations.
Using the framework we will develop, I believe that it will be possible to train SNNs faster than the equivalent ANN on standard GPU hardware. However, due to the architecture of GPU accelerators, this will need to be done in a data-parallel manner across ‘batches’ of training data. This is great for rapidly training models on large static datasets, but it cannot easily be applied to ‘live’ data. For these applications, Field Programmable Gate Arrays - devices where the hardware itself can be re-programmed - seem ideally suited. Therefore, during my fellowship I will explore the possibilities of these devices, working alongside a hardware engineer to develop an FPGA backend for our library - making FPGA acceleration accessible to AI researchers.
Although I will be the first person with a Research Software Engineer job title at the University of Sussex, there are already many researchers and support staff developing software across the University so the final component of my fellowship will be to build an RSE community amongst these individuals. Working with this community and stakeholders across the University; as well as leveraging the expertise of other UK RSE groups, I will work to develop an RSE career pathway at Sussex and, over time, the processes required to start a dedicated RSE group which can be sustainably funded from forecasted grant income.
Writing this has made me even more excited to start my fellowship in September and start working alongside the wider RSE community!