AutoML全称是Automated Machine Learning,是2014年以来,机器学习和深度学习领域最炙手可热的领域之一。NNI(Neural Network Intelligence)是一个轻量级但功能强大的机器学习(AutoML)工具包,可帮助用户自动化特征工程、神经架构搜索、超参数调优和模型压缩,并支持单机、本地多机、云等不同的运行环境。
NNI使用场景
场景1:超参数优化
[学习率,列采样率,树深度,正样本权重,迭代轮数等] 与经典的调参方法–网格搜索的暴力求解不同,NNI将超参数优化本质上视作一个求最优的算法,使用随机游走、过程共享、贝叶斯等启发式或机器学习方法避免暴力搜索。
搜索的参数可以设定为离散的也可以设定为连续的。同时也可以自定义各种不同的网络大小格子、核函数多大等设定。
经验
一般会比以经验为基础的手动调参要相对值10%左右。但使用时不要直接使用最优的超参数组合,建议使用top10/top20进行各个超参数的取值投票,否则容易造成异常值、过拟合问题。
卷积层的维度的合理性需要自己控制,NNI没有那么智能,例如上层8*8,去乘一个 16*16 的矩阵就会报错。
场景2:模型压缩
模型训练和部署的资源都不是无限的,有时我们会需要对模型进行轻量化以在资源匮乏时进行部署及运行,此时就需要进行模型压缩。现有的压缩技术分为三大类:剪枝、量化和蒸馏
剪枝
NNI只能进行粗粒度的剪枝
量化
32bit的参数减为16bit甚至8bit的参数,理论及操作较简单
实验管理
NNI与其他调参工具不同的是,其拥有整个数据流转的架构体系,以manager为内核管理
其他经验
1.NNI的迭代速度太快,官方的指引文件可能存在落后于迭代的问题,例如直接使用官方的配置文件参数会报错,可以通过参考github上的经验解决