PART 1:
The first part of the course will focus on artificial neural networks and deep learning. Deep neural networks will be analyzed from a computational standpoint, identifying critical operations in terms of time, memory and energy. We will then survey the main techniques to optimize the execution of these models. Specifically, we will first introduce so-called "static" optimizations, i.e., those performed before deploying the model on the target hardware, either at training time or post-training. These include data quantization, weights and activations pruning, knowledge distillation, neural architecture search, and others. Then, we will describe "dynamic" optimizations, which adapt the execution complexity at runtime, based on external conditions (e.g., the battery state-of-charge) or on the processed data. Lastly, we will discuss the automatic compilation of inference code from a high-level Python representation of a neural network to an optimized binary for a specific hardware target. Students will have the possibility of trying some of the optimizations seen in class in a practical session, based on the PyTorch deep learning framework attempting to deploy a complex deep neural network onto a real edge device.
PART 2:
The second part of the course aims at presenting the main concepts of neuromorphic computing and engineering, as well as providing the students with examples of hardware and software tools already available in Research and Industry. Originally intended for brain simulations, neuromorphic hardware architectures are nowadays more and more attractive in areas such as IoT edge devices and robotics, where power consumption is among the major concerns. Additionally, being suitable for better scalability than traditional multi-core architectures, neuromorphic platforms can be of interest in high-performance computing applications and domains where massive parallelism and sparse and efficient computing are required. The inherent characteristic of being brain-inspired (or, equivalently, neuro-inspired), then makes the neuromorphic computing paradigm particularly well-suited for real-time tasks to be performed with reduced power consumption. By adopting Spiking Neural Networks (SNNs), sparseness results in significant reductions in the computational effort thanks to the emulation of the way the brain processes information: spikes are produced as discrete-time events and computation occurs in an event-driven fashion only. The low power consumption, high parallelism and real-time computation capabilities of neuromorphic processors can allow them to provide efficient elaboration of high amounts of data directly on the edge, alleviating the need for transferring data to power-hungry servers in the cloud. As a result, the neuromorphic computing paradigm is being investigated and employed in a wide range of domains: Constraint Satisfaction Problem solvers have been proposed as well as real-time signal analysis systems such as burst event detectors based on the Neuromorphic Auditory Sensors and ECG-based heartbeat classifiers for the identification of cardiac defects. Furthermore, processing and classification of various biometric signals recorded through wearable devices, pattern matching, hand-gesture recognition and learning, robotic controllers, simultaneous localization and mapping, radio-frequency waveform adaptation for noisy environments and on-edge face recognition have been reported as possible apa plication of neuro-inspired approaches.
The final examination will consist in a presentation of the student showing how one or more of the techniques introduced in the course can be applied to his/her own research.
PART 1:
The first part of the course will focus on artificial neural networks and deep learning. Deep neural networks will be analyzed from a computational standpoint, identifying critical operations in terms of time, memory and energy. We will then survey the main techniques to optimize the execution of these models. Specifically, we will first introduce so-called "static" optimizations, i.e., those performed before deploying the model on the target hardware, either at training time or post-training. These include data quantization, weights and activations pruning, knowledge distillation, neural architecture search, and others. Then, we will describe "dynamic" optimizations, which adapt the execution complexity at runtime, based on external conditions (e.g., the battery state-of-charge) or on the processed data. Lastly, we will discuss the automatic compilation of inference code from a high-level Python representation of a neural network to an optimized binary for a specific hardware target. Students will have the possibility of trying some of the optimizations seen in class in a practical session, based on the PyTorch deep learning framework attempting to deploy a complex deep neural network onto a real edge device.
PART 2:
The second part of the course aims at presenting the main concepts of neuromorphic computing and engineering, as well as providing the students with examples of hardware and software tools already available in Research and Industry. Originally intended for brain simulations, neuromorphic hardware architectures are nowadays more and more attractive in areas such as IoT edge devices and robotics, where power consumption is among the major concerns. Additionally, being suitable for better scalability than traditional multi-core architectures, neuromorphic platforms can be of interest in high-performance computing applications and domains where massive parallelism and sparse and efficient computing are required. The inherent characteristic of being brain-inspired (or, equivalently, neuro-inspired), then makes the neuromorphic computing paradigm particularly well-suited for real-time tasks to be performed with reduced power consumption. By adopting Spiking Neural Networks (SNNs), sparseness results in significant reductions in the computational effort thanks to the emulation of the way the brain processes information: spikes are produced as discrete-time events and computation occurs in an event-driven fashion only. The low power consumption, high parallelism and real-time computation capabilities of neuromorphic processors can allow them to provide efficient elaboration of high amounts of data directly on the edge, alleviating the need for transferring data to power-hungry servers in the cloud. As a result, the neuromorphic computing paradigm is being investigated and employed in a wide range of domains: Constraint Satisfaction Problem solvers have been proposed as well as real-time signal analysis systems such as burst event detectors based on the Neuromorphic Auditory Sensors and ECG-based heartbeat classifiers for the identification of cardiac defects. Furthermore, processing and classification of various biometric signals recorded through wearable devices, pattern matching, hand-gesture recognition and learning, robotic controllers, simultaneous localization and mapping, radio-frequency waveform adaptation for noisy environments and on-edge face recognition have been reported as possible apa plication of neuro-inspired approaches.
The final examination will consist in a presentation of the student showing how one or more of the techniques introduced in the course can be applied to his/her own research.
A minimum knowledge in the following fields is required to enjoy the course:
- Computer architecture
- Embedded systems
- Embedded software/firmware
- Parallel computing
- Machine learning
- Signal processing
- Data science
A minimum knowledge in the following fields is required to enjoy the course:
- Computer architecture
- Embedded systems
- Embedded software/firmware
- Parallel computing
- Machine learning
- Signal processing
- Data science
PART 1:
- Introduction
- Deep learning basics
- Static optimizations for deep learning: quantization, pruning, NAS, etc.
- Dynamic optimizations for deep learning: big/little, N-width networks, dynamic precision scaling, etc.
- Efficient deployment of deep learning models: compilers and design space exploration tools.
- Optimizing deep learning models: practical examples
- Future trends and challenges
PART 2:
- Introduction: Neuromorphic Engineering or “Why get inspired by the brain?”
- Computing with Spiking Neurons: general concepts
- Neuromorphic vs von Neumann computing
- Algorithms
- Architecture
- Encoding
- Devices
- Sensing
- Neuromorphic Applications
- Future trends and challenges
- Neuromorphic Lab
PART 1:
- Introduction
- Deep learning basics
- Static optimizations for deep learning: quantization, pruning, NAS, etc.
- Dynamic optimizations for deep learning: big/little, N-width networks, dynamic precision scaling, etc.
- Efficient deployment of deep learning models: compilers and design space exploration tools.
- Optimizing deep learning models: practical examples
- Future trends and challenges
PART 2:
- Introduction: Neuromorphic Engineering or “Why get inspired by the brain?”
- Computing with Spiking Neurons: general concepts
- Neuromorphic vs von Neumann computing
- Algorithms
- Architecture
- Encoding
- Devices
- Sensing
- Neuromorphic Applications
- Future trends and challenges
- Neuromorphic Lab