TEGNAS
"Understanding and Accelerating Neural Architecture Search with Training-Free and Theory-Grounded Metrics" by Wuyang Chen, Xinyu Gong, Yunchao Wei, Humphrey Shi, Zhicheng Yan, Yi Yang, and Zhangyang Wang
Install / Use
/learn @VITA-Group/TEGNASREADME
Understanding and Accelerating Neural Architecture Search with Training-Free and Theory-Grounded Metrics [PDF]
<!-- [](https://lgtm.com/projects/g/VITA-Group/TENAS/context:python) -->Wuyang Chen*, Xinyu Gong*, Yunchao Wei, Humphrey Shi, Zhicheng Yan, Yi Yang, and Zhangyang Wang
<!-- In ICLR 2021. -->Note
- This repo is still under development. Scripts are excutable but some CUDA errors may occur.
- Due to IP issue, we can only release the code for NAS via reinforcement learning and evolution, but not FP-NAS.
Overview
We present TEG-NAS, a generalized training-free neural architecture search method that can significantly reduce time cost of popular search methods (no gradient descent at all!) with high-quality performance.
Highlights:
- Trainig-free NAS: for three popular NAS methods (Reinforcement Learning, Evolution, Differentiable), we adopt our TEG-NAS method into them and achieved extreme fast neural architecture search without a single gradient descent.
- Bridging the theory-application gap: We identified three training-free indicators to rank the quality of deep networks: the condition number of their NTKs ("Trainability"), and the number of linear regions in their input space ("Expressivity"), and the error of NTK kernel regression ("Generalization").
Prerequisites
- Ubuntu 16.04
- Python 3.6.9
- CUDA 11.0 (lower versions may work but were not tested)
- NVIDIA GPU + CuDNN v7.6
This repository has been tested on GTX 1080Ti. Configurations may need to be changed on different platforms.
Installation
- Clone this repo:
git clone https://github.com/chenwydj/TEGNAS.git
cd TEGNAS
- Install dependencies:
pip install -r requirements.txt
Usage
0. Prepare the dataset
- Please follow the guideline here to prepare the CIFAR-10/100 and ImageNet dataset, and also the NAS-Bench-201 database.
- Remember to properly set the
TORCH_HOMEanddata_pathsin theprune_launch.py.
1. Search
NAS-Bench-201 Space
Reinforcement Learning
python reinforce_launch.py --space nas-bench-201 --dataset cifar10 --gpu 0
python reinforce_launch.py --space nas-bench-201 --dataset cifar100 --gpu 0
python reinforce_launch.py --space nas-bench-201 --dataset ImageNet16-120 --gpu 0
Evolution
python evolution_launch.py --space nas-bench-201 --dataset cifar10 --gpu 0
python evolution_launch.py --space nas-bench-201 --dataset cifar100 --gpu 0
python evolution_launch.py --space nas-bench-201 --dataset ImageNet16-120 --gpu 0
DARTS Space (NASNET)
Reinforcement Learning
python reinforce_launch.py --space darts --dataset cifar10 --gpu 0
python reinforce_launch.py --space darts --dataset imagenet-1k --gpu 0
Evolution
python evolution_launch.py --space darts --dataset cifar10 --gpu 0
python evolution_launch.py --space darts --dataset imagenet-1k --gpu 0
2. Evaluation
- For architectures searched on
nas-bench-201, the accuracies are immediately available at the end of search (from the console output). - For architectures searched on
darts, please use DARTS_evaluation for training the searched architecture from scratch and evaluation. Genotypes of our searched architectures are listed ingenotypes.py
Citation
@inproceedings{chen2021tegnas,
title={Understanding and Accelerating Neural Architecture Search with Training-Free and Theory-Grounded Metrics},
author={Chen, Wuyang and Gong, Xinyu and Wei, Yunchao and Shi, Humphrey and Yan, Zhicheng and Yang, Yi and Wang, Zhangyang},
year={2021}
}
<!-- booktitle={International Conference on Learning Representations}, -->
Acknowledgement
- Code base from NAS-Bench-201.
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
flutter-tutor
Flutter Learning Tutor Guide You are a friendly computer science tutor specializing in Flutter development. Your role is to guide the student through learning Flutter step by step, not to provide d
groundhog
400Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
workshop-rules
Materials used to teach the summer camp <Data Science for Kids>
