跳到内容

主页

       NASLib 是一个模块化且灵活的框架,旨在为社区提供一个通用代码库,以促进关于神经架构搜索 (NAS) 的研究。它提供了用于设计和重用搜索空间的高级抽象,以及与基准测试和评估流程的接口,只需几行代码即可实现和扩展最先进的 NAS 方法。NASLib 的模块化特性使得研究人员可以轻松地在各个组件上进行创新(例如,在重用优化器和评估流程的同时定义新的搜索空间,或者使用现有搜索空间提出新的优化器)。它被设计成模块化、可扩展且易于使用。

NASLib 由 弗莱堡 AutoML 小组 开发,并在 NAS 社区的帮助下,我们不断向库中添加新的搜索空间优化器基准测试。如有任何问题或潜在合作,请联系 zelaa@cs.uni-freiburg.de。

naslib-overview

设置 | 用法 | 文档 | 贡献 | 引用

可查询的基准测试

NASLib 允许您查询以下(表格型和代理型)基准测试,以获取给定搜索空间、数据集和任务下任何架构的性能。要设置它们,只需从这些 URL 下载基准测试数据文件并将它们放在 naslib/data 中。

基准测试 任务 数据集 数据 URL 所需文件
NAS-Bench-101 图像分类 CIFAR10 cifar10 naslib/data/nasbench_only108.pkl
NAS-Bench-201 图像分类 CIFAR10
CIFAR100
ImageNet16-120
cifar10
cifar100
imagenet
naslib/data/nb201_cifar10_full_training.pickle
naslib/data/nb201_cifar100_full_training.pickle
naslib/data/nb201_ImageNet16_full_training.pickle
NAS-Bench-301 图像分类 CIFAR10 cifar10
模型
naslib/data/nb301_full_training.pickle
naslib/data/nb_models/...
NAS-Bench-ASR 自动语音识别 TIMIT timit naslib/data/nb-asr-bench-gtx-1080ti-fp32.pickle
naslib/data/nb-asr-bench-jetson-nano-fp32.pickle
naslib/data/nb-asr-e40-1234.pickle
naslib/data/nb-asr-e40-1235.pickle
naslib/data/nb-asr-e40-1236.pickle
naslib/data/nb-asr-info.pickle
NAS-Bench-NLP 自然语言处理 Penn Treebank ptb, 模型 naslib/data/nb_nlp.pickle
naslib/data/nbnlp_v01/...
TransNAS-Bench-101 7 个计算机视觉任务 Taskonomy taskonomy naslib/data/transnas-bench_v10141024.pth

对于 NAS-Bench-301NAS-Bench-NLP,您还需要从 这里 安装 NASBench301 API。

设置完成后,您可以按如下方式测试 API 是否正常工作

python test_benchmark_apis.py --all --show_error

您也可以测试任何一个 API。

python test_benchmark_apis.py --search_space <search_space> --show_error

在集群上运行多个实验的脚本

scripts 文件夹包含用于生成配置文件以在各种配置和种子下运行实验的代码。它将这些文件写入 naslib/configs 文件夹。

cd scripts
bash bbo/make_configs_asr.sh

它还包含 scheduler.sh 文件,用于自动读取这些生成的配置文件并使用 SLURM 向集群提交相应的作业。

引用

如果您在自己的工作中使用此代码,请使用以下 bibtex 条目

@misc{naslib-2020, 
  title={NASLib: A Modular and Flexible Neural Architecture Search Library}, 
  author={Ruchte, Michael and Zela, Arber and Siems, Julien and Grabocka, Josif and Hutter, Frank}, 
  year={2020}, publisher={GitHub}, 
  howpublished={\url{https://github.com/automl/NASLib}} }

@inproceedings{mehta2022bench,
  title={NAS-Bench-Suite: NAS Evaluation is (Now) Surprisingly Easy},
  author={Mehta, Yash and White, Colin and Zela, Arber and Krishnakumar, Arjun and Zabergja, Guri and Moradian, Shakiba and Safari, Mahmoud and Yu, Kaicheng and Hutter, Frank},
  booktitle={International Conference on Learning Representations},
  year={2022}
}

predictors

NASLib 已用于对 31 个性能预测器进行广泛比较(见上图)。请参阅单独的 readme 文件:预测器 和我们的论文:神经架构搜索中的性能预测器有多强大?

@article{white2021powerful,
  title={How Powerful are Performance Predictors in Neural Architecture Search?},
  author={White, Colin and Zela, Arber and Ru, Robin and Liu, Yang and Hutter, Frank},
  journal={Advances in Neural Information Processing Systems},
  volume={34},
  year={2021}
}