diff --git a/README.md b/README.md index afc778fddc..86b83c599a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ NNI (Neural Network Intelligence) is a toolkit to help users run automated machi The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. -### **NNI [v0.9](https://github.com/Microsoft/nni/releases) has been released! ** +### **NNI [v1.0](https://github.com/Microsoft/nni/blob/master/docs/en_US/Release_v1.0.md) has been released! **
@@ -70,8 +70,8 @@ The tool dispatches and runs trial jobs generated by tuning algorithms to search
@@ -19,8 +19,10 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
+ | - 支持的框架 + 支持的框架和库 | @@ -34,26 +36,52 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包 | ||
+ 内置 + |
+
+
+
+ |
- + |
Tuner(调参器)
-
|
@@ -85,6 +118,33 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包 |
+ 参考 + | +
+
|
+
+
|
+ + + | +
+ +
+ + +From September 2018 to September 2019, We are still moving on … + + + **Great news!** With the tag of **Scalability** and **Ease of Use**, NNI v1.0 is comming. Based on the various types of [Tuning Algorithms](./Tuner/BuiltinTuner.md), NNI has supported the Hyperparameter tuning, Neural Architecture search and Auto-Feature-Engineering, which is an exciting news for algorithmic engineers; besides these, NNI v1.0 has made many improvements in the optimization of tuning algorithm, [WebUI's simplicity and intuition](./Tutorial/WebUI.md) and [Platform diversification](./TrainingService/SupportTrainingService.md). NNI has grown into a more intelligent automated machine learning (AutoML) toolkit. + + + ++ +
+ ++ +
+ + **Step one**: Start with the [Tutorial Doc](./Tutorial/Installation.md), and install NNI v1.0 first.+ +
+ +从 2018 年 9 月到 2019 年 9 月,我们一直在前进 ... + +**好消息!** NNI v1.0 带来了更强的**伸缩性**和**易用性**。 基于各种[调参算法](./Tuner/BuiltinTuner.md),NNI 已经支持了超参调优,神经网络结构搜索,自动特侦工程等,对算法工程师非常有用的功能。除此之外,NNI v1.0 带来了大量的改进,包括调优算法的优化,[Web 界面简化并更加直观](./Tutorial/WebUI.md),以及[更多样的平台](./TrainingService/SupportTrainingService.md)。 NNI 已经成为了一个更加智能的自动机器学习(AutoML)工具包。 + + + + + ++ +
+ + + + ++ +
+ + **第一步**: 根据[教程](./Tutorial/Installation.md)安装 NNI v1.0。 + **第二步**:找到 "Hello world" 示例,按照[教程](./Tutorial/QuickStart.md)入门。 + **第三步**:熟悉 [Web 界面](./Tutorial/WebUI.md),用 NNI 进行自动机器学习! + + +全自动工具极大地提高了调优过程的效率。 关于 v1.0 的更多细节,可参考 [Release 1.0](https://github.com/microsoft/nni/releases)。 关于进一步计划,可参考[路线图](https://github.com/microsoft/nni/wiki/Roadmap)。 此外,欢迎更多的参与者加入我们。可参考[如何贡献](./Tutorial/Contributing.md),来了解多种参与方法。 \ No newline at end of file diff --git a/docs/zh_CN/SupportedFramework_Library.md b/docs/zh_CN/SupportedFramework_Library.md new file mode 100644 index 0000000000..481a921a4b --- /dev/null +++ b/docs/zh_CN/SupportedFramework_Library.md @@ -0,0 +1,60 @@ +# 框架和库的支持 + +通过内置的 Python API,NNI 天然支持所有 Python (` 版本 >= 3.5`) 语言的 AI 框架,可使用所有超参调优和神经网络搜索算法。 NNI 还为常见场景提供了一些示例和教程,使上手更容易。 + +## 支持的 AI 框架 + +* **[PyTorch]** https://github.com/pytorch/pytorch + +* [MNIST-pytorch](../../examples/trials/mnist-distributed-pytorch) + +* [CIFAR-10](TrialExample/Cifar10Examples.md) + +* [TGS salt identification chanllenge](../../examples/trials/kaggle-tgs-salt/README_zh_CN.md) + +* [Network morphism](../../examples/trials/network_morphism/README_zh_CN.md) + + +* **[TensorFlow]** https://github.com/tensorflow/tensorflow + +* [MNIST-tensorflow](../../examples/trials/mnist-distributed) + +* [Squad](../../examples/trials/ga_squad/README_zh_CN.md) + + +* **[Keras]** https://github.com/keras-team/keras + +* [MNIST-keras](../../examples/trials/mnist-keras) + +* [Network morphism](../../examples/trials/network_morphism/README_zh_CN.md) + + +* **[MXNet]** https://github.com/apache/incubator-mxnet +* **[Caffe2]** https://github.com/BVLC/caffe +* **[CNTK (Python 语言)]** https://github.com/microsoft/CNTK +* **[Spark MLlib]** http://spark.apache.org/mllib/ +* **[Chainer]** https://chainer.org/ +* **[Theano]** https://pypi.org/project/Theano/ + + +如果能[贡献更多示例](Tutorial/Contributing.md),会对其他 NNI 用户有很大的帮助。 + +## 支持的库 + +NNI 也支持其它 Python 库,包括一些基于 GBDT 的算法:XGBoost, CatBoost 以及 lightGBM。 + +* **[Scikit-learn]** https://scikit-learn.org/stable/ + +* [Scikit-learn](TrialExample/SklearnExamples.md) + + +* **[XGBoost]** https://xgboost.readthedocs.io/en/latest/ +* **[CatBoost]** https://catboost.ai/ +* **[LightGBM]** https://lightgbm.readthedocs.io/en/latest/ + +* [Auto-gbdt](TrialExample/GbdtExample.md) + + +这只是 NNI 支持的一小部分库。 如果对 NNI 感兴趣,可参考[教程](TrialExample/Trials.md)来继续学习。 + +除了这些案例,也欢迎更多的用户将 NNI 应用到自己的工作中,如果有任何疑问,请参考[实现 Trial](TrialExample/Trials.md)。 如果想成为 NNI 的贡献者,无论是分享示例,还是实现 Tuner 或其它内容,我们都非常期待您的参与。更多信息请[参考这里](Tutorial/Contributing.md)。 \ No newline at end of file diff --git a/docs/zh_CN/TrainingService/LocalMode.md b/docs/zh_CN/TrainingService/LocalMode.md index 3156e3a45c..1aec4e3e9b 100644 --- a/docs/zh_CN/TrainingService/LocalMode.md +++ b/docs/zh_CN/TrainingService/LocalMode.md @@ -57,7 +57,7 @@ } -参考 [SearchSpaceSpec.md](../Tutorial/SearchSpaceSpec.md) 进一步了解搜索空间。 +参考[定义搜索空间](../Tutorial/SearchSpaceSpec.md)进一步了解。 > 第三步:定义 Experiment > diff --git a/docs/zh_CN/TrainingService/PaiMode.md b/docs/zh_CN/TrainingService/PaiMode.md index 47d6b1531a..ee29276fd2 100644 --- a/docs/zh_CN/TrainingService/PaiMode.md +++ b/docs/zh_CN/TrainingService/PaiMode.md @@ -57,7 +57,36 @@ paiConfig: * shmMB * 可选。 设置 OpenPAI 的 shmMB,即 Docker 中的共享内存。 * authFile - * 可选,设置在使用 OpenPAI 时的私有 Docker 认证文件路径。[参考文档](https://github.com/microsoft/pai/blob/2ea69b45faa018662bc164ed7733f6fdbb4c42b3/docs/faq.md#q-how-to-use-private-docker-registry-job-image-when-submitting-an-openpai-job)。 + * 可选。在使用 pai 模式时,为私有 Docker 仓库设置认证文件,[见参考文档](https://github.com/microsoft/pai/blob/2ea69b45faa018662bc164ed7733f6fdbb4c42b3/docs/faq.md#q-how-to-use-private-docker-registry-job-image-when-submitting-an-openpai-job)。提供 authFile 的本地路径即可, NNI 会上传此文件。 + +* portList + + * 可选。 设置 OpenPAI 的 portList。指定了容器中使用的端口列表,[参考文档](https://github.com/microsoft/pai/blob/b2324866d0280a2d22958717ea6025740f71b9f0/docs/job_tutorial.md#specification)。 + 示例如下: + portList: + - label: test + beginAt: 8080 + portNumber: 2 + + + 假设需要在 MNIST 示例中使用端口来运行 TensorBoard。 第一步是编写 `mnist.py` 的包装脚本 `launch_pai.sh`。 + + ```bash + export TENSORBOARD_PORT=PAI_PORT_LIST_${PAI_CURRENT_TASK_ROLE_NAME}_0_tensorboard + tensorboard --logdir . --port ${!TENSORBOARD_PORT} & + python3 mnist.py + ``` + + portList 的配置部分如下: + + ```yaml + trial: + command: bash launch_pai.sh + portList: + - label: tensorboard + beginAt: 0 + portNumber: 1 + ``` 完成并保存 NNI Experiment 配置文件后(例如可保存为:exp_pai.yml),运行以下命令: diff --git a/docs/zh_CN/TrainingService/SupportTrainingService.md b/docs/zh_CN/TrainingService/SupportTrainingService.md new file mode 100644 index 0000000000..fbf6f6a2cd --- /dev/null +++ b/docs/zh_CN/TrainingService/SupportTrainingService.md @@ -0,0 +1,39 @@ +# 训练平台 + +NNI 为 Trial 任务实现了训练平台。 NNI 支持[本机](./LocalMode.md), [远程](./RemoteMachineMode.md), [OpenPAI](./PaiMode.md), [Kubeflow](./KubeflowMode.md) 和 [FrameworkController](./FrameworkControllerMode.md) 这些内置的训练平台。 +NNI 不仅提供了这些内置的训练平台,还提供了轻松连接自己训练平台的方法。 + +## 内置训练平台 + +| 训练平台 | 简介 | +| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [**本机**](./LocalMode.md) | NNI 支持在本机运行实验,称为 local 模式。 local 模式表示 NNI 会在运行 NNI Manager 进程计算机上运行 Trial 任务,支持 GPU 调度功能。 | +| [**远程计算机**](./RemoteMachineMode.md) | NNI 支持通过 SSH 通道在多台计算机上运行 Experiment,称为 remote 模式。 NNI 需要这些计算机的访问权限,并假定已配置好了深度学习训练环境。 NNI 将在远程计算机上中提交 Trial 任务,并根据 GPU 资源调度 Trial 任务。 | +| [**OpenPAI**](./PaiMode.md) | NNI 支持在 [OpenPAI](https://github.com/Microsoft/pai) (简称 pai)上运行 Experiment,即 pai 模式。 在使用 NNI 的 pai 模式前, 需要有 [OpenPAI](https://github.com/Microsoft/pai) 群集及其账户。 如果没有 OpenPAI,参考[这里](https://github.com/Microsoft/pai#how-to-deploy)来进行部署。 在 pai 模式中,会在 Docker 创建的容器中运行 Trial 程序。 | +| [**Kubeflow**](./KubeflowMode.md) | NNI 支持在 [Kubeflow](https://github.com/kubeflow/kubeflow)上运行,称为 kubeflow 模式。 在开始使用 NNI 的 Kubeflow 模式前,需要有一个 Kubernetes 集群,可以是私有部署的,或者是 [Azure Kubernetes Service(AKS)](https://azure.microsoft.com/zh-cn/services/kubernetes-service/),并需要一台配置好 [kubeconfig](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/) 的 Ubuntu 计算机连接到此 Kubernetes 集群。 如果不熟悉 Kubernetes,可先浏览[这里](https://kubernetes.io/docs/tutorials/kubernetes-basics/)。 在 kubeflow 模式下,每个 Trial 程序会在 Kubernetes 集群中作为一个 Kubeflow 作业来运行。 | +| [**FrameworkController**](./FrameworkControllerMode.md) | NNI 支持使用 [FrameworkController](https://github.com/Microsoft/frameworkcontroller),来运行 Experiment,称之为 frameworkcontroller 模式。 FrameworkController 构建于 Kubernetes 上,用于编排各种应用。这样,可以不用为某个深度学习框架安装 Kubeflow 的 tf-operator 或 pytorch-operator 等。 而直接用 FrameworkController 作为 NNI Experiment 的训练平台。 | + + +## 实现训练平台 + +TrainingService 在设计上为了便于实现,将平台相关的公共属性抽象成类。用户只需要继承这个抽象类,并根据平台特点实现子类,便能够实现 TrainingService。 +TrainingService 的声明如下: + + abstract class TrainingService { + public abstract listTrialJobs(): Promise