Unverified Commit 9b9c974b authored by Chi Song's avatar Chi Song Committed by GitHub
Browse files

Chinese translation (#955)

parent 07655bf4
......@@ -73,8 +73,6 @@ tuner:
# config.yml
tuner:
builtinTunerName: Random
classArgs:
optimize_mode: maximize
```
<br />
......@@ -115,10 +113,6 @@ tuner:
此算法对计算资源的需求相对较高。 需要非常大的初始种群,以免落入局部最优中。 如果 Trial 时间很短,或者使用了 Assessor,就非常适合此算法。 如果 Trial 代码支持权重迁移,即每次 Trial 会从上一轮继承已经收敛的权重,建议使用此算法。 这会大大提高训练速度。
**参数**
* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。
**使用样例:**
```yaml
......@@ -239,7 +233,7 @@ tuner:
**参数**
* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。
* **R** (*int, 可选, 默认为 60*) - 能分配给 Trial 的最大 STEPS (可以是 mini-batches 或 epochs 的数值)。 Trial 需要用 STEPS 来控制运行时间。
* **R** (*int, 可选, 默认为 60*) - 能分配给 Trial 的最大 STEPS (可以是 mini-batches 或 epochs 的数值)。 每个 Trial 需要用 STEPS 来控制运行时间。
* **eta** (*int, 可选, 默认为 3*) - `(eta-1)/eta` 是丢弃 Trial 的比例。
**使用样例:**
......
......@@ -4,5 +4,4 @@
.. toctree::
设置开发环境<SetupNNIDeveloperEnvironment>
贡献指南<CONTRIBUTING>
如何调试<HowToDebug>
\ No newline at end of file
贡献指南<CONTRIBUTING>
\ No newline at end of file
......@@ -157,7 +157,7 @@ machineList:
- 说明
NNI 会检查 remote, pai 和 Kubernetes 模式下管理器以及 trialKeeper 进程的版本。 如果需要禁用版本检查,debug 应设置为 true。
NNI 会校验 remote, pai 和 Kubernetes 模式下 NNIManager 与 trialKeeper 进程的版本。 如果需要禁用版本校验,debug 应设置为 true。
- **maxTrialNum**
......
......@@ -102,4 +102,8 @@ frameworkcontroller 模式中的 Trial 配置使用以下主键:
## 如何运行示例
准备好配置文件后,通过运行 nnictl 来启动 Experiment。 在 Frameworkcontroller 上开始 Experiment 的方法与 Kubeflow 类似,可参考[指南](./KubeflowMode.md)了解更多信息。
\ No newline at end of file
准备好配置文件后,通过运行 nnictl 来启动 Experiment。 在 Frameworkcontroller 上开始 Experiment 的方法与 Kubeflow 类似,可参考[指南](./KubeflowMode.md)了解更多信息。
## 版本校验
从 0.6 开始,NNI 支持查看版本,详情参考[这里](PAIMode.md)
\ No newline at end of file
......@@ -202,4 +202,8 @@ Kubeflow 模式的配置有下列主键:
当一个 Trial 作业完成后,可以在 NNI 网页的概述页面(如:http://localhost:8080/oview)中查看 Trial 的信息。
## 版本校验
从 0.6 开始,NNI 支持版本校验,详情参考[这里](PAIMode.md)
如果在使用 Kubeflow 模式时遇到任何问题,请到 [NNI Github](https://github.com/Microsoft/nni) 中创建问题。
\ No newline at end of file
......@@ -50,7 +50,7 @@ nnictl 支持的命令:
注意:
调试模式会禁用 Trialkeeper 中的版本检查功能。
调试模式会禁用 Trialkeeper 中的版本校验功能。
<a name="resume"></a>
......@@ -462,7 +462,7 @@ nnictl 支持的命令:
<a name="version"></a>
### 检查 NNI 版本
### NNI 版本校验
* **nnictl --version**
......
......@@ -58,7 +58,7 @@ paiConfig:
* 可选。 指定了 Trial 用于下载数据的 HDFS 数据目录。 格式应为 hdfs://{your HDFS host}:9000/{数据目录}
* outputDir
* 可选。 指定了 Trial 的 HDFS 输出目录。 Trial 在完成(成功或失败)后,Trial 的 stdout, stderr 会被 NNI 自动复制到此目录中。 格式应为 hdfs://{your HDFS host}:9000/{输出目录}
* virturlCluster
* virtualCluster
* 可选。 设置 OpenPAI 的 virtualCluster,即虚拟集群。 如果未设置此参数,将使用默认的虚拟集群。
* shmMB
* 可选。 设置 OpenPAI 的 shmMB,即 Docker 中的共享内存。
......@@ -82,4 +82,16 @@ paiConfig:
如果希望将 Trial 的模型数据等其它输出保存到HDFS中,可在 Trial 代码中使用 `NNI_OUTPUT_DIR` 来自己保存输出文件,NNI SDK会从 Trial 的容器中将 `NNI_OUTPUT_DIR` 中的文件复制到 HDFS 中。
如果在使用 pai 模式时遇到任何问题,请到 [NNI Github](https://github.com/Microsoft/nni) 中创建问题。
\ No newline at end of file
如果在使用 pai 模式时遇到任何问题,请到 [NNI Github](https://github.com/Microsoft/nni) 中创建问题。
## 版本校验
从 0.6 开始,NNI 支持版本校验。确保 NNIManager 与 trialKeeper 的版本一致,避免兼容性错误。
检查策略:
1. 0.6 以前的 NNIManager 可与任何版本的 trialKeeper 一起运行,trialKeeper 支持向后兼容。
2. 从 NNIManager 0.6 开始,与 triakKeeper 的版本必须一致。 例如,如果 NNIManager 是 0.6 版,则 trialKeeper 也必须是 0.6 版。
3. 注意,只有版本的前两位数字才会被检查。例如,NNIManager 0.6.1 可以和 trialKeeper 的 0.6 或 0.6.2 一起使用,但不能与 trialKeeper 的 0.5.1 或 0.7 版本一起使用。
如果 Experiment 无法运行,而且不能确认是否是因为版本不匹配造成的,可以在 Web 界面检查是否有相关的错误消息。
![](../img/version_check.png)
\ No newline at end of file
......@@ -62,4 +62,8 @@ machineList:
nnictl create --config ~/nni/examples/trials/mnist-annotation/config_remote.yml
```
来启动 Experiment。
\ No newline at end of file
来启动 Experiment。
## 版本校验
从 0.6 开始,NNI 支持版本校验,详情参考[这里](PAIMode.md)
\ No newline at end of file
......@@ -4,7 +4,7 @@
## 1. 搜索空间
对于阅读理解项目,注意力和循环神经网络(RNN)已经被证明非常有效。 使用的搜索空间如下:
阅读理解领域,注意力(Attention)和循环神经网络都已被证明非常有效的方法,因此搜索空间定义如下:
1. IDENTITY (Effectively 表示继续训练)。
2. INSERT-RNN-LAYER (插入 LSTM。 在 Experiment 中比较了 GRU 和 LSTM 的性能后,我们决定在这里采用 LSTM。)
......
......@@ -130,6 +130,34 @@ Annotation 的语法和用法等,参考 [Annotation](AnnotationSpec.md)。
useAnnotation: true
## Trial 存放在什么地方?
### 本机模式
每个 Trial 都有单独的目录来输出自己的数据。 在每次 Trial 运行后,环境变量 `NNI_OUTPUT_DIR` 定义的目录都会被导出。 在这个目录中可以看到 Trial 的代码、数据和日志。 此外,Trial 的日志(包括 stdout)还会被重定向到此目录中的 `trial.log` 文件。
如果使用了 Annotation 方法,转换后的 Trial 代码会存放在另一个临时目录中。 可以在 `run.sh` 文件中的 `NNI_OUTPUT_DIR` 变量找到此目录。 文件中的第二行(即:`cd`)会切换到代码所在的实际路径。 参考 `run.sh` 文件样例:
```shell
#!/bin/bash
cd /tmp/user_name/nni/annotation/tmpzj0h72x6 #This is the actual directory
export NNI_PLATFORM=local
export NNI_SYS_DIR=/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$
export NNI_TRIAL_JOB_ID=nrbb2
export NNI_OUTPUT_DIR=/home/user_name/nni/experiments/$eperiment_id$/trials/$trial_id$
export NNI_TRIAL_SEQ_ID=1
export MULTI_PHASE=false
export CUDA_VISIBLE_DEVICES=
eval python3 mnist.py 2>/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$/stderr
echo $? `date +%s000` >/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$/.nni/state
```
### 其它模式
当 Trial 运行在 OpenPAI 这样的远程服务器上时,`NNI_OUTPUT_DIR` 仅会指向 Trial 的输出目录,而 `run.sh` 不会在此目录中。 `trial.log` 文件会被复制回本机的 Trial 目录中。目录的默认位置在 `~/nni/experiments/$experiment_id$/trials/$trial_id$/`
详细信息,可参考[调试指南](HowToDebug.md)
<a name="more-examples"></a>
## 更多 Trial 的样例
......
......@@ -12,4 +12,5 @@
Web 界面<WebUI>
训练平台<training_services>
如何使用 Docker <HowToUseDocker>
高级功能<advanced>
\ No newline at end of file
高级功能<advanced>
如何调试<HowToDebug>
\ No newline at end of file
......@@ -34,6 +34,16 @@
![](../img/trial_duration.png)
## 查看 Trial 中间结果
单击 "Intermediate Result" 标签查看折线图。
![](../img/webui-img/trials_intermeidate.png)
该图有筛选功能。 点击筛选按钮, 在第一个输入框中输入关注点的序号, 在第二个输入框中输入中间结果的范围,选出需要的数据。
![](../img/webui-img/filter_intermediate.png)
## 查看 Trial 状态
点击 "Trials Detail" 标签查看所有 Trial 的状态。 特别是:
......
......@@ -52,6 +52,52 @@ net = build_graph_from_json(RCV_CONFIG)
nni.report_final_result(best_acc)
```
如果需要保存并**读取最佳模型**,推荐采用以下方法。
```python
# 1. 使用 NNI API
## 从 Web 界面获取最佳模型的 ID
## 或查看 `nni/experiments/experiment_id/log/model_path/best_model.txt' 文件
## 从 JSON 文件中读取,并使用 NNI API 来加载
with open("best-model.json") as json_file:
json_of_model = json_file.read()
model = build_graph_from_json(json_of_model)
# 2. 使用框架的 API (与具体框架相关)
## 2.1 Keras API
## 在 Trial 代码中使用 Keras API 保存
## 最好保存 NNI 的 ID
model_id = nni.get_sequence_id()
## 将模型序列化为 JSON
model_json = model.to_json()
with open("model-{}.json".format(model_id), "w") as json_file:
json_file.write(model_json)
## 将权重序列化至 HDF5
model.save_weights("model-{}.h5".format(model_id))
## 重用模型时,使用 Keras API 读取
## 读取 JSON 文件,并创建模型
model_id = "" # 需要重用的模型 ID
with open('model-{}.json'.format(model_id), 'r') as json_file:
loaded_model_json = json_file.read()
loaded_model = model_from_json(loaded_model_json)
## 将权重加载到新模型中
loaded_model.load_weights("model-{}.h5".format(model_id))
## 2.2 PyTorch API
## 在 Trial 代码中使用 PyTorch API 保存
model_id = nni.get_sequence_id()
torch.save(model, "model-{}.pt".format(model_id))
## 重用模型时,使用 PyTorch API 读取
model_id = "" # 需要重用的模型 ID
loaded_model = torch.load("model-{}.pt".format(model_id))
```
## 3. 文件结构
Tuner 有大量的文件、函数和类。 这里只简单介绍最重要的文件:
......@@ -77,7 +123,7 @@ Tuner 有大量的文件、函数和类。 这里只简单介绍最重要的文
## 4. 网络表示的 JSON 样例
这是样例定义的中间表示 JSON 文件,它会在架构搜索过程中从 Tuner 传到 Trial。 可调用 "json\_to\_graph()" 函数来将 JSON 文件转化为 Pytoch 或 Keras 模型。 样例如下。
这是定义的中间表示 JSON 样例,在架构搜索过程中从 Tuner 传到 Trial。 可调用 "json\_to\_graph()" 函数来将 JSON 文件转化为 Pytoch 或 Keras 模型。 样例如下。
```json
{
......
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