ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware. https://arxiv.org/abs/1812.00332
Switch branches/tags
Nothing to show
Clone or download
Latest commit 0211ad5 Dec 7, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
logs public release Dec 6, 2018
proxyless_nas public release Dec 6, 2018
.gitignore public release Dec 6, 2018
LICENSE public release Dec 6, 2018
README.md Update README.md Dec 7, 2018
eval.py public release Dec 6, 2018

README.md

ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

@article{cai2018proxylessnas,
  title={ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware},
  author={Cai, Han and Zhu, Ligeng and Han, Song},
  journal={arXiv preprint arXiv:1812.00332},
  year={2018}
} 

Without any proxy, directly search neural network architectures on your target task and hardware!

Note: our code is developed in PyTorch 0.3, and has been tested in both 0.3 and 0.4.

Performance

Mobile settings GPU settings
Model Top-1 Top-5 Latency
MobilenetV1 70.6 89.5 113ms
MobilenetV2 72.0 91.0 75ms
MNasNet(our impl) 74.0 91.8 79ms
ProxylessNAS (mobile) 74.6 92.2 78ms
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
2.6% better than MobilenetV2 with same speed. 3.1% better than MobilenetV2 with 20% faster.


ProxylessNAS consistently outperforms MobileNetV2 under various latency settings.

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.

Please refer to our paper for more results.

How to use / evaluate

  • Use

    from proxyless_nas import proxyless_cpu, proxyless_gpu, proxyless_mobile
    net = proxyless_cpu(pretrained=True) # Yes, we provide pre-trained models!
  • Evaluate

    python eval.py --path 'Your path to imagent' --arch proxyless_cpu