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
cd87a95a
Unverified
Commit
cd87a95a
authored
Mar 06, 2019
by
Chi Song
Committed by
GitHub
Mar 06, 2019
Browse files
Chinese updates (#791)
parent
998a8871
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
175 additions
and
97 deletions
+175
-97
README_zh_CN.md
README_zh_CN.md
+4
-4
docs/zh_CN/AnnotationSpec.md
docs/zh_CN/AnnotationSpec.md
+15
-2
docs/zh_CN/Builtin_Assessors.md
docs/zh_CN/Builtin_Assessors.md
+4
-7
docs/zh_CN/Builtin_Tuner.md
docs/zh_CN/Builtin_Tuner.md
+12
-23
docs/zh_CN/Installation.md
docs/zh_CN/Installation.md
+1
-1
docs/zh_CN/RELEASE.md
docs/zh_CN/RELEASE.md
+34
-13
docs/zh_CN/SearchSpaceSpec.md
docs/zh_CN/SearchSpaceSpec.md
+4
-4
docs/zh_CN/Tutorials.rst
docs/zh_CN/Tutorials.rst
+2
-0
docs/zh_CN/assessors.rst
docs/zh_CN/assessors.rst
+3
-1
docs/zh_CN/builtinAssessor.rst
docs/zh_CN/builtinAssessor.rst
+9
-0
docs/zh_CN/builtinTuner.rst
docs/zh_CN/builtinTuner.rst
+17
-0
docs/zh_CN/conf.py
docs/zh_CN/conf.py
+4
-4
docs/zh_CN/tuners.rst
docs/zh_CN/tuners.rst
+3
-1
tools/nni_annotation/README_zh_CN.md
tools/nni_annotation/README_zh_CN.md
+63
-37
No files found.
README_zh_CN.md
View file @
cd87a95a
...
@@ -4,13 +4,13 @@
...
@@ -4,13 +4,13 @@
* * *
* * *
[

](LICENSE)
[

](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6)
[

](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen)
[

](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
[

](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen)
[

](https://github.com/Microsoft/nni/releases)
[

](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[

](LICENSE)
[

](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6)
[

](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen)
[

](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
[

](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen)
[

](https://github.com/Microsoft/nni/releases)
[

](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[

](https://nni.readthedocs.io/en/latest/?badge=latest)
[
English
](
README.md
)
[
English
](
README.md
)
NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。
NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。
### **NNI [v0.5.
1
](https://github.com/Microsoft/nni/releases) 已发布!**
### **NNI [v0.5.
2
](https://github.com/Microsoft/nni/releases) 已发布!**
<p
align=
"center"
>
<p
align=
"center"
>
<a
href=
"#nni-v05-has-been-released"
><img
src=
"docs/img/overview.svg"
/></a>
<a
href=
"#nni-v05-has-been-released"
><img
src=
"docs/img/overview.svg"
/></a>
...
@@ -116,7 +116,7 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
...
@@ -116,7 +116,7 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
*
在
`python >= 3.5`
的环境中运行命令:
`git`
和
`wget`
,确保安装了这两个组件。
*
在
`python >= 3.5`
的环境中运行命令:
`git`
和
`wget`
,确保安装了这两个组件。
```
bash
```
bash
git clone
-b
v0.5.
1
https://github.com/Microsoft/nni.git
git clone
-b
v0.5.
2
https://github.com/Microsoft/nni.git
cd
nni
cd
nni
source
install.sh
source
install.sh
```
```
...
@@ -130,7 +130,7 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
...
@@ -130,7 +130,7 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
*
通过克隆源代码下载示例。
*
通过克隆源代码下载示例。
```
bash
```
bash
git clone
-b
v0.5.
1
https://github.com/Microsoft/nni.git
git clone
-b
v0.5.
2
https://github.com/Microsoft/nni.git
```
```
*
运行 mnist 示例。
*
运行 mnist 示例。
...
...
docs/zh_CN/AnnotationSpec.md
View file @
cd87a95a
...
@@ -30,7 +30,20 @@ NNI 中,有 4 种类型的 Annotation;
...
@@ -30,7 +30,20 @@ NNI 中,有 4 种类型的 Annotation;
-
**sampling_algo**
: 指定搜索空间的采样算法。 可将其换成 NNI 支持的其它采样函数,函数要以
`nni.`
开头。例如,
`choice`
或
`uniform`
,详见
[
SearchSpaceSpec
](
SearchSpaceSpec.md
)
。
-
**sampling_algo**
: 指定搜索空间的采样算法。 可将其换成 NNI 支持的其它采样函数,函数要以
`nni.`
开头。例如,
`choice`
或
`uniform`
,详见
[
SearchSpaceSpec
](
SearchSpaceSpec.md
)
。
-
**name**
: 将被赋值的变量名称。 注意,此参数应该与下面一行等号左边的值相同。
-
**name**
: 将被赋值的变量名称。 注意,此参数应该与下面一行等号左边的值相同。
例如:
NNI 支持如下 10 种类型来表示搜索空间:
-
`@nni.variable(nni.choice(option1,option2,...,optionN),name=variable)`
变量值是选项中的一种,这些变量可以是任意的表达式。
-
`@nni.variable(nni.randint(upper),name=variable)`
变量可以是范围 [0, upper) 中的任意整数。
-
`@nni.variable(nni.uniform(low, high),name=variable)`
变量值会是 low 和 high 之间均匀分布的某个值。
-
`@nni.variable(nni.quniform(low, high, q),name=variable)`
变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(uniform(low, high) / q)
*
q
-
`@nni.variable(nni.loguniform(low, high),name=variable)`
变量值是 exp(uniform(low, high)) 的点,数值以对数均匀分布。
-
`@nni.variable(nni.qloguniform(low, high, q),name=variable)`
变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(exp(uniform(low, high)) / q)
*
q
-
`@nni.variable(nni.normal(mu, sigma),name=variable)`
变量值为正态分布的实数值,平均值为 mu,标准方差为 sigma。
-
`@nni.variable(nni.qnormal(mu, sigma, q),name=variable)`
变量值分布的公式为: round(normal(mu, sigma) / q)
*
q
-
`@nni.variable(nni.lognormal(mu, sigma),name=variable)`
变量值分布的公式为: exp(normal(mu, sigma))
-
`@nni.variable(nni.qlognormal(mu, sigma, q),name=variable)`
变量值分布的公式为: round(exp(normal(mu, sigma)) / q)
*
q
样例如下:
```
python
```
python
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
...
@@ -45,7 +58,7 @@ learning_rate = 0.1
...
@@ -45,7 +58,7 @@ learning_rate = 0.1
**参数**
**参数**
-
**
\*
functions**
: 可选择的函数。 注意,必须是包括参数的完整函数调用。 例如
`max_pool(hidden_layer, pool_size)`
。
-
**functions**
: 可选择的函数。 注意,必须是包括参数的完整函数调用。 例如
`max_pool(hidden_layer, pool_size)`
。
-
**name**
: 将被替换的函数名称。
-
**name**
: 将被替换的函数名称。
例如:
例如:
...
...
docs/zh_CN/Builtin_Assessors.md
View file @
cd87a95a
...
@@ -6,13 +6,10 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 As
...
@@ -6,13 +6,10 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 As
当前支持的 Assessor:
当前支持的 Assessor:
*
[
Medianstop(中位数终止)
](
medianstopAssessor.md
)
| Assessor | 算法简介 |
*
[
Curvefitting(曲线拟合)
](
curvefittingAssessor.md
)
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
[
**Medianstop**
](
#MedianStop
)
| Medianstop 是一个简单的提前终止算法。 如果 Trial X 的在步骤 S 的最好目标值比所有已完成 Trial 的步骤 S 的中位数值明显要低,这个 Trial 就会被提前停止。
[
参考论文
](
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf
)
|
| Assessor | 算法简介 |
|
[
**Curvefitting**
](
#Curvefitting
)
| Curve Fitting Assessor 是一个 LPA (learning, predicting, assessing,即学习、预测、评估) 的算法。 如果预测的 Trial X 在 step S 比性能最好的 Trial 要差,就会提前终止它。 此算法中采用了 12 种曲线来拟合精度曲线。
[
参考论文
](
http://aad.informatik.uni-freiburg.de/papers/15-IJCAI-Extrapolation_of_Learning_Curves.pdf
)
|
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| __Medianstop__
[
(用法)
](
#MedianStop
)
| Medianstop 是一个简单的提前终止算法。 如果 Trial X 的在步骤 S 的最好目标值比所有已完成 Trial 的步骤 S 的中位数值明显要低,这个 Trial 就会被提前停止。
[
参考论文
](
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf
)
|
| __Curvefitting__
[
(用法)
](
#Curvefitting
)
| Curve Fitting Assessor 是一个 LPA (learning, predicting, assessing,即学习、预测、评估) 的算法。 如果预测的 Trial X 在 step S 比性能最好的 Trial 要差,就会提前终止它。 此算法中采用了 12 种曲线来拟合精度曲线。
[
参考论文
](
http://aad.informatik.uni-freiburg.de/papers/15-IJCAI-Extrapolation_of_Learning_Curves.pdf
)
|
## 用法
## 用法
...
...
docs/zh_CN/Builtin_Tuner.md
View file @
cd87a95a
...
@@ -6,29 +6,18 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tu
...
@@ -6,29 +6,18 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tu
当前支持的 Tuner:
当前支持的 Tuner:
*
[
TPE
](
hyperoptTuner.md
)
| Tuner | 算法简介 |
*
[
Random Search(随机搜索)
](
hyperoptTuner.md
)
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
*
[
Anneal(退火算法)
](
hyperoptTuner.md
)
|
[
**TPE**
](
#TPE
)
| Tree-structured Parzen Estimator (TPE) 是一种 sequential model-based optimization(SMBO,即基于序列模型优化)的方法。 SMBO 方法根据历史指标数据来按顺序构造模型,来估算超参的性能,随后基于此模型来选择新的超参。
[
参考论文
](
https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf
)
|
*
[
Naive Evolution(进化算法)
](
evolutionTuner.md
)
|
[
**Random Search**
](
#Random
)
| 在超参优化时,随机搜索算法展示了其惊人的简单和效果。 建议当不清楚超参的先验分布时,采用随机搜索作为基准。
[
参考论文
](
http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
)
|
*
[
SMAC
](
smacTuner.md
)
|
[
**Anneal**
](
#Anneal
)
| 这种简单的退火算法从先前的采样开始,会越来越靠近发现的最佳点取样。 此算法是随机搜索的简单变体,利用了反应曲面的平滑性。 退火率不是自适应的。 |
*
[
Batch Tuner(批量调参器)
](
batchTuner.md
)
|
[
**Naive Evolution**
](
#Evolution
)
| 朴素进化算法来自于大规模图像分类进化。 它会基于搜索空间随机生成一个种群。 在每一代中,会选择较好的结果,并对其下一代进行一些变异(例如,改动一个超参,增加或减少一层)。 进化算法需要很多次 Trial 才能有效,但它也非常简单,也很容易扩展新功能。
[
参考论文
](
https://arxiv.org/pdf/1703.01041.pdf
)
|
*
[
Grid Search(网格搜索)
](
gridsearchTuner.md
)
|
[
**SMAC**
](
#SMAC
)
| SMAC 基于 Sequential Model-Based Optimization (SMBO,即序列的基于模型优化方法)。 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 SMAC 算法包装了 Github 的 SMAC3。 注意:SMAC 需要通过
`nnictl package`
命令来安装。
[
参考论文,
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
[
Github 代码库
]
(https://github.com/automl/SMAC3) |
*
[
Hyperband
](
hyperbandAdvisor.md
)
|
[
**Batch tuner**
](
#Batch
)
| Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 Batch Tuner 仅支持 choice 类型。 |
*
[
Network Morphism
](
networkmorphismTuner.md
)
|
[
**Grid Search**
](
#GridSearch
)
| Grid Search 会穷举定义在搜索空间文件中的所有超参组合。 网格搜索可以使用的类型有 choice, quniform, qloguniform。 quniform 和 qloguniform 中的数值 q 具有特别的含义(不同于搜索空间文档中的说明)。 它表示了在最高值与最低值之间采样的值的数量。 |
*
[
Metis Tuner
](
metisTuner.md
)
|
[
**Hyperband**
](
#Hyperband
)
| Hyperband 试图用有限的资源来探索尽可能多的组合,并发现最好的结果。 它的基本思路是生成大量的配置,并运行少量的步骤来找到有可能好的配置,然后继续训练找到其中更好的配置。
[
参考论文
](
https://arxiv.org/pdf/1603.06560.pdf
)
|
|
[
**Network Morphism**
](
#NetworkMorphism
)
| Network Morphism 提供了深度学习模型的自动架构搜索功能。 每个子网络都继承于父网络的知识和形态,并变换网络的不同形态,包括深度,宽度,跨层连接(skip-connection)。 然后使用历史的架构和指标,来估计子网络的值。 最后会选择最有希望的模型进行训练。
[
参考论文
](
https://arxiv.org/abs/1806.10282
)
|
| Tuner | 算法简介 |
|
[
**Metis Tuner**
](
#MetisTuner
)
| 大多数调参工具仅仅预测最优配置,而 Metis 的优势在于有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 Trial 的建议。 它不进行随机取样。 大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。
[
参考论文
](
https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/
)
|
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
**TPE**
[
(用法)
](
#TPE
)
| Tree-structured Parzen Estimator (TPE) 是一种 sequential model-based optimization(SMBO,即基于序列模型优化)的方法。 SMBO 方法根据历史指标数据来按顺序构造模型,来估算超参的性能,随后基于此模型来选择新的超参。
[
参考论文
](
https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf
)
|
|
**Random Search**
[
(用法)
](
#Random
)
| 在超参优化时,随机搜索算法展示了其惊人的简单和效果。 建议当不清楚超参的先验分布时,采用随机搜索作为基准。
[
参考论文
](
http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
)
|
|
**Anneal**
[
(用法)
](
#Anneal
)
| 这种简单的退火算法从先前的采样开始,会越来越靠近发现的最佳点取样。 此算法是随机搜索的简单变体,利用了反应曲面的平滑性。 退火率不是自适应的。 |
|
**Naive Evolution**
[
(用法)
](
#Evolution
)
| 朴素进化算法来自于大规模图像分类进化。 它会基于搜索空间随机生成一个种群。 在每一代中,会选择较好的结果,并对其下一代进行一些变异(例如,改动一个超参,增加或减少一层)。 进化算法需要很多次 Trial 才能有效,但它也非常简单,也很容易扩展新功能。
[
参考论文
](
https://arxiv.org/pdf/1703.01041.pdf
)
|
|
**SMAC**
[
(用法)
](
#SMAC
)
| SMAC 基于 Sequential Model-Based Optimization (SMBO,即序列的基于模型优化方法)。 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 SMAC 算法包装了 Github 的 SMAC3。 注意:SMAC 需要通过
`nnictl package`
命令来安装。
[
参考论文,
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
[
Github 代码库
]
(https://github.com/automl/SMAC3) |
|
**Batch tuner**
[
(用法)
](
#Batch
)
| Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 Batch Tuner 仅支持 choice 类型。 |
|
**Grid Search**
[
(用法)
](
#GridSearch
)
| Grid Search 会穷举定义在搜索空间文件中的所有超参组合。 网格搜索可以使用的类型有 choice, quniform, qloguniform。 quniform 和 qloguniform 中的数值 q 具有特别的含义(不同于搜索空间文档中的说明)。 它表示了在最高值与最低值之间采样的值的数量。 |
|
**Hyperband**
[
(用法)
](
#Hyperband
)
| Hyperband 试图用有限的资源来探索尽可能多的组合,并发现最好的结果。 它的基本思路是生成大量的配置,并运行少量的步骤来找到有可能好的配置,然后继续训练找到其中更好的配置。
[
参考论文
](
https://arxiv.org/pdf/1603.06560.pdf
)
|
|
**Network Morphism**
[
(用法)
](
#NetworkMorphism
)
| Network Morphism 提供了深度学习模型的自动架构搜索功能。 每个子网络都继承于父网络的知识和形态,并变换网络的不同形态,包括深度,宽度,跨层连接(skip-connection)。 然后使用历史的架构和指标,来估计子网络的值。 最后会选择最有希望的模型进行训练。
[
参考论文
](
https://arxiv.org/abs/1806.10282
)
|
|
**Metis Tuner**
[
(用法)
](
#MetisTuner
)
| 大多数调参工具仅仅预测最优配置,而 Metis 的优势在于有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 Trial 的建议。 它不进行随机取样。 大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。
[
参考论文
](
https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/
)
|
<br
/>
<br
/>
...
...
docs/zh_CN/Installation.md
View file @
cd87a95a
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
先决条件:
`python >=3.5, git, wget`
先决条件:
`python >=3.5, git, wget`
```
bash
```
bash
git clone
-b
v0.5.
1
https://github.com/Microsoft/nni.git
git clone
-b
v0.5.
2
https://github.com/Microsoft/nni.git
cd
nni
cd
nni
./install.sh
./install.sh
```
```
...
...
docs/zh_CN/RELEASE.md
View file @
cd87a95a
# 更改日志
# 更改日志
## 发布 0.5.2 - 3/4/2019
### 改进
*
提升 Curve fitting Assessor 的性能。
### 文档
*
发布中文文档网站:https://nni.readthedocs.io/zh/latest/
*
调试和维护:https://nni.readthedocs.io/en/latest/HowToDebug.html
*
Tuner、Assessor 参考:https://nni.readthedocs.io/en/latest/sdk_reference.html#tuner
### Bug 修复和其它更新
*
修复了在某些极端条件下,不能正确存储任务的取消状态。
*
修复在使用 SMAC Tuner 时,解析搜索空间的错误。
*
修复 CIFAR-10 样例中的 broken pipe 问题。
*
为本地训练服务和 NNI 管理器添加单元测试。
*
为远程服务器、OpenPAI 和 Kubeflow 训练平台在 Azure 中增加集成测试。
*
在 OpenPAI 客户端中支持 Pylon 路径。
## 发布 0.5.1 - 1/31/2018
## 发布 0.5.1 - 1/31/2018
### 改进
### 改进
*
可配置
[
日志目录
](
ExperimentConfig.md
)
。
*
[
日志目录
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/en_US/
ExperimentConfig.md
)
可配置
。
*
支持
[
不同级别的日志
](
ExperimentConfig.md
)
,使其更易于调试。
*
支持
[
不同级别的日志
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/en_US/
ExperimentConfig.md
)
,使其更易于调试。
### 文档
### 文档
...
@@ -23,14 +44,14 @@
...
@@ -23,14 +44,14 @@
#### 支持新的 Tuner 和 Assessor
#### 支持新的 Tuner 和 Assessor
*
支持
[
Metis
t
uner
](
./Builtin_Tuner.md#MetisTuner
)
作为 NNI 的 Tuner。
**在线**
超参调优的场景
下
,Metis 算法已经被证明非常有效。
*
支持
新的
[
Metis
T
uner
](
metisTuner.md
)
。 对于
**在线**
超参调优的场景,Metis 算法已经被证明非常有效。
*
支持
[
ENAS customized tuner
](
https://github.com/countif/enas_nni
)
。由 GitHub 社区用户所贡献。它是神经网络的搜索算法,能够通过强化学习来学习神经网络架构,比 NAS 的性能更好。
*
支持
[
ENAS customized tuner
](
https://github.com/countif/enas_nni
)
。由 GitHub 社区用户所贡献。它是神经网络的搜索算法,能够通过强化学习来学习神经网络架构,比 NAS 的性能更好。
*
支持
[
Curve fitting (曲线拟合)Assessor
](
./Builtin_Tuner.md#Curvefitting
)
,通过曲线拟合的策略来实现提前终止 Trial。
*
支持
[
Curve fitting (曲线拟合)Assessor
](
curvefittingAssessor.md
)
,通过曲线拟合的策略来实现提前终止 Trial。
*
进一步支持
[
Weight Sharing(权重共享)
](
./AdvancedNAS.md
)
:为 NAS Tuner 通过 NFS 来提供权重共享。
*
进一步支持
[
Weight Sharing(权重共享)
](
./AdvancedNAS.md
)
:为 NAS Tuner 通过 NFS 来提供权重共享。
#### 改进训练平台
#### 改进训练平台
*
[
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 样例。
...
@@ -48,12 +69,12 @@
...
@@ -48,12 +69,12 @@
#### 支持新的 Tuner
#### 支持新的 Tuner
*
支持新
Tuner
[
network morphism
](
./Builtin_Tuner.md#N
etwork
M
orphism
)
*
支持新
的
[
network morphism
](
n
etwork
m
orphism
Tuner.md
)
Tuner。
#### 改进训练平台
#### 改进训练平台
*
将
[
Kubeflow 训练
服务
](
KubeflowMode.md
)
的依赖从 kubectl CLI 迁移到
[
Kubernetes API
](
https://kubernetes.io/docs/concepts/overview/kubernetes-api/
)
客户端。
*
将
[
Kubeflow 训练
平台
](
KubeflowMode.md
)
的依赖从 kubectl CLI 迁移到
[
Kubernetes API
](
https://kubernetes.io/docs/concepts/overview/kubernetes-api/
)
客户端。
*
Kubeflow 训练
服务
支持
[
Pytorch-operator
](
https://github.com/kubeflow/pytorch-operator
)
。
*
Kubeflow 训练
平台
支持
[
Pytorch-operator
](
https://github.com/kubeflow/pytorch-operator
)
。
*
改进将本地代码文件上传到 OpenPAI HDFS 的性能。
*
改进将本地代码文件上传到 OpenPAI HDFS 的性能。
*
修复 OpenPAI 在 WEB 界面的 Bug:当 OpenPAI 认证过期后,Web 界面无法更新 Trial 作业的状态。
*
修复 OpenPAI 在 WEB 界面的 Bug:当 OpenPAI 认证过期后,Web 界面无法更新 Trial 作业的状态。
...
@@ -82,8 +103,8 @@
...
@@ -82,8 +103,8 @@
*
[
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
](
Builtin_Tuner.md#GridSearch
)
*
[
网格搜索 Tuner
](
gridsearchTuner.md
)
*
[
Hyperband Tuner
](
Builtin_Tuner.md#Hyperban
d
)
*
[
Hyperband Tuner
](
hyperbandAdvisor.m
d
)
*
支持在 MAC 上运行 NNI Experiment
*
支持在 MAC 上运行 NNI Experiment
*
Web 界面
*
Web 界面
*
支持 hyperband Tuner
*
支持 hyperband Tuner
...
@@ -137,13 +158,13 @@
...
@@ -137,13 +158,13 @@
*
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
...
@@ -166,7 +187,7 @@
...
@@ -166,7 +187,7 @@
*
支持
[
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 (参考
[
这里
](
Builtin_
Tuner.md
)
,了解如何使用 SMAC Tuner)
*
支持
[
SMAC
](
https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf
)
Tuner (参考
[
这里
](
smac
Tuner.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 虚拟环境中。
*
其它
*
其它
...
...
docs/zh_CN/SearchSpaceSpec.md
View file @
cd87a95a
...
@@ -53,20 +53,20 @@
...
@@ -53,20 +53,20 @@
*
这表示变量值会类似于 round(loguniform(low, high)) / q)
*
q
*
这表示变量值会类似于 round(loguniform(low, high)) / q)
*
q
*
适用于值是“平滑”的离散变量,但上下限均有限制。
*
适用于值是“平滑”的离散变量,但上下限均有限制。
*
{"_type":"normal","_value":[
label,
mu, sigma]}
*
{"_type":"normal","_value":[mu, sigma]}
*
变量值为实数,且为正态分布,均值为 mu,标准方差为 sigma。 优化时,此变量不受约束。
*
变量值为实数,且为正态分布,均值为 mu,标准方差为 sigma。 优化时,此变量不受约束。
*
{"_type":"qnormal","_value":[
label,
mu, sigma, q]}
*
{"_type":"qnormal","_value":[mu, sigma, q]}
*
这表示变量值会类似于 round(normal(mu, sigma) / q)
*
q
*
这表示变量值会类似于 round(normal(mu, sigma) / q)
*
q
*
适用于在 mu 周围的离散变量,且没有上下限限制。
*
适用于在 mu 周围的离散变量,且没有上下限限制。
*
{"_type":"lognormal","_value":[
label,
mu, sigma]}
*
{"_type":"lognormal","_value":[mu, sigma]}
*
变量值为 exp(normal(mu, sigma)) 分布,范围值是对数的正态分布。 当优化时,此变量必须是正数。
*
变量值为 exp(normal(mu, sigma)) 分布,范围值是对数的正态分布。 当优化时,此变量必须是正数。
*
{"_type":"qlognormal","_value":[
label,
mu, sigma, q]}
*
{"_type":"qlognormal","_value":[mu, sigma, q]}
*
这表示变量值会类似于 round(exp(normal(mu, sigma)) / q)
*
q
*
这表示变量值会类似于 round(exp(normal(mu, sigma)) / q)
*
q
*
适用于值是“平滑”的离散变量,但某一边有界。
*
适用于值是“平滑”的离散变量,但某一边有界。
...
...
docs/zh_CN/Tutorials.rst
View file @
cd87a95a
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
######################
######################
.. toctree::
.. toctree::
:maxdepth: 2
安装<Installation>
安装<Installation>
实现 Trial<Trials>
实现 Trial<Trials>
Tuner<tuners>
Tuner<tuners>
...
...
docs/zh_CN/assessors.rst
View file @
cd87a95a
...
@@ -13,5 +13,7 @@ Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Tri
...
@@ -13,5 +13,7 @@ Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Tri
与 Tuner 类似,可使用内置的 Assessor,也可以自定义 Assessor。 参考下列教程,获取详细信息:
与 Tuner 类似,可使用内置的 Assessor,也可以自定义 Assessor。 参考下列教程,获取详细信息:
.. toctree::
.. toctree::
内置 Assessor<Builtin_Assessors>
:maxdepth: 2
内置 Assessor<builtinAssessor>
自定义 Assessor<Customize_Assessor>
自定义 Assessor<Customize_Assessor>
docs/zh_CN/builtinAssessor.rst
0 → 100644
View file @
cd87a95a
内置 Assessor
=================
.. toctree::
:maxdepth: 1
介绍<Builtin_Assessors>
Medianstop<medianstopAssessor>
Curvefitting<curvefittingAssessor>
\ No newline at end of file
docs/zh_CN/builtinTuner.rst
0 → 100644
View file @
cd87a95a
内置 Tuner
==================
.. toctree::
:maxdepth: 1
介绍<Builtin_Tuner>
TPE<hyperoptTuner>
Random Search<hyperoptTuner>
Anneal<hyperoptTuner>
Naive Evolution<evolutionTuner>
SMAC<smacTuner>
Batch Tuner<batchTuner>
Grid Search<gridsearchTuner>
Hyperband<hyperbandAdvisor>
Network Morphism<networkmorphismTuner>
Metis Tuner<metisTuner>
\ No newline at end of file
docs/zh_CN/conf.py
View file @
cd87a95a
...
@@ -186,9 +186,9 @@ epub_exclude_files = ['search.html']
...
@@ -186,9 +186,9 @@ epub_exclude_files = ['search.html']
# -- Extension configuration -------------------------------------------------
# -- Extension configuration -------------------------------------------------
github_doc_root
=
'https://github.com/Microsoft/nni/tree/master/doc/'
def
setup
(
app
):
def
setup
(
app
):
app
.
add_config_value
(
'recommonmark_config'
,
{
app
.
add_config_value
(
'recommonmark_config'
,
{
'enable_auto_toc_tree'
:
True
,
'enable_eval_rst'
:
True
,
},
True
)
'enable_auto_toc_tree'
:
False
,
app
.
add_transform
(
AutoStructify
)
},
True
)
app
.
add_transform
(
AutoStructify
)
\ No newline at end of file
docs/zh_CN/tuners.rst
View file @
cd87a95a
...
@@ -11,6 +11,8 @@ Tuner 从 Trial 接收指标结果,来评估一组超参或网络结构的性
...
@@ -11,6 +11,8 @@ Tuner 从 Trial 接收指标结果,来评估一组超参或网络结构的性
详细信息,参考以下教程:
详细信息,参考以下教程:
.. toctree::
.. toctree::
内置 Tuner<Builtin_Tuner>
:maxdepth: 2
内置 Tuner<builtinTuner>
自定义 Tuner<Customize_Tuner>
自定义 Tuner<Customize_Tuner>
自定义 Advisor<Customize_Advisor>
自定义 Advisor<Customize_Advisor>
\ No newline at end of file
tools/nni_annotation/README_zh_CN.md
View file @
cd87a95a
# NNI Annotation
介绍
# NNI Annotation
为了获得良好的用户体验并减少用户负担,NNI 设计了通过注释来使用的语法。
## 概述
使用 NNI 时,只需要:
为了获得良好的用户体验并减少对以后代码的影响,NNI 设计了通过 Annotation(标记)来使用的语法。 通过 Annotation,只需要在代码中加入一些注释字符串,就能启用 NNI,完全不影响代码原先的执行逻辑。
1.
在超参变量前加上如下标记:
样例如下:
'''@nni.variable(nni.choice(2,3,5,7),name=self.conv_size)'''
2.
在中间结果前加上:
```
python
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
'''@nni.report_intermediate_result(test_acc)'''
learning_rate
=
0.1
```
3.
在输出结果前加上:
此样例中,NNI 会从 (0.1, 0.01, 0.001) 中选择一个值赋给 learning_rate 变量。 第一行就是 NNI 的 Annotation,是 Python 中的一个字符串。 接下来的一行需要是赋值语句。 NNI 会根据 Annotation 行的信息,来给这一行的变量赋上相应的值。
'''@nni.report_final_result(test_acc)'''
4.
在代码中使用函数
`function_choice`
:
通过这种方式,不需要修改任何代码,代码既可以直接运行,又可以使用 NNI 来调参。
'''@nni.function_choice(max_pool(h_conv1, self.pool_size),avg_pool(h_conv1, self.pool_size),name=max_pool)'''
通过这种方法,能够轻松的在 NNI 中实现自动调参。
## Annotation 的类型:
`@nni.variable`
,
`nni.choice`
为搜索空间的类型,通过以下 10 种方法来定义搜索空间:
NNI 中,有 4 种类型的 Annotation;
1.
`@nni.variable(nni.choice(option1,option2,...,optionN),name=variable)`
### 1. 变量
变量值是选项中的一种,这些变量可以是任意的表达式。
2.
`@nni.variable(nni.randint(upper),name=variable)`
`'''@nni.variable(sampling_algo, name)'''`
变量可以是范围 [0, upper) 中的任意整数。
3.
`@nni.variable(nni.uniform(low, high),name=variable)`
`@nni.variable`
用来标记变量。
变量值会是 low 和 high 之间均匀分布的某个值。
4.
`@nni.variable(nni.quniform(low, high, q),name=variable)`
**参数**
变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(uniform(low, high) / q)
*
q
5.
`@nni.variable(nni.loguniform(low, high),name=variable)`
-
**sampling_algo**
: 指定搜索空间的采样算法。 可将其换成 NNI 支持的其它采样函数,函数要以
`nni.`
开头。例如,
`choice`
或
`uniform`
,详见
[
SearchSpaceSpec
](
https://nni.readthedocs.io/zh/latest/SearchSpaceSpec.html
)
。
变量值是 exp(uniform(low, high)) 的点,数值以对数均匀分布
。
-
**name**
: 将被赋值的变量名称。 注意,此参数应该与下面一行等号左边的值相同
。
6.
`@nni.variable(nni.qloguniform(low, high, q),name=variable)`
NNI 支持如下 10 种类型来表示搜索空间:
变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(exp(uniform(low, high)) / q)
*
q
7.
`@nni.variable(nni.normal(label, mu, sigma),name=variable)`
-
`@nni.variable(nni.choice(option1,option2,...,optionN),name=variable)`
变量值是选项中的一种,这些变量可以是任意的表达式。
变量值为正态分布的实数值,平均值为 mu,标准方差为 sigma。
-
`@nni.variable(nni.randint(upper),name=variable)`
变量可以是范围
[
0, upper) 中的任意整数。
- `@nni.variable(nni.uniform(low, high),name=variable)` 变量值会是 low 和 high 之间均匀分布的某个值。
- `@nni.variable(nni.quniform(low, high, q),name=variable)` 变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(uniform(low, high) / q) * q
- `@nni.variable(nni.loguniform(low, high),name=variable)` 变量值是 exp(uniform(low, high)) 的点,数值以对数均匀分布。
- `@nni.variable(nni.qloguniform(low, high, q),name=variable)` 变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(exp(uniform(low, high)) / q) * q
- `@nni.variable(nni.normal(mu, sigma),name=variable)` 变量值为正态分布的实数值,平均值为 mu,标准方差为 sigma。
- `@nni.variable(nni.qnormal(mu, sigma, q),name=variable)` 变量值分布的公式为: round(normal(mu, sigma) / q) * q
- `@nni.variable(nni.lognormal(mu, sigma),name=variable)` 变量值分布的公式为: exp(normal(mu, sigma))
- `@nni.variable(nni.qlognormal(mu, sigma, q),name=variable)` 变量值分布的公式为: round(exp(normal(mu, sigma)) / q) * q
8.
`@nni.variable(nni.qnormal(label, mu, sigma, q),name=variable)`
样例如下:
变量值分布的公式为: round(normal(mu, sigma) / q)
*
q
9.
`@nni.variable(nni.lognormal(label, mu, sigma),name=variable)`
```python
变量值分布的公式为: exp(normal(mu, sigma))
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
learning_rate = 0.1
```
10.
`@nni.variable(nni.qlognormal(label, mu, sigma, q),name=variable)`
### 2. 函数
变量值分布的公式为: round(exp(normal(mu, sigma)) / q)
*
q
\ No newline at end of file
`'''@nni.function_choice(*functions, name)'''`
`@nni.function_choice` 可以从几个函数中选择一个来执行。
**参数**
- **functions**: 可选择的函数。 注意,必须是包括参数的完整函数调用。 例如 `max_pool(hidden_layer, pool_size)`。
- **name**: 将被替换的函数名称。
例如:
```python
"""@nni.function_choice(max_pool(hidden_layer, pool_size), avg_pool(hidden_layer, pool_size), name=max_pool)"""
h_pooling = max_pool(hidden_layer, pool_size)
```
### 3. 中间结果
`'''@nni.report_intermediate_result(metrics)'''`
`@nni.report_intermediate_result` 用来返回中间结果,这和 [Trials.md
](
https://nni.readthedocs.io/zh/latest/Trials.html
)
中的
`nni.report_intermediate_result`
用法一样。
### 4. 最终结果
`'''@nni.report_final_result(metrics)'''`
`@nni.report_final_result`
用来返回当前 Trial 的最终结果,这和
[
Trials.md
](
https://nni.readthedocs.io/zh/latest/Trials.html
)
中的
`nni.report_final_result`
用法一样。
\ No newline at end of file
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