Hi everyone, I had a hard time finding any Neural Architecture Search implementation in MXNet so I built one (Single Path One-Shot NAS MXNet) in my spare time. Below is some abstract info. If you find this topic interesting, inputs and comments will be really appreciated!
This repository contains Single Path One-shot NAS implementation on MXNet (Gluon). It can finish the whole training and searching pipeline on ImageNet within
60 GPU hours (on 4 V100 GPUs, including supernet training, supernet searching and the searched best subnet training) in the exploration space of about
32^20 choices. By utilizing this implementation, a new state-of-the-art NAS searched model has been found which outperforms other NAS models like
FBNet, MnasNet, DARTS, NASNET, PNASNET and the original SinglePathOneShot by a good margin in all factors of FLOPs, parameters amount and top-1/5 accuracies. Also for considering Google’s MicroNet Challenge Σ Normalized Scores, before any quantization, it outperforms other popular handcrafted efficient models like
MobileNet V1 V2, V3, ShuffleNet V1, V2 too.
|NAS Model||FLOPs||# of Params||Top - 1||Top - 5||Σ Normalized Scores||Scripts||Logs|
|Model||FLOPs||# of Params||Top - 1||Top - 5||Σ Normalized Scores||Scripts||Logs|
Comparision to the official pytorch release
Single Path One Shot NAS provides an elegent idea to effortlessly search for optimized subnet structures, under different model size/latency constraints, with single time supernet training and multiple times low-cost searching procedures. The flexibility and efficiency of this approach can benefit to many pratical senarios where a neural network model needs to be deployed across platforms. With the aid of this approach, manually tuning the structures to meet different hardware constraits can be avoided. Unfortunately, the author hasn’t released the full Supernet Training and Searching parts yet. This repo makes up for the missing of them.
|Supernet Training - With Block Choices||√||√|
|Supernet Training - With Channel Choices||×||√|
|Supernet Training - With FLOP/Param Constraints||×||√|
|Supernet Training - With Strolling Evolution Constraints||-||√|
|General FLOPs & Parameters Counting Tool||√||√|
|Fast Counting Tool with pre-calculated lookup table||×||√|
|BN Stat Update for Val Acc||×||√|
|BN Stat Update for Supernet Searching||×||√|
|Genetic Search - On Block Choices||√||√|
|Genetic Search - On Channel Choices||×||√|
|Genetic Search - Jointly||×||√|
|Efficient Last Conv Block||-||√|
|Op to Op Profiling Tool||-||√|