神经网络智能包
项目描述
NNI(神经网络智能)是一个轻量级但功能强大的工具包,可帮助用户自动化 特征工程、神经架构搜索、超参数调整和模型压缩。
该工具管理自动化机器学习 (AutoML) 实验、调度和运行由调整算法生成的实验的试验作业,以在本地机器、远程服务器、OpenPAI、Kubeflow、FrameworkController等不同训练环境中搜索最佳神经架构和/或超参数在 K8S(AKS 等)、DLWorkspace(又名 DLTS)和其他云选项上。
谁应该考虑使用 NNI
- 那些想在他们的训练代码/模型中尝试不同 AutoML 算法的人。
- 那些想要在不同环境中运行 AutoML 试用作业以加快搜索速度的人。
- 想要轻松实现和试验新 AutoML 算法的研究人员和数据科学家,可能是:超参数调整算法、神经架构搜索算法或模型压缩算法。
- 希望在其平台中支持 AutoML 的ML 平台所有者。
NNI v1.5 已经发布! 
NNI 功能一览
NNI 提供命令行工具以及用户友好的 WebUI 来管理训练实验。借助可扩展的 API,您可以自定义自己的 AutoML 算法和训练服务。为了方便新用户使用,NNI 还提供了一组内置的最先进的 AutoML 算法和对流行训练平台的开箱即用支持。
在下表中,我们总结了当前的 NNI 功能,我们正在逐步添加新功能,我们很乐意得到您的贡献。
|
框架和库
|
算法
|
培训服务
|
|
| 内置 |
|
超参数调优 神经架构搜索 模型压缩 特征工程(测试版) 提前停止算法 | |
| 参考 |
安装
安装
NNI 支持并在 Ubuntu >= 16.04、macOS >= 10.14.1 和 Windows 10 >= 1809 上进行了测试。只需pip install在具有python 64-bit >= 3.5.
Linux 或 macOS
python3 -m pip install --upgrade nni
视窗
python -m pip install --upgrade nni
如果您想尝试最新的代码,请从源代码安装 NNI 。
有关 NNI 的详细系统要求,请参阅此处(适用于 Linux 和 macOS)和此处适用于 Windows。
笔记:
- 如果有任何权限问题,
--user请在用户目录中添加安装 NNI。 - 目前 Windows 上的 NNI 支持本地、远程和 pai 模式。强烈推荐 Anaconda 或 Miniconda 在 Windows 上安装 NNI。
- 如有错误
Segmentation fault,请参考FAQ。Windows 上的 FAQ,请参考Windows 上的 NNI。
验证安装
以下示例基于 TensorFlow 1.x 构建。确保在运行时使用 TensorFlow 1.x。
-
通过克隆源代码下载示例。
git clone -b v1.5 https://github.com/Microsoft/nni.git
-
运行 MNIST 示例。
Linux 或 macOS
nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
视窗
nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
-
等待
INFO: Successfully started experiment!命令行中的消息。此消息表明您的实验已成功启动。您可以使用Web UI url.
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 url,您可以查看实验的详细信息以及所有提交的试用作业,如下图所示。这里有更多的 Web UI 页面。
文档
贡献
这个项目欢迎贡献和建议。大多数贡献要求您同意贡献者许可协议 (CLA),声明您有权并且实际上确实授予我们使用您的贡献的权利。有关详细信息,请访问https://cla.microsoft.com。
当您提交拉取请求时,CLA-bot 将自动确定您是否需要提供 CLA 并适当地装饰 PR(例如,标签、评论)。只需按照机器人提供的说明进行操作。您只需使用我们的 CLA 在所有存储库中执行此操作一次。
本项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com提出任何其他问题或意见。
在熟悉了贡献协议之后,你就可以创建你的第一个 PR =),按照 NNI 开发者教程开始:
- 我们建议新的贡献者从简单的问题开始:'good first issue'或'help-wanted'。
- NNI 开发者环境安装教程
- 如何调试
- 如果您对使用有任何疑问,请先查看常见问题解答,如果没有相关问题和问题的答案,请尝试联系 NNI 开发团队和Gitter中的用户或在 GitHub 上提交问题。
- 自定义您自己的调谐器
- 实施定制化培训服务
- 在 NNI 上实现一个新的 NAS 训练器
- 定制您自己的顾问
外部存储库和参考
经作者许可,我们列出了一组 NNI 使用示例和相关文章。
-
外部存储库
- 使用 NNI运行ENAS
- 使用 NNI运行神经网络架构搜索
- 使用 NNI 进行自动特征工程
- 使用 NNI进行矩阵分解的超参数调整
- scikit-nni使用 NNI 对 scikit-learn 管道进行超参数搜索
-
相关文章
- 超参数优化比较
- 神经架构搜索比较
- 并行化顺序算法 TPE
- 使用 NNI 自动调整 SVD
- 使用 NNI 自动调整 SPTAG
- 使用 Microsoft NNI 查找 scikit-learn 管道的超参数
- 博客(中文) - AutoML 工具(Advisor、NNI 和 Google Vizier)比较@gaocegege - kubeflow/katib 设计和实现的总结与分析部分
- 博客(中文) - @squirrelsc 2019年NNI新能力总结
反馈
- 在 GitHub 上提交问题。
- 在Stack Overflow上用 NNI 标签提问。
- 在 NNI 中讨论 NNI Gitter。
加入 IM 讨论组:
| 吉特 | 微信 | |
|---|---|---|
| 或者 |
相关项目
微软研究院 (MSR)以开放性和先进技术为目标,还发布了一些其他开源项目。
- OpenPAI:开源平台,提供完整的 AI 模型训练和资源管理能力,易于扩展,支持各种规模的本地、云和混合环境。
- FrameworkController:一个开源的通用 Kubernetes Pod 控制器,通过单个控制器在 Kubernetes 上编排各种应用程序。
- MMdnn:一个全面的跨框架解决方案,用于转换、可视化和诊断深度神经网络模型。MMdnn 中的“MM”代表模型管理,“dnn”是深度神经网络的首字母缩写。
- SPTAG : Space Partition Tree And Graph (SPTAG) 是一个用于大规模向量近似最近邻搜索场景的开源库。
我们鼓励研究人员和学生利用这些项目来加速人工智能的开发和研究。
执照
整个代码库都在MIT 许可下