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
42
Hide 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
...
@@ -21,7 +21,7 @@ maxExecDuration: 3h
...
@@ -21,7 +21,7 @@ maxExecDuration: 3h
maxTrialNum
:
100
maxTrialNum
:
100
# 可选项: local, remote, pai
# 可选项: local, remote, pai
trainingServicePlatform
:
pai
trainingServicePlatform
:
pai
# 可选项: true, false
# 可选项: true, false
useAnnotation
:
true
useAnnotation
:
true
tuner
:
tuner
:
builtinTunerName
:
TPE
builtinTunerName
:
TPE
...
@@ -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 来自动训练模型,找到最佳超参,需要如下三步:
...
@@ -137,7 +129,7 @@ useAnnotation: false
...
@@ -137,7 +129,7 @@ useAnnotation: false
tuner
:
tuner
:
builtinTunerName
:
TPE
builtinTunerName
:
TPE
# 运行的命令,以及 Trial 代码的路径
# 运行的命令,以及 Trial 代码的路径
trial
:
trial
:
command
:
python3 mnist.py
command
:
python3 mnist.py
codeDir
:
.
codeDir
:
.
gpuNum
:
0
gpuNum
:
0
...
@@ -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 模式
*
NNI 可在 Windows 上使用 OpenPAI 模式
*
NNI 可在 Windows 上使用 OpenPAI 模式
*
GPU 的高级功能
*
GPU 的高级功能
*
在本机或远程模式上,可在同一个 GPU 上运行多个 Trial。
*
在本机或远程模式上,可在同一个 GPU 上运行多个 Trial。
*
在已经运行非 NNI 任务的 GPU 上也能运行 Trial
*
在已经运行非 NNI 任务的 GPU 上也能运行 Trial
*
支持 Kubeflow v1beta2 操作符
*
支持 Kubeflow v1beta2 操作符
*
支持 Kubeflow TFJob/PyTorchJob v1beta2
*
支持 Kubeflow TFJob/PyTorchJob v1beta2
*
[
通过 NAS 编程接口
](
./GeneralNasInterfaces.md
)
*
[
通过 NAS 编程接口
](
./GeneralNasInterfaces.md
)
*
实现了 NAS 的编程接口,可通过 NNI Annotation 很容易的表达神经网络架构搜索空间
*
实现了 NAS 的编程接口,可通过 NNI Annotation 很容易的表达神经网络架构搜索空间
*
提供新命令
`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 支持导入数据
...
@@ -40,21 +40,21 @@
...
@@ -40,21 +40,21 @@
### 主要功能
### 主要功能
*
[
支持在 Windows 上使用 NNI
](
./WindowsLocalMode.md
)
*
[
支持在 Windows 上使用 NNI
](
./WindowsLocalMode.md
)
*
NNI 可在 Windows 上使用本机模式
*
NNI 可在 Windows 上使用本机模式
*
[
支持新的 Advisor: BOHB
](
./BohbAdvisor.md
)
*
[
支持新的 Advisor: BOHB
](
./BohbAdvisor.md
)
*
支持新的 BOHB Advisor,这是一个健壮而有效的超参调优算法,囊括了贝叶斯优化和 Hyperband 的优点
*
支持新的 BOHB Advisor,这是一个健壮而有效的超参调优算法,囊括了贝叶斯优化和 Hyperband 的优点
*
[
支持通过 nnictl 来导入导出 Experiment 数据
](
./Nnictl.md#experiment
)
*
[
支持通过 nnictl 来导入导出 Experiment 数据
](
./Nnictl.md#experiment
)
*
在 Experiment 执行完后,可生成分析结果报告
*
在 Experiment 执行完后,可生成分析结果报告
*
支持将先前的调优数据导入到 Tuner 和 Advisor 中
*
支持将先前的调优数据导入到 Tuner 和 Advisor 中
*
[
可为 NNI Trial 任务指定 GPU
](
./ExperimentConfig.md#localConfig
)
*
[
可为 NNI Trial 任务指定 GPU
](
./ExperimentConfig.md#localConfig
)
*
通过 gpuIndices 配置来为 Trial 任务指定GPU。如果 Experiment 配置文件中有 gpuIndices,则只有指定的 GPU 会被用于 NNI 的 Trial 任务。
*
通过 gpuIndices 配置来为 Trial 任务指定GPU。如果 Experiment 配置文件中有 gpuIndices,则只有指定的 GPU 会被用于 NNI 的 Trial 任务。
*
改进 Web 界面
*
改进 Web 界面
*
在 Web 界面上使用十进制格式的指标
*
在 Web 界面上使用十进制格式的指标
*
添加多阶段训练相关的提示
*
添加多阶段训练相关的提示
*
可将超参复制为 Python dict 格式
*
可将超参复制为 Python dict 格式
*
可将提前终止的 Trial 数据传入 Tuner。
*
可将提前终止的 Trial 数据传入 Tuner。
*
为 nnictl 提供更友好的错误消息
*
为 nnictl 提供更友好的错误消息
*
为 YAML 文件格式错误提供更有意义的错误信息
*
为 YAML 文件格式错误提供更有意义的错误信息
### Bug 修复
### Bug 修复
...
@@ -66,12 +66,12 @@
...
@@ -66,12 +66,12 @@
### 主要功能
### 主要功能
*
[
版本检查
](
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。
*
[
分离 Tuner/Assessor
](
https://github.com/Microsoft/nni/issues/841
)
*
[
分离 Tuner/Assessor
](
https://github.com/Microsoft/nni/issues/841
)
*
增加两个管道来分离 Tuner 和 Assessor 的消息
*
增加两个管道来分离 Tuner 和 Assessor 的消息
*
使日志集合功能可配置
*
使日志集合功能可配置
*
为所有 Trial 增加中间结果的视图
*
为所有 Trial 增加中间结果的视图
...
@@ -110,7 +110,7 @@
...
@@ -110,7 +110,7 @@
### 改进
### 改进
*
[
日志目录
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/zh_CN/ExperimentConfig.md
)
可配置。
*
[
日志目录
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/zh_CN/ExperimentConfig.md
)
可配置。
*
支持
[
不同级别的日志
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/zh_CN/ExperimentConfig.md
)
,使其更易于调试。
*
支持
[
不同级别的日志
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/zh_CN/ExperimentConfig.md
)
,使其更易于调试。
### 文档
### 文档
...
@@ -119,7 +119,7 @@
...
@@ -119,7 +119,7 @@
### Bug 修复和其它更新
### Bug 修复和其它更新
*
修复了 Python 虚拟环境中安装的 Bug,并重构了安装逻辑。
*
修复了 Python 虚拟环境中安装的 Bug,并重构了安装逻辑。
*
修复了在最新的 OpenPAI 下存取 HDFS 失败的问题。
*
修复了在最新的 OpenPAI 下存取 HDFS 失败的问题。
*
修复了有时刷新 stdout 会造成 Experiment 崩溃的问题。
*
修复了有时刷新 stdout 会造成 Experiment 崩溃的问题。
## 发布 0.5.0 - 01/14/2019
## 发布 0.5.0 - 01/14/2019
...
@@ -136,15 +136,15 @@
...
@@ -136,15 +136,15 @@
#### 改进训练平台
#### 改进训练平台
*
[
FrameworkController 训练平台
](
./FrameworkControllerMode.md
)
: 支持使用在 Kubernetes 上使用 FrameworkController。
*
[
FrameworkController 训练平台
](
./FrameworkControllerMode.md
)
: 支持使用在 Kubernetes 上使用 FrameworkController。
*
FrameworkController 是 Kubernetes 上非常通用的控制器(Controller),能用来运行基于各种机器学习框架的分布式作业,如 TensorFlow,Pytorch, MXNet 等。
*
FrameworkController 是 Kubernetes 上非常通用的控制器(Controller),能用来运行基于各种机器学习框架的分布式作业,如 TensorFlow,Pytorch, MXNet 等。
*
NNI 为作业定义了统一而简单的规范。
*
NNI 为作业定义了统一而简单的规范。
*
如何使用 FrameworkController 的 MNIST 样例。
*
如何使用 FrameworkController 的 MNIST 样例。
#### 改进用户体验
#### 改进用户体验
*
为 OpenPAI, Kubeflow 和 FrameworkController 模式提供更好的日志支持。
*
为 OpenPAI, Kubeflow 和 FrameworkController 模式提供更好的日志支持。
*
改进后的日志架构能将尝试的 stdout/stderr 通过 HTTP POST 方式发送给 NNI 管理器。 NNI 管理器将 Trial 的 stdout/stderr 消息存储在本地日志文件中。
*
改进后的日志架构能将尝试的 stdout/stderr 通过 HTTP POST 方式发送给 NNI 管理器。 NNI 管理器将 Trial 的 stdout/stderr 消息存储在本地日志文件中。
*
在 WEB 界面上显示 Trial 日志的链接。
*
在 WEB 界面上显示 Trial 日志的链接。
*
支持将最终结果显示为键值对。
*
支持将最终结果显示为键值对。
## 发布 0.4.1 - 12/14/2018
## 发布 0.4.1 - 12/14/2018
...
@@ -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
)
...
@@ -185,42 +185,42 @@
...
@@ -185,42 +185,42 @@
### 主要功能
### 主要功能
*
[
Kubeflow 训练服务
](
./KubeflowMode.md
)
*
[
Kubeflow 训练服务
](
./KubeflowMode.md
)
*
支持 tf-operator
*
支持 tf-operator
*
使用 Kubeflow 的
[
分布式 Trial 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed/dist_mnist.py
)
*
使用 Kubeflow 的
[
分布式 Trial 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed/dist_mnist.py
)
*
[
网格搜索 Tuner
](
GridsearchTuner.md
)
*
[
网格搜索 Tuner
](
GridsearchTuner.md
)
*
[
Hyperband Tuner
](
HyperbandAdvisor.md
)
*
[
Hyperband Tuner
](
HyperbandAdvisor.md
)
*
支持在 MAC 上运行 NNI Experiment
*
支持在 MAC 上运行 NNI Experiment
*
Web 界面
*
Web 界面
*
支持 hyperband Tuner
*
支持 hyperband Tuner
*
移除 tensorboard 按钮
*
移除 tensorboard 按钮
*
显示 Experiment 的错误消息
*
显示 Experiment 的错误消息
*
显示搜索空间和 Trial 配置的行号
*
显示搜索空间和 Trial 配置的行号
*
支持通过指定的 Trial id 来搜索
*
支持通过指定的 Trial id 来搜索
*
显示 Trial 的 hdfsLogPath
*
显示 Trial 的 hdfsLogPath
*
下载 Experiment 参数
*
下载 Experiment 参数
### 其它
### 其它
*
异步调度
*
异步调度
*
更新 Docker 文件,增加 pytorch 库
*
更新 Docker 文件,增加 pytorch 库
*
重构 'nnictl stop' 过程,发送 SIGTERM 给 NNI 管理器进程,而不是调用停止 Restful API.
*
重构 'nnictl stop' 过程,发送 SIGTERM 给 NNI 管理器进程,而不是调用停止 Restful API.
*
修复 OpenPAI 训练服务的 Bug
*
修复 OpenPAI 训练服务的 Bug
*
在 NNI 管理器中为 OpenPAI 集群配置文件支持 IP 配置(nniManagerIp),来修复用户计算机没有 eth0 设备的问题。
*
在 NNI 管理器中为 OpenPAI 集群配置文件支持 IP 配置(nniManagerIp),来修复用户计算机没有 eth0 设备的问题。
*
codeDir 中的文件数量上限改为1000,避免用户无意中填写了 root 目录。
*
codeDir 中的文件数量上限改为1000,避免用户无意中填写了 root 目录。
*
移除 OpenPAI 作业的 stdout 日志中无用的 ‘metrics is empty’。 在新指标被记录时,仅输出有用的消息,来减少用户检查 OpenPAI Trial 输出时的困惑。
*
移除 OpenPAI 作业的 stdout 日志中无用的 ‘metrics is empty’。 在新指标被记录时,仅输出有用的消息,来减少用户检查 OpenPAI Trial 输出时的困惑。
*
在 Trial keeper 的开始增加时间戳。
*
在 Trial keeper 的开始增加时间戳。
## 发布 0.3.0 - 11/2/2018
## 发布 0.3.0 - 11/2/2018
### NNICTL 的新功能和更新
### NNICTL 的新功能和更新
*
支持同时运行多个 Experiment。
*
支持同时运行多个 Experiment。
在 v0.3 以前,NNI 仅支持一次运行一个 Experiment。 此版本开始,用户可以同时运行多个 Experiment。 每个 Experiment 都需要一个唯一的端口,第一个 Experiment 会像以前版本一样使用默认端口。 需要为其它 Experiment 指定唯一端口:
在 v0.3 以前,NNI 仅支持一次运行一个 Experiment。 此版本开始,用户可以同时运行多个 Experiment。 每个 Experiment 都需要一个唯一的端口,第一个 Experiment 会像以前版本一样使用默认端口。 需要为其它 Experiment 指定唯一端口:
```
bash
```
bash
nnictl create
--port
8081
--config
<config file path>
nnictl create
--port
8081
--config
<config file path>
```
```
*
支持更新最大 Trial 的数量。 使用
`nnictl update --help`
了解详情。 或参考
[
NNICTL
](
Nnictl.md
)
查看完整帮助。
*
支持更新最大 Trial 的数量。 使用
`nnictl update --help`
了解详情。 或参考
[
NNICTL
](
Nnictl.md
)
查看完整帮助。
...
@@ -229,30 +229,30 @@
...
@@ -229,30 +229,30 @@
*
<span
style=
"color:red"
><strong>
不兼容的改动
</strong></span>
:nn.get_parameters() 改为 nni.get_next_parameter。 所有以前版本的样例将无法在 v0.3 上运行,需要重新克隆 NNI 代码库获取新样例。 如果在自己的代码中使用了 NNI,也需要相应的更新。
*
<span
style=
"color:red"
><strong>
不兼容的改动
</strong></span>
:nn.get_parameters() 改为 nni.get_next_parameter。 所有以前版本的样例将无法在 v0.3 上运行,需要重新克隆 NNI 代码库获取新样例。 如果在自己的代码中使用了 NNI,也需要相应的更新。
*
新 API
**nni.get_sequence_id()**
。 每个 Trial 任务都会被分配一个唯一的序列数字,可通过 nni.get_sequence_id() API 来获取。
*
新 API
**nni.get_sequence_id()**
。 每个 Trial 任务都会被分配一个唯一的序列数字,可通过 nni.get_sequence_id() API 来获取。
```
bash
```
bash
git clone
-b
v0.3 https://github.com/Microsoft/nni.git
git clone
-b
v0.3 https://github.com/Microsoft/nni.git
```
```
*
**nni.report_final_result(result)**
API 对结果参数支持更多的数据类型。
*
**nni.report_final_result(result)**
API 对结果参数支持更多的数据类型。
可用类型:
可用类型:
*
int
*
int
*
float
*
float
*
包含有 'default' 键值的 dict,'default' 的值必须为 int 或 float。 dict 可以包含任何其它键值对。
*
包含有 'default' 键值的 dict,'default' 的值必须为 int 或 float。 dict 可以包含任何其它键值对。
### 支持新的 Tuner
### 支持新的 Tuner
*
**Batch Tuner(批处理调参器)**
会执行所有超参组合,可被用来批量提交 Trial 任务。
*
**Batch Tuner(批处理调参器)**
会执行所有超参组合,可被用来批量提交 Trial 任务。
### 新
样
例
### 新
示
例
*
公开的 NNI Docker 映像:
*
公开的 NNI Docker 映像:
```
bash
```
bash
docker pull msranni/nni:latest
docker pull msranni/nni:latest
```
```
*
新的 Trial 样例:
[
NNI Sklearn 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/sklearn
)
*
新的 Trial 样例:
[
NNI Sklearn 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/sklearn
)
...
@@ -269,14 +269,14 @@
...
@@ -269,14 +269,14 @@
### 主要功能
### 主要功能
*
支持
[
OpenPAI
](
https://github.com/Microsoft/pai
)
(
又称
pai) 训练服务 (参考
[
这里
](
./PaiMode.md
)
来了解如何在 OpenPAI 下提交 NNI 任务)
*
支持
[
OpenPAI
](
https://github.com/Microsoft/pai
)
(
又称
pai) 训练服务 (参考
[
这里
](
./PaiMode.md
)
来了解如何在 OpenPAI 下提交 NNI 任务)
*
支持 pai 模式的训练服务。 NNI Trial 可发送至 OpenPAI 集群上运行
*
支持 pai 模式的训练服务。 NNI Trial 可发送至 OpenPAI 集群上运行
*
NNI Trial 输出 (包括日志和模型文件) 会被复制到 OpenPAI 的 HDFS 中。
*
NNI Trial 输出 (包括日志和模型文件) 会被复制到 OpenPAI 的 HDFS 中。
*
支持
[
SMAC
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
Tuner (参考
[
这里
](
SmacTuner.md
)
,了解如何使用 SMAC Tuner)
*
支持
[
SMAC
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
Tuner (参考
[
这里
](
SmacTuner.md
)
,了解如何使用 SMAC Tuner)
*
[
SMAC
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
基于 Sequential Model-Based Optimization (SMBO). 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 NNI 的 SMAC 通过包装
[
SMAC3
](
https://github.com/automl/SMAC3
)
来支持。
*
[
SMAC
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
基于 Sequential Model-Based Optimization (SMBO). 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 NNI 的 SMAC 通过包装
[
SMAC3
](
https://github.com/automl/SMAC3
)
来支持。
*
支持将 NNI 安装在
[
conda
](
https://conda.io/docs/index.html
)
和 Python 虚拟环境中。
*
支持将 NNI 安装在
[
conda
](
https://conda.io/docs/index.html
)
和 Python 虚拟环境中。
*
其它
*
其它
*
更新 ga squad 样例与相关文档
*
更新 ga squad 样例与相关文档
*
用户体验改善及 Bug 修复
*
用户体验改善及 Bug 修复
### 已知问题
### 已知问题
...
@@ -289,20 +289,20 @@
...
@@ -289,20 +289,20 @@
### 主要功能
### 主要功能
*
安装和部署
*
安装和部署
*
支持 pip 和源代码安装
*
支持 pip 和源代码安装
*
支持本机(包括多 GPU 卡)训练和远程多机训练模式
*
支持本机(包括多 GPU 卡)训练和远程多机训练模式
*
Tuner ,Assessor 和 Trial
*
Tuner ,Assessor 和 Trial
*
支持的自动机器学习算法包括: hyperopt_tpe, hyperopt_annealing, hyperopt_random, 和 evolution_tuner。
*
支持的自动机器学习算法包括: hyperopt_tpe, hyperopt_annealing, hyperopt_random, 和 evolution_tuner。
*
支持 Assessor(提前终止)算法包括:medianstop。
*
支持 Assessor(提前终止)算法包括:medianstop。
*
提供 Python API 来自定义 Tuner 和 Assessor
*
提供 Python API 来自定义 Tuner 和 Assessor
*
提供 Python API 来包装 Trial 代码,以便能在 NNI 中运行
*
提供 Python API 来包装 Trial 代码,以便能在 NNI 中运行
*
Experiment
*
Experiment
*
提供命令行工具 'nnictl' 来管理 Experiment
*
提供命令行工具 'nnictl' 来管理 Experiment
*
提供网页界面来查看并管理 Experiment
*
提供网页界面来查看并管理 Experiment
*
持续集成
*
持续集成
*
使用 Ubuntu 的
[
travis-ci
](
https://github.com/travis-ci
)
来支持持续集成
*
使用 Ubuntu 的
[
travis-ci
](
https://github.com/travis-ci
)
来支持持续集成
*
其它
*
其它
*
支持简单的 GPU 任务调度
*
支持简单的 GPU 任务调度
### 已知问题
### 已知问题
...
...
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。
*
**第一步**
*
**第一步**
...
@@ -48,8 +54,11 @@ nnictl create --config ./config.yml
...
@@ -48,8 +54,11 @@ 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
{
{
...
@@ -75,6 +84,8 @@ nnictl create --config ./config.yml
...
@@ -75,6 +84,8 @@ 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}`
.
*
定期返回指标数据(可选)
*
定期返回指标数据(可选)
...
@@ -72,10 +74,10 @@ searchSpacePath: /path/to/your/search_space.json
...
@@ -72,10 +74,10 @@ searchSpacePath: /path/to/your/search_space.json
另一种实现 Trial 的方法是使用 Python 注释来标记 NNI。 就像其它 Python Annotation,NNI 的 Annotation 和代码中的注释一样。 不需要在代码中做大量改动。 只需要添加一些 NNI Annotation,就能够:
另一种实现 Trial 的方法是使用 Python 注释来标记 NNI。 就像其它 Python Annotation,NNI 的 Annotation 和代码中的注释一样。 不需要在代码中做大量改动。 只需要添加一些 NNI Annotation,就能够:
*
标记需要调整的参数变量
*
标记需要调整的参数变量
*
指定变量的搜索空间范围
*
指定变量的搜索空间范围
*
标记哪个变量需要作为中间结果范围给
`Assessor`
*
标记哪个变量需要作为中间结果范围给
`Assessor`
*
标记哪个变量需要作为最终结果(例如:模型精度)返回给
`Tuner`
。
*
标记哪个变量需要作为最终结果(例如:模型精度)返回给
`Tuner`
。
同样以 MNIST 为例,只需要两步就能用 NNI Annotation 来实现 Trial 代码。
同样以 MNIST 为例,只需要两步就能用 NNI Annotation 来实现 Trial 代码。
...
@@ -119,7 +121,7 @@ with tf.Session() as sess:
...
@@ -119,7 +121,7 @@ with tf.Session() as sess:
**注意**
:
**注意**
:
*
`@nni.variable`
会对它的下面一行进行修改,左边被赋值变量必须在
`@nni.variable`
的
`name`
参数中指定。
*
`@nni.variable`
会对它的下面一行进行修改,左边被赋值变量必须在
`@nni.variable`
的
`name`
参数中指定。
*
`@nni.report_intermediate_result`
/
`@nni.report_final_result`
会将数据发送给 Assessor、Tuner。
*
`@nni.report_intermediate_result`
/
`@nni.report_final_result`
会将数据发送给 Assessor、Tuner。
Annotation 的语法和用法等,参考
[
Annotation
](
AnnotationSpec.md
)
。
Annotation 的语法和用法等,参考
[
Annotation
](
AnnotationSpec.md
)
。
...
@@ -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
...
@@ -166,4 +168,4 @@ echo $? `date +%s%3N` >/home/user_name/nni/experiments/$experiment_id$/trials/$t
...
@@ -166,4 +168,4 @@ echo $? `date +%s%3N` >/home/user_name/nni/experiments/$experiment_id$/trials/$t
*
[
为 CIFAR 10 分类找到最佳的 optimizer
](
Cifar10Examples.md
)
*
[
为 CIFAR 10 分类找到最佳的 optimizer
](
Cifar10Examples.md
)
*
[
如何在 NNI 调优 SciKit-learn 的参数
](
SklearnExamples.md
)
*
[
如何在 NNI 调优 SciKit-learn 的参数
](
SklearnExamples.md
)
*
[
在阅读理解上使用自动模型架构搜索。
](
SquadEvolutionExamples.md
)
*
[
在阅读理解上使用自动模型架构搜索。
](
SquadEvolutionExamples.md
)
*
[
如何在 NNI 上调优 GBDT
](
GbdtExample.md
)
*
[
如何在 NNI 上调优 GBDT
](
GbdtExample.md
)
\ No newline at end of file
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
高级功能
高级功能
=====================
=====================
.. toctree::
.. toctree::
...
...
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
...
@@ -3,10 +3,10 @@
...
@@ -3,10 +3,10 @@
.. toctree::
.. toctree::
:maxdepth: 3
:maxdepth: 3
命令行<Nnictl>
命令行<Nnictl>
Python API<sdk_reference>
Python API<sdk_reference>
Annotation<AnnotationSpec>
Annotation<AnnotationSpec>
配置<ExperimentConfig>
配置<ExperimentConfig>
搜索空间<SearchSpaceSpec>
搜索空间<SearchSpaceSpec>
实现训练平台<HowToImplementTrainingService>
实现训练平台<HowToImplementTrainingService>
\ No newline at end of file
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
...
@@ -137,7 +137,7 @@ def train(args, params):
...
@@ -137,7 +137,7 @@ def train(args, params):
_
,
acc
=
model
.
evaluate
(
x_test
,
y_test
,
verbose
=
0
)
_
,
acc
=
model
.
evaluate
(
x_test
,
y_test
,
verbose
=
0
)
...
...
```
```
**4) 发送最终结果**
**4) 发送最终结果**
...
@@ -160,7 +160,7 @@ def train(args, params):
...
@@ -160,7 +160,7 @@ def train(args, params):
_
,
acc
=
model
.
evaluate
(
x_test
,
y_test
,
verbose
=
0
)
_
,
acc
=
model
.
evaluate
(
x_test
,
y_test
,
verbose
=
0
)
nni
.
report_final_result
(
acc
)
nni
.
report_final_result
(
acc
)
...
...
```
```
这是完整的样例:
这是完整的样例:
...
...
examples/trials/kaggle-tgs-salt/README_zh_CN.md
View file @
b8b49a34
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
将目录 0-3 训练 100 个 epoch,对于每个目录,训练三个模型:
将目录 0-3 训练 100 个 epoch,对于每个目录,训练三个模型:
python3 train.py --ifolds 0 --epochs 100 --model_name UNetResNetV4
python3 train.py --ifolds 0 --epochs 100 --model_name UNetResNetV4
python3 train.py --ifolds 0 --epochs 100 --model_name UNetResNetV5 --layers 50
python3 train.py --ifolds 0 --epochs 100 --model_name UNetResNetV5 --layers 50
python3 train.py --ifolds 0 --epochs 100 --model_name UNetResNetV6
python3 train.py --ifolds 0 --epochs 100 --model_name UNetResNetV6
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
使用余弦退火学习率调度器运行 300 次 epoch 来微调阶段 1 的模型:
使用余弦退火学习率调度器运行 300 次 epoch 来微调阶段 1 的模型:
python3 train.py --ifolds 0 --epochs 300 --lrs cosine --lr 0.001 --min_lr 0.0001 --model_name UNetResNetV4
python3 train.py --ifolds 0 --epochs 300 --lrs cosine --lr 0.001 --min_lr 0.0001 --model_name UNetResNetV4
阶段 3:
阶段 3:
...
...
examples/trials/network_morphism/README_zh_CN.md
View file @
b8b49a34
...
@@ -32,7 +32,7 @@ trainingServicePlatform: local
...
@@ -32,7 +32,7 @@ trainingServicePlatform: local
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#可选项: TPE, Random, Anneal, Evolution, BatchTuner, NetworkMorphism
#可选项: TPE, Random, Anneal, Evolution, BatchTuner, NetworkMorphism
#SMAC (SMAC 需要通过 nnictl 安装)
#SMAC (SMAC 需要通过 nnictl 安装)
builtinTunerName
:
NetworkMorphism
builtinTunerName
:
NetworkMorphism
classArgs
:
classArgs
:
#可选项: maximize, minimize
#可选项: maximize, minimize
...
...
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
3
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