Home

Awesome

Prune and Replace NAS

by Kevin Alexander Laube and Andreas Zell, on arxiv

This code is based on the implementations of DARTS and P-DARTS.

Idea:

Iteratively pruning and replacing bad candidates from the operation pool enables us to efficiently search through vast operation spaces in reasonable time. We use DARTS to rank the currently available candidates, prune the worst ones, and generate new ones by applying network morphisms to those that are left.

Run:

Sample scripts that match our experiments in the paper are provided in the ./scripts folder.

Search

The progress and discovered cells of our DL2 search, these stats are plotted to tensorboard.

<p align="center"> <img src="images/DL2_epoch_stats-1.png" alt="Search" width="80%"/> </p> <p align="center"> <img src="images/DL2_normal-1.png" alt="DL2normal" width=49%/> <img src="images/DL2_reduction-1.png" alt="DL2reduction" width=49%/> </p>

Retraining

Test error (%) on CIFAR-10 and CIFAR-100 in comparison. The focus of this research is the candidate operation space, thus the only major change compared to the DARTS baseline is the progressive pruning and replacement schedule.

Method#params#opsGPU daysCIFAR-10CIFAR-100
NASNet-A3.3M1318002.65
AmoebaNet-B2.8M1931502.55
ENAS4.6M50.52.89
DARTS (1st order)2.9M81.52.94
DARTS (2nd order)3.4M842.83
P-DARTS C103.4M80.32.516.55
P-DARTS C1003.6M80.32.6215.92
sharpDARTS3.6M0.82.45
SNAS moderate2.8M81.52.85
NASP3.3M70.22.8
NASP (more ops)7.4M120.32.5
PR-DARTS DL13.2M15/150.822.7417.37
PR-DARTS DL24.0M15/150.822.5115.53
PR-DARTS DR4.2M26/390.882.5516.69
PR-DARTS UR5.4M45/831.103.79

Citation

If you use any part of this code in your research, please cite our paper:

@article{laube2019prnas,
  title={Prune and Replace NAS},
  author={Kevin A. Laube and Andreas Zell},
  journal={arXiv preprint https://arxiv.org/abs/1906.07528},
  year={2019}
}