Quan Minh Phan, Ngoc Hoang Luong.
In ICCCI 2022.
- Clone this repo.
- Install necessary packages.
$ pip install -r requirements.txt
- If you meet a problem involving to
fvcore
andnats-bench
packages, please re-install it.
$ pip install nats-bench
$ pip install fvcore==0.1.5post20220119
- Download the database in here, unzip and put all folders into
benchmark_data
folder for building benchmarks' APIs when conducting NAS runs.
Note: To experiment without changing too much in the source code, we recommend that the benchmarks' databases should be stored in the default folder (i.e., benchmark_data
)
$ python <running_file> --n_runs <the_number_of_experiment_runs, default: 31> --seed <initial_random_seed, default: 0>
To conduct searches on a specific search space, we just run the corresponding file.
running_file | Benchmark | Algorithm |
---|---|---|
run_101.py |
NAS-Bench-101 | TF-MOPNAS (random cell topologies + edges pruning) |
run_1shot1.py |
NAS-Bench-1shot1 | TF-MOPNAS (cell topologies + edges pruning) |
run_1shot1_random.py |
NAS-Bench-1shot1 | TF-MOPNAS (random cell topologies + edges pruning) |
run_201.py |
NAS-Bench-201 | TF-MOPNAS (edges pruning) |
For example, we want to search on NAS-Bench-201 benchmark:
$ python run_201.py
Our source code is inspired by:
- pymoo: Multi-objective Optimization in Python
- NSGA-Net: Neural Architecture Search using Multi-Objective Genetic Algorithm
- NAS-Bench-101: Towards Reproducible Neural Architecture Search
- NAS-Bench-201: Extending the Scope of Reproducible Neural Architecture Search
- NAS-Bench-1shot1: Benchmarking and Dissecting One-shot Neural Architecture Search
- How Powerful are Performance Predictors in Neural Architecture Search?