Note
NNI 最新的 NAS 支持都是基于 Retiarii 框架的,仍在使用早期版本 NNI NAS v1.0 的用户应尽快将工作迁移到 Retiarii 框架。
Contents
自动化的神经网络架构(NAS)搜索在寻找更好的模型方面发挥着越来越重要的作用。 最近的研究工作证明了自动化 NAS 的可行性,并发现了一些超越手动设计和调整的模型。 代表算法有 NASNet, ENAS, DARTS, Network Morphism和 Evolution。 此外,新的创新不断涌现。
然而,使用现有的 NAS 工作来帮助开发通用的 DNN 模型是相当困难的。 因此,我们设计了 Retiarii,一个全新的 NAS/HPO 框架,并在 NNI 中实施。 它可以帮助用户轻松构建模型空间(或搜索空间,调优空间),并利用现有的 NAS 算法。 该框架还有助于 NAS 创新,用于设计新的 NAS 算法。
Retiarii 框架有三个主要特点:
- 提供简单的 API,用于在 PyTorch/TensorFlow 模型中定义模型搜索空间。
- 内置前沿 NAS 算法,用于探索模型搜索空间。
- 实施系统级优化以加快探索。
有两种类型的模型空间探索方法:Multi-trial NAS 和 One-shot NAS。 Mutli-trial NAS 在模型空间中独立训练每个采样模型,而 One-shot NAS 则从一个超级模型中采样。 构建模型空间后,用户可以使用探索方法来探索模型空间。
Multi-trial NAS 意味着每个来自模型空间的抽样模型都是独立训练的。 一个典型的 multi-trial NAS 是 NASNet。 从模型空间中抽取模型的算法被称为探索策略。 NNI支持以下 multi-trial NAS 的探索策略。
探索策略名称 | 算法简介 |
---|---|
随机策略 | 从搜索空间中随机选择模型 (nni.retiarii.strategy.Random ) |
网格搜索 | 使用网格搜索算法从用户定义的模型空间中采样新模型。 (nni.retiarii.strategy.GridSearch ) |
正则进化 | 使用 正则进化算法 从生成的模型中生成新模型 (nni.retiarii.strategy.RegularizedEvolution ) |
TPE 策略 | 使用 TPE 算法 从用户定义的模型空间中生成新模型 (nni.retiarii.strategy.TPEStrategy ) |
RL 策略 | 使用 PPO 算法 从用户定义的模型空间中生成新模型 (nni.retiarii.strategy.PolicyBasedRL ) |
参考 这里 获取 multi-trial NAS 详细用法。
One-Shot NAS意味着将模型空间构建成一个超级模型,用权重共享的方式训练超级模型,然后从超级模型中不断采样,找到最佳模型。 DARTS 是一个典型的 One-Shot NAS。 以下是已经支持的 One-Shot NAS 算法。 未来将支持更多 One-Shot NAS 算法。
One-shot 算法名称 | 算法简介 |
---|---|
ENAS | Efficient Neural Architecture Search via Parameter Sharing. 在 ENAS 中,Contoller 学习在大的计算图中搜索最有子图的方式来发现神经网络。 它通过在子模型间共享参数来实现加速和出色的性能指标。 |
DARTS | DARTS: Differentiable Architecture Search 介绍了一种用于双级优化的可区分网络体系结构搜索的新算法。 |
SPOS | Single Path One-Shot Neural Architecture Search with Uniform Sampling 论文构造了一个采用统一的路径采样方法来训练简化的超网络,并使用进化算法来提高搜索神经网络结构的效率。 |
ProxylessNAS | ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware. 它删除了代理,直接从大规模目标任务和目标硬件平台进行学习。 |
参考 这里 ,了解如何使用经典 NAS 算法。
- 快速入门 ;
- 构建模型空间 ;
- Retiarii: 一个探索性的深度学习框架 ;
- 在 Github 中 提交 Bug 报告;
- 在Github 中 提交新功能或请求改进。