/XNAS

XNAS: An effective, modular, and flexible Neural Architecture Search (NAS) framework.

Primary LanguagePythonMIT LicenseMIT


XNAS is an effective, modular and flexible Neural Architecture Search (NAS) repository, which aims to provide a common framework and baselines for the NAS community. It is originally designed to decouple the search space, search algorithm and performance evaluation strategy to achieve freely combinable NAS.

This project is now supported by PengCheng Lab.


Overview | Installation | Contributing | Citation | License

For more information and API usages, please refer to our Documentation.


Overview

Based on a common division of NAS, the project is organized by search space, search algorithm, and evaluation strategy. The project currently supports the content shown below. Each row of the table represents a search algorithm and each column represents the search space.

DARTS NAS-Bench-201 SPOS OFA NAS-Bench-101 NAS-Bench-1Shot1
DARTS ☑︎ ☑︎
PDARTS ☑︎ ☑︎
PCDARTS ☑︎ ☑︎
SNG ☑︎
ASNG ☑︎
MDENAS ☑︎
DDPNAS ☑︎ ☑︎
MIGONAS ☑︎
GridSearch ☑︎
DrNAS ☑︎ ☑︎
SNAS ☑︎ ☑︎
GDAS ☑︎ ☑︎
RMINAS ☑︎ ☑︎
DropNAS ☑︎
SPOS ☑︎
OFA ☑︎

We also provide the interpretation of papers and experimental records for each algorithm. For more information, please refer to the links in the "Docs" column.

Search Spaces Docs Official Links
DARTS Github
MobileNetV3 -
NAS-Bench-101 GitHub
NAS-Bench-201 GitHub
NAS-Bench-1Shot1 GitHub
SPOS GitHub
Search Algorithms Docs Official Links
DARTS Github
PDARTS Github
PCDARTS Github
SNG Github
ASNG Github
MDENAS Github
DDPNAS Github
MIGONAS Openi
GridSearch -
DrNAS Github
RMINAS Openi
DropNAS Github
SPOS Github
OFA Github
Evaluation Strategies Docs Official Links
NAS-Bench-101 GitHub
NAS-Bench-201 GitHub
NAS-Bench-301 GitHub
NAS-Bench-1Shot1 GitHub

We are gradually providing support for more settings.

Installation

To run XNAS, python>=3.7 and pytorch=1.9 are required. Other versions of PyTorch may also work well, but there are potential API differences that can cause warnings to be generated.

For detailed instructions, please refer to get_started.md and data_preparation.md in our docs.

Contributing

We welcome contributions to the library along with any potential issues or suggestions.

Please refer to Contributing.md in our docs for more information.

Citation

If you use this code in your own work, please use the following bibtex entries:

@inproceedings{zheng2022rminas,
  title={Neural Architecture Search with Representation Mutual Information},
  author={Xiawu Zheng, Xiang Fei, Lei Zhang, Chenglin Wu, Fei Chao, Jianzhuang Liu, Wei Zeng, Yonghong Tian, Rongrong Ji},
  journal={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  year={2022}
}
@article{zheng2021migo,
  title={MIGO-NAS: Towards fast and generalizable neural architecture search},
  author={Zheng, Xiawu and Ji, Rongrong and Chen, Yuhang and Wang, Qiang and Zhang, Baochang and Chen, Jie and Ye, Qixiang and Huang, Feiyue and Tian, Yonghong},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2021},
  publisher={IEEE}
}
@inproceedings{zheng2020rethinking,
  title={Rethinking performance estimation in neural architecture search},
  author={Zheng, Xiawu and Ji, Rongrong and Wang, Qiang and Ye, Qixiang and Li, Zhenguo and Tian, Yonghong and Tian, Qi},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={11356--11365},
  year={2020}
}

License

This project is released under the MIT license. XNAS also uses codes from these repos to build some modules:

TODO

  • 迁移OFA代码
  • 补充101安装测试
  • NAS-Bench-Macro
  • 多显卡支持