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
9fb25ccc
Unverified
Commit
9fb25ccc
authored
Jul 17, 2019
by
SparkSnail
Committed by
GitHub
Jul 17, 2019
Browse files
Merge pull request #189 from microsoft/master
merge master
parents
1500458a
7c4bc33b
Changes
180
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
27 additions
and
339 deletions
+27
-339
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/conf.py
docs/zh_CN/conf.py
+3
-2
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/auto-gbdt/config.yml
examples/trials/auto-gbdt/config.yml
+1
-1
examples/trials/auto-gbdt/config_metis.yml
examples/trials/auto-gbdt/config_metis.yml
+1
-1
examples/trials/auto-gbdt/config_pai.yml
examples/trials/auto-gbdt/config_pai.yml
+1
-1
examples/trials/cifar10_pytorch/utils.py
examples/trials/cifar10_pytorch/utils.py
+1
-1
examples/trials/kaggle-tgs-salt/README_zh_CN.md
examples/trials/kaggle-tgs-salt/README_zh_CN.md
+2
-2
examples/trials/kaggle-tgs-salt/predict.py
examples/trials/kaggle-tgs-salt/predict.py
+1
-1
examples/trials/mnist/config.yml
examples/trials/mnist/config.yml
+1
-1
examples/trials/mnist/config_assessor.yml
examples/trials/mnist/config_assessor.yml
+1
-1
examples/trials/mnist/config_frameworkcontroller.yml
examples/trials/mnist/config_frameworkcontroller.yml
+1
-1
examples/trials/mnist/config_kubeflow.yml
examples/trials/mnist/config_kubeflow.yml
+1
-1
examples/trials/mnist/config_pai.yml
examples/trials/mnist/config_pai.yml
+1
-1
No files found.
docs/zh_CN/WebUI.md
View file @
9fb25ccc
...
@@ -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 @
9fb25ccc
高级功能
高级功能
=====================
=====================
.. toctree::
.. toctree::
...
...
docs/zh_CN/conf.py
View file @
9fb25ccc
...
@@ -96,7 +96,7 @@ html_theme_options = {
...
@@ -96,7 +96,7 @@ html_theme_options = {
# Add any paths that contain custom static files (such as style sheets) here,
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# so a file named "default.css" will overwrite the builtin "default.css".
#
html_static_path = ['
_
static']
html_static_path
=
[
'
../
static'
]
# Custom sidebar templates, must be a dictionary that maps document names
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
# to template names.
...
@@ -191,4 +191,5 @@ def setup(app):
...
@@ -191,4 +191,5 @@ def setup(app):
'enable_eval_rst'
:
True
,
'enable_eval_rst'
:
True
,
'enable_auto_toc_tree'
:
False
,
'enable_auto_toc_tree'
:
False
,
},
True
)
},
True
)
app
.
add_transform
(
AutoStructify
)
app
.
add_transform
(
AutoStructify
)
\ No newline at end of file
app
.
add_stylesheet
(
'css/custom.css'
)
docs/zh_CN/metisTuner.md
deleted
100644 → 0
View file @
1500458a
# 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 @
1500458a
## 多阶段 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 @
1500458a
# 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 @
9fb25ccc
...
@@ -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 @
1500458a
**在 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 @
9fb25ccc
...
@@ -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/auto-gbdt/config.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
#SMAC (SMAC should be installed through nnictl)
#SMAC (SMAC should be installed through nnictl)
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
...
...
examples/trials/auto-gbdt/config_metis.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space_metis.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space_metis.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
#SMAC (SMAC should be installed through nnictl)
#SMAC (SMAC should be installed through nnictl)
builtinTunerName
:
MetisTuner
builtinTunerName
:
MetisTuner
classArgs
:
classArgs
:
...
...
examples/trials/auto-gbdt/config_pai.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
#SMAC (SMAC should be installed through nnictl)
#SMAC (SMAC should be installed through nnictl)
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
...
...
examples/trials/cifar10_pytorch/utils.py
View file @
9fb25ccc
...
@@ -6,8 +6,8 @@
...
@@ -6,8 +6,8 @@
import
os
import
os
import
sys
import
sys
import
time
import
time
import
math
import
torch
import
torch.nn
as
nn
import
torch.nn
as
nn
import
torch.nn.init
as
init
import
torch.nn.init
as
init
...
...
examples/trials/kaggle-tgs-salt/README_zh_CN.md
View file @
9fb25ccc
...
@@ -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/kaggle-tgs-salt/predict.py
View file @
9fb25ccc
...
@@ -133,7 +133,7 @@ def generate_preds(outputs, target_size, pad_mode, threshold=0.5):
...
@@ -133,7 +133,7 @@ def generate_preds(outputs, target_size, pad_mode, threshold=0.5):
if
pad_mode
==
'resize'
:
if
pad_mode
==
'resize'
:
cropped
=
resize_image
(
output
,
target_size
=
target_size
)
cropped
=
resize_image
(
output
,
target_size
=
target_size
)
else
:
else
:
cropped
=
crop_image
_softmax
(
output
,
target_size
=
target_size
)
cropped
=
crop_image
(
output
,
target_size
=
target_size
)
pred
=
binarize
(
cropped
,
threshold
)
pred
=
binarize
(
cropped
,
threshold
)
preds
.
append
(
pred
)
preds
.
append
(
pred
)
...
...
examples/trials/mnist/config.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
#SMAC (SMAC should be installed through nnictl)
#SMAC (SMAC should be installed through nnictl)
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
...
...
examples/trials/mnist/config_assessor.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
#SMAC (SMAC should be installed through nnictl)
#SMAC (SMAC should be installed through nnictl)
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
...
...
examples/trials/mnist/config_frameworkcontroller.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
#choice: maximize, minimize
#choice: maximize, minimize
...
...
examples/trials/mnist/config_kubeflow.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
#choice: maximize, minimize
#choice: maximize, minimize
...
...
examples/trials/mnist/config_pai.yml
View file @
9fb25ccc
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
...
@@ -9,7 +9,7 @@ searchSpacePath: search_space.json
#choice: true, false
#choice: true, false
useAnnotation
:
false
useAnnotation
:
false
tuner
:
tuner
:
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
#choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner
, GPTuner
#SMAC (SMAC should be installed through nnictl)
#SMAC (SMAC should be installed through nnictl)
builtinTunerName
:
TPE
builtinTunerName
:
TPE
classArgs
:
classArgs
:
...
...
Prev
1
2
3
4
5
6
7
8
9
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