Here is a detailed schedule, session by session:
- Introduction / Refresher on Deep Learning
- General Intro - Why do we need to optimize deep learning ? Introduction of the MicroNet Challenge.
- Course - Deep Learning and Transfer Learning.
- Practical session - introduction to PyTorch
- Short project - exploring hyper parameters on a fixed architecture
- Presentation of the Challenge Objectives and Rules (Long Project)
- Data Augmentation, Regularization
- Short evaluation on Deep Learning Essentials and CNN layers
- Course - Data Augmentation, Regularization and Self Supervised Learning
- Practical Session - Data Augmentation
- Short project - exploring hyper parameters on a fixed architecture
- Quantization
- Short evaluation on Data Augmentation
- Students presentations of short project - exploring hyper parameters on a fixed architecture
- Course - Quantifying Deep neural networks
- Practical session - quantification on a small convolutional network
- Long project 1 - Challenge
- Pruning
- Short evaluation on Quantization
- Course - Pruning Deep neural networks
- Practical session - pruning on a small convolutional network.
- Long project 2 - Challenge
- Factorization
- Short evaluation on Pruning
- Students presentations on current work on Challenge
- Course - Factorizing Deep neural networks
- Long Project 3 - Challenge
- Distillation
- Short evaluation on Factorization
- Course - Distillation of knowledge and features between neural networks
- Long Project 4 - Challenge
- Embedded Software and Hardware for Deep Learning
- Long evaluation on Distillation and previous courses
- Course - Embedded Software and Hardware for Deep Learning
- Long Project 5 - Challenge
- Final Session
- Students presentations - Challenge final results
- Students feedback
Short version : Exploration of the accuracy / complexity tradeoff
Long version : this course is mostly based on the long project, and you have a lot of freedom, which we expect you to use. The overarching goal is to explore the tradeoff between the performances of neural networks (= Accuracy on the test set) and complexity. Complexity can be either computational complexity (number of arithmetic operations), or memory complexity (memory size necessary to use the network).
We encourage students to get creative and test combinations of the various ideas that we present. Starting from the end of Session 1, you already have enough knowledge to explore the tradeoff between architecture, number of parameters, and accuracy. Then, we study new notions that open new avenues to explore this tradeoff : quantization, pruning, factorization, distillation. In session 7, you'll have a deeper insight on how to thing about specific software or hardware architecture in order to fully exploit all the optimizations that can be done.
There are short written evaluations during the first 10 minutes of each session starting from session 2. Don't be late!
For the final session, we ask you to prepare a 15 minutes presentation, that will be followed by 5 Minutes of question.
What we expect for the presentations :
- Explain your strategy to explore the complexity / accuracy tradeoff. We will judge whether you understood the goal, and whether the proposed strategy follows a rigourous approach.
- The clarity of your exposition and quality of your support (slides)
List of references IMT Atlantique and AI
Amazon Book - Dive into Deep learning
Tutorial presentation on Efficient Deep Learning from NeurIPS'19
Here are some academic papers discussing learning rate strategies :
- Cyclic learning rates
- Demystifying Learning Rate Policies for High Accuracy Training of Deep Neural Networks
- A Closer Look at Deep Learning Heuristics: Learning rate restarts, Warmup and Distillation
Main strategies are readily available in pytorch.
Start page to access the full python API of pytorch, to check all existing functions.
A useful tutorial on Saving and Loading models.
Popular methods :
Other ressources :
A list of papers and code for data augmentation
IMGAUG and Colab Notebook showing how to use IMGAUG with pytorch
A popular python package in Kaggle competitions : Albumentations
Pruning Filters for Efficient ConvNets
AutoML for Model Compression (AMC)
Pruning Channel with Attention Statistics (PCAS)
BitPruning: Learning Bitlengths for Aggressive and Accurate Quantization
Distilling the knowledge in a neural network
Fitnets: Hints for thin deep nets
LIT: Learned Intermediate Representation Training for Model Compression
A Comprehensive Overhaul of Feature Distillation
And the bit goes down: Revisiting the quantization of neural networks
Pretext tasks used for learning Representations from data without labels
See references section of Tutorial presentation on Efficient Deep Learning from NeurIPS'19.
13 highest funded startups for hardware for DL
More complete list of companies working on hardware DL
Please see here for instructions on how to setup your environment on your personal computer.