NNI(神经网络智能)是一个轻量级但功能强大的工具包,可帮助用户自动化 特征工程神经体系结构搜索 ,超参数调整模型压缩 .

该工具管理自动机器学习(AutoML)实验, 调度并运行由调整算法生成的实验性试验工作,以搜索不同训练环境中的最佳神经体系结构和/或超参数,例如本地机器远程服务器OpenPAIKubeflowFrameworkController在K8S(AKS等)上使用 DLWorkspace(又名DLTS) AML(Azure机器学习)和其他云选项.

Who should consider using NNI

  • 那些想在他们的训练代码/模型中尝试不同的AutoML算法的人 .
  • 那些想要在不同环境中运行AutoML试用作业以加快搜索速度的人.
  • 想要轻松实现和试用新的AutoML算法的研究人员和数据科学家可能是:超参数调整算法,神经架构师搜索算法或模型压缩算法.
  • 希望在其平台中支持AutoML的 ML平台所有者

NNI capabilities in a glance

NNI提供了命令行工具以及用户友好的WebUI来管理训练实验. 使用可扩展的API,您可以自定义自己的AutoML算法和培训服务. 为了使新用户容易使用,NNI还提供了一组内置的最新AutoML算法,并为流行的培训平台提供了现成的支持.

在下表中,我们总结了当前的NNI功能,我们正在逐步添加新功能,我们很乐意为您做出贡献.

框架和库 Algorithms 培训服务
Built-in
  • 支持的框架
    • PyTorch
    • Keras
    • TensorFlow
    • MXNet
    • Caffe2
    • More...
  • 支持的图书馆
    • Scikit-learn
    • XGBoost
    • LightGBM
    • More...
Hyperparameter Tuning Neural Architecture Search Model Compression Feature Engineering (Beta) Early Stop Algorithms
References

Installation

Install

NNI支持并在Ubuntu> = 16.04,macOS> = 10.14.1和Windows 10> = 1809上进行了测试.只需在具有Python 64位> = 3.5的环境中运行以下`pip install`即可.

Linux或macOS
python3 -m pip install-升级nni
Windows
python -m pip install --upgrade nni

如果您想尝试最新的代码,请从源代码安装NNI .

对于NNI的详细系统要求,请参考这里为Linux和MacOS和这里的Windows.

Note:

  • 如果存在任何特权问题,请添加--user以在用户目录中安装NNI.
  • 当前,Windows上的NNI支持本地,远程和pai模式. 强烈建议使用Anaconda或Miniconda 在Windows上安装NNI .
  • 如果有任何错误,例如细分错误,请参阅FAQ . 有关Windows上的常见问题解答,请参阅Windows上的NNI .

Verify installation

以下示例基于TensorFlow 1.x构建. 确保在运行TensorFlow 1.x时使用它.

  • 通过克隆源代码下载示例.

    git clone -b v1.7 https://github.com/Microsoft/nni.git
  • 运行MNIST示例.

    Linux或macOS
    nnictl创建--config nni / examples / trials / mnist-tfv1 / config.yml
    Windows
    nnictl创建--config nni \ examples \ trials \ mnist-tfv1 \ config_windows.yml
  • 等待消息INFO:成功开始实验! 在命令行中. 此消息表明您的实验已成功启动. 您可以使用Web UI网址探索实验.

    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页面.

Documentation

  • 要了解什么是NNI,请阅读NNI概述 .
  • 为了使您熟悉如何使用NNI,请阅读文档 .
  • 要开始并在系统上安装NNI,请参阅安装NNI .

Contributing

该项目欢迎您的贡献和建议. 大多数捐款要求您同意"捐款者许可协议"(CLA),声明您有权并实际上授予我们使用您的捐款的权利. 有关详细信息,请访问https://cla.microsoft.com .

当您提交请求请求时,CLA机器人会自动确定您是否需要提供CLA并适当地装饰PR(例如,标签,注释). 只需按照机器人提供的说明进行操作即可. 您只需使用我们的CLA在所有存储库中执行一次即可.

该项目采用了Microsoft开源行为准则 . 有关更多信息,请参见《 行为准则》常见问题解答,或与opencode@microsoft.com联系,并提出其他任何问题或意见.

熟悉捐款协议后,您就可以创建您的第一个PR =),请按照NNI开发人员教程开始:

External Repositories and References

经作者许可,我们列出了一组NNI使用示例和相关文章.

Feedback

Join IM discussion groups:
Gitter WeChat
Gitter OR NNI Wechat

Related Projects

针对开放性和先进技术, Microsoft Research(MSR)还发布了其他几个开源项目.

  • OpenPAI :一个提供完整的AI模型训练和资源管理功能的开源平台,它易于扩展并支持各种规模的本地,云和混合环境.
  • FrameworkController :一个开放源代码的通用Kubernetes Pod控制器,它通过一个控制器在Kubernetes上协调各种应用程序.
  • MMdnn :全面的跨框架解决方案,用于转换,可视化和诊断深度神经网络模型. MMdnn中的" MM"代表模型管理," dnn"是深度神经网络的首字母缩写.
  • SPTAG :空间分区树和图(SPTAG)是一个开源库,用于大规模向量近似最近邻搜索方案.

我们鼓励研究人员和学生利用这些项目来加速AI的开发和研究.

License

整个代码库均已获得MIT许可