mit-han-lab/proxylessnas
[ICLR 2019] ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
repo name | mit-han-lab/proxylessnas |
repo link | https://github.com/mit-han-lab/proxylessnas |
homepage | https://arxiv.org/abs/1812.00332 |
language | Python |
size (curr.) | 116 kB |
stars (curr.) | 980 |
created | 2018-12-01 |
license | Apache License 2.0 |
ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware [Website] [arXiv] [Poster]
@inproceedings{
cai2018proxylessnas,
title={Proxyless{NAS}: Direct Neural Architecture Search on Target Task and Hardware},
author={Han Cai and Ligeng Zhu and Song Han},
booktitle={International Conference on Learning Representations},
year={2019},
url={https://arxiv.org/pdf/1812.00332.pdf},
}
Without any proxy, directly and efficiently search neural network architectures on your target task and hardware!
Now, proxylessnas is on PyTorch Hub. You can load it with only two lines!
target_platform = "proxyless_cpu" # proxyless_gpu, proxyless_mobile, proxyless_mobile14 are also avaliable.
model = torch.hub.load('mit-han-lab/ProxylessNAS', target_platform, pretrained=True)
Performance
Model | Top-1 | Top-5 | Latency |
---|---|---|---|
MobilenetV2 | 72.0 | 91.0 | 6.1ms |
ShufflenetV2(1.5) | 72.6 | - | 7.3ms |
ResNet-34 | 73.3 | 91.4 | 8.0ms |
MNasNet(our impl) | 74.0 | 91.8 | 6.1ms |
ProxylessNAS (GPU) | 75.1 | 92.5 | 5.1ms |
Specialization
People used to deploy one model to all platforms, but this is not good. To fully exploit the efficiency, we should specialize architectures for each platform.
We provide a visualization of search process. Please refer to our paper for more results.
How to use / evaluate
-
Use
# pytorch from proxyless_nas import proxyless_cpu, proxyless_gpu, proxyless_mobile, proxyless_mobile_14, proxyless_cifar net = proxyless_cpu(pretrained=True) # Yes, we provide pre-trained models!
# tensorflow from proxyless_nas_tensorflow import proxyless_cpu, proxyless_gpu, proxyless_mobile, proxyless_mobile_14 tf_net = proxyless_cpu(pretrained=True)
If the above scripts failed to download, you download it manually from Google Drive and put them under
$HOME/.torch/proxyless_nas/
. -
Evaluate
python eval.py --path 'Your path to imagent' --arch proxyless_cpu # pytorch ImageNet
python eval.py -d cifar10 # pytorch cifar10
python eval_tf.py --path 'Your path to imagent' --arch proxyless_cpu # tensorflow
File structure
- search: code for neural architecture search.
- training: code for training searched models.
- proxyless_nas_tensorflow: pretrained models for tensorflow.
- proxyless_nas: pretrained models for PyTorch.
Related work on automated model compression and acceleration:
Once for All: Train One Network and Specialize it for Efficient Deployment (ICLR'20, code)
ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware (ICLR’19)
AMC: AutoML for Model Compression and Acceleration on Mobile Devices (ECCV’18)
HAQ: Hardware-Aware Automated Quantization (CVPR’19, oral)
Defenstive Quantization: When Efficiency Meets Robustness (ICLR'19)