微软开源工具包NNI:自动特征工程、NAS、超参调优、模型压缩
NNI 管理自动机器学习 (AutoML) 的 Experiment, 调度运行 由调优算法生成的 Trial 任务来找到最好的神经网络架构和/或超参,支持 各种训练环境,如 本机, 远程服务器, OpenPAI, Kubeflow, 基于 K8S 的 FrameworkController(如,AKS 等), DLWorkspace (又称 DLTS), AML (Azure Machine Learning) 以及其它云服务。
使用场景
- 想要在自己的代码、模型中试验不同的自动机器学习算法。
- 想要在不同的环境中加速运行自动机器学习。
- 想要更容易实现或试验新的自动机器学习算法的研究员或数据科学家,包括:超参调优算法,神经网络搜索算法以及模型压缩算法。
- 在机器学习平台中支持自动机器学习。
NNI 功能一览
NNI 提供命令行工具以及友好的 WebUI 来管理训练的 Experiment。 通过可扩展的 API,可定制自动机器学习算法和训练平台。 为了方便新用户,NNI 内置了最新的自动机器学习算法,并为流行的训练平台提供了开箱即用的支持。
下表中,包含了 NNI 的功能,同时在不断地增添新功能,也非常希望您能贡献其中。
框架和库 | 算法 | 训练平台 | |
内置 |
更多... |
超参调优
穷举搜索
启发式搜索
贝叶斯优化
基于强化学习
神经网络架构搜索
模型压缩
剪枝
量化
特征工程(测试版)
提前终止算法
|
|
参考 |
安装
安装
NNI 支持并在 Ubuntu >= 16.04, macOS >= 10.14.1, 和 Windows 10 >= 1809 通过了测试。 在 `python 64 位 >= 3.6` 的环境中,只需要运行 `pip install` 即可完成安装。
如果想要尝试最新代码,可通过源代码安装 NNI。
注意:
- 如果遇到任何权限问题,可添加 --user 在用户目录中安装 NNI。
- 目前,Windows 上的 NNI 支持本机,远程和 OpenPAI 模式。 强烈推荐使用 Anaconda 或 Miniconda 在 Windows 上安装 NNI。
- 如果遇到如 Segmentation fault 这样的任何错误请参考 常见问题。 Windows 上的常见问题,参考在 Windows 上使用 NNI。
验证安装
以下示例基于 TensorFlow 1.x 构建。 确保运行环境中使用的是 TensorFlow 1.x。
-
通过克隆源代码下载示例。
git clone -b v2.0 https://github.com/Microsoft/nni.git -
运行 MNIST 示例。
Linux 或 macOSnnictl create --config nni/examples/trials/mnist-tfv1/config.ymlWindowsnnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml -
在命令行中等待输出 INFO: Successfully started experiment! 此消息表明 Experiment 已成功启动。 通过命令行输出的 Web UI url 来访问 Experiment 的界面。
INFO: Starting restful server... INFO: Successfully started Restful server! INFO: Setting local config... INFO: Successfully set local config! INFO: Starting experiment... INFO: Successfully started experiment! ----------------------------------------------------------------------- The experiment id is egchD4qy The Web UI urls are: http://223.255.255.1:8080 http://127.0.0.1:8080 ----------------------------------------------------------------------- You can use these commands to get more information about the experiment ----------------------------------------------------------------------- commands description 1. nnictl experiment show show the information of experiments 2. nnictl trial ls list all of trial jobs 3. nnictl top monitor the status of running experiments 4. nnictl log stderr show stderr log content 5. nnictl log stdout show stdout log content 6. nnictl stop stop an experiment 7. nnictl trial kill kill a trial job by id 8. nnictl --help get help information about nnictl -----------------------------------------------------------------------
- 在浏览器中打开 Web UI 地址,可看到下图的 Experiment 详细信息,以及所有的 Trial 任务。 查看这里的更多页面示例。
贡献
本项目欢迎任何贡献和建议。 大多数贡献都需要你同意参与者许可协议(CLA),来声明你有权,并实际上授予我们有权使用你的贡献。 有关详细信息,请访问 https://cla.microsoft.com。
当你提交拉取请求时,CLA 机器人会自动检查你是否需要提供 CLA,并修饰这个拉取请求(例如,标签、注释)。 只需要按照机器人提供的说明进行操作即可。 CLA 只需要同意一次,就能应用到所有的代码仓库上。
该项目采用了 Microsoft 开源行为准则 。 有关详细信息,请参阅行为守则常见问题解答或联系 opencode@microsoft.com 咨询问题或评论。
熟悉贡献协议后,即可按照 NNI 开发人员教程,创建第一个 PR =) 了:
- 推荐新贡献者先从简单的问题开始:'good first issue' 或 'help-wanted'。
- NNI 开发环境安装教程
- 如何调试
- 如果有使用上的问题,可先查看常见问题解答。如果没能解决问题,可通过 Gitter 联系 NNI 开发团队或在 GitHub 上报告问题。
- 自定义 Tuner
- 实现定制的训练平台
- 在 NNI 上实现新的 NAS Trainer
- 自定义 Advisor
其它代码库和参考
经作者许可的一些 NNI 用法示例和相关文档。
外部代码库
- 在 NNI 中运行 ENAS
- NNI 中的自动特征工程
- 使用 NNI 的 矩阵分解超参调优
- scikit-nni 使用 NNI 为 scikit-learn 开发的超参搜索。
相关文章
- 超参数优化的对比
- 神经网络结构搜索的对比
- 并行化顺序算法:TPE
- 使用 NNI 为 SVD 自动调参
- 使用 NNI 为 SPTAG 自动调参
- 使用 NNI 为 scikit-learn 查找超参
- 博客 - AutoML 工具(Advisor,NNI 与 Google Vizier)的对比 作者:@gaocegege - kubeflow/katib 的设计与实现的总结与分析章节
- Blog (中文) - NNI 2019 新功能汇总 by @squirrelsc
相关项目
以探索先进技术和开放为目标,Microsoft Research (MSR) 还发布了一些相关的开源项目。
我们鼓励研究人员和学生利用这些项目来加速 AI 开发和研究。
原文链接:https://nni.readthedocs.io/zh/latest/
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡