Unverified Commit 226aaef9 authored by Chi Song's avatar Chi Song Committed by GitHub
Browse files

Chinese Translation (#1914)

parent ae81ec47
# CIFAR-10
# CIFAR-10
## 概述
......@@ -16,9 +16,9 @@
#### 准备
例需要安装 PyTorch。 PyTorch 安装包需要选择所基于的 Python 和 CUDA 版本。
例需要安装 PyTorch。 PyTorch 安装包需要选择所基于的 Python 和 CUDA 版本。
这是环境 python==3.5 且 cuda == 8.0 的例,然后用下列命令来安装 [ PyTorch](https://pytorch.org/)
这是环境 python==3.5 且 cuda == 8.0 的例,然后用下列命令来安装 [ PyTorch](https://pytorch.org/)
```bash
python3 -m pip install http://download.pytorch.org/whl/cu80/torch-0.4.1-cp35-cp35m-linux_x86_64.whl
......@@ -55,15 +55,15 @@ python3 -m pip install torchvision
**配置**
这是在本机运行 Experiment 的例(多GPU):
这是在本机运行 Experiment 的例(多GPU):
代码:[examples/trials/cifar10_pytorch/config.yml](https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config.yml)
这是在 OpenPAI 上运行 Experiment 的例:
这是在 OpenPAI 上运行 Experiment 的例:
代码:[examples/trials/cifar10_pytorch/config_pai.yml](https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config_pai.yml)
*完整例:[examples/trials/cifar10_pytorch/](https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch)*
*完整例:[examples/trials/cifar10_pytorch/](https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch)*
#### 运行 Experiment
......
......@@ -168,7 +168,7 @@ if __name__ == '__main__':
* 路径设置:`searchSpacePath`, `trial codeDir`,等等。
* 算法设置:选择 `Tuner` 算法,`优化方向`,等等。
config.yml 例:
config.yml 例:
```yaml
authorName: default
......
# MNIST
# MNIST
在深度学习中,用 CNN 来分类 MNIST 数据,就像介绍编程语言中的 `hello world` 例。 因此,NNI 将 MNIST 作为例来介绍功能。 例如下:
在深度学习中,用 CNN 来分类 MNIST 数据,就像介绍编程语言中的 `hello world` 例。 因此,NNI 将 MNIST 作为例来介绍功能。 例如下:
- [MNIST 中使用 NNI API (TensorFlow v1.x)](#mnist-tfv1)
- [MNIST 中使用 NNI API (TensorFlow v2.x)](#mnist-tfv2)
......@@ -15,7 +15,7 @@
<a name="mnist-tfv1"></a>
**MNIST 中使用 NNI API (TensorFlow v1.x)**
这是个简单的卷积网络,有两个卷积层,两个池化层和一个全连接层。 调优的超参包括 dropout 比率,卷积层大小,隐藏层(全连接层)大小等等。 它能用 NNI 中大部分内置的 Tuner 来调优,如 TPE,SMAC,Random。 例的 YAML 文件也启用了评估器来提前终止一些中间结果不好的尝试。
这是个简单的卷积网络,有两个卷积层,两个池化层和一个全连接层。 调优的超参包括 dropout 比率,卷积层大小,隐藏层(全连接层)大小等等。 它能用 NNI 中大部分内置的 Tuner 来调优,如 TPE,SMAC,Random。 例的 YAML 文件也启用了评估器来提前终止一些中间结果不好的尝试。
`代码目录: examples/trials/mnist-tfv1/`
......@@ -29,48 +29,48 @@
<a name="mnist-annotation"></a>
**MNIST 中使用 NNI 标记(annotation)**
例与上例类似,上例使用的是 NNI API 来指定搜索空间并返回结果,而此例使用的是 NNI 标记。
例与上例类似,上例使用的是 NNI API 来指定搜索空间并返回结果,而此例使用的是 NNI 标记。
`代码目录: examples/trials/mnist-annotation/`
<a name="mnist-keras"></a>
**在 Keras 中使用 MNIST**
例由 Keras 实现。 这也是 MNIST 数据集的网络,包括两个卷积层,一个池化层和两个全连接层。
例由 Keras 实现。 这也是 MNIST 数据集的网络,包括两个卷积层,一个池化层和两个全连接层。
`代码目录: examples/trials/mnist-keras/`
<a name="mnist-batch"></a>
**MNIST -- 用批处理 Tuner 来调优**
例演示了如何使用批处理 Tuner。 只需要在搜索空间文件中列出所有要尝试的配置, NNI 会逐个尝试。
例演示了如何使用批处理 Tuner。 只需要在搜索空间文件中列出所有要尝试的配置, NNI 会逐个尝试。
`代码目录: examples/trials/mnist-batch-tune-keras/`
<a name="mnist-hyperband"></a>
**MNIST -- 用 hyperband 调优**
例演示了如何使用 hyperband 来调优模型。 在尝试收到的配置中,有个主键叫做 `STEPS`,尝试要用它来控制运行多长时间(例如,控制迭代的次数)。
例演示了如何使用 hyperband 来调优模型。 在尝试收到的配置中,有个主键叫做 `STEPS`,尝试要用它来控制运行多长时间(例如,控制迭代的次数)。
`代码目录: examples/trials/mnist-hyperband/`
<a name="mnist-nested"></a>
**MNIST -- 用嵌套搜索空间调优**
例演示了 NNI 如何支持嵌套的搜索空间。 搜索空间文件示了如何定义嵌套的搜索空间。
例演示了 NNI 如何支持嵌套的搜索空间。 搜索空间文件示了如何定义嵌套的搜索空间。
`代码目录: examples/trials/mnist-nested-search-space/`
<a name="mnist-kubeflow-tf"></a>
**用 Kubeflow 运行分布式的 MNIST (tensorflow)**
例展示了如何通过 NNI 来在 Kubeflow 上运行分布式训练。 只需要简单的提供分布式训练代码,并在配置文件中指定 kubeflow 模式。 例如,运行 ps 和 worker 的命令行,以及各自需要的资源。 此例使用了 Tensorflow 来实现,因而,需要使用 Kubeflow 的 tf-operator。
例展示了如何通过 NNI 来在 Kubeflow 上运行分布式训练。 只需要简单的提供分布式训练代码,并在配置文件中指定 kubeflow 模式。 例如,运行 ps 和 worker 的命令行,以及各自需要的资源。 此例使用了 Tensorflow 来实现,因而,需要使用 Kubeflow 的 tf-operator。
`代码目录: examples/trials/mnist-distributed/`
<a name="mnist-kubeflow-pytorch"></a>
**用 Kubeflow 运行分布式的 MNIST (PyTorch)**
与前面的例类似,不同之处是此例是 Pytorch 实现的,因而需要使用 Kubeflow 的 pytorch-operator。
与前面的例类似,不同之处是此例是 Pytorch 实现的,因而需要使用 Kubeflow 的 pytorch-operator。
`代码目录: examples/trials/mnist-distributed-pytorch/`
\ No newline at end of file
......@@ -4,7 +4,7 @@
NNI 支持多种调优算法来为 scikit-learn 搜索最好的模型和超参,并支持本机、远程服务器和云服务等多种环境。
## 1. 如何运行此
## 1. 如何运行此
安装 NNI 包,并使用命令行工具 `nnictl` 来启动 Experiment。 有关安装和环境准备的内容,参考[这里](../Tutorial/QuickStart.md)
......@@ -14,7 +14,7 @@ NNI 支持多种调优算法来为 scikit-learn 搜索最好的模型和超参
nnictl create --config ./config.yml
```
## 2. 例概述
## 2. 例概述
### 2.1 分类
......@@ -24,7 +24,7 @@ nnictl create --config ./config.yml
### 2.2 回归
例使用了波士顿房价数据,数据集由波士顿各地区房价所组成,还包括了房屋的周边信息,例如:犯罪率 (CRIM),非零售业务的面积 (INDUS),房主年龄 (AGE) 等等。这些信息可用来预测波士顿的房价。
例使用了波士顿房价数据,数据集由波士顿各地区房价所组成,还包括了房屋的周边信息,例如:犯罪率 (CRIM),非零售业务的面积 (INDUS),房主年龄 (AGE) 等等。这些信息可用来预测波士顿的房价。
本例中,尝试了不同的回归模型,包括 `"LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"` 和一些参数,如 `"svr_kernel", "knr_weights"`。 关于这些模型算法和参数的更多信息,可参考[这里](https://scikit-learn.org/stable/supervised_learning.html#supervised-learning)
......
# 在阅读理解上使用自动模型架构搜索
例展示了如何使用遗传算法为阅读理解任务找到好的模型架构。
例展示了如何使用遗传算法为阅读理解任务找到好的模型架构。
## 1. 搜索空间
......@@ -20,7 +20,7 @@
另一个时间更快,性能更好的版本正在开发中。 很快将发布。
## 2. 如何在本机运行此例?
## 2. 如何在本机运行此例?
### 2.1 使用下载脚本来下载数据
......@@ -81,7 +81,7 @@ trial:
nnictl create --config ~/nni/examples/trials/ga_squad/config.yml
```
## 3 在 OpenPAI 上运行此
## 3 在 OpenPAI 上运行此
根据上传大小的限制,仅上传源代码,并在训练过程中下载数据。 本 Experiment 需要的内存 `memoryMB >= 32G`,训练过程可能需要数小时。
......@@ -140,7 +140,7 @@ nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml
### 4.1 实现方法
基于进化算法架构的问答和其它例一样,有两个部分:Trial 和 Tuner。
基于进化算法架构的问答和其它例一样,有两个部分:Trial 和 Tuner。
### 4.2 Trial
......@@ -251,7 +251,7 @@ class CustomerTuner(Tuner):
### 4.4 模型配置格式
这是模型配置的例,在架构搜索过程中,从 Tuner 传入 Trial 的代码。
这是模型配置的例,在架构搜索过程中,从 Tuner 传入 Trial 的代码。
```json
{
......
......@@ -2,7 +2,7 @@
**Trial(尝试)**是将一组参数组合(例如,超参)在模型上独立的一次尝试。
定义 NNI 的 Trial,需要首先定义参数组,并更新模型代码。 NNI 有两种方法来实现 Trial:[NNI API](#nni-api) 以及 [NNI Python annotation](#nni-annotation)。 参考[这里的](#more-examples)更多 Trial 例。
定义 NNI 的 Trial,需要首先定义参数组,并更新模型代码。 NNI 有两种方法来实现 Trial:[NNI API](#nni-api) 以及 [NNI Python annotation](#nni-annotation)。 参考[这里的](#more-examples)更多 Trial 例。
<a name="nni-api"></a>
......@@ -10,7 +10,7 @@
### 第一步:准备搜索空间参数文件。
例如下:
例如下:
```json
{
......@@ -156,7 +156,7 @@ nni.get_sequence_id#返回 0
每个 Trial 都有单独的目录来输出自己的数据。 在每次 Trial 运行后,环境变量 `NNI_OUTPUT_DIR` 定义的目录都会被导出。 在这个目录中可以看到 Trial 的代码、数据和日志。 此外,Trial 的日志(包括 stdout)还会被重定向到此目录中的 `trial.log` 文件。
如果使用了 Annotation 方法,转换后的 Trial 代码会存放在另一个临时目录中。 可以在 `run.sh` 文件中的 `NNI_OUTPUT_DIR` 变量找到此目录。 文件中的第二行(即:`cd`)会切换到代码所在的实际路径。 参考 `run.sh` 文件例:
如果使用了 Annotation 方法,转换后的 Trial 代码会存放在另一个临时目录中。 可以在 `run.sh` 文件中的 `NNI_OUTPUT_DIR` 变量找到此目录。 文件中的第二行(即:`cd`)会切换到代码所在的实际路径。 参考 `run.sh` 文件例:
```bash
#!/bin/bash
......@@ -182,7 +182,7 @@ echo $? `date +%s%3N` >/home/user_name/nni/experiments/$experiment_id$/trials/$t
## 更多 Trial 的示例
* [MNIST ](MnistExamples.md)
* [MNIST ](MnistExamples.md)
* [为 CIFAR 10 分类找到最佳的 optimizer](Cifar10Examples.md)
* [如何在 NNI 调优 SciKit-learn 的参数](SklearnExamples.md)
* [在阅读理解上使用自动模型架构搜索。](SquadEvolutionExamples.md)
......
# 内置 Tuner
# 内置的超参调优 Tuner
NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tuner 的简单介绍:
......@@ -13,7 +13,7 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tu
| [**Anneal(退火算法)**](#Anneal) | 这种简单的退火算法从先前的采样开始,会越来越靠近发现的最佳点取样。 此算法是随机搜索的简单变体,利用了反应曲面的平滑性。 退火率不是自适应的。 |
| [**Naïve Evolution(进化算法)**](#Evolution) | Naïve Evolution(朴素进化算法)来自于 Large-Scale Evolution of Image Classifiers。 它会基于搜索空间随机生成一个种群。 在每一代中,会选择较好的结果,并对其下一代进行一些变异(例如,改动一个超参,增加或减少一层)。 Naïve Evolution 需要很多次 Trial 才能有效,但它也非常简单,也很容易扩展新功能。 [参考论文](https://arxiv.org/pdf/1703.01041.pdf) |
| [**SMAC**](#SMAC) | SMAC 基于 Sequential Model-Based Optimization (SMBO,即序列的基于模型优化方法)。 它利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 SMAC 算法包装了 Github 的 SMAC3。 注意:SMAC 需要通过 `nnictl package` 命令来安装。 [参考论文,](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) [Github 代码库](https://github.com/automl/SMAC3) |
| [**Batch Tuner(批量调参器)**](#Batch) | Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 Batch Tuner 仅支持 choice 类型。 |
| [**Batch Tuner(批处理 Tuner)**](#Batch) | Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 Batch Tuner 仅支持 choice 类型。 |
| [**Grid Search(遍历搜索)**](#GridSearch) | Grid Search 会穷举定义在搜索空间文件中的所有超参组合。 遍历搜索可以使用的类型有 choice, quniform, randint。 |
| [**Hyperband**](#Hyperband) | Hyperband 试图用有限的资源来探索尽可能多的组合,并发现最好的结果。 它的基本思路是生成大量的配置,并使用少量的资源来找到有可能好的配置,然后继续训练找到其中更好的配置。 [参考论文](https://arxiv.org/pdf/1603.06560.pdf) |
| [**Network Morphism**](#NetworkMorphism) | Network Morphism 提供了深度学习模型的自动架构搜索功能。 每个子网络都继承于父网络的知识和形态,并变换网络的不同形态,包括深度,宽度,跨层连接(skip-connection)。 然后使用历史的架构和指标,来估计子网络的值。 然后会选择最有希望的模型进行训练。 [参考论文](https://arxiv.org/abs/1806.10282) |
......@@ -26,7 +26,7 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tu
要使用 NNI 内置的 Tuner,需要在 `config.yml` 文件中添加 **builtinTunerName****classArgs**。 这一节会介绍推荐的场景、参数等详细用法以及示例。
注意:参考例中的格式来创建新的 `config.yml` 文件。 一些内置的 Tuner 还需要通过 `nnictl package` 命令先安装,如 SMAC。
注意:参考例中的格式来创建新的 `config.yml` 文件。 一些内置的 Tuner 还需要通过 `nnictl package` 命令先安装,如 SMAC。
<a name="TPE"></a>
......@@ -158,6 +158,7 @@ nnictl package install --name=SMAC
**参数**
* **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。
* **config_dedup** (*True 或 False, 可选, 默认为 False*) - 如果为 True,则 Tuner 不会生成重复的配置。 如果为 False,则配置可能会重复生成,但对于相对较大的搜索空间,此概率较小。
**示例**
......@@ -274,7 +275,7 @@ NetworkMorphism 需要先安装 [PyTorch](https://pytorch.org/get-started/locall
**建议场景**
需要将深度学习方法应用到自己的任务(自己的数据集)上,但不清楚该如何选择或设计网络。 可修改[](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism/cifar10/cifar10_keras.py)来适配自己的数据集和数据增强方法。 也可以修改批处理大小,学习率或优化器。 它可以为不同的任务找到好的网络架构。 当前,此 Tuner 仅支持视觉领域。 [详细说明](./NetworkmorphismTuner.md)
需要将深度学习方法应用到自己的任务(自己的数据集)上,但不清楚该如何选择或设计网络。 可修改[](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism/cifar10/cifar10_keras.py)来适配自己的数据集和数据增强方法。 也可以修改批处理大小,学习率或优化器。 它可以为不同的任务找到好的网络架构。 当前,此 Tuner 仅支持视觉领域。 [详细说明](./NetworkmorphismTuner.md)
**参数**
......@@ -310,7 +311,7 @@ tuner:
**建议场景**
与 TPE 和 SMAC 类似,Metis 是黑盒 Tuner。 如果系统需要很长时间才能完成一次 Trial,Metis 就比随机搜索等其它方法要更合适。 此外,Metis 还为接下来的 Trial 提供了候选。 如何使用 Metis 的[](https://github.com/Microsoft/nni/tree/master/examples/trials/auto-gbdt/search_space_metis.json)。 通过调用 NNI 的 SDK,用户只需要发送`精度`这样的最终结果给 Tuner。 [详细说明](./MetisTuner.md)
与 TPE 和 SMAC 类似,Metis 是黑盒 Tuner。 如果系统需要很长时间才能完成一次 Trial,Metis 就比随机搜索等其它方法要更合适。 此外,Metis 还为接下来的 Trial 提供了候选。 如何使用 Metis 的[](https://github.com/Microsoft/nni/tree/master/examples/trials/auto-gbdt/search_space_metis.json)。 通过调用 NNI 的 SDK,用户只需要发送`精度`这样的最终结果给 Tuner。 [详细说明](./MetisTuner.md)
**参数**
......@@ -449,4 +450,12 @@ tuner:
builtinTunerName: PPOTuner
classArgs:
optimize_mode: maximize
```
\ No newline at end of file
```
## **参考和反馈**
* 在 GitHub 中[提交此功能的 Bug](https://github.com/microsoft/nni/issues/new?template=bug-report.md)
* 在 GitHub 中[提交新功能或改进请求](https://github.com/microsoft/nni/issues/new?template=enhancement.md)
* 了解 NNI 中[特征工程的更多信息](https://github.com/microsoft/nni/blob/master/docs/zh_CN/FeatureEngineering/Overview.md)
* 了解 NNI 中[ NAS 的更多信息](https://github.com/microsoft/nni/blob/master/docs/zh_CN/NAS/Overview.md)
* 了解 NNI 中[模型自动压缩的更多信息](https://github.com/microsoft/nni/blob/master/docs/zh_CN/Compressor/Overview.md)
\ No newline at end of file
......@@ -16,7 +16,7 @@ class CustomizedAdvisor(MsgDispatcherBase):
...
```
**2. 实现所有除了 `handle_request` 外的,以 `handle_` 前缀开始的方法**[此文档](https://nni.readthedocs.io/en/latest/sdk_reference.html#nni.msg_dispatcher_base.MsgDispatcherBase)可帮助理解 `MsgDispatcherBase`
**2. 实现所有除了 `handle_request` 外的,以 `handle_` 前缀开始的方法**[此文档](https://nni.readthedocs.io/zh/latest/sdk_reference.html#nni.msg_dispatcher_base.MsgDispatcherBase)可帮助理解 `MsgDispatcherBase`
**3. 在 Experiment 的 YAML 文件中配置好自定义的 Advisor。**
......@@ -33,6 +33,8 @@ advisor:
arg1: value1
```
**注意:**Advisor 的工作目录是`<home>/nni/experiments/<experiment_id>/log` 可从环境变量 `NNI_LOG_DIRECTORY` 中获取。
## 示例
参考[示例](https://github.com/microsoft/nni/tree/master/examples/tuners/mnist_keras_customized_advisor)
\ No newline at end of file
......@@ -10,7 +10,7 @@ NNI 在内置的 Tuner 中提供了最新的调优算法。 NNI 同时也支持
2. 实现 receive_trial_result 和 generate_parameter 函数
3. 在 Experiment 的 YAML 文件中配置好自定义的 Tuner
例如下:
例如下:
**1. 继承 Tuner 基类**
......@@ -76,7 +76,7 @@ parameters = {"dropout": 0.3, "learning_rate": 0.4}
value = 0.93
```
**注意** 如果需要存取自定义的 Tuner 目录的文件 (如, `data.txt`),不能使用 `open('data.txt', 'r')`。 要使用:
**注意**Tuner 的工作目录是 `<home>/nni/experiments/<experiment_id>/log`,可使用环境变量 `NNI_LOG_DIRECTORY`,因此 ,如果要访问自己 Tuner 目录的文件(如: `data.txt`)不能直接使用 `open('data.txt', 'r')`。 要使用:
```python
_pwd = os.path.dirname(__file__)
......@@ -101,7 +101,7 @@ tuner:
```
更多例,可参考:
更多例,可参考:
> - [evolution-tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/evolution_tuner)
> - [hyperopt-tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperopt_tuner)
......
......@@ -6,7 +6,7 @@
## 2. 实现并行
首先,此例是基于 MsgDispatcherBase 来实现的自动机器学习算法,而不是基于 Tuner 和Assessor。 这种实现方法下,Hyperband 集成了 Tuner 和 Assessor 两者的功能,因而将它叫做 Advisor。
首先,此例是基于 MsgDispatcherBase 来实现的自动机器学习算法,而不是基于 Tuner 和Assessor。 这种实现方法下,Hyperband 集成了 Tuner 和 Assessor 两者的功能,因而将它叫做 Advisor。
其次,本实现完全利用了 Hyperband 内部的并行性。 具体来说,下一个分组不会严格的在当前分组结束后再运行,只要有资源,就可以开始运行新的分组。
......@@ -30,11 +30,11 @@
对于 Trial 代码中 `report_intermediate_result(metric)``report_final_result(metric)`**`指标` 应该是数值,或者用一个 dict,并保证其中有键值为 default 的项目,其值也为数值型**。 这是需要进行最大化或者最小化优化的数值,如精度或者损失度。
`R``eta` 是 Hyperband 中可以改动的参数。 `R` 表示可以分配给 Trial 的最大资源。 这里,资源可以代表 epoch 或 批处理数量。 `TRIAL_BUDGET` 应该被尝试代码用来控制运行的次数。 参考`examples/trials/mnist-advisor/` ,了解详细信息。
`R``eta` 是 Hyperband 中可以改动的参数。 `R` 表示可以分配给 Trial 的最大资源。 这里,资源可以代表 epoch 或 批处理数量。 `TRIAL_BUDGET` 应该被尝试代码用来控制运行的次数。 参考`examples/trials/mnist-advisor/` ,了解详细信息。
`eta` 表示 `n` 个配置中的 `n/eta` 个配置会留存下来,并用更多的资源来运行。
下面是 `R=81``eta=3` 时的例:
下面是 `R=81``eta=3` 时的例:
| | s=4 | s=3 | s=2 | s=1 | s=0 |
| - | ---- | ---- | ---- | ---- | ---- |
......
......@@ -119,11 +119,11 @@ Tuner 有大量的文件、函数和类。 这里只简单介绍最重要的文
- `layer_transformer.py` 包含了一些层转换,包括变宽,变深,或在层中增加跳跃连接。
- `nn.py` 包含生成初始化网的类。
- `metric.py` 包括了一些指标类,如 Accuracy 和 MSE。
- `utils.py` 是使用 Keras 在数据集 `cifar10` 上搜索神经网络的例。
- `utils.py` 是使用 Keras 在数据集 `cifar10` 上搜索神经网络的例。
## 4. 网络表示的 JSON
## 4. 网络表示的 JSON
这是定义的中间表示 JSON 例,在架构搜索过程中会从 Tuner 传到 Trial。 可调用 "json\_to\_graph()" 函数来将 JSON 文件转化为 Pytoch 或 Keras 模型。 例如下。
这是定义的中间表示 JSON 例,在架构搜索过程中会从 Tuner 传到 Trial。 可调用 "json\_to\_graph()" 函数来将 JSON 文件转化为 Pytoch 或 Keras 模型。 例如下。
```json
{
......
......@@ -4,7 +4,7 @@
为了获得良好的用户体验并减少对以后代码的影响,NNI 设计了通过 Annotation(标记)来使用的语法。 通过 Annotation,只需要在代码中加入一些注释字符串,就能启用 NNI,完全不影响代码原先的执行逻辑。
例如下:
例如下:
```python
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
......@@ -12,7 +12,7 @@ learning_rate = 0.1
```
例中,NNI 会从 (0.1, 0.01, 0.001) 中选择一个值赋给 learning_rate 变量。 第一行就是 NNI 的 Annotation,是 Python 中的一个字符串。 接下来的一行需要是赋值语句。 NNI 会根据 Annotation 行的信息,来给这一行的变量赋上相应的值。
例中,NNI 会从 (0.1, 0.01, 0.001) 中选择一个值赋给 learning_rate 变量。 第一行就是 NNI 的 Annotation,是 Python 中的一个字符串。 接下来的一行需要是赋值语句。 NNI 会根据 Annotation 行的信息,来给这一行的变量赋上相应的值。
通过这种方式,不需要修改任何代码,代码既可以直接运行,又可以使用 NNI 来调参。
......@@ -44,7 +44,7 @@ NNI 支持如下 10 种类型来表示搜索空间:
- `@nni.variable(nni.lognormal(mu, sigma),name=variable)` 变量值分布的公式为: exp(normal(mu, sigma))
- `@nni.variable(nni.qlognormal(mu, sigma, q),name=variable)` 变量值分布的公式为: round(exp(normal(mu, sigma)) / q) * q
例如下:
例如下:
```python
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
......
......@@ -69,7 +69,7 @@
- [password](#password)
- [token](#token)
- [host](#host)
- [](#examples)
- [](#examples)
- [本机模式](#local-mode)
- [远程模式](#remote-mode)
- [PAI 模式](#pai-mode)
......
......@@ -50,7 +50,7 @@ nnictl 支持的命令:
| --port, -p | False | | RESTful 服务的端口 |
| --debug, -d | False | | 设置为调试模式 |
*
*
> 在默认端口 8080 上创建一个新的 Experiment
......@@ -98,7 +98,7 @@ nnictl 支持的命令:
| --port, -p | False | | 要恢复的 Experiment 使用的 RESTful 服务端口 |
| --debug, -d | False | | 设置为调试模式 |
*
*
> 在指定的端口 8088 上恢复 Experiment
......@@ -241,7 +241,7 @@ nnictl 支持的命令:
| id | False | | 需要设置的 Experiment 的 ID |
| --value, -v | True | | 允许同时运行的 Trial 的数量 |
*
*
> 更新 Experiment 的并发数量
......@@ -499,7 +499,7 @@ nnictl 支持的命令:
* 详细说明
NNI 支持导入用户的数据,确保数据格式正确。 例如下:
NNI 支持导入用户的数据,确保数据格式正确。 例如下:
```json
[
......
......@@ -26,7 +26,7 @@
NNI 是一个能进行自动机器学习实验的工具包。 它可以自动进行获取超参、运行 Trial,测试结果,调优超参的循环。 下面会展示如何使用 NNI 来找到最佳超参组合。
这是还**没有 NNI**例代码,用 CNN 在 MNIST 数据集上训练:
这是还**没有 NNI**例代码,用 CNN 在 MNIST 数据集上训练:
```python
def run_trial(params):
......
......@@ -6,7 +6,7 @@
要定义搜索空间,需要定义变量名称、采样策略的类型及其参数。
* 搜索空间例如下:
* 搜索空间例如下:
```yaml
{
......@@ -19,7 +19,7 @@
```
将第一行作为例。 `dropout_rate` 定义了一个变量,先验分布为均匀分布,范围从 `0.1``0.5`
将第一行作为例。 `dropout_rate` 定义了一个变量,先验分布为均匀分布,范围从 `0.1``0.5`
注意,搜索空间的效果与 Tuner 高度相关。 此处列出了内置 Tuner 所支持的类型。 对于自定义的 Tuner,不必遵循鞋标,可使用任何的类型。
......
......@@ -12,23 +12,23 @@
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
from recommonmark.transform import AutoStructify
from recommonmark.parser import CommonMarkParser
import os
import sys
sys.path.insert(0, os.path.abspath('../../src/sdk/pynni'))
from recommonmark.parser import CommonMarkParser
from recommonmark.transform import AutoStructify
# -- Project information ---------------------------------------------------
project = 'Neural Network Intelligence'
copyright = '2019, Microsoft'
project = 'NNI'
copyright = '2020, Microsoft'
author = 'Microsoft'
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = 'v1.2'
release = 'v1.3'
# -- General configuration ---------------------------------------------------
......@@ -109,6 +109,8 @@ html_static_path = ['../static']
# html_sidebars = {}
html_logo = '../img/nni_logo_dark.png'
html_title = '支持神经网络结构搜索、模型压缩、超参调优的开源自动机器学习工具 (%s %s)' % \
(project, release)
# -- Options for HTMLHelp output ---------------------------------------------
......@@ -190,6 +192,6 @@ def setup(app):
app.add_config_value('recommonmark_config', {
'enable_eval_rst': True,
'enable_auto_toc_tree': False,
}, True)
}, True)
app.add_transform(AutoStructify)
app.add_stylesheet('css/custom.css')
######################
######################
.. toctree::
......
#########################################
Neural Network Intelligence(NNI)文档
#########################################
###########################
Neural Network Intelligence
###########################
********
内容
......
......@@ -56,6 +56,6 @@ main()
也可以重载 Assessor 的 `run` 函数来控制过程逻辑。
更多例,可参考:
更多例,可参考:
> - [Base-Assessor](https://msrasrg.visualstudio.com/NeuralNetworkIntelligenceOpenSource/_git/Default?_a=contents&path=%2Fsrc%2Fsdk%2Fpynni%2Fnni%2Fassessor.py&version=GBadd_readme)
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment