diff --git a/README_zh_CN.md b/README_zh_CN.md
index ec77fcbd50..9aca68dde8 100644
--- a/README_zh_CN.md
+++ b/README_zh_CN.md
@@ -4,7 +4,7 @@
* * *
-[![MIT 许可证](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE) [![生成状态](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) [![问题](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) [![Bug](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) [![拉取请求](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) [![版本](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) [![进入 https://gitter.im/Microsoft/nni 聊天室提问](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![文档状态](https://readthedocs.org/projects/nni/badge/?version=latest)](https://nni.readthedocs.io/zh/latest/?badge=latest)
+[![MIT 许可证](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE) [![生成状态](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/integration-test-local?branchName=master)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=17&branchName=master) [![问题](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) [![Bug](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) [![拉取请求](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) [![版本](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) [![进入 https://gitter.im/Microsoft/nni 聊天室提问](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![文档状态](https://readthedocs.org/projects/nni/badge/?version=latest)](https://nni.readthedocs.io/zh/latest/?badge=latest)
[English](README.md)
@@ -83,6 +83,7 @@ NNI 提供命令行工具以及友好的 WebUI 来管理训练的 Experiment。
Auto-gbdt
Cifar10-pytorch
Scikit-learn
+ EfficientNet
更多...
@@ -121,6 +122,7 @@ NNI 提供命令行工具以及友好的 WebUI 来管理训练的 Experiment。
ENAS
DARTS
P-DARTS
+ CDARTS
Network Morphism
@@ -160,7 +162,7 @@ NNI 提供命令行工具以及友好的 WebUI 来管理训练的 Experiment。
-
+
@@ -186,18 +188,18 @@ NNI 提供命令行工具以及友好的 WebUI 来管理训练的 Experiment。
支持训练平台
实现训练平台
-
-
+
+
-## **安装和验证**
+## **安装**
-**通过 pip 命令安装**
+### **安装**
-* 当前支持 Linux,MacOS 和 Windows(本机,远程,OpenPAI 模式),在 Ubuntu 16.04 或更高版本,MacOS 10.14.1 以及 Windows 10.1809 上进行了测试。 在 `python >= 3.5` 的环境中,只需要运行 `pip install` 即可完成安装。
+NNI 支持并在 Ubuntu >= 16.04, macOS >= 10.14.1, 和 Windows 10 >= 1809 通过了测试。 在 `python 64-bit >= 3.5` 的环境中,只需要运行 `pip install` 即可完成安装。
-Linux 和 macOS
+Linux 或 macOS
```bash
python3 -m pip install --upgrade nni
@@ -209,65 +211,39 @@ Windows
python -m pip install --upgrade nni
```
-注意:
-
-* 如果需要将 NNI 安装到自己的 home 目录中,可使用 `--user`,这样也不需要任何特殊权限。
-* 目前,Windows 上的 NNI 支持本机,远程和 OpenPAI 模式。 强烈推荐使用 Anaconda 或 Miniconda 在 Windows 上安装 NNI。
-* 如果遇到如`Segmentation fault` 这样的任何错误请参考[常见问题](docs/zh_CN/Tutorial/FAQ.md)。
-
-**通过源代码安装**
-
-* 当前支持 Linux(Ubuntu 16.04 或更高版本),MacOS(10.14.1)以及 Windows 10(1809 版)。
-
-Linux 和 MacOS
-
-* 在 `python >= 3.5` 的环境中运行命令: `git` 和 `wget`,确保安装了这两个组件。
-
-```bash
- git clone -b v1.3 https://github.com/Microsoft/nni.git
- cd nni
- source install.sh
-```
-
-Windows
-
-* 在 `python >=3.5` 的环境中运行命令: `git` 和 `PowerShell`,确保安装了这两个组件。
+如果想要尝试最新代码,可通过源代码[安装 NNI](docs/zh_CN/Tutorial/Installation.md)。
-```bash
- git clone -b v1.3 https://github.com/Microsoft/nni.git
- cd nni
- powershell -ExecutionPolicy Bypass -file install.ps1
-```
+有关 NNI 的详细系统要求,参考[这里](docs/zh_CN/Tutorial/Installation.md#system-requirements)。
-参考[安装 NNI](docs/zh_CN/Tutorial/Installation.md) 了解系统需求。
+注意:
-Windows 上参考 [Windows 上使用 NNI](docs/zh_CN/Tutorial/NniOnWindows.md)。
+* 如果遇到任何权限问题,可添加 `--user` 在用户目录中安装 NNI。
+* 目前,Windows 上的 NNI 支持本机,远程和 OpenPAI 模式。 强烈推荐使用 Anaconda 或 Miniconda 在 Windows 上安装 NNI。
+* 如果遇到如 `Segmentation fault` 等错误参考[常见问题](docs/zh_CN/Tutorial/FAQ.md)。 Windows 上的 FAQ 参考[在 Windows 上使用 NNI](docs/zh_CN/Tutorial/NniOnWindows.md)。
-**验证安装**
+### **验证安装**
-以下示例 Experiment 依赖于 TensorFlow 。 在运行前确保安装了 **TensorFlow 1.x**。 注意,**目前不支持 TensorFlow 2.0**。
+以下示例基于 TensorFlow 1.x 。确保运行环境中使用的的是 ** TensorFlow 1.x**。
* 通过克隆源代码下载示例。
-
-```bash
- git clone -b v1.3 https://github.com/Microsoft/nni.git
-```
-
-Linux 和 MacOS
-
-* 运行 MNIST 示例。
-
-```bash
- nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
-```
-
-Windows
+
+ ```bash
+ git clone -b v1.3 https://github.com/Microsoft/nni.git
+ ```
* 运行 MNIST 示例。
-
-```bash
- nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
-```
+
+ Linux 或 macOS
+
+ ```bash
+ nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
+ ```
+
+ Windows
+
+ ```bash
+ nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
+ ```
* 在命令行中等待输出 `INFO: Successfully started experiment!`。 此消息表明 Experiment 已成功启动。 通过命令行输出的 `Web UI url` 来访问 Experiment 的界面。
@@ -319,11 +295,12 @@ You can use these commands to get more information about the experiment
该项目采用了 [ Microsoft 开源行为准则 ](https://opensource.microsoft.com/codeofconduct/)。 有关详细信息,请参阅[常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/),如有任何疑问或意见可联系 opencode@microsoft.com。
-熟悉贡献协议后,即可按照 NNI 开发人员教程,创建第一个 PR =):
+熟悉贡献协议后,即可按照 NNI 开发人员教程,创建第一个 PR:
-* 推荐新贡献者先找到标有 ['good first issue'](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) 或 ['help-wanted'](https://github.com/microsoft/nni/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) 标签的 Issue。这些都比较简单,可以从这些问题开始。
+* 推荐新贡献者先从简单的问题开始:['good first issue'](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) 或 ['help-wanted'](https://github.com/microsoft/nni/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)。
* [NNI 开发环境安装教程](docs/zh_CN/Tutorial/SetupNniDeveloperEnvironment.md)
* [如何调试](docs/zh_CN/Tutorial/HowToDebug.md)
+* 如果有使用上的问题,可先查看[常见问题解答](https://github.com/microsoft/nni/blob/master/docs/zh_CN/Tutorial/FAQ.md)。如果没能解决问题,可通过 [Gitter](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 联系 NNI 开发团队或在 GitHub 上 [报告问题](https://github.com/microsoft/nni/issues/new/choose)。
* [自定义 Tuner](docs/zh_CN/Tuner/CustomizeTuner.md)
* [实现定制的训练平台](docs/zh_CN/TrainingService/HowToImplementTrainingService.md)
* [在 NNI 上实现新的 NAS Trainer](https://github.com/microsoft/nni/blob/master/docs/zh_CN/NAS/NasInterface.md#implement-a-new-nas-trainer-on-nni)
@@ -349,7 +326,7 @@ You can use these commands to get more information about the experiment
* [使用 NNI 为 SPTAG 自动调参](docs/zh_CN/CommunitySharings/SptagAutoTune.md)
* [使用 NNI 为 scikit-learn 查找超参](https://towardsdatascience.com/find-thy-hyper-parameters-for-scikit-learn-pipelines-using-microsoft-nni-f1015b1224c1)
* **博客** - [AutoML 工具(Advisor,NNI 与 Google Vizier)的对比](http://gaocegege.com/Blog/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/katib-new#%E6%80%BB%E7%BB%93%E4%B8%8E%E5%88%86%E6%9E%90) 作者:[@gaocegege](https://github.com/gaocegege) - kubeflow/katib 的设计与实现的总结与分析章节
- * **Blog (中文)** - [NNI 2019 新功能汇总](https://mp.weixin.qq.com/s/7_KRT-rRojQbNuJzkjFMuA) by @squirrelsc
+ * **博客** - [NNI 2019 新功能汇总](https://mp.weixin.qq.com/s/7_KRT-rRojQbNuJzkjFMuA) by @squirrelsc
## **反馈**
diff --git a/docs/en_US/Tutorial/Installation.md b/docs/en_US/Tutorial/Installation.md
index d1e7bd85cb..f324366bd8 100644
--- a/docs/en_US/Tutorial/Installation.md
+++ b/docs/en_US/Tutorial/Installation.md
@@ -106,10 +106,9 @@ You can use these commands to get more information about the experiment
* Open the `Web UI url` in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. [Here](../Tutorial/WebUI.md) are more Web UI pages.
-
- |
- |
-
+![overview](../../img/webui_overview_page.png)
+
+![detail](../../img/webui_trialdetail_page.png)
## System requirements
diff --git a/docs/zh_CN/CommunitySharings/NNI_AutoFeatureEng.md b/docs/zh_CN/CommunitySharings/NNI_AutoFeatureEng.md
new file mode 100644
index 0000000000..ec932fc3ec
--- /dev/null
+++ b/docs/zh_CN/CommunitySharings/NNI_AutoFeatureEng.md
@@ -0,0 +1,88 @@
+# 来自知乎的评论: - 作者 Garvin Li
+
+本文由 NNI 用户在知乎论坛上发表。 在这篇文章中,Garvin 分享了在使用 NNI 进行自动特征工程方面的体验。 我们认为本文对于有兴趣使用 NNI 进行特征工程的用户非常有用。 经作者许可,将原始文章摘编如下。
+
+**原文**: [如何看待微软最新发布的AutoML平台NNI?作者 Garvin Li](https://www.zhihu.com/question/297982959/answer/964961829?utm_source=wechat_session&utm_medium=social&utm_oi=28812108627968&from=singlemessage&isappinstalled=0)
+
+## 01 AutoML概述
+
+作者认为 AutoML 不光是调参,应该包含自动特征工程。AutoML 是一个系统化的体系,包括:自动特征工程(AutoFeatureEng)、自动调参(AutoTuning)、自动神经网络探索(NAS)等。
+
+## 02 NNI 概述
+
+NNI((Neural Network Intelligence)是一个微软的开源 AutoML 工具包,通过自动而有效的方法来帮助用户设计并调优机器学习模型,神经网络架构,或复杂系统的参数。
+
+链接:[ https://github.com/Microsoft/nni](https://github.com/Microsoft/nni)
+
+我目前只学习了自动特征工程这一个模块,总体看微软的工具都有一个比较大的特点,技术可能不一定多新颖,但是设计都非常赞。 NNI 的 AutoFeatureENG 基本包含了用户对于 AutoFeatureENG 的一切幻想。在微软做 PD 应该挺幸福吧,底层的这些个框架的设计都极为合理。
+
+## 03 细说NNI - AutoFeatureENG
+> 本文使用了此项目: [https://github.com/SpongebBob/tabular_automl_NNI](https://github.com/SpongebBob/tabular_automl_NNI)。
+
+新用户可以使用 NNI 轻松高效地进行 AutoFeatureENG。 使用是非常简单的,安装下文件中的 require,然后 pip install NNI。
+
+![](https://pic3.zhimg.com/v2-8886eea730cad25f5ac06ef1897cd7e4_r.jpg) NNI把 AutoFeatureENG 拆分成 exploration 和 selection 两个模块。 exploration 主要是特征衍生和交叉,selection 讲的是如何做特征筛选。
+
+## 04 特征 Exploration
+
+对于功能派生,NNI 提供了许多可自动生成新功能的操作,[列表](https://github.com/SpongebBob/tabular_automl_NNI/blob/master/AutoFEOp.md)如下:
+
+**count**:传统的统计,统计一些数据的出现频率
+
+**target**:特征和目标列的一些映射特征
+
+**embedding**:把特征看成句子,用 *word2vector* 的方式制作向量
+
+**crosscount**:特征间除法,有点类似CTR
+
+**aggregete**:特征的 min/max/var/mean
+
+**nunique**:统计唯一特征的数量。
+
+**histsta**:特征存储桶的统计信息,如直方图统计信息。
+
+具体特征怎么交叉,哪一列和哪一列交叉,每一列特征用什么方式衍生呢?可以通过 **search_space. json** 这个文件控制。
+
+![](https://pic1.zhimg.com/v2-3c3eeec6eea9821e067412725e5d2317_r.jpg)
+
+图片展示了定义搜索空间的过程。 NNI 为 1 阶运算提供计数编码,并为 2 阶运算提供聚合的统计(min max var mean median nunique)。
+
+例如,希望以下列方式搜索列名称 {"C1"、"...","C26"} 上的频率编码(valuecount)功能的功能:
+
+![](https://github.com/JSong-Jia/Pic/blob/master/images/pic%203.jpg)
+
+可以在列 {"C1",...,"C26"} x {"C1",...,"C26"} 上定义交叉频率编码(交叉维度的值计数)方法:
+
+![](https://github.com/JSong-Jia/Pic/blob/master/images/pic%204.jpg)
+
+Exploration 的目的就是长生出新的特征。 在代码里可以用 **get_next_parameter** 的方式获取 tuning 的参数:
+> RECEIVED_PARAMS = nni.get_next_parameter()
+
+## 05 特征 Selection
+
+为了避免特征泛滥的情况,避免过拟合,一定要有 Selection 的机制挑选特征。 在 NNI-AutoFeatureENG 的 Selection 中,主要使用了微软开发的梯度提升框架 LightGBM(Light Gradient Boosting Machine)。
+
+![](https://pic2.zhimg.com/v2-7bf9c6ae1303692101a911def478a172_r.jpg)
+
+了解 xgboost 或者 GBDT 算法同学应该知道,这种树形结构的算法是很容易计算出每个特征对于结果的影响的。 所以使用 lightGBM 可以天然的进行特征筛选。
+
+弊病就是,如果下游是个 *LR*(逻辑回归)这种线性算法,筛选出来的特征是否具备普适性。
+
+![](https://pic4.zhimg.com/v2-d2f919497b0ed937acad0577f7a8df83_r.jpg)
+
+## 06 总结
+
+NNI 的 AutoFeature 模块是给整个行业制定了一个教科书般的标准,告诉大家这个东西要怎么做,有哪些模块,使用起来非常方便。 但是如果只是基于这样简单的模式,不一定能达到很好的效果。
+
+## 对 NNI 的建议
+
+我觉得在Exploration方面可以引用一些 DNN(如:xDeepFM) 的特征组合方式,提取更高维度的特征。
+
+在 Selection 方面可以有更多的智能化方案,比如可以基于下游的算法自动选择 Selection 机制。
+
+总之 NNI 在设计曾给了我一些启发,还是一个挺好的开源项目,推荐给大家~ 建议 AI 研究人员使用它来加速研究。
+
+大家用的时候如果是 Mac 电脑可能会遇到 gcc 的问题,因为开源项目自带的脚本是基于 gcc7 编译的, 可以用下面的方法绕过去:
+
+# brew install libomp
+
diff --git a/docs/zh_CN/CommunitySharings/community_sharings.rst b/docs/zh_CN/CommunitySharings/community_sharings.rst
index 828ff48b4d..e549dba143 100644
--- a/docs/zh_CN/CommunitySharings/community_sharings.rst
+++ b/docs/zh_CN/CommunitySharings/community_sharings.rst
@@ -13,3 +13,4 @@
超参调优算法的对比
TPE 的并行优化
使用 NNI 自动调优系统
+ 来自知乎的评论:作者 Garvin Li
diff --git a/docs/zh_CN/Compressor/Pruner.md b/docs/zh_CN/Compressor/Pruner.md
index 0e7963c9d8..d564109149 100644
--- a/docs/zh_CN/Compressor/Pruner.md
+++ b/docs/zh_CN/Compressor/Pruner.md
@@ -335,5 +335,3 @@ pruner.compress()
- **sparsity:** 卷积过滤器要修剪的百分比。
- **op_types:** 在 ActivationMeanRankFilterPruner 中仅支持 Conv2d。
-
-***
\ No newline at end of file
diff --git a/docs/zh_CN/Compressor/Quantizer.md b/docs/zh_CN/Compressor/Quantizer.md
index d2a571f874..3d63a3b3b9 100644
--- a/docs/zh_CN/Compressor/Quantizer.md
+++ b/docs/zh_CN/Compressor/Quantizer.md
@@ -5,10 +5,9 @@ NNI Compressor 中的 Quantizer
Naive Quantizer 将 Quantizer 权重默认设置为 8 位,可用它来测试量化算法。
### 用法
-tensorflow ```python nni.compression.tensorflow.NaiveQuantizer(model_graph).compress()
-```
pytorch
-```python nni.compression.torch.NaiveQuantizer(model).compress()
+```python
+model = nni.compression.torch.NaiveQuantizer(model).compress()
```
***
@@ -45,7 +44,7 @@ quantizer.compress()
查看示例进一步了解
#### QAT Quantizer 的用户配置
-压缩算法所需的常见配置可在[通用配置](./Overview.md#User-configuration-for-a-compression-algorithm)中找到。
+压缩算法所需的常见配置可在[通用配置](./Overview.md#压缩算法中的用户配置)中找到。
此算法所需的配置:
@@ -78,7 +77,7 @@ quantizer.compress()
查看示例进一步了解
#### DoReFa Quantizer 的用户配置
-压缩算法所需的常见配置可在[通用配置](./Overview.md#User-configuration-for-a-compression-algorithm)中找到。
+压缩算法所需的常见配置可在[通用配置](./Overview.md#压缩算法中的用户配置)中找到。
此算法所需的配置:
@@ -114,7 +113,7 @@ model = quantizer.compress()
可以查看示例 [examples/model_compress/BNN_quantizer_cifar10.py](https://github.com/microsoft/nni/tree/master/examples/model_compress/BNN_quantizer_cifar10.py) 了解更多信息。
#### BNN Quantizer 的用户配置
-压缩算法所需的常见配置可在[通用配置](./Overview.md#User-configuration-for-a-compression-algorithm)中找到。
+压缩算法所需的常见配置可在[通用配置](./Overview.md#压缩算法中的用户配置)中找到。
此算法所需的配置:
diff --git a/docs/zh_CN/NAS/CDARTS.md b/docs/zh_CN/NAS/CDARTS.md
new file mode 100644
index 0000000000..b4347127e7
--- /dev/null
+++ b/docs/zh_CN/NAS/CDARTS.md
@@ -0,0 +1,61 @@
+# CDARTS
+
+## 介绍
+
+CDARTS 在搜索和评估网络之间构建了循环反馈机制。 首先,搜索网络会生成初始结构用于评估,以便优化评估网络的权重。 然后,通过分类中通过的标签,以及评估网络中特征蒸馏的正则化来进一步优化搜索网络中的架构。 重复上述循环来优化搜索和评估网路,从而使结构得到训练,成为最终的评估网络。
+
+在 `CdartsTrainer` 的实现中,首先分别实例化了两个 Model 和 Mutator。 第一个 Model 被称为"搜索网络",使用 `RegularizedDartsMutator` 来进行变化。它与 `DartsMutator` 稍有差别。 第二个 Model 是“评估网络”,它里用前面搜索网络的 Mutator 来创建了一个离散的 Mutator,来每次采样一条路径。 Trainer 会交替训练 Model 和 Mutator。 如果对 Trainer 和 Mutator 的实现感兴趣,可参考[这里](#reference)。
+
+## 重现结果
+
+这是基于 NNI 平台的 CDARTS,该平台目前支持 CIFAR10 搜索和重新训练。 同时也支持 ImageNet 的搜索和重新训练,并有相应的接口。 在 NNI 上重现的结果略低于论文,但远高于原始 DARTS。 这里展示了在 CIFAR10 上的三个独立实验的结果。
+
+| 运行 | 论文 | NNI |
+| -- |:-----:|:-----:|
+| 1 | 97.52 | 97.44 |
+| 2 | 97.53 | 97.48 |
+| 3 | 97.58 | 97.56 |
+
+
+## 示例
+
+[示例代码](https://github.com/microsoft/nni/tree/master/examples/nas/cdarts)
+
+```bash
+#如果未克隆 NNI 代码。 如果代码已被克隆,请忽略此行并直接进入代码目录。
+git clone https://github.com/Microsoft/nni.git
+
+# 为分布式训练安装 apex
+git clone https://github.com/NVIDIA/apex
+cd apex
+python setup.py install --cpp_ext --cuda_ext
+
+# 搜索最好的架构
+cd examples/nas/cdarts
+bash run_search_cifar.sh
+
+# 训练最好的架构
+bash run_retrain_cifar.sh
+```
+
+## 参考
+
+### PyTorch
+
+```eval_rst
+.. autoclass:: nni.nas.pytorch.cdarts.CdartsTrainer
+ :members:
+
+ .. automethod:: __init__
+
+.. autoclass:: nni.nas.pytorch.cdarts.RegularizedDartsMutator
+ :members:
+
+.. autoclass:: nni.nas.pytorch.cdarts.DartsDiscreteMutator
+ :members:
+
+ .. automethod:: __init__
+
+.. autoclass:: nni.nas.pytorch.cdarts.RegularizedMutatorParallel
+ :members:
+```
diff --git a/docs/zh_CN/NAS/DARTS.md b/docs/zh_CN/NAS/DARTS.md
index 4f350efa9f..c092070dc4 100644
--- a/docs/zh_CN/NAS/DARTS.md
+++ b/docs/zh_CN/NAS/DARTS.md
@@ -1,4 +1,4 @@
-# NNI 中的 DARTS
+# DARTS
## 介绍
@@ -6,13 +6,45 @@
为了实现,作者在小批量中交替优化网络权重和架构权重。 还进一步探讨了使用二阶优化(unroll)来替代一阶,来提高性能的可能性。
-NNI 的实现基于[官方实现](https://github.com/quark0/darts)以及一个[第三方实现](https://github.com/khanrc/pt.darts)。 目前,在 CIFAR10 上从头训练的一阶和二阶优化均已实现。
+NNI 的实现基于[官方实现](https://github.com/quark0/darts)以及一个[第三方实现](https://github.com/khanrc/pt.darts)。 NNI 上的 DARTS 设计为可用于任何搜索空间。 与原始论文一样,为 CIFAR10 实现了 CNN 的搜索空间,来作为 DARTS 的实际示例。
## 重现结果
-为了重现本文的结果,我们做了一阶和二阶优化的实验。 由于时间限制,我们仅从第二阶段重新训练了*一次**最佳架构*。 我们的结果目前与论文的结果相当。 稍后会增加更多结果
+上述示例旨在重现本文中的结果,我们进行了一阶和二阶优化实验。 由于时间限制,我们仅从第二阶段重新训练了*一次**最佳架构*。 我们的结果目前与论文的结果相当。 稍后会增加更多结果
-| | 论文中 | 重现 |
-| ------------ | ------------- | ---- |
-| 一阶 (CIFAR10) | 3.00 +/- 0.14 | 2.78 |
-| 二阶(CIFAR10) | 2.76 +/- 0.09 | 2.89 |
+| | 论文中 | 重现 |
+| ----------- | ------------- | ---- |
+| 一阶(CIFAR10) | 3.00 +/- 0.14 | 2.78 |
+| 二阶(CIFAR10) | 2.76 +/- 0.09 | 2.89 |
+
+## 示例
+
+### CNN 搜索空间
+
+[示例代码](https://github.com/microsoft/nni/tree/master/examples/nas/darts)
+
+```bash
+#如果未克隆 NNI 代码。 如果代码已被克隆,请忽略此行并直接进入代码目录。
+git clone https://github.com/Microsoft/nni.git
+
+# 搜索最好的架构
+cd examples/nas/darts
+python3 search.py
+
+# 训练最好的架构
+python3 retrain.py --arc-checkpoint ./checkpoints/epoch_49.json
+```
+
+## 参考
+
+### PyTorch
+
+```eval_rst
+.. autoclass:: nni.nas.pytorch.darts.DartsTrainer
+ :members:
+
+ .. automethod:: __init__
+
+.. autoclass:: nni.nas.pytorch.darts.DartsMutator
+ :members:
+```
diff --git a/docs/zh_CN/NAS/ENAS.md b/docs/zh_CN/NAS/ENAS.md
index c25b27bc9b..dcfa3ec060 100644
--- a/docs/zh_CN/NAS/ENAS.md
+++ b/docs/zh_CN/NAS/ENAS.md
@@ -1,7 +1,46 @@
-# NNI 中的 ENAS
+# ENAS
## 介绍
论文 [Efficient Neural Architecture Search via Parameter Sharing](https://arxiv.org/abs/1802.03268) 通过在子模型之间共享参数来加速 NAS 过程。 在 ENAS 中,Contoller 学习在大的计算图中搜索最有子图的方式来发现神经网络。 Controller 通过梯度策略训练,从而选择出能在验证集上有最大期望奖励的子图。 同时对与所选子图对应的模型进行训练,以最小化规范交叉熵损失。
-NNI 的实现基于 [Tensorflow 的官方实现](https://github.com/melodyguan/enas),包括了 CIFAR10 上的 Macro/Micro 搜索空间。 NNI 中从头训练的代码还未完成,当前还没有重现结果。
+NNI 基于官方的 [Tensorflow](https://github.com/melodyguan/enas) 实现,包括通用的强化学习的 Controller,以及能交替训练目标网络和 Controller 的 Trainer。 根据论文,也对 CIFAR10 实现了 Macro 和 Micro 搜索空间来展示如何使用 Trainer。 NNI 中从头训练的代码还未完成,当前还没有重现结果。
+
+## 示例
+
+### CIFAR10 Macro/Micro 搜索空间
+
+[示例代码](https://github.com/microsoft/nni/tree/master/examples/nas/enas)
+
+```bash
+#如果未克隆 NNI 代码。 如果代码已被克隆,请忽略此行并直接进入代码目录。
+git clone https://github.com/Microsoft/nni.git
+
+# 搜索最好的网络架构
+cd examples/nas/enas
+
+# 在 Macro 搜索空间中搜索
+python3 search.py --search-for macro
+
+# 在 Micro 搜索空间中搜索
+python3 search.py --search-for micro
+
+# 查看更多选项
+python3 search.py -h
+```
+
+## 参考
+
+### PyTorch
+
+```eval_rst
+.. autoclass:: nni.nas.pytorch.enas.EnasTrainer
+ :members:
+
+ .. automethod:: __init__
+
+.. autoclass:: nni.nas.pytorch.enas.EnasMutator
+ :members:
+
+ .. automethod:: __init__
+```
diff --git a/docs/zh_CN/NAS/NasInterface.md b/docs/zh_CN/NAS/NasInterface.md
index c7893036d9..dd3f98499f 100644
--- a/docs/zh_CN/NAS/NasInterface.md
+++ b/docs/zh_CN/NAS/NasInterface.md
@@ -98,7 +98,7 @@ trainer.export(file='./chosen_arch')
不同的 Trainer 可能有不同的输入参数,具体取决于其算法。 详细参数可参考具体的 [Trainer 代码](https://github.com/microsoft/nni/tree/master/src/sdk/pynni/nni/nas/pytorch)。 训练完成后,可通过 `trainer.export()` 导出找到的最好的模型。 无需通过 `nnictl` 来启动 NNI Experiment。
-[这里](Overview.md#supported-one-shot-nas-algorithms)是所有支持的 Trainer。 [这里](https://github.com/microsoft/nni/tree/master/examples/nas/simple/train.py)是使用 NNI NAS API 的简单示例。
+[这里](Overview.md#支持的-one-shot-nas-算法)是所有支持的 Trainer。 [这里](https://github.com/microsoft/nni/tree/master/examples/nas/simple/train.py)是使用 NNI NAS API 的简单示例。
### 经典分布式搜索
diff --git a/docs/zh_CN/NAS/Overview.md b/docs/zh_CN/NAS/Overview.md
index 1474a4d788..fc6c734c81 100644
--- a/docs/zh_CN/NAS/Overview.md
+++ b/docs/zh_CN/NAS/Overview.md
@@ -6,93 +6,33 @@
以此为动力,NNI 的目标是提供统一的体系结构,以加速NAS上的创新,并将最新的算法更快地应用于现实世界中的问题上。
-通过[统一的接口](./NasInterface.md),有两种方式进行架构搜索。 [第一种](#supported-one-shot-nas-algorithms)称为 one-shot NAS,基于搜索空间构建了一个超级网络,并使用 one-shot 训练来生成性能良好的子模型。 [第二种](./NasInterface.md#classic-distributed-search)是传统的搜索方法,搜索空间中每个子模型作为独立的 Trial 运行,将性能结果发给 Tuner,由 Tuner 来生成新的子模型。
+通过[统一的接口](./NasInterface.md),有两种方式进行架构搜索。 [一种](#supported-one-shot-nas-algorithms)称为 one-shot NAS,基于搜索空间构建了一个超级网络,并使用 one-shot 训练来生成性能良好的子模型。 [第二种](./NasInterface.md#经典分布式搜索)是传统的搜索方法,搜索空间中每个子模型作为独立的 Trial 运行,将性能结果发给 Tuner,由 Tuner 来生成新的子模型。
* [支持的 One-shot NAS 算法](#supported-one-shot-nas-algorithms)
-* [使用 NNI Experiment 的经典分布式 NAS](./NasInterface.md#classic-distributed-search)
+* [使用 NNI Experiment 的经典分布式 NAS](./NasInterface.md#经典分布式搜索)
* [NNI NAS 编程接口](./NasInterface.md)
## 支持的 One-shot NAS 算法
NNI 现在支持以下 NAS 算法,并且正在添加更多算法。 用户可以重现算法或在自己的数据集上使用它。 鼓励用户使用 [NNI API](#use-nni-api) 实现其它算法,以使更多人受益。
-| 名称 | 算法简介 |
-| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ENAS](#enas) | Efficient Neural Architecture Search via Parameter Sharing [参考论文](https://arxiv.org/abs/1802.03268) |
-| [DARTS](#darts) | DARTS: Differentiable Architecture Search [参考论文](https://arxiv.org/abs/1806.09055) |
-| [P-DARTS](#p-darts) | Progressive Differentiable Architecture Search: Bridging the Depth Gap between Search and Evaluation [参考论文](https://arxiv.org/abs/1904.12760) |
+| 名称 | 算法简介 |
+| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ENAS](ENAS.md) | [Efficient Neural Architecture Search via Parameter Sharing](https://arxiv.org/abs/1802.03268). 在 ENAS 中,Contoller 学习在大的计算图中搜索最有子图的方式来发现神经网络。 它通过在子模型间共享参数来实现加速和出色的性能指标。 |
+| [DARTS](DARTS.md) | [DARTS: Differentiable Architecture Search](https://arxiv.org/abs/1806.09055) 引入了一种在两级网络优化中使用的可微分算法。 |
+| [P-DARTS](PDARTS.md) | [Progressive Differentiable Architecture Search: Bridging the Depth Gap between Search and Evaluation](https://arxiv.org/abs/1904.12760) 基于DARTS。 它引入了一种有效的算法,可在搜索过程中逐渐增加搜索的深度。 |
+| [SPOS](SPOS.md) | 论文 [Single Path One-Shot Neural Architecture Search with Uniform Sampling](https://arxiv.org/abs/1904.00420) 构造了一个采用统一的路径采样方法来训练简化的超网络,并使用进化算法来提高搜索神经网络结构的效率。 |
+| [CDARTS](CDARTS.md) | [Cyclic Differentiable Architecture Search](https://arxiv.org/abs/****) 在搜索和评估的网络见构建了循环反馈的机制。 通过引入的循环的可微分架构搜索框架将两个网络集成为一个架构。 |
-注意,这些算法**不需要 nnictl**,独立运行,仅支持 PyTorch。 将来的版本会支持 Tensorflow 2.0。
+One-shot 算法**不需要 nnictl,可单独运行**。 只实现了 PyTorch 版本。 将来的版本会支持 Tensorflow 2.x。
-### 依赖项
+这是运行示例的一些常见依赖项。 PyTorch 需要高于 1.2 才能使用 `BoolTensor`.
* NNI 1.2+
* tensorboard
* PyTorch 1.2+
* git
-### ENAS
-
-[Efficient Neural Architecture Search via Parameter Sharing](https://arxiv.org/abs/1802.03268). 在 ENAS 中,Contoller 学习在大的计算图中搜索最有子图的方式来发现神经网络。 它通过在子模型间共享参数来实现加速和出色的性能指标。
-
-#### 用法
-
-NNI 中的 ENAS 还在开发中,当前仅支持在 CIFAR10 上 Macro/Micro 搜索空间的搜索阶段。 在 PTB 上从头开始训练及其搜索空间尚未完成。 [详细说明](ENAS.md)。
-
-```bash
-#如果未克隆 NNI 代码。 如果代码已被克隆,请忽略此行并直接进入代码目录。
-git clone https://github.com/Microsoft/nni.git
-
-# 搜索最好的网络架构
-cd examples/nas/enas
-
-# 在 Macro 搜索空间中搜索
-python3 search.py --search-for macro
-
-# 在 Micro 搜索空间中搜索
-python3 search.py --search-for micro
-
-# 查看更多选项
-python3 search.py -h
-```
-
-### DARTS
-
-[DARTS: Differentiable Architecture Search](https://arxiv.org/abs/1806.09055) 在算法上的主要贡献是,引入了一种在两级网络优化中使用的可微分算法。 [详细说明](DARTS.md)。
-
-#### 用法
-
-```bash
-#如果未克隆 NNI 代码。 如果代码已被克隆,请忽略此行并直接进入代码目录。
-git clone https://github.com/Microsoft/nni.git
-
-# 搜索最好的架构
-cd examples/nas/darts
-python3 search.py
-
-# 训练最好的架构
-python3 retrain.py --arc-checkpoint ./checkpoints/epoch_49.json
-```
-
-### P-DARTS
-
-[Progressive Differentiable Architecture Search: Bridging the Depth Gap between Search and Evaluation](https://arxiv.org/abs/1904.12760) 基于 [DARTS](#DARTS)。 它在算法上的主要贡献是引入了一种有效的算法,可在搜索过程中逐渐增加搜索的深度。
-
-#### 用法
-
-```bash
-#如果未克隆 NNI 代码。 如果代码已被克隆,请忽略此行并直接进入代码目录。
-git clone https://github.com/Microsoft/nni.git
-
-# 搜索最好的架构
-cd examples/nas/pdarts
-python3 search.py
-
-# 训练最好的架构,过程与 darts 相同。
-cd ../darts
-python3 retrain.py --arc-checkpoint ../pdarts/checkpoints/epoch_2.json
-```
-
## 使用 NNI API
注意,我们正在尝试通过统一的编程接口来支持各种 NAS 算法,当前处于试验阶段。 这意味着当前编程接口将来会有变化。
@@ -104,7 +44,7 @@ python3 retrain.py --arc-checkpoint ../pdarts/checkpoints/epoch_2.json
1. 在设计神经网络时,可能在层、子模型或连接上有多种选择,并且无法确定是其中一种或某些的组合的结果最好。 因此,需要简单的方法来表达候选的层或子模型。
2. 在神经网络上应用 NAS 时,需要统一的方式来表达架构的搜索空间,这样不必为不同的搜索算法来更改代码。
-NNI 提出的 API 在[这里](https://github.com/microsoft/nni/tree/master/src/sdk/pynni/nni/nas/pytorch)。 [这里](https://github.com/microsoft/nni/tree/master/examples/nas/darts)包含了基于此 API 的 NAS 实现示例。
+NNI 提出的 API 在[这里](https://github.com/microsoft/nni/tree/master/src/sdk/pynni/nni/nas/pytorch)。 [这里](https://github.com/microsoft/nni/tree/master/examples/nas/naive)包含了基于此 API 的 NAS 实现示例。
## **参考和反馈**
* 在 GitHub 中[提交此功能的 Bug](https://github.com/microsoft/nni/issues/new?template=bug-report.md);
diff --git a/docs/zh_CN/Release.md b/docs/zh_CN/Release.md
index 8a65ee765e..eba498b2b6 100644
--- a/docs/zh_CN/Release.md
+++ b/docs/zh_CN/Release.md
@@ -1,5 +1,44 @@
# 更改日志
+## 发布 1.3 - 12/30/2019
+
+### 主要功能
+
+#### 支持神经网络架构搜索算法
+
+* [单路径一次性](https://github.com/microsoft/nni/tree/v1.3/examples/nas/spos/)算法和示例
+
+#### 模型压缩算法支持
+
+* [知识蒸馏](https://github.com/microsoft/nni/blob/v1.3/docs/zh_CN/TrialExample/KDExample.md)算法和使用示例
+* Pruners
+ * [L2Filter Pruner](https://github.com/microsoft/nni/blob/master/docs/zh_CN/Compressor/Pruner.md#l2filter-pruner)
+ * [ActivationAPoZRankFilterPruner](https://github.com/microsoft/nni/blob/master/docs/zh_CN/Compressor/Pruner.md#activationapozrankfilterpruner)
+ * [ActivationMeanRankFilterPruner](https://github.com/microsoft/nni/blob/master/docs/zh_CN/Compressor/Pruner.md#activationmeanrankfilterpruner)
+* [BNN Quantizer](https://github.com/microsoft/nni/blob/v1.3/docs/zh_CN/Compressor/Quantizer.md#bnn-quantizer)
+
+#### 训练平台
+
+* OpenPAI 的 NFS 支持
+
+ 从 OpenPAI v0.11开始,HDFS 不再用作默认存储,可将 NFS、AzureBlob 或其他存储用作默认存储。 在本次版本中,NNI 扩展了对 OpenPAI 最近改动的支持,可与 OpenPAI v0.11 及后续版本的默认存储集成。
+
+* Kubeflow 更新适配
+
+ 适配 Kubeflow 0.7 对 tf-operator 的新支持。
+
+### 工程(代码和生成自动化)
+
+* 启用 [ESLint](https://eslint.org/) 静态代码分析。
+
+### 小改动和 Bug 修复
+
+* 正确识别内置 Tuner 和定制 Tuner
+* Dispatcher 基类的日志
+* 修复有时 Tuner、Assessor 的失败会终止 Experiment 的 Bug。
+* 修复本机作为远程计算机的[问题](https://github.com/microsoft/nni/issues/1852)
+* SMAC Tuner 中 Trial 配置的去重 [ticket](https://github.com/microsoft/nni/issues/1364)
+
## 发布 1.2 - 12/02/2019
### 主要功能
@@ -30,7 +69,7 @@
- 文档
- 改进了 NNI API 文档,增加了更多的 docstring。
-### 修复的 Bug
+### Bug 修复
- 修复当失败的 Trial 没有指标时,表格的排序问题。 -Issue #1773
- 页面切换时,保留选择的(最大、最小)状态。 -PR#1710
@@ -42,14 +81,14 @@
### 主要功能
* 新 Tuner: [PPO Tuner](https://github.com/microsoft/nni/blob/v1.1/docs/zh_CN/Tuner/PPOTuner.md)
-* [查看已停止的 Experiment](https://github.com/microsoft/nni/blob/v1.1/docs/zh_CN/Tutorial/Nnictl.md#view)
+* [查看已停止的 Experiment](https://github.com/microsoft/nni/blob/master/docs/zh_CN/Tutorial/Nnictl.md#view)
* Tuner 可使用专门的 GPU 资源(参考[教程](https://github.com/microsoft/nni/blob/v1.1/docs/zh_CN/Tutorial/ExperimentConfig.md)中的 `gpuIndices` 了解详情)
* 改进 WEB 界面
- Trial 详情页面可列出每个 Trial 的超参,以及开始结束时间(需要通过 "add column" 添加)
- 优化大型 Experiment 的显示性能
- 更多示例
- [EfficientNet PyTorch 示例](https://github.com/ultmaster/EfficientNet-PyTorch)
- - [Cifar10 NAS 示例](https://github.com/microsoft/nni/blob/v1.1/examples/trials/nas_cifar10/README_zh_CN.md)
+ - [Cifar10 NAS 示例](https://github.com/microsoft/nni/blob/v1.1/examples/trials/nas_cifar10/README.md)
- [模型压缩工具包 - Alpha 发布](https://github.com/microsoft/nni/blob/v1.1/docs/zh_CN/Compressor/Overview.md):我们很高兴的宣布 NNI 的模型压缩工具包发布了。它还处于试验阶段,会根据使用反馈来改进。 诚挚邀请您使用、反馈,或更多贡献
### 修复的 Bug
@@ -62,26 +101,28 @@
### 主要功能
* Tuners 和 Assessors
-
- - 支持自动特征生成和选择 -Issue#877 -PR #1387 + 提供自动特征接口 + 基于 Beam 搜索的 Tuner + [添加 Pakdd 示例](https://github.com/microsoft/nni/tree/master/examples/trials/auto-feature-engineering)
- - 添加并行算法提高 TPE 在高并发下的性能。 -PR #1052
- - 为 hyperband 支持多阶段 -PR #1257
-- 训练平台
-
- - 支持私有 Docker Registry -PR #755
-
- * 改进
- * 增加 RestFUL API 的 Python 包装,支持通过代码获取指标的值 PR #1318
- * 新的 Python API : get_experiment_id(), get_trial_id() -PR #1353 -Issue #1331 & -Issue#1368
- * 优化 NAS 搜索空间 -PR #1393
+ - 支持自动特征生成和选择 -Issue#877 -PR #1387
+ + 提供自动特征接口
+ + 基于 Beam 搜索的 Tuner
+ + [增加 Pakdd 示例](https://github.com/microsoft/nni/tree/master/examples/trials/auto-feature-engineering)
+ + 添加并行算法提高 TPE 在高并发下的性能。 -PR #1052
+ + 为 hyperband 支持多阶段 -PR #1257
++ 训练平台
+
+ - 支持私有 Docker Registry -PR #755
+
+ * 改进
+ * 增加 RestFUL API 的 Python 包装,支持通过代码获取指标的值 PR #1318
+ * 新的 Python API : get_experiment_id(), get_trial_id() -PR #1353 -Issue #1331 & -Issue#1368
+ * 优化 NAS 搜索空间 -PR #1393
+ 使用 _type 统一 NAS 搜索空间 -- "mutable_type"e
+ 更新随机搜索 Tuner
- + 将 gpuNum 设为可选 -Issue #1365
- + 删除 OpenPAI 模式下的 outputDir 和 dataDir 配置 -Issue #1342
- + 在 Kubeflow 模式下创建 Trial 时,codeDir 不再被拷贝到 logDir -Issue #1224
+ + 将 gpuNum 设为可选 -Issue #1365
+ + 删除 OpenPAI 模式下的 outputDir 和 dataDir 配置 -Issue #1342
+ + 在 Kubeflow 模式下创建 Trial 时,codeDir 不再被拷贝到 logDir -Issue #1224
+ Web 门户和用户体验
-
+
- 在 Web 界面的搜索过程中显示最好指标的曲线 -Issue #1218
- 在多阶段 Experiment 中,显示参数列表的当前值 -Issue1210 -PR #1348
- 在 AddColumn 中增加 "Intermediate count" 选项。 -Issue #1210
@@ -90,12 +131,13 @@
- 在命令行中为 nnictl 命令增加详细文档的连接 -Issue #1260
- 用户体验改进:显示 Error 日志 -Issue #1173
- 文档
-
+
- 更新文档结构 -Issue #1231
- - [多阶段文档的改进](AdvancedFeature/MultiPhase.md) -Issue #1233 -PR #1242 + 增加配置示例
- - [Web 界面描述改进](Tutorial/WebUI.md) -PR #1419
+ - [多阶段文档的改进](AdvancedFeature/MultiPhase.md) -Issue #1233 -PR #1242
+ + 添加配置示例
+ + [Web 界面描述改进](Tutorial/WebUI.md) -PR #1419
-### 修复的 Bug
+### Bug 修复
* (Bug 修复)修复 0.9 版本中的链接 -Issue #1236
* (Bug 修复)自动完成脚本
@@ -116,20 +158,22 @@
### 主要功能
-* 通用 NAS 编程接口
+* 生成 NAS 编程接口
* 为 NAS 接口添加 `enas-mode` 和 `oneshot-mode`:[PR #1201](https://github.com/microsoft/nni/pull/1201#issue-291094510)
* [有 Matern 核的高斯 Tuner](Tuner/GPTuner.md)
* 支持多阶段 Experiment
-
+
* 为多阶段 Experiment 增加新的训练平台:pai 模式从 v0.9 开始支持多阶段 Experiment。
- * 为以下内置 Tuner 增加多阶段的功能:
- * TPE, Random Search, Anneal, Naïve Evolution, SMAC, Network Morphism, Metis Tuner。
-
- 有关详细信息,参考[实现多阶段的 Tuner](AdvancedFeature/MultiPhase.md)。
+ * 为以下内置 Tuner 增加多阶段的功能:
+
+
+ * TPE, Random Search, Anneal, Naïve Evolution, SMAC, Network Morphism, Metis Tuner。
+
+ 有关详细信息,参考[实现多阶段的 Tuner](AdvancedFeature/MultiPhase.md)。
* Web 界面
-
+
* 在 Web 界面中可比较 Trial。 有关详细信息,参考[查看 Trial 状态](Tutorial/WebUI.md)
* 允许用户调节 Web 界面的刷新间隔。 有关详细信息,参考[查看概要页面](Tutorial/WebUI.md)
* 更友好的显示中间结果。 有关详细信息,参考[查看 Trial 状态](Tutorial/WebUI.md)
@@ -158,7 +202,7 @@
* 在已经运行非 NNI 任务的 GPU 上也能运行 Trial
* 支持 Kubeflow v1beta2 操作符
* 支持 Kubeflow TFJob/PyTorchJob v1beta2
-* [通用 NAS 编程接口](AdvancedFeature/GeneralNasInterfaces.md)
+* [通用 NAS 编程接口](https://github.com/microsoft/nni/blob/v0.8/docs/zh_CN/GeneralNasInterfaces.md)
* 实现了 NAS 的编程接口,可通过 NNI Annotation 很容易的表达神经网络架构搜索空间
* 提供新命令 `nnictl trial codegen` 来调试 NAS 代码生成部分
* 提供 NAS 编程接口教程,NAS 在 MNIST 上的示例,用于 NAS 的可定制的随机 Tuner
@@ -274,10 +318,10 @@
#### 支持新的 Tuner 和 Assessor
-* 支持新的 [Metis Tuner](Tuner/MetisTuner.md)。 **在线**超参调优的场景下,Metis 算法已经被证明非常有效。
+* 支持新的 [Metis Tuner](Tuner/MetisTuner.md)。 对于**在线**超参调优的场景,Metis 算法已经被证明非常有效。
* 支持 [ENAS customized tuner](https://github.com/countif/enas_nni)。由 GitHub 社区用户所贡献。它是神经网络的搜索算法,能够通过强化学习来学习神经网络架构,比 NAS 的性能更好。
* 支持 [Curve fitting (曲线拟合)Assessor](Assessor/CurvefittingAssessor.md),通过曲线拟合的策略来实现提前终止 Trial。
-* 进一步支持 [Weight Sharing(权重共享)](AdvancedFeature/AdvancedNas.md):为 NAS Tuner 通过 NFS 来提供权重共享。
+* [权重共享的](https://github.com/microsoft/nni/blob/v0.5/docs/AdvancedNAS.md)高级支持:为 NAS Tuner 提供权重共享,当前支持 NFS。
#### 改进训练平台
@@ -361,12 +405,12 @@
### NNICTL 的新功能和更新
* 支持同时运行多个 Experiment。
-
+
在 v0.3 以前,NNI 仅支持一次运行一个 Experiment。 此版本开始,用户可以同时运行多个 Experiment。 每个 Experiment 都需要一个唯一的端口,第一个 Experiment 会像以前版本一样使用默认端口。 需要为其它 Experiment 指定唯一端口:
-
- ```bash
- nnictl create --port 8081 --config
- ```
+
+ ```bash
+ nnictl create --port 8081 --config
+ ```
* 支持更新最大 Trial 的数量。 使用 `nnictl update --help` 了解详情。 或参考 [NNICTL](Tutorial/Nnictl.md) 查看完整帮助。
@@ -375,15 +419,15 @@
* 不兼容的改动:nn.get_parameters() 改为 nni.get_next_parameter。 所有以前版本的示例将无法在 v0.3 上运行,需要重新克隆 NNI 代码库获取新示例。 如果在自己的代码中使用了 NNI,也需要相应的更新。
* 新 API **nni.get_sequence_id()**。 每个 Trial 任务都会被分配一个唯一的序列数字,可通过 nni.get_sequence_id() API 来获取。
-
- ```bash
- git clone -b v0.3 https://github.com/microsoft/nni.git
- ```
+
+ ```bash
+ git clone -b v0.3 https://github.com/microsoft/nni.git
+ ```
* **nni.report_final_result(result)** API 对结果参数支持更多的数据类型。
-
+
可用类型:
-
+
* int
* float
* 包含有 'default' 键值的 dict,'default' 的值必须为 int 或 float。 dict 可以包含任何其它键值对。
@@ -394,11 +438,11 @@
### 新示例
-* 公共的 NNI Docker 映像:
-
- ```bash
- docker pull msranni/nni:latest
- ```
+* 公开的 NNI Docker 映像:
+
+ ```bash
+ docker pull msranni/nni:latest
+ ```
* 新的 Trial 示例:[NNI Sklearn 示例](https://github.com/microsoft/nni/tree/master/examples/trials/sklearn)
diff --git a/docs/zh_CN/TrainingService/PaiYarnMode.md b/docs/zh_CN/TrainingService/PaiYarnMode.md
index c84debfa55..0f930967a2 100644
--- a/docs/zh_CN/TrainingService/PaiYarnMode.md
+++ b/docs/zh_CN/TrainingService/PaiYarnMode.md
@@ -102,7 +102,7 @@ paiYarnConfig:
```
nnictl create --config exp_paiYarn.yml
```
-来在 paiYarn 模式下启动 Experiment。 NNI 会为每个 Trial 创建 OpenPAIYarn 作业,作业名称的格式为 `nni_exp_{experiment_id}_trial_{trial_id}`。 可以在 OpenPAIYarn 集群的网站中看到 NNI 创建的作业,例如: ![](../../img/nni_paiYarn_joblist.jpg)
+来在 paiYarn 模式下启动 Experiment。 NNI 会为每个 Trial 创建 OpenPAIYarn 作业,作业名称的格式为 `nni_exp_{experiment_id}_trial_{trial_id}`。 可以在 OpenPAIYarn 集群的网站中看到 NNI 创建的作业,例如: ![](../../img/nni_pai_joblist.jpg)
注意:paiYarn 模式下,NNIManager 会启动 RESTful 服务,监听端口为 NNI 网页服务器的端口加1。 例如,如果网页端口为`8080`,那么 RESTful 服务器会监听在 `8081`端口,来接收运行在 Kubernetes 中的 Trial 作业的指标。 因此,需要在防火墙中启用端口 `8081` 的 TCP 协议,以允许传入流量。
diff --git a/docs/zh_CN/TrainingService/RemoteMachineMode.md b/docs/zh_CN/TrainingService/RemoteMachineMode.md
index eba05921b5..e4b6917f84 100644
--- a/docs/zh_CN/TrainingService/RemoteMachineMode.md
+++ b/docs/zh_CN/TrainingService/RemoteMachineMode.md
@@ -1,8 +1,22 @@
-# 在多机上运行 Experiment
+# 在远程计算机上运行 Experiment
-NNI 支持通过 SSH 通道在多台计算机上运行 Experiment,称为 `remote` 模式。 NNI 需要这些计算机的访问权限,并假定已配置好了深度学习训练环境。
+NNI 可以通过 SSH 在多个远程计算机上运行同一个 Experiment,称为 `remote` 模式。 这就像一个轻量级的训练平台。 在此模式下,可以从计算机启动 NNI,并将 Trial 并行调度到远程计算机。
-例如:有三台服务器,登录账户为 `bob`(注意:账户不必在各台计算机上一致):
+## 远程计算机的要求
+
+* 仅支持 Linux 作为远程计算机,其[配置需求](../Tutorial/Installation.md)与 NNI 本机模式相同。
+
+* 根据[安装文章](../Tutorial/Installation.md),在每台计算机上安装 NNI。
+
+* 确保远程计算机满足 Trial 代码的环境要求。 如果默认环境不符合要求,可以将设置脚本添加到 NNI 配置的 `command` 字段。
+
+* 确保远程计算机能被运行 `nnictl` 命令的计算机通过 SSH 访问。 同时支持 SSH 的密码和密钥验证方法。 有关高级用法,参考[配置](../Tutorial/ExperimentConfig.md)的 machineList 部分。
+
+* 确保每台计算机上的 NNI 版本一致。
+
+## 运行 Experiment
+
+例如,有三台机器,可使用用户名和密码登录。
| IP | 用户名 | 密码 |
| -------- | --- | ------ |
@@ -10,15 +24,9 @@ NNI 支持通过 SSH 通道在多台计算机上运行 Experiment,称为 `remo
| 10.1.1.2 | bob | bob123 |
| 10.1.1.3 | bob | bob123 |
-## 设置 NNI 环境
+在这三台计算机或另一台能访问这些计算机的环境中安装并运行 NNI。
-按照[指南](../Tutorial/QuickStart.md)在每台计算机上安装 NNI。
-
-## 运行 Experiment
-
-将 NNI 安装在可以访问上述三台计算机的网络的另一台计算机上,或者仅在三台计算机中的任何一台上运行 `nnictl` 即可启动 Experiment。
-
-以 `examples/trials/mnist-annotation` 为例。 此处示例在 `examples/trials/mnist-annotation/config_remote.yml`:
+以 `examples/trials/mnist-annotation` 为例。 示例文件 `examples/trials/mnist-annotation/config_remote.yml` 的内容如下:
```yaml
authorName: default
@@ -58,14 +66,8 @@ machineList:
passwd: bob123
```
-`codeDir` 中的文件会被自动上传到远程服务器。 可在不同的操作系统上运行 NNI (Windows, Linux, MacOS),来在远程机器上(仅支持 Linux)运行 Experiment。
+`codeDir` 中的文件会自动上传到远程计算机中。 可在 Windows、Linux 或 macOS 上运行以下命令,在远程 Linux 计算机上启动 Trial:
```bash
nnictl create --config examples/trials/mnist-annotation/config_remote.yml
-```
-
-也可使用公钥/私钥对,而非用户名/密码进行身份验证。 有关高级用法,请参考[实验配置参考](../Tutorial/ExperimentConfig.md)。
-
-## 版本校验
-
-从 0.6 开始,NNI 支持版本校验,详情参考[这里](PaiMode.md)。
\ No newline at end of file
+```
\ No newline at end of file
diff --git a/docs/zh_CN/TrainingService/SupportTrainingService.md b/docs/zh_CN/TrainingService/SupportTrainingService.md
index fbf6f6a2cd..5afcc13020 100644
--- a/docs/zh_CN/TrainingService/SupportTrainingService.md
+++ b/docs/zh_CN/TrainingService/SupportTrainingService.md
@@ -19,21 +19,22 @@ NNI 不仅提供了这些内置的训练平台,还提供了轻松连接自己
TrainingService 在设计上为了便于实现,将平台相关的公共属性抽象成类。用户只需要继承这个抽象类,并根据平台特点实现子类,便能够实现 TrainingService。
TrainingService 的声明如下:
- abstract class TrainingService {
- public abstract listTrialJobs(): Promise;
- public abstract getTrialJob(trialJobId: string): Promise;
- public abstract addTrialJobMetricListener(listener: (metric: TrialJobMetric) => void): void;
- public abstract removeTrialJobMetricListener(listener: (metric: TrialJobMetric) => void): void;
- public abstract submitTrialJob(form: JobApplicationForm): Promise;
- public abstract updateTrialJob(trialJobId: string, form: JobApplicationForm): Promise;
- public abstract get isMultiPhaseJobSupported(): boolean;
- public abstract cancelTrialJob(trialJobId: string, isEarlyStopped?: boolean): Promise;
- public abstract setClusterMetadata(key: string, value: string): Promise;
- public abstract getClusterMetadata(key: string): Promise;
- public abstract cleanUp(): Promise;
- public abstract run(): Promise;
- }
-
+```javascript
+abstract class TrainingService {
+ public abstract listTrialJobs(): Promise;
+ public abstract getTrialJob(trialJobId: string): Promise;
+ public abstract addTrialJobMetricListener(listener: (metric: TrialJobMetric) => void): void;
+ public abstract removeTrialJobMetricListener(listener: (metric: TrialJobMetric) => void): void;
+ public abstract submitTrialJob(form: JobApplicationForm): Promise;
+ public abstract updateTrialJob(trialJobId: string, form: JobApplicationForm): Promise;
+ public abstract get isMultiPhaseJobSupported(): boolean;
+ public abstract cancelTrialJob(trialJobId: string, isEarlyStopped?: boolean): Promise;
+ public abstract setClusterMetadata(key: string, value: string): Promise;
+ public abstract getClusterMetadata(key: string): Promise;
+ public abstract cleanUp(): Promise;
+ public abstract run(): Promise;
+}
+```
TrainingService 的父类有一些抽象函数,用户需要继承父类并实现所有这些抽象函数。
有关如何实现 TrainingService 的更多信息,[参考这里](https://github.com/microsoft/nni/blob/master/docs/zh_CN/TrainingService/HowToImplementTrainingService.md)。
\ No newline at end of file
diff --git a/docs/zh_CN/TrialExample/EfficientNet.md b/docs/zh_CN/TrialExample/EfficientNet.md
new file mode 100644
index 0000000000..bf44c695ab
--- /dev/null
+++ b/docs/zh_CN/TrialExample/EfficientNet.md
@@ -0,0 +1,21 @@
+# EfficientNet
+
+[EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks](https://arxiv.org/abs/1905.11946)
+
+如论文中 3.3 所述,使用遍历搜索来找到 EfficientNet-B1 的 alpha, beta 和 gamma 的最好组合。 搜索空间,Tuner,配置示例如下。
+
+## 说明
+
+[示例代码](https://github.com/microsoft/nni/tree/master/examples/trials/efficientnet)
+
+1. 将示例代码目录设为当前工作目录。
+2. 运行 `git clone https://github.com/ultmaster/EfficientNet-PyTorch` 来克隆修改过的 [EfficientNet-PyTorch](https://github.com/lukemelas/EfficientNet-PyTorch)。 修改尽可能接近原始的 [TensorFlow 版本](https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet) (包括 EMA,标记平滑度等等。);另外添加了代码从 Tuner 获取参数并回调中间和最终结果。 将其 clone 至 `EfficientNet-PyTorch`;`main.py`,`train_imagenet.sh` 等文件会在配置文件中指定的路径。
+3. 运行 `nnictl create --config config_local.yml` (OpenPAI 可使用 `config_pai.yml`) 来找到最好的 EfficientNet-B1。 根据环境来调整训练平台(OpenPAI、本机、远程),batch size。
+
+在 ImageNet 上的训练,可阅读 `EfficientNet-PyTorch/train_imagenet.sh`。 下载 ImageNet,并参考 [PyTorch 格式](https://pytorch.org/docs/stable/torchvision/datasets.html#imagenet) 来解压,然后将 `/mnt/data/imagenet` 替换为 ImageNet 的路径。 此文件也是如何将 ImageNet 挂载到 OpenPAI 容器的示例。
+
+## 结果
+
+下图展示了 acc@1 和 alpha、beta、gamma 之间的关系。
+
+![](../../img/efficientnet_search_result.png)
diff --git a/docs/zh_CN/TrialExample/KDExample.md b/docs/zh_CN/TrialExample/KDExample.md
index 8f669b3d6d..ef91b9b905 100644
--- a/docs/zh_CN/TrialExample/KDExample.md
+++ b/docs/zh_CN/TrialExample/KDExample.md
@@ -30,4 +30,4 @@ for batch_idx, (data, target) in enumerate(train_loader):
* **kd_teacher_model:** 预训练过的教师模型
* **kd_T:** 用于平滑教师模型输出的温度。
-完整代码可在这里找到
\ No newline at end of file
+完整代码[在这里](https://github.com/microsoft/nni/tree/v1.3/examples/model_compress/knowledge_distill/)。
diff --git a/docs/zh_CN/TrialExample/SklearnExamples.md b/docs/zh_CN/TrialExample/SklearnExamples.md
index 36f9b6fa67..e860358040 100644
--- a/docs/zh_CN/TrialExample/SklearnExamples.md
+++ b/docs/zh_CN/TrialExample/SklearnExamples.md
@@ -20,7 +20,7 @@ nnictl create --config ./config.yml
示例使用了数字数据集,它是由 1797 个 8x8 的图片组成,每个图片都是一个手写数字,目标是将图片分为 10 类。
-在这个示例中,使用 SVC 作为模型,并为此模型选择一些参数,包括 `"C", "keral", "degree", "gamma" 和 "coef0"`。 关于这些参数的更多信息,可参考[这里](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html)。
+在这个示例中,使用 SVC 作为模型,并为此模型选择一些参数,包括 `"C", "kernel", "degree", "gamma" 和 "coef0"`。 关于这些参数的更多信息,可参考[这里](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html)。
### 2.2 回归
@@ -63,7 +63,7 @@ nnictl create --config ./config.yml
```json
{
"C": {"_type":"uniform","_value":[0.1, 1]},
- "keral": {"_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]},
+ "kernel": {"_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]},
"degree": {"_type":"choice","_value":[1, 2, 3, 4]},
"gamma": {"_type":"uniform","_value":[0.01, 0.1]},
"coef0 ": {"_type":"uniform","_value":[0.01, 0.1]}
@@ -75,7 +75,7 @@ nnictl create --config ./config.yml
```python
params = {
'C': 1.0,
- 'keral': 'linear',
+ 'kernel': 'linear',
'degree': 3,
'gamma': 0.01,
'coef0': 0.01
diff --git a/docs/zh_CN/Tutorial/FAQ.md b/docs/zh_CN/Tutorial/FAQ.md
index bcd7fe7a25..7577248612 100644
--- a/docs/zh_CN/Tutorial/FAQ.md
+++ b/docs/zh_CN/Tutorial/FAQ.md
@@ -56,6 +56,10 @@ nnictl 在执行时,使用 tmp 目录作为临时目录来复制 codeDir 下
参考 [Windows 上使用 NNI](NniOnWindows.md)。
+### 更多常见问题解答
+
+[标有常见问题标签的 Issue](https://github.com/microsoft/nni/labels/FAQ)
+
### 帮助改进
在创建新问题前,请在 https://github.com/Microsoft/nni/issues 查看是否有人已经报告了相似的问题。
\ No newline at end of file
diff --git a/docs/zh_CN/Tutorial/HowToDebug.md b/docs/zh_CN/Tutorial/HowToDebug.md
index 580da25dcd..f2c9c72f8c 100644
--- a/docs/zh_CN/Tutorial/HowToDebug.md
+++ b/docs/zh_CN/Tutorial/HowToDebug.md
@@ -81,4 +81,4 @@ NNI 中有不同的错误类型。 根据严重程度,可分为三类。 当 N
如图,每个 Trial 都有日志路径,可以从中找到 Trial 的日志和 stderr。
-除了 Experiment 级调试之外,NNI 还提供调试单个 Trial 的功能,而无需启动整个 Experiment。 有关调试单个 Trial 代码的更多信息,请参考[独立运行模式](../TrialExample/Trials.md#standalone-mode-for-debug)。
\ No newline at end of file
+除了 Experiment 级调试之外,NNI 还提供调试单个 Trial 的功能,而无需启动整个 Experiment。 有关调试单个 Trial 代码的更多信息,请参考[独立运行模式](../TrialExample/Trials.md#用于调试的独立模式)。
\ No newline at end of file
diff --git a/docs/zh_CN/Tutorial/Installation.md b/docs/zh_CN/Tutorial/Installation.md
index 830676ac1b..9a645cdc86 100644
--- a/docs/zh_CN/Tutorial/Installation.md
+++ b/docs/zh_CN/Tutorial/Installation.md
@@ -1,20 +1,22 @@
# 安装 NNI
-当前支持在 Linux,Mac 和 Windows 下安装。
+当前支持在 Linux,macOS 和 Windows 下安装。
-## **在 Linux 和 Mac 下安装**
+## 在 Linux 或 macOS 上安装
-* **通过 pip 命令安装 NNI**
+* 通过 pip 命令安装 NNI
- 先决条件:`python >= 3.5`
+ 先决条件:`python 64-bit >= 3.5`
```bash
python3 -m pip install --upgrade nni
```
-* **通过源代码安装 NNI**
+* 通过源代码安装 NNI
- 先决条件:`python >=3.5`, `git`, `wget`
+ 如果对某个或最新版本的代码感兴趣,可通过源代码安装 NNI。
+
+ 先决条件:`python 64-bit >=3.5`, `git`, `wget`
```bash
git clone -b v0.8 https://github.com/Microsoft/nni.git
@@ -22,25 +24,27 @@
./install.sh
```
-* **在 docker 映像中安装 NNI**
+* 在 Docker 映像中使用 NNI
也可将 NNI 安装到 docker 映像中。 参考[这里](../deployment/docker/README.md)来生成 NNI 的 Docker 映像。 也可通过此命令从 Docker Hub 中直接拉取 NNI 的映像 `docker pull msranni/nni:latest`。
-## **在 Windows 上安装**
+## 在 Windows 上安装
-推荐使用 Anaconda 或 Miniconda。
+强烈建议使用 Anaconda 或 Miniconda 来管理多个 Python 环境。
-* **通过 pip 命令安装 NNI**
+* 通过 pip 命令安装 NNI
- 先决条件:`python(64-bit) >= 3.5`
+ 先决条件:`python 64-bit >= 3.5`
```bash
python -m pip install --upgrade nni
```
-* **通过源代码安装 NNI**
+* 通过源代码安装 NNI
+
+ 如果对某个或最新版本的代码感兴趣,可通过源代码安装 NNI。
- 先决条件:`python >=3.5`, `git`, `PowerShell`
+ 先决条件:`python 64-bit >=3.5`, `git`, `PowerShell`
```bash
git clone -b v0.8 https://github.com/Microsoft/nni.git
@@ -48,43 +52,104 @@
powershell -ExecutionPolicy Bypass -file install.ps1
```
-## **系统需求**
-
-以下是 NNI 在 Linux 下的最低配置。 由于程序变更,NNI 的最低配置会有所更改。
-
-| | 最低配置 | 推荐配置 |
-| -------- | ------------------------------------- | ----------------------------------------- |
-| **操作系统** | Ubuntu 16.04 或以上版本 | Ubuntu 16.04 或以上版本 |
-| **CPU** | Intel® Core™ i3 或 AMD Phenom™ X3 8650 | Intel® Core™ i5 或 AMD Phenom™ II X3 或更高配置 |
-| **GPU** | NVIDIA® GeForce® GTX 460 | NVIDIA® GeForce® GTX 660 或更高配置 |
-| **内存** | 4 GB | 6 GB |
-| **存储** | 30 GB 可用的磁盘空间 | |
-| **网络** | 宽带连接 | |
-| **分辨率** | 1024 x 768 以上 | |
-
-以下是 NNI 在 MacOS 下的最低配置。 由于程序变更,NNI 的最低配置会有所更改。
-
-| | 最低配置 | 推荐配置 |
-| -------- | -------------------------------------------------- | ------------------------ |
-| **操作系统** | macOS 10.14.1 (最新版本) | macOS 10.14.1 (最新版本) |
-| **CPU** | Intel® Core™ i5-760 或更高 | Intel® Core™ i7-4770 或更高 |
-| **GPU** | NVIDIA® GeForce® GT 750M 或 AMD Radeon™ R9 M290 或更高 | AMD Radeon™ R9 M395X 或更高 |
-| **内存** | 4 GB | 8 GB |
-| **存储** | 70GB 可用空间及 7200 RPM 硬盘 | 70GB 可用空间 SSD 硬盘 |
-| **网络** | 宽带连接 | |
-| **分辨率** | 1024 x 768 以上 | |
-
-以下是 NNI 在 Windows 上的最低配置,推荐使用 Windows 10 1809 版。 由于程序变更,NNI 的最低配置会有所更改。
-
-| | 最低配置 | 推荐配置 |
-| -------- | ------------------------------------- | ----------------------------------------- |
-| **操作系统** | Windows 10 | Windows 10 |
-| **CPU** | Intel® Core™ i3 或 AMD Phenom™ X3 8650 | Intel® Core™ i5 或 AMD Phenom™ II X3 或更高配置 |
-| **GPU** | NVIDIA® GeForce® GTX 460 | NVIDIA® GeForce® GTX 660 或更高配置 |
-| **内存** | 4 GB | 6 GB |
-| **存储** | 30 GB 可用的磁盘空间 | |
-| **网络** | 宽带连接 | |
-| **分辨率** | 1024 x 768 以上 | |
+## 验证安装
+
+以下示例基于 TensorFlow 1.x 。确保运行环境中使用的的是 ** TensorFlow 1.x**。
+
+* 通过克隆源代码下载示例。
+
+ ```bash
+ git clone -b v1.3 https://github.com/Microsoft/nni.git
+ ```
+
+* 运行 MNIST 示例。
+
+ Linux 或 macOS
+
+ ```bash
+ nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
+ ```
+
+ Windows
+
+ ```bash
+ nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
+ ```
+
+* 在命令行中等待输出 `INFO: Successfully started experiment!`。 此消息表明 Experiment 已成功启动。 通过命令行输出的 `Web UI url` 来访问 Experiment 的界面。
+
+```text
+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`,可看到下图的 Experiment 详细信息,以及所有的 Trial 任务。 查看[这里](../Tutorial/WebUI.md)的更多页面。
+
+![概述](../../img/webui_overview_page.png)
+
+![详细说明](../../img/webui_trialdetail_page.png)
+
+## 系统需求
+
+由于程序变更,NNI 的最低配置会有所更改。
+
+### Linux
+
+| | 推荐配置 | 最低配置 |
+| -------- | ----------------------------------------- | ------------------------------------- |
+| **操作系统** | Ubuntu 16.04 或以上版本 | |
+| **CPU** | Intel® Core™ i5 或 AMD Phenom™ II X3 或更高配置 | Intel® Core™ i3 或 AMD Phenom™ X3 8650 |
+| **GPU** | NVIDIA® GeForce® GTX 660 或更高配置 | NVIDIA® GeForce® GTX 460 |
+| **内存** | 6 GB | 4 GB |
+| **存储** | 30 GB 可用的磁盘空间 | |
+| **网络** | 宽带连接 | |
+| **分辨率** | 1024 x 768 以上 | |
+
+### macOS
+
+| | 推荐配置 | 最低配置 |
+| -------- | ------------------------ | -------------------------------------------------- |
+| **操作系统** | macOS 10.14.1 或更高版本 | |
+| **CPU** | Intel® Core™ i7-4770 或更高 | Intel® Core™ i5-760 或更高 |
+| **GPU** | AMD Radeon™ R9 M395X 或更高 | NVIDIA® GeForce® GT 750M 或 AMD Radeon™ R9 M290 或更高 |
+| **内存** | 8 GB | 4 GB |
+| **存储** | 70GB 可用空间 SSD 硬盘 | 70GB 可用空间及 7200 RPM 硬盘 |
+| **网络** | 宽带连接 | |
+| **分辨率** | 1024 x 768 以上 | |
+
+### Windows
+
+| | 推荐配置 | 最低配置 |
+| -------- | ----------------------------------------- | ------------------------------------- |
+| **操作系统** | Windows 10 1809 或更高版本 | |
+| **CPU** | Intel® Core™ i5 或 AMD Phenom™ II X3 或更高配置 | Intel® Core™ i3 或 AMD Phenom™ X3 8650 |
+| **GPU** | NVIDIA® GeForce® GTX 660 或更高配置 | NVIDIA® GeForce® GTX 460 |
+| **内存** | 6 GB | 4 GB |
+| **存储** | 30 GB 可用的磁盘空间 | |
+| **网络** | 宽带连接 | |
+| **分辨率** | 1024 x 768 以上 | |
## 更多
diff --git a/docs/zh_CN/Tutorial/Nnictl.md b/docs/zh_CN/Tutorial/Nnictl.md
index acee5d4534..38b66d314b 100644
--- a/docs/zh_CN/Tutorial/Nnictl.md
+++ b/docs/zh_CN/Tutorial/Nnictl.md
@@ -49,6 +49,7 @@ nnictl 支持的命令:
| --config, -c | True | | Experiment 的 YAML 配置文件 |
| --port, -p | False | | RESTful 服务的端口 |
| --debug, -d | False | | 设置为调试模式 |
+ | --watch, -w | False | | 启动为监视模式 |
* 示例
@@ -97,6 +98,7 @@ nnictl 支持的命令:
| id | True | | 要恢复的 Experiment 标识 |
| --port, -p | False | | 要恢复的 Experiment 使用的 RESTful 服务端口 |
| --debug, -d | False | | 设置为调试模式 |
+ | --watch, -w | False | | 启动为监视模式 |
* 示例
diff --git a/docs/zh_CN/Tutorial/QuickStart.md b/docs/zh_CN/Tutorial/QuickStart.md
index 3ed05f3e68..b886debf18 100644
--- a/docs/zh_CN/Tutorial/QuickStart.md
+++ b/docs/zh_CN/Tutorial/QuickStart.md
@@ -2,15 +2,15 @@
## 安装
-当前支持 Linux,MacOS 和 Windows,在 Ubuntu 16.04 或更高版本,MacOS 10.14.1 以及 Windows 10.1809 上进行了测试。 在 `python >= 3.5` 的环境中,只需要运行 `pip install` 即可完成安装。
+当前支持 Linux,macOS 和 Windows,在 Ubuntu 16.04 或更高版本,macOS 10.14.1 以及 Windows 10.1809 上进行了测试。 在 `python >= 3.5` 的环境中,只需要运行 `pip install` 即可完成安装。
-#### Linux 和 MacOS
+**Linux 和 macOS**
```bash
python3 -m pip install --upgrade nni
```
-#### Windows
+**Windows**
```bash
python -m pip install --upgrade nni
@@ -18,7 +18,7 @@
注意:
-* 在 Linux 和 MacOS 上,如果要将 NNI 安装到当前用户的 home 目录中,可使用 `--user`,则不需要特殊权限。
+* 在 Linux 和 macOS 上,如果要将 NNI 安装到当前用户的 home 目录中,可使用 `--user`,则不需要特殊权限。
* 如果遇到如`Segmentation fault` 这样的任何错误请参考[常见问题](FAQ.md)。
* 参考[安装 NNI](Installation.md),来了解`系统需求`。
@@ -54,21 +54,22 @@ if __name__ == '__main__':
NNI 用来帮助超参调优。它的流程如下:
- 输入: 搜索空间, Trial 代码, 配置文件
- 输出: 一组最佳的超参配置
-
- 1: For t = 0, 1, 2, ..., maxTrialNum,
- 2: hyperparameter = 从搜索空间选择一组参数
- 3: final result = run_trial_and_evaluate(hyperparameter)
- 4: 返回最终结果给 NNI
- 5: If 时间达到上限,
- 6: 停止实验
- 7: return 最好的实验结果
-
+```text
+输入: 搜索空间, Trial 代码, 配置文件
+输出: 一组最佳的超参配置
+
+1: For t = 0, 1, 2, ..., maxTrialNum,
+2: hyperparameter = 从搜索空间选择一组参数
+3: final result = run_trial_and_evaluate(hyperparameter)
+4: 返回最终结果给 NNI
+5: If 时间达到上限,
+6: 停止实验
+7: return 最好的实验结果
+```
如果需要使用 NNI 来自动训练模型,找到最佳超参,需要如下三步:
-**使用 NNI 时的三个步骤**
+**启动 Experiment 的三个步骤**
**第一步**:定义 JSON 格式的`搜索空间`文件,包括所有需要搜索的超参的`名称`和`分布`(离散和连续值均可)。
@@ -140,7 +141,7 @@ trial:
上面的代码都已准备好,并保存在 [examples/trials/mnist-tfv1/](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-tfv1)。
-#### Linux 和 macOS
+**Linux 和 macOS**
从命令行使用 **config.yml** 文件启动 MNIST Experiment 。
@@ -148,17 +149,17 @@ trial:
nnictl create --config nni/examples/trials/mnist-tfv1/config.yml
```
-#### Windows
+**Windows**
从命令行使用 **config_windows.yml** 文件启动 MNIST Experiment 。
-**注意**:如果使用 Windows,则需要在 config.yml 文件中,将 `python3` 改为 `python`,或者使用 config_windows.yml 来开始 Experiment。
+注意:如果使用 Windows,则需要在 config.yml 文件中,将 `python3` 改为 `python`,或者使用 config_windows.yml 来开始 Experiment。
```bash
nnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml
```
-注意:**nnictl** 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。 查看[这里](Nnictl.md),了解 `nnictl` 更多用法。
+注意:`nnictl` 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。 查看[这里](Nnictl.md),了解 `nnictl` 更多用法。
在命令行中等待输出 `INFO: Successfully started experiment!`。 此消息表明 Experiment 已成功启动。 期望的输出如下:
@@ -201,7 +202,7 @@ Web 地址为:[IP 地址]:8080
在浏览器中打开 `Web 界面地址`(即:`[IP 地址]:8080`),就可以看到 Experiment 的详细信息,以及所有的 Trial 任务。 如果无法打开终端中的 Web 界面链接,可以参考 [FAQ](FAQ.md)。
-#### 查看概要页面
+### 查看概要页面
点击标签 "Overview"。
@@ -213,7 +214,7 @@ Experiment 相关信息会显示在界面上,配置和搜索空间等。 可
![](../../img/QuickStart2.png)
-#### 查看 Trial 详情页面
+### 查看 Trial 详情页面
点击 "Default Metric" 来查看所有 Trial 的点图。 悬停鼠标来查看默认指标和搜索空间信息。
diff --git a/docs/zh_CN/conf.py b/docs/zh_CN/conf.py
index f1336f1c78..d5bec553af 100644
--- a/docs/zh_CN/conf.py
+++ b/docs/zh_CN/conf.py
@@ -47,6 +47,9 @@
'sphinx.ext.napoleon',
]
+# 添加示例模块
+autodoc_mock_imports = ['apex']
+
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -72,7 +75,7 @@
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'Release_v1.0.md']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
diff --git a/docs/zh_CN/examples.rst b/docs/zh_CN/examples.rst
index f76ce9eb3d..95e0f94fee 100644
--- a/docs/zh_CN/examples.rst
+++ b/docs/zh_CN/examples.rst
@@ -11,3 +11,5 @@
EvolutionSQuAD<./TrialExample/SquadEvolutionExamples>
GBDT<./TrialExample/GbdtExample>
RocksDB <./TrialExample/RocksdbExamples>
+ KD 示例 <./TrialExample/KDExample>
+ EfficientNet <./TrialExample/EfficientNet>
diff --git a/docs/zh_CN/model_compression.rst b/docs/zh_CN/model_compression.rst
index 34d05b4844..2e273a79eb 100644
--- a/docs/zh_CN/model_compression.rst
+++ b/docs/zh_CN/model_compression.rst
@@ -18,7 +18,7 @@ NNI 中也内置了一些流程的模型压缩算法。
概述
Level Pruner
AGP Pruner
- L1Filter Pruner
+ L1Filter Pruner
Slim Pruner
Lottery Ticket Pruner
FPGM Pruner
diff --git a/docs/zh_CN/nas.rst b/docs/zh_CN/nas.rst
index a7329dd60d..611c5aefe2 100644
--- a/docs/zh_CN/nas.rst
+++ b/docs/zh_CN/nas.rst
@@ -22,4 +22,6 @@ NAS 算法
NAS 接口
ENAS
DARTS
- P-DARTS
+ P-DARTS
+ SPOS
+ CDARTS
diff --git a/docs/zh_CN/training_services.rst b/docs/zh_CN/training_services.rst
index 4e2969e597..8e75af2ae7 100644
--- a/docs/zh_CN/training_services.rst
+++ b/docs/zh_CN/training_services.rst
@@ -6,5 +6,6 @@ NNI 支持的训练平台介绍
本机<./TrainingService/LocalMode>
远程<./TrainingService/RemoteMachineMode>
OpenPAI<./TrainingService/PaiMode>
+ OpenPAI Yarn 模式<./TrainingService/PaiYarnMode>
Kubeflow<./TrainingService/KubeflowMode>
FrameworkController<./TrainingService/FrameworkControllerMode>
diff --git a/examples/feature_engineering/auto-feature-engineering/README_zh_CN.md b/examples/feature_engineering/auto-feature-engineering/README_zh_CN.md
index 55b50217cd..76cce132ff 100644
--- a/examples/feature_engineering/auto-feature-engineering/README_zh_CN.md
+++ b/examples/feature_engineering/auto-feature-engineering/README_zh_CN.md
@@ -1,8 +1,7 @@
-**NNI 中的自动特征工程**
-===
+ **NNI 中的自动特征工程** ===
-此[示例](https://github.com/SpongebBob/tabular_automl_NNI)在 NNI 中实现了自动特征工程。
+ 此[示例](https://github.com/SpongebBob/tabular_automl_NNI)在 NNI 中实现了自动特征工程。
-代码来自于贡献者。 谢谢可爱的贡献者!
+ 代码来自于贡献者。 谢谢可爱的贡献者!
-欢迎越来越多的人加入我们!
\ No newline at end of file
+ 欢迎越来越多的人加入我们!
diff --git a/examples/trials/efficientnet/README_zh_CN.md b/examples/trials/efficientnet/README_zh_CN.md
index 2f4ac5e65f..083689141b 100644
--- a/examples/trials/efficientnet/README_zh_CN.md
+++ b/examples/trials/efficientnet/README_zh_CN.md
@@ -1,19 +1 @@
-# EfficientNet
-
-[EfficientNet: 重新思考卷积神经网络的模型尺度](https://arxiv.org/abs/1905.11946)
-
-这里提供了:使用遍历搜索为 EfficientNet-B1 找到最佳元组(alpha,beta,gamma)的搜索空间和 Tuner。参考[论文](https://arxiv.org/abs/1905.11946) 3.3。
-
-## 说明
-
-1. 设置此目录为当前目录。
-2. 运行 `git clone https://github.com/ultmaster/EfficientNet-PyTorch` 来 clone 修改过的 [EfficientNet-PyTorch](https://github.com/lukemelas/EfficientNet-PyTorch)。 修改尽可能接近原始的 [TensorFlow 版本](https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet) (包括 EMA,标记平滑度等等。);另外添加了代码从 Tuner 获取参数并回调中间和最终结果。 将其 clone 至 `EfficientNet-PyTorch`;`main.py`,`train_imagenet.sh` 等文件会在配置文件中指定的路径。
-3. 运行 `nnictl create --config config_net.yml` 来找到最好的 EfficientNet-B1。 根据环境来调整训练平台(OpenPAI、本机、远程),batch size。
-
-在 ImageNet 上的训练,可阅读 `EfficientNet-PyTorch/train_imagenet.sh`。 下载 ImageNet,并参考 [PyTorch 格式](https://pytorch.org/docs/stable/torchvision/datasets.html#imagenet) 来解压,然后将 `/mnt/data/imagenet` 替换为 ImageNet 的路径。 此文件也是如何将 ImageNet 挂载到 OpenPAI 容器的示例。
-
-## 结果
-
-下图展示了 acc@1 和 alpha、beta、gamma 之间的关系。
-
-![](assets/search_result.png)
\ No newline at end of file
+[文档](https://nni.readthedocs.io/en/latest/TrialExample/EfficientNet.html)
\ No newline at end of file