NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。
安装指南
兼容性
- Linux Ubuntu 16.04 或更高版本
- MacOS 10.14.1
- Windows 10.1809
安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple nni
推荐使用清华源
工作流程&快速上手
为了理解NNI的工作流程,我们不妨来训练一个Mnist手写体识别,网络结构确定之后,NNI可以来帮你找到最优的超参。一个朴素的想法是:在有限的时间内,NNI测试一定量的超参,返回给你最优的参数组合。
为了更好地理解NNI的工作流程,首先需要认识几个概念:
- Trial:Trial 是一次尝试,它会使用某组配置(例如,一组超参值,或者特定的神经网络架构)来进行训练,并返回该配置下的得分。本质上就是加入了NNI_API的用户的原始代码。
- Experiment:实验是一次找到模型的最佳超参组合,或最好的神经网络架构的任务。 它由Trial和自动机器学习算法所组成。
- Searchspace:搜索空间是模型调优的范围。 例如,超参的取值范围。
- Configuration:配置是来自搜索空间的一个参数实例,每个超参都会有一个特定的值。
- Tuner:Tuner是一个自动机器学习算法,会为下一个Trial生成新的配置。新的 Trial 会使用这组配置来运行。
- Assessor:Assessor分析Trial的中间结果(例如,测试数据集上定期的精度),来确定 Trial 是否应该被提前终止。
- Training Platform:训练平台是Trial的执行环境。根据Experiment的配置,可以是本机,远程服务器组,或其它大规模训练平台(例如,OpenPAI,Bitahub)。
那么你的实验(Experiment)便是在一定的搜索空间(Searchspace)内寻找最优的一组超参数(Configuration),使得该组参数对应的Mnist(Trail)有最大的准确率,在有限的时间和资源限制下,Tuner和Assessor帮助你更快更好的找到这组参数。
为了更更好地理解NNI的工作流程,我们一起来完成一个在本地(Training Platform)训练的