Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
nni
Commits
b8b49a34
Unverified
Commit
b8b49a34
authored
Jun 27, 2019
by
Chi Song
Committed by
GitHub
Jun 27, 2019
Browse files
Chinese Translation (#1198)
parent
4d3ad73d
Changes
40
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
207 additions
and
486 deletions
+207
-486
docs/zh_CN/NniOnWindows.md
docs/zh_CN/NniOnWindows.md
+1
-15
docs/zh_CN/Nnictl.md
docs/zh_CN/Nnictl.md
+56
-12
docs/zh_CN/PaiMode.md
docs/zh_CN/PaiMode.md
+5
-7
docs/zh_CN/QuickStart.md
docs/zh_CN/QuickStart.md
+5
-13
docs/zh_CN/Release.md
docs/zh_CN/Release.md
+90
-90
docs/zh_CN/SearchSpaceSpec.md
docs/zh_CN/SearchSpaceSpec.md
+1
-0
docs/zh_CN/SklearnExamples.md
docs/zh_CN/SklearnExamples.md
+24
-13
docs/zh_CN/Trials.md
docs/zh_CN/Trials.md
+8
-6
docs/zh_CN/WebUI.md
docs/zh_CN/WebUI.md
+7
-2
docs/zh_CN/advanced.rst
docs/zh_CN/advanced.rst
+1
-1
docs/zh_CN/metisTuner.md
docs/zh_CN/metisTuner.md
+0
-19
docs/zh_CN/multiPhase.md
docs/zh_CN/multiPhase.md
+0
-46
docs/zh_CN/networkmorphismTuner.md
docs/zh_CN/networkmorphismTuner.md
+0
-245
docs/zh_CN/reference.rst
docs/zh_CN/reference.rst
+2
-2
examples/trials/NAS/README_zh_CN.md
examples/trials/NAS/README_zh_CN.md
+0
-8
examples/trials/README_zh_CN.md
examples/trials/README_zh_CN.md
+2
-2
examples/trials/kaggle-tgs-salt/README_zh_CN.md
examples/trials/kaggle-tgs-salt/README_zh_CN.md
+2
-2
examples/trials/network_morphism/README_zh_CN.md
examples/trials/network_morphism/README_zh_CN.md
+1
-1
examples/tuners/ga_customer_tuner/README_zh_CN.md
examples/tuners/ga_customer_tuner/README_zh_CN.md
+1
-1
examples/tuners/weight_sharing/ga_customer_tuner/README_zh_CN.md
...s/tuners/weight_sharing/ga_customer_tuner/README_zh_CN.md
+1
-1
No files found.
docs/zh_CN/NniOnWindows.md
View file @
b8b49a34
...
@@ -22,16 +22,6 @@ nnictl create --config nni\examples\trials\mnist\config_windows.yml
...
@@ -22,16 +22,6 @@ nnictl create --config nni\examples\trials\mnist\config_windows.yml
> building 'simplejson._speedups' extension error: [WinError 3] The system cannot find the path specified
> building 'simplejson._speedups' extension error: [WinError 3] The system cannot find the path specified
### 从源代码安装 NNI 时,遇到 PowerShell 错误
如果第一次运行 PowerShell 脚本,且没有设置过执行脚本的策略,会遇到下列错误。 需要以管理员身份运行此命令:
```
bash
Set-ExecutionPolicy
-ExecutionPolicy
Unrestricted
```
> ...cannot be loaded because running scripts is disabled on this system.
### 在命令行或 PowerShell 中,Trial 因为缺少 DLL 而失败
### 在命令行或 PowerShell 中,Trial 因为缺少 DLL 而失败
此错误因为缺少 LIBIFCOREMD.DLL 和 LIBMMD.DLL 文件,且 SciPy 安装失败。 使用 Anaconda 或 Miniconda 和 Python(64位)可解决。
此错误因为缺少 LIBIFCOREMD.DLL 和 LIBMMD.DLL 文件,且 SciPy 安装失败。 使用 Anaconda 或 Miniconda 和 Python(64位)可解决。
...
@@ -40,11 +30,7 @@ Set-ExecutionPolicy -ExecutionPolicy Unrestricted
...
@@ -40,11 +30,7 @@ Set-ExecutionPolicy -ExecutionPolicy Unrestricted
### Web 界面上的 Trial 错误
### Web 界面上的 Trial 错误
检查 Trial 日志文件来了解详情。 如果没有日志文件,且 NNI 是通过 pip 安装的,则需要在管理员权限下先运行以下命令:
检查 Trial 日志文件来了解详情。
```
bash
Set-ExecutionPolicy
-ExecutionPolicy
Unrestricted
```
如果存在 stderr 文件,也需要查看其内容。 可能的错误情况包括:
如果存在 stderr 文件,也需要查看其内容。 可能的错误情况包括:
...
...
docs/zh_CN/Nnictl.md
View file @
b8b49a34
...
@@ -15,6 +15,7 @@ nnictl 支持的命令:
...
@@ -15,6 +15,7 @@ nnictl 支持的命令:
*
[
nnictl trial
](
#trial
)
*
[
nnictl trial
](
#trial
)
*
[
nnictl top
](
#top
)
*
[
nnictl top
](
#top
)
*
[
nnictl experiment
](
#experiment
)
*
[
nnictl experiment
](
#experiment
)
*
[
nnictl platform
](
#platform
)
*
[
nnictl config
](
#config
)
*
[
nnictl config
](
#config
)
*
[
nnictl log
](
#log
)
*
[
nnictl log
](
#log
)
*
[
nnictl webui
](
#webui
)
*
[
nnictl webui
](
#webui
)
...
@@ -376,6 +377,24 @@ nnictl 支持的命令:
...
@@ -376,6 +377,24 @@ nnictl 支持的命令:
nnictl experiment list
nnictl experiment list
```
```
*
**nnictl experiment delete**
*
说明
删除一个或所有 Experiment,包括日志、结果、环境信息和缓存。 用于删除无用的 Experiment 结果,或节省磁盘空间。
*
用法
```
bash
nnictl experiment delete
[
OPTIONS]
```
*
选项
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| ----- | ----- | --- | ------------- |
| id | False | | Experiment ID |
<a
name=
"export"
></a>
<a
name=
"export"
></a>
*
**nnictl experiment export**
*
**nnictl experiment export**
...
@@ -464,6 +483,31 @@ nnictl 支持的命令:
...
@@ -464,6 +483,31 @@ nnictl 支持的命令:
nnictl experiment import
[
experiment_id]
-f
experiment_data.json
nnictl experiment import
[
experiment_id]
-f
experiment_data.json
```
```
<a
name=
"platform"
></a>

`管理平台的信息`
*
**nnictl platform clean**
*
说明
用于清理目标平台上的磁盘空间。 所提供的 YAML 文件包括了目标平台的信息,与 NNI 配置文件的格式相同。
*
注意
如果目标平台正在被别人使用,可能会造成他人的意外错误。
*
用法
```
bash
nnictl platform clean
[
OPTIONS]
```
*
选项
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| -------- | ---- | --- | ----------------------------- |
| --config | True | | 创建 Experiment 时的 YAML 配置文件路径。 |
<a
name=
"config"
></a>
<a
name=
"config"
></a>

`nnictl config show`

`nnictl config show`
...
@@ -497,12 +541,12 @@ nnictl 支持的命令:
...
@@ -497,12 +541,12 @@ nnictl 支持的命令:
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| ---------- | ----- | --- | --------------------- |
| ---------- | ----- | --- | --------------------- |
| id | False | | 需要设置的 Experiment 的
id
|
| id | False | | 需要设置的 Experiment 的
ID
|
| --head, -h | False | | 显示 stdout 开始的若干行 |
| --head, -h | False | | 显示 stdout 开始的若干行 |
| --tail, -t | False | | 显示 stdout 结尾的若干行 |
| --tail, -t | False | | 显示 stdout 结尾的若干行 |
| --path, -p | False | | 显示 stdout 文件的路径 |
| --path, -p | False | | 显示 stdout 文件的路径 |
*
样
例
*
示
例
> 显示 stdout 结尾的若干行
> 显示 stdout 结尾的若干行
...
@@ -526,7 +570,7 @@ nnictl 支持的命令:
...
@@ -526,7 +570,7 @@ nnictl 支持的命令:
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| ---------- | ----- | --- | --------------------- |
| ---------- | ----- | --- | --------------------- |
| id | False | | 需要设置的 Experiment 的
id
|
| id | False | | 需要设置的 Experiment 的
ID
|
| --head, -h | False | | 显示 stderr 开始的若干行 |
| --head, -h | False | | 显示 stderr 开始的若干行 |
| --tail, -t | False | | 显示 stderr 结尾的若干行 |
| --tail, -t | False | | 显示 stderr 结尾的若干行 |
| --path, -p | False | | 显示 stderr 文件的路径 |
| --path, -p | False | | 显示 stderr 文件的路径 |
...
@@ -574,23 +618,23 @@ nnictl 支持的命令:
...
@@ -574,23 +618,23 @@ nnictl 支持的命令:
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| -------------- | ----- | ---- | --------------------- |
| -------------- | ----- | ---- | --------------------- |
| id | False | | 需要设置的 Experiment 的
ID
|
| id | False | | 需要设置的 Experiment 的
id
|
| --trial_id, -T | False | | Trial 的 id |
| --trial_id, -T | False | | Trial 的 id |
| --port | False | 6006 | Tensorboard 进程的端口 |
| --port | False | 6006 | Tensorboard 进程的端口 |
*
详细说明
*
详细说明
1.
NNICTL 当前仅支持本机和远程平台的
t
ensorboard,其它平台暂不支持。
1.
NNICTL 当前仅支持本机和远程平台的
T
ensorboard,其它平台暂不支持。
2.
如果要使用
t
ensorboard,需要将
t
ensorboard 日志输出到环境变量 [NNI_OUTPUT_DIR] 路径下。
2.
如果要使用
T
ensorboard,需要将
T
ensorboard 日志输出到环境变量 [NNI_OUTPUT_DIR] 路径下。
3.
在 local 模式中,nnictl 会直接设置 --logdir=[NNI_OUTPUT_DIR] 并启动
t
ensorboard 进程。
3.
在 local 模式中,nnictl 会直接设置 --logdir=[NNI_OUTPUT_DIR] 并启动
T
ensorboard 进程。
4.
在 remote 模式中,nnictl 会创建一个
ssh
客户端来将日志数据从远程计算机复制到本机临时目录中,然后在本机开始
t
ensorboard 进程。 需要注意的是,nnictl 只在使用此命令时复制日志数据,如果要查看最新的 tensorboard 结果,需要再次执行 nnictl tensorboard 命令。
4.
在 remote 模式中,nnictl 会创建一个
SSH
客户端来将日志数据从远程计算机复制到本机临时目录中,然后在本机开始
T
ensorboard 进程。 需要注意的是,nnictl 只在使用此命令时复制日志数据,如果要查看最新的 tensorboard 结果,需要再次执行 nnictl tensorboard 命令。
5.
如果只有一个 Trial 任务,不需要设置 Trial ID。 如果有多个运行的 Trial
作业
,需要设置 Trial ID,或使用 [nnictl tensorboard start --trial_id all] 来将 --logdir 映射到所有 Trial 的路径。
5.
如果只有一个 Trial 任务,不需要设置 Trial ID。 如果有多个运行的 Trial
任务
,需要设置 Trial ID,或使用 [nnictl tensorboard start --trial_id all] 来将 --logdir 映射到所有 Trial 的路径。
*
**nnictl tensorboard stop**
*
**nnictl tensorboard stop**
*
说明
*
说明
停止所有
t
ensorboard 进程。
停止所有
T
ensorboard 进程。
*
用法
*
用法
...
@@ -602,7 +646,7 @@ nnictl 支持的命令:
...
@@ -602,7 +646,7 @@ nnictl 支持的命令:
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| 参数及缩写 | 是否必需 | 默认值 | 说明 |
| ----- | ----- | --- | --------------------- |
| ----- | ----- | --- | --------------------- |
| id | False | | 需要设置的 Experiment 的
id
|
| id | False | | 需要设置的 Experiment 的
ID
|
<a
name=
"package"
></a>
<a
name=
"package"
></a>
...
@@ -626,7 +670,7 @@ nnictl 支持的命令:
...
@@ -626,7 +670,7 @@ nnictl 支持的命令:
| ------ | ---- | --- | ------- |
| ------ | ---- | --- | ------- |
| --name | True | | 要安装的包名称 |
| --name | True | | 要安装的包名称 |
*
样
例
*
示
例
> 安装 SMAC Tuner 所需要的包
> 安装 SMAC Tuner 所需要的包
...
...
docs/zh_CN/PaiMode.md
View file @
b8b49a34
...
@@ -86,12 +86,10 @@ paiConfig:
...
@@ -86,12 +86,10 @@ paiConfig:
## 版本校验
## 版本校验
从 0.6 开始,NNI 支持版本校验。确保 NNIManager 与 trialKeeper 的版本一致,避免兼容性错误。
从 0.6 开始,NNI 支持版本校验。确保 NNIManager 与 trialKeeper 的版本一致,避免兼容性错误。 检查策略:
检查策略:
1.
0.6 以前的 NNIManager 可与任何版本的 trialKeeper 一起运行,trialKeeper 支持向后兼容。
1.
0.6 以前的 NNIManager 可与任何版本的 trialKeeper 一起运行,trialKeeper 支持向后兼容。
2.
从 NNIManager 0.6 开始,与 triakKeeper 的版本必须一致。 例如,如果 NNIManager 是 0.6 版,则 trialKeeper 也必须是 0.6 版。
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 版本一起使用。
3.
注意,只有版本的前两位数字才会被检查。例如,NNIManager 0.6.1 可以和 trialKeeper 的 0.6 或 0.6.2 一起使用,但不能与 trialKeeper 的 0.5.1 或 0.7 版本一起使用。
如果 Experiment 无法运行,而且不能确认是否是因为版本不匹配造成的,可以在 Web 界面检查是否有相关的错误消息。
如果 Experiment 无法运行,而且不能确认是否是因为版本不匹配造成的,可以在 Web 界面检查是否有相关的错误消息。 !
[](
../img/version_check.png
)

\ No newline at end of file
\ No newline at end of file
docs/zh_CN/QuickStart.md
View file @
b8b49a34
...
@@ -12,14 +12,6 @@
...
@@ -12,14 +12,6 @@
#### Windows
#### Windows
如果在 Windows 上使用 NNI,首次使用 PowerShell 时,需要以管理员身份运行下列命令。
```
bash
Set-ExecutionPolicy
-ExecutionPolicy
Unrestricted
```
然后通过 pip 安装 NNI:
```
bash
```
bash
python
-m
pip
install
--upgrade
nni
python
-m
pip
install
--upgrade
nni
```
```
...
@@ -34,7 +26,7 @@
...
@@ -34,7 +26,7 @@
NNI 是一个能进行自动机器学习实验的工具包。 它可以自动进行获取超参、运行 Trial,测试结果,调优超参的循环。 下面会展示如何使用 NNI 来找到最佳超参组合。
NNI 是一个能进行自动机器学习实验的工具包。 它可以自动进行获取超参、运行 Trial,测试结果,调优超参的循环。 下面会展示如何使用 NNI 来找到最佳超参组合。
这是
**没有 NNI**
的样例代码,用 CNN 在 MNIST 数据集上训练:
这是
还
**没有 NNI**
的样例代码,用 CNN 在 MNIST 数据集上训练:
```
python
```
python
def
run_trial
(
params
):
def
run_trial
(
params
):
...
@@ -64,7 +56,7 @@ NNI 用来帮助超参调优。它的流程如下:
...
@@ -64,7 +56,7 @@ NNI 用来帮助超参调优。它的流程如下:
```
pseudo
```
pseudo
输入: 搜索空间, Trial 代码, 配置文件
输入: 搜索空间, Trial 代码, 配置文件
输出: 一组最
优的参数
配置
输出: 一组最
佳的超参
配置
1: For t = 0, 1, 2, ..., maxTrialNum,
1: For t = 0, 1, 2, ..., maxTrialNum,
2: hyperparameter = 从搜索空间选择一组参数
2: hyperparameter = 从搜索空间选择一组参数
...
@@ -72,7 +64,7 @@ NNI 用来帮助超参调优。它的流程如下:
...
@@ -72,7 +64,7 @@ NNI 用来帮助超参调优。它的流程如下:
4: 返回最终结果给 NNI
4: 返回最终结果给 NNI
5: If 时间达到上限,
5: If 时间达到上限,
6: 停止实验
6: 停止实验
7:
返回
最好的实验结果
7:
return
最好的实验结果
```
```
如果需要使用 NNI 来自动训练模型,找到最佳超参,需要如下三步:
如果需要使用 NNI 来自动训练模型,找到最佳超参,需要如下三步:
...
@@ -205,7 +197,7 @@ You can use these commands to get more information about the experiment
...
@@ -205,7 +197,7 @@ You can use these commands to get more information about the experiment
启动 Experiment 后,可以在命令行界面找到如下的
`Web 界面地址`
:
启动 Experiment 后,可以在命令行界面找到如下的
`Web 界面地址`
:
```
text
```
text
The Web UI urls are:
[IP 地址]:8080
Web 地址为:
[IP 地址]:8080
```
```
在浏览器中打开
`Web 界面地址`
(即:
`[IP 地址]:8080`
),就可以看到 Experiment 的详细信息,以及所有的 Trial 任务。 如果无法打开终端中的 Web 界面链接,可以参考
[
FAQ
](
FAQ.md
)
。
在浏览器中打开
`Web 界面地址`
(即:
`[IP 地址]:8080`
),就可以看到 Experiment 的详细信息,以及所有的 Trial 任务。 如果无法打开终端中的 Web 界面链接,可以参考
[
FAQ
](
FAQ.md
)
。
...
...
docs/zh_CN/Release.md
View file @
b8b49a34
# 更改日志
# 更改日志
# 发布 0.8 - 6/4/2019
#
# 发布 0.8 - 6/4/2019
## 主要功能
##
#
主要功能
*
在 Windows 上支持 NNI 的 OpenPAI 和远程模式
*
在 Windows 上支持 NNI 的 OpenPAI 和远程模式
*
NNI 可在 Windows 上使用 OpenPAI 模式
*
NNI 可在 Windows 上使用 OpenPAI 模式
...
@@ -17,13 +17,13 @@
...
@@ -17,13 +17,13 @@
*
提供新命令
`nnictl trial codegen`
来调试 NAS 代码生成部分
*
提供新命令
`nnictl trial codegen`
来调试 NAS 代码生成部分
*
提供 NAS 编程接口教程,NAS 在 MNIST 上的示例,用于 NAS 的可定制的随机 Tuner
*
提供 NAS 编程接口教程,NAS 在 MNIST 上的示例,用于 NAS 的可定制的随机 Tuner
*
支持在恢复 Experiment 时,同时恢复 Tuner 和 Advisor 的状态
*
支持在恢复 Experiment 时,同时恢复 Tuner 和 Advisor 的状态
*
在恢复 Experiment 时,Tuner 和 Advisor 会导入已完成的 Trial 的数据。
*
在恢复 Experiment 时,Tuner 和 Advisor 会导入已完成的 Trial 的数据。
*
Web 界面
*
Web 界面
*
改进拷贝 Trial 参数的设计
*
改进拷贝 Trial 参数的设计
*
在 hyper-parameter 图中支持 'randint' 类型
*
在 hyper-parameter 图中支持 'randint' 类型
*
使用 ComponentUpdate 来避免不必要的刷新
*
使用 ComponentUpdate 来避免不必要的刷新
## Bug 修复和其它更新
##
#
Bug 修复和其它更新
*
修复
`nnictl update`
不一致的命令行风格
*
修复
`nnictl update`
不一致的命令行风格
*
SMAC Tuner 支持导入数据
*
SMAC Tuner 支持导入数据
...
@@ -66,7 +66,7 @@
...
@@ -66,7 +66,7 @@
### 主要功能
### 主要功能
*
[
版本检查
](
https://github.com/Microsoft/nni/blob/master/docs/
en_US
/PaiMode.md#version-check
)
*
[
版本检查
](
https://github.com/Microsoft/nni/blob/master/docs/
zh_CN
/PaiMode.md#version-check
)
*
检查 nniManager 和 trialKeeper 的版本是否一致
*
检查 nniManager 和 trialKeeper 的版本是否一致
*
[
提前终止的任务也可返回最终指标
](
https://github.com/Microsoft/nni/issues/776
)
*
[
提前终止的任务也可返回最终指标
](
https://github.com/Microsoft/nni/issues/776
)
*
如果 includeIntermediateResults 为 true,最后一个 Assessor 的中间结果会被发送给 Tuner 作为最终结果。 includeIntermediateResults 的默认值为 false。
*
如果 includeIntermediateResults 为 true,最后一个 Assessor 的中间结果会被发送给 Tuner 作为最终结果。 includeIntermediateResults 的默认值为 false。
...
@@ -175,7 +175,7 @@
...
@@ -175,7 +175,7 @@
*
为指标数值图提供自动缩放的数轴
*
为指标数值图提供自动缩放的数轴
*
改进 Annotation,支持在搜索空间中显示实际的选项
*
改进 Annotation,支持在搜索空间中显示实际的选项
### 新
样
例
### 新
示
例
*
[
FashionMnist
](
https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism
)
,使用 network morphism Tuner
*
[
FashionMnist
](
https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism
)
,使用 network morphism Tuner
*
使用 PyTorch 的
[
分布式 MNIST 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch
)
*
使用 PyTorch 的
[
分布式 MNIST 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch
)
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
*
**Batch Tuner(批处理调参器)**
会执行所有超参组合,可被用来批量提交 Trial 任务。
*
**Batch Tuner(批处理调参器)**
会执行所有超参组合,可被用来批量提交 Trial 任务。
### 新
样
例
### 新
示
例
*
公开的 NNI Docker 映像:
*
公开的 NNI Docker 映像:
...
...
docs/zh_CN/SearchSpaceSpec.md
View file @
b8b49a34
...
@@ -91,6 +91,7 @@
...
@@ -91,6 +91,7 @@
| Grid Search Tuner |
✓
| | |
✓
| |
✓
| | | | |
| Grid Search Tuner |
✓
| | |
✓
| |
✓
| | | | |
| Hyperband Advisor |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
| Hyperband Advisor |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
✓
|
| Metis Tuner |
✓
|
✓
|
✓
|
✓
| | | | | | |
| Metis Tuner |
✓
|
✓
|
✓
|
✓
| | | | | | |
| GP Tuner |
✓
|
✓
|
✓
|
✓
|
✓
|
✓
| | | | |
已知的局限:
已知的局限:
...
...
docs/zh_CN/SklearnExamples.md
View file @
b8b49a34
# NNI 中使用 scikit-learn
# NNI 中使用 scikit-learn
[
scikit-learn
](
https://github.com/scikit-learn/scikit-learn
)
(
sklearn
)
是数据挖掘和分析的流行工具。 它支持多种机器学习模型,如线性回归,逻辑回归,决策树,支持向量机等。 提高 scikit-learn 的效率是非常有价值的课题。
[
scikit-learn
](
https://github.com/scikit-learn/scikit-learn
)
(
sklearn
)
是流行的数据挖掘和分析工具。 它支持多种机器学习模型,如线性回归,逻辑回归,决策树,支持向量机等。 如何更高效的使用 scikit-learn,是一个很有价值的话题。
NNI 支持多种调优算法,可以为 scikit-learn 搜索最佳的模型和超参,并支持本机、远程服务器组、云等各种环境。
NNI 支持多种调优算法来为 scikit-learn 搜索最好的模型和超参,并支持本机、远程服务器和云服务等多种环境。
## 1. 如何运行此样例
## 1. 如何运行此样例
安装 NNI 包,并使用命令行工具
`nnictl`
来启动 Experiment。 有关安装和环境准备的内容,参考
[
这里
](
QuickStart.md
)
。 安装完 NNI 后,进入相应的目录,输入下列命令即可启动 Experiment:
安装 NNI 包,并使用命令行工具
`nnictl`
来启动 Experiment。 有关安装和环境准备的内容,参考
[
这里
](
QuickStart.md
)
。
安装完 NNI 后,进入相应的目录,输入下列命令即可启动 Experiment:
```
bash
```
bash
nnictl create
--config
./config.yml
nnictl create
--config
./config.yml
...
@@ -15,16 +18,19 @@ nnictl create --config ./config.yml
...
@@ -15,16 +18,19 @@ nnictl create --config ./config.yml
### 2.1 分类
### 2.1 分类
此样例使用了数字数据集,由 1797 张 8x8 的图片组成,每张图片都是一个手写数字。目标是将这些图片分到 10 个类别中。
示例使用了数字数据集,它是由 1797 个 8x8 的图片组成,每个图片都是一个手写数字,目标是将图片分为 10 类。
在此样例中,使用了 SVC 作为模型,并选择了一些参数,包括
`"C", "keral", "degree", "gamma" 和 "coef0"`
。 关于这些参数的更多信息,可参考
[
这里
](
https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
)
。
在这个示例中,使用 SVC 作为模型,并为此模型选择一些参数,包括
`"C", "keral", "degree", "gamma" 和 "coef0"`
。 关于这些参数的更多信息,可参考
[
这里
](
https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
)
。
### 2.2 回归
### 2.2 回归
此样例使用了波士顿房价数据,数据集由波士顿各地区房价所组成,还包括了房屋的周边信息,例如:犯罪率 (CRIM),非零售业务的面积 (INDUS),房主年龄 (AGE) 等等。这些信息可用来预测波士顿的房价。 本例中,尝试了不同的回归模型,包括
`"LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"`
和一些参数,如
`"svr_kernel", "knr_weights"`
。 关于这些模型算法和参数的更多信息,可参考
[
这里
](
https://scikit-learn.org/stable/supervised_learning.html#supervised-learning
)
。
此样例使用了波士顿房价数据,数据集由波士顿各地区房价所组成,还包括了房屋的周边信息,例如:犯罪率 (CRIM),非零售业务的面积 (INDUS),房主年龄 (AGE) 等等。这些信息可用来预测波士顿的房价。
本例中,尝试了不同的回归模型,包括
`"LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"`
和一些参数,如
`"svr_kernel", "knr_weights"`
。 关于这些模型算法和参数的更多信息,可参考
[
这里
](
https://scikit-learn.org/stable/supervised_learning.html#supervised-learning
)
。
## 3. 如何在 NNI 中使用 s
k
learn
## 3. 如何在 NNI 中使用 s
cikit-
learn
只需要如下几步,即可在 s
k
learn 代码中使用 NNI。
只需要如下几步,即可在 s
cikit-
learn 代码中使用 NNI。
*
**第一步**
*
**第一步**
...
@@ -49,7 +55,10 @@ nnictl create --config ./config.yml
...
@@ -49,7 +55,10 @@ nnictl create --config ./config.yml
在 Python 代码中,可以将这些值作为一个 dict,读取到 Python 代码中。
在 Python 代码中,可以将这些值作为一个 dict,读取到 Python 代码中。
*
**第二步**
*
**第二步**
在代码最前面,加上
`import nni`
来导入 NNI 包。 首先,要使用
`nni.get_next_parameter()`
函数从 NNI 中获取参数。 然后在代码中使用这些参数。 例如,如果定义了如下的 search_space.json:
在代码最前面,加上
`import nni`
来导入 NNI 包。
首先,要使用
`nni.get_next_parameter()`
函数从 NNI 中获取参数。 然后在代码中使用这些参数。 例如,如果定义了如下的 search_space.json:
```
json
```
json
{
{
...
@@ -76,5 +85,7 @@ nnictl create --config ./config.yml
...
@@ -76,5 +85,7 @@ nnictl create --config ./config.yml
就可以使用这些变量来编写 scikit-learn 的代码。
就可以使用这些变量来编写 scikit-learn 的代码。
*
**第三步**
*
**第三步**
完成训练后,可以得到模型分数,如:精度,召回率,均方差等等。 NNI 会将分数发送给 Tuner 算法,并据此生成下一组参数,所以需要将分数返回给 NNI。NNI 会开始下一个 Trial 任务。
只需要在训练结束后调用
`nni.report_final_result(score)`
,就可以将分数传给 NNI。 如果训练过程中有中间分数,也可以使用
`nni.report_intemediate_result(score)`
返回给 NNI。 注意, 可以不返回中间分数,但必须返回最终的分数。
完成训练后,可以得到模型分数,如:精度,召回率,均方差等等。 NNI 需要将分数传入 Tuner 算法,并生成下一组参数,将结果回传给 NNI,并开始下一个 Trial 任务。
\ No newline at end of file
在运行完 scikit-learn 代码后,只需要使用
`nni.report_final_result(score)`
来与 NNI 通信即可。 或者在每一步中都有多个分值,可使用
`nni.report_intemediate_result(score)`
来将它们回传给 NNI。 注意, 可以不返回中间分数,但必须返回最终的分数。
\ No newline at end of file
docs/zh_CN/Trials.md
View file @
b8b49a34
...
@@ -35,7 +35,9 @@
...
@@ -35,7 +35,9 @@
RECEIVED_PARAMS
=
nni
.
get_next_parameter
()
RECEIVED_PARAMS
=
nni
.
get_next_parameter
()
```
```
`RECEIVED_PARAMS`
是一个对象,如:
`{"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029}`
.
`RECEIVED_PARAMS`
是一个对象,如:
`{"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029}`
.
*
定期返回指标数据(可选)
*
定期返回指标数据(可选)
...
@@ -138,7 +140,7 @@ Annotation 的语法和用法等,参考 [Annotation](AnnotationSpec.md)。
...
@@ -138,7 +140,7 @@ Annotation 的语法和用法等,参考 [Annotation](AnnotationSpec.md)。
如果使用了 Annotation 方法,转换后的 Trial 代码会存放在另一个临时目录中。 可以在
`run.sh`
文件中的
`NNI_OUTPUT_DIR`
变量找到此目录。 文件中的第二行(即:
`cd`
)会切换到代码所在的实际路径。 参考
`run.sh`
文件样例:
如果使用了 Annotation 方法,转换后的 Trial 代码会存放在另一个临时目录中。 可以在
`run.sh`
文件中的
`NNI_OUTPUT_DIR`
变量找到此目录。 文件中的第二行(即:
`cd`
)会切换到代码所在的实际路径。 参考
`run.sh`
文件样例:
```
sh
ell
```
ba
sh
#!/bin/bash
#!/bin/bash
cd
/tmp/user_name/nni/annotation/tmpzj0h72x6
#This is the actual directory
cd
/tmp/user_name/nni/annotation/tmpzj0h72x6
#This is the actual directory
export
NNI_PLATFORM
=
local
export
NNI_PLATFORM
=
local
...
...
docs/zh_CN/WebUI.md
View file @
b8b49a34
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
*
支持下载 Experiment 结果。
*
支持下载 Experiment 结果。
*
支持导出 nni-manager 和 dispatcher 的日志文件。
*
支持导出 nni-manager 和 dispatcher 的日志文件。
*
如果有任何问题,可以点击 “Feedback” 告诉我们。
*
如果有任何问题,可以点击 “Feedback” 告诉我们。
*
如果 Experiment 包含了超过 1000 个 Trial,可改变刷新间隔。


...
@@ -58,6 +59,10 @@
...
@@ -58,6 +59,10 @@


*
如果要比较某些 Trial,可选择并点击 "Compare" 来查看结果。

*
可使用 "Copy as python" 按钮来拷贝 Trial 的参数。
*
可使用 "Copy as python" 按钮来拷贝 Trial 的参数。


...
@@ -68,6 +73,6 @@
...
@@ -68,6 +73,6 @@
*
Kill: 可终止正在运行的任务。
*
Kill: 可终止正在运行的任务。
*
支持搜索某个特定的 Trial。
*
支持搜索某个特定的 Trial。
*
中间结果图
。
*
Intermediate Result Graph: 可看到图中默认和其它的键值
。


\ No newline at end of file
\ No newline at end of file
docs/zh_CN/advanced.rst
View file @
b8b49a34
docs/zh_CN/metisTuner.md
deleted
100644 → 0
View file @
4d3ad73d
# Metis Tuner
## Metis Tuner
大多数调参工具仅仅预测最优配置,而
[
Metis
](
https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/
)
的优势在于有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 Trial 的建议。 不再需要随机猜测!
大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。
大多数工具都有着重于在已有结果上继续发展的问题,而 Metis 的搜索策略可以在探索,发展和重新采样(可选)中进行平衡。
Metis 属于基于序列的贝叶斯优化 (SMBO) 的类别,它也基于贝叶斯优化框架。 为了对超参-性能空间建模,Metis 同时使用了高斯过程(Gaussian Process)和高斯混合模型(GMM)。 由于每次 Trial 都可能有很高的时间成本,Metis 大量使用了已有模型来进行推理计算。 在每次迭代中,Metis 执行两个任务:
在高斯过程空间中找到全局最优点。 这一点表示了最佳配置。
它会标识出下一个超参的候选项。 这是通过对隐含信息的探索、挖掘和重采样来实现的。
注意,搜索空间仅支持
`choice`
,
`quniform`
,
`uniform`
和
`randint`
。
更多详情,参考论文:https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/
\ No newline at end of file
docs/zh_CN/multiPhase.md
deleted
100644 → 0
View file @
4d3ad73d
## 多阶段 Experiment
通常,每个 Trial 任务只需要从 Tuner 获取一个配置(超参等),然后使用这个配置执行并报告结果,然后退出。 但有时,一个 Trial 任务可能需要从 Tuner 请求多次配置。 这是一个非常有用的功能。 例如:
1.
在一些训练平台上,需要数十秒来启动一个任务。 如果一个配置只需要一分钟就能完成,那么每个 Trial 任务中只运行一个配置就会非常低效。 这种情况下,可以在同一个 Trial 任务中,完成一个配置后,再请求并完成另一个配置。 极端情况下,一个 Trial 任务可以运行无数个配置。 如果设置了并发(例如设为 6),那么就会有 6 个
**长时间**
运行的任务来不断尝试不同的配置。
2.
有些类型的模型需要进行多阶段的训练,而下一个阶段的配置依赖于前一个阶段的结果。 例如,为了找到模型最好的量化结果,训练过程通常为:自动量化算法(例如 NNI 中的 TunerJ)选择一个位宽(如 16 位), Trial 任务获得此配置,并训练数个 epoch,并返回结果(例如精度)。 算法收到结果后,决定是将 16 位改为 8 位,还是 32 位。 此过程会重复多次。
上述情况都可以通过多阶段执行的功能来支持。 为了支持这些情况,一个 Trial 任务需要能从 Tuner 请求多个配置。 Tuner 需要知道两次配置请求是否来自同一个 Trial 任务。 同时,多阶段中的 Trial 任务需要多次返回最终结果。
注意,
`nni.get_next_parameter()`
和
`nni.report_final_result()`
需要被依次调用:
**先调用前者,然后调用后者,并按此顺序重复调用**
。 如果
`nni.get_next_parameter()`
被连续多次调用,然后再调用
`nni.report_final_result()`
,这会造成最终结果只会与 get_next_parameter 所返回的最后一个配置相关联。 因此,前面的 get_next_parameter 调用都没有关联的结果,这可能会造成一些多阶段算法出问题。
## 创建多阶段的 Experiment
### 编写使用多阶段的 Trial 代码:
**1. 更新 Trial 代码**
Trial 代码中使用多阶段非常容易,样例如下:
```python
# ...
for i in range(5):
# 从 Tuner 中获得参数
tuner_param = nni.get_next_parameter()
# 使用参数
# ...
# 为上面获取的参数返回最终结果
nni.report_final_result()
# ...
# ...
```
**2. 修改 Experiment 配置**
要启用多阶段,需要在 Experiment 的 YAML 配置文件中增加
`multiPhase: true`
。 如果不添加此参数,
`nni.get_next_parameter()`
会一直返回同样的配置。 对于所有内置的 Tuner 和 Advisor,不需要修改任何代码,就直接支持多阶段请求配置。
### 编写使用多阶段的 Tuner:
强烈建议首先阅读
[
自定义 Tuner
](
https://nni.readthedocs.io/en/latest/Customize_Tuner.html
)
,再开始编写多阶段 Tuner。 与普通 Tuner 不同的是,必须继承于
`MultiPhaseTuner`
(在 nni.multi_phase_tuner 中)。
`Tuner`
与
`MultiPhaseTuner`
之间最大的不同是,MultiPhaseTuner 多了一些信息,即
`trial_job_id`
。 有了这个信息, Tuner 能够知道哪个 Trial 在请求配置信息, 返回的结果是哪个 Trial 的。 通过此信息,Tuner 能够灵活的为不同的 Trial 及其阶段实现功能。 例如,可在 generate_parameters 方法中使用 trial_job_id 来为特定的 Trial 任务生成超参。
当然,要使用自定义的多阶段 Tuner ,也需要
**在 Experiment 的 YAML 配置文件中增加`multiPhase: true`**
。
[
ENAS Tuner
](
https://github.com/countif/enas_nni/blob/master/nni/examples/tuners/enas/nni_controller_ptb.py
)
是多阶段 Tuner 的样例。
\ No newline at end of file
docs/zh_CN/networkmorphismTuner.md
deleted
100644 → 0
View file @
4d3ad73d
# Network Morphism Tuner
## 1. 介绍
[
Autokeras
](
https://arxiv.org/abs/1806.10282
)
是使用 Network Morphism 算法的流行的自动机器学习工具。 Autokeras 的基本理念是使用贝叶斯回归来预测神经网络架构的指标。 每次都会从父网络生成几个子网络。 然后使用朴素贝叶斯回归,从网络的历史训练结果来预测它的指标值。 接下来,会选择预测结果最好的子网络加入训练队列中。 在
[
此代码
](
https://github.com/jhfjhfj1/autokeras
)
的启发下,我们在 NNI 中实现了 Network Morphism 算法。
要了解 Network Morphism Trial 的用法,参考
[
Readme_zh_CN.md
](
https://github.com/Microsoft/nni/blob/master/examples/trials/network_morphism/README_zh_CN.md
)
,了解更多细节。
## 2. 用法
要使用 Network Morphism,需要如下配置
`config.yml`
文件:
```
yaml
tuner
:
#选择: NetworkMorphism
builtinTunerName
:
NetworkMorphism
classArgs
:
#可选项: maximize, minimize
optimize_mode
:
maximize
#当前仅支持 cv 领域
task
:
cv
#修改来支持实际图像宽度
input_width
:
32
#修改来支持实际图像通道
input_channel
:
3
#修改来支持实际的分类数量
n_output_node
:
10
```
在训练过程中,会生成一个 JSON 文件来表示网络图。 可调用 "json
\_
to
\_
graph()" 函数来将 JSON 文件转化为 Pytoch 或 Keras 模型。
```
python
import
nni
from
nni.networkmorphism_tuner.graph
import
json_to_graph
def
build_graph_from_json
(
ir_model_json
):
"""从 JSON 生成 Pytorch 模型
"""
graph
=
json_to_graph
(
ir_model_json
)
model
=
graph
.
produce_torch_model
()
return
model
# 从网络形态 Tuner 中获得下一组参数
RCV_CONFIG
=
nni
.
get_next_parameter
()
# 调用函数来生成 Pytorch 或 Keras 模型
net
=
build_graph_from_json
(
RCV_CONFIG
)
# 训练过程
# ....
# 将最终精度返回给 NNI
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 有大量的文件、函数和类。 这里只简单介绍最重要的文件:
-
`networkmorphism_tuner.py`
是使用 network morphism 算法的 Tuner。
-
`bayesian.py`
是用来基于已经搜索道德模型来预测未知模型指标的贝叶斯算法。
-
`graph.py`
是元图数据结构。 类 Graph 表示了模型的神经网络图。
-
Graph 从模型中抽取神经网络。
-
图中的每个节点都是层之间的中间张量。
-
在图中,边表示层。
-
注意,多条边可能会表示同一层。
-
`graph_transformer.py`
包含了一些图转换,包括变宽,变深,或在图中增加跳跃连接。
-
`layers.py`
包括模型中用到的所有层。
-
`layer_transformer.py`
包含了一些层转换,包括变宽,变深,或在层中增加跳跃连接。
-
`nn.py`
包含生成初始化网的类。
-
`metric.py`
包括了一些指标类,如 Accuracy 和 MSE。
-
`utils.py`
是使用 Keras 在数据集
`cifar10`
上搜索神经网络的样例。
## 4. 网络表示的 JSON 样例
这是定义的中间表示 JSON 样例,在架构搜索过程中会从 Tuner 传到 Trial。 可调用 "json
\_
to
\_
graph()" 函数来将 JSON 文件转化为 Pytoch 或 Keras 模型。 样例如下。
```
json
{
"input_shape"
:
[
32
,
32
,
3
],
"weighted"
:
false
,
"operation_history"
:
[],
"layer_id_to_input_node_ids"
:
{
"0"
:
[
0
],
"1"
:
[
1
],
"2"
:
[
2
],
"3"
:
[
3
],
"4"
:
[
4
],
"5"
:
[
5
],
"6"
:
[
6
],
"7"
:
[
7
],
"8"
:
[
8
],
"9"
:
[
9
],
"10"
:
[
10
],
"11"
:
[
11
],
"12"
:
[
12
],
"13"
:
[
13
],
"14"
:
[
14
],
"15"
:
[
15
],
"16"
:
[
16
]
},
"layer_id_to_output_node_ids"
:
{
"0"
:
[
1
],
"1"
:
[
2
],
"2"
:
[
3
],
"3"
:
[
4
],
"4"
:
[
5
],
"5"
:
[
6
],
"6"
:
[
7
],
"7"
:
[
8
],
"8"
:
[
9
],
"9"
:
[
10
],
"10"
:
[
11
],
"11"
:
[
12
],
"12"
:
[
13
],
"13"
:
[
14
],
"14"
:
[
15
],
"15"
:
[
16
],
"16"
:
[
17
]
},
"adj_list"
:
{
"0"
:
[[
1
,
0
]],
"1"
:
[[
2
,
1
]],
"2"
:
[[
3
,
2
]],
"3"
:
[[
4
,
3
]],
"4"
:
[[
5
,
4
]],
"5"
:
[[
6
,
5
]],
"6"
:
[[
7
,
6
]],
"7"
:
[[
8
,
7
]],
"8"
:
[[
9
,
8
]],
"9"
:
[[
10
,
9
]],
"10"
:
[[
11
,
10
]],
"11"
:
[[
12
,
11
]],
"12"
:
[[
13
,
12
]],
"13"
:
[[
14
,
13
]],
"14"
:
[[
15
,
14
]],
"15"
:
[[
16
,
15
]],
"16"
:
[[
17
,
16
]],
"17"
:
[]
},
"reverse_adj_list"
:
{
"0"
:
[],
"1"
:
[[
0
,
0
]],
"2"
:
[[
1
,
1
]],
"3"
:
[[
2
,
2
]],
"4"
:
[[
3
,
3
]],
"5"
:
[[
4
,
4
]],
"6"
:
[[
5
,
5
]],
"7"
:
[[
6
,
6
]],
"8"
:
[[
7
,
7
]],
"9"
:
[[
8
,
8
]],
"10"
:
[[
9
,
9
]],
"11"
:
[[
10
,
10
]],
"12"
:
[[
11
,
11
]],
"13"
:
[[
12
,
12
]],
"14"
:
[[
13
,
13
]],
"15"
:
[[
14
,
14
]],
"16"
:
[[
15
,
15
]],
"17"
:
[[
16
,
16
]]
},
"node_list"
:
[
[
0
,
[
32
,
32
,
3
]],
[
1
,
[
32
,
32
,
3
]],
[
2
,
[
32
,
32
,
64
]],
[
3
,
[
32
,
32
,
64
]],
[
4
,
[
16
,
16
,
64
]],
[
5
,
[
16
,
16
,
64
]],
[
6
,
[
16
,
16
,
64
]],
[
7
,
[
16
,
16
,
64
]],
[
8
,
[
8
,
8
,
64
]],
[
9
,
[
8
,
8
,
64
]],
[
10
,
[
8
,
8
,
64
]],
[
11
,
[
8
,
8
,
64
]],
[
12
,
[
4
,
4
,
64
]],
[
13
,
[
64
]],
[
14
,
[
64
]],
[
15
,
[
64
]],
[
16
,
[
64
]],
[
17
,
[
10
]]
],
"layer_list"
:
[
[
0
,
[
"StubReLU"
,
0
,
1
]],
[
1
,
[
"StubConv2d"
,
1
,
2
,
3
,
64
,
3
]],
[
2
,
[
"StubBatchNormalization2d"
,
2
,
3
,
64
]],
[
3
,
[
"StubPooling2d"
,
3
,
4
,
2
,
2
,
0
]],
[
4
,
[
"StubReLU"
,
4
,
5
]],
[
5
,
[
"StubConv2d"
,
5
,
6
,
64
,
64
,
3
]],
[
6
,
[
"StubBatchNormalization2d"
,
6
,
7
,
64
]],
[
7
,
[
"StubPooling2d"
,
7
,
8
,
2
,
2
,
0
]],
[
8
,
[
"StubReLU"
,
8
,
9
]],
[
9
,
[
"StubConv2d"
,
9
,
10
,
64
,
64
,
3
]],
[
10
,
[
"StubBatchNormalization2d"
,
10
,
11
,
64
]],
[
11
,
[
"StubPooling2d"
,
11
,
12
,
2
,
2
,
0
]],
[
12
,
[
"StubGlobalPooling2d"
,
12
,
13
]],
[
13
,
[
"StubDropout2d"
,
13
,
14
,
0.25
]],
[
14
,
[
"StubDense"
,
14
,
15
,
64
,
64
]],
[
15
,
[
"StubReLU"
,
15
,
16
]],
[
16
,
[
"StubDense"
,
16
,
17
,
64
,
10
]]
]
}
```
每个模型的定义都是一个 JSON 对象 (也可以认为模型是一个
[
有向无环图
](
https://en.wikipedia.org/wiki/Directed_acyclic_graph
)
):
-
`input_shape`
是整数的列表,不包括批量维度。
-
`weighted`
表示是否权重和偏移值应该包含在此神经网络图中。
-
`operation_history`
是保存了所有网络形态操作的列表。
-
`layer_id_to_input_node_ids`
是字典实例,将层的标识映射到输入节点标识。
-
`layer_id_to_output_node_ids`
是字典实例,将层的标识映射到输出节点标识。
-
`adj_list`
是二维列表。 是图的邻接列表。 第一维是张量标识。 在每条边的列表中,元素是两元组(张量标识,层标识)。
-
`reverse_adj_list`
是与 adj_list 格式一样的反向邻接列表。
-
`node_list`
是一个整数列表。 列表的索引是标识。
-
`layer_list`
是层的列表。 列表的索引是标识。
-
对于
`StubConv (StubConv1d, StubConv2d, StubConv3d)`
,后面的数字表示节点的输入 id(或 id 列表),节点输出 id,input_channel,filters,kernel_size,stride 和 padding。
-
对于
`StubDense`
,后面的数字表示节点的输入 id (或 id 列表),节点输出 id,input_units 和 units。
-
对于
`StubBatchNormalization (StubBatchNormalization1d, StubBatchNormalization2d, StubBatchNormalization3d)`
,后面的数字表示节点输入 id(或 id 列表),节点输出 id,和特征数量。
-
对于
`StubDropout(StubDropout1d, StubDropout2d, StubDropout3d)`
,后面的数字表示节点的输入 id (或 id 列表),节点的输出 id 和 dropout 率。
-
对于
`StubPooling (StubPooling1d, StubPooling2d, StubPooling3d)`
后面的数字表示节点的输入 id(或 id 列表),节点输出 id,kernel_size, stride 和 padding。
-
对于其它层,后面的数字表示节点的输入 id(或 id 列表)以及节点的输出 id。
## 5. TODO
下一步,会将 API 从固定的网络生成方法改为更多的网络操作生成方法。 此外,还会使用 ONNX 格式来替代 JSON 作为中间表示结果。
\ No newline at end of file
docs/zh_CN/reference.rst
View file @
b8b49a34
examples/trials/NAS/README_zh_CN.md
deleted
100644 → 0
View file @
4d3ad73d
**在 NNI 中运行神经网络架构搜索**
===
参考
[
NNI-NAS-Example
](
https://github.com/Crysple/NNI-NAS-Example
)
,来使用贡献者提供的 NAS 接口。
谢谢可爱的贡献者!
欢迎越来越多的人加入我们!
\ No newline at end of file
examples/trials/README_zh_CN.md
View file @
b8b49a34
examples/trials/kaggle-tgs-salt/README_zh_CN.md
View file @
b8b49a34
examples/trials/network_morphism/README_zh_CN.md
View file @
b8b49a34
examples/tuners/ga_customer_tuner/README_zh_CN.md
View file @
b8b49a34
# 如何使用 ga_customer_tuner?
# 如何使用 ga_customer_tuner?
此定制的 Tuner 仅适用于代码 "~/nni/examples/trials/ga_squad",
输入
`cd ~/nni/examples/trials/ga_squad`
查看 readme.md 来了解 ga_squad 的更多信息。
此定制的 Tuner 仅适用于代码 "~/nni/examples/trials/ga_squad",输入
`cd ~/nni/examples/trials/ga_squad`
查看 readme.md 来了解 ga_squad 的更多信息。
# 配置
# 配置
...
...
examples/tuners/weight_sharing/ga_customer_tuner/README_zh_CN.md
View file @
b8b49a34
# 如何使用 ga_customer_tuner?
# 如何使用 ga_customer_tuner?
此定制的 Tuner 仅适用于代码 "~/nni/examples/trials/ga_squad",
输入
`cd ~/nni/examples/trials/ga_squad`
查看 readme.md 来了解 ga_squad 的更多信息。
此定制的 Tuner 仅适用于代码 "~/nni/examples/trials/ga_squad",输入
`cd ~/nni/examples/trials/ga_squad`
查看 readme.md 来了解 ga_squad 的更多信息。
# 配置
# 配置
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment