Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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 @@
* * *
[

](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
)
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"
>
<a
href=
"#nni-v05-has-been-released"
><img
src=
"docs/img/overview.svg"
/></a>
...
...
@@ -116,7 +116,7 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
*
在
`python >= 3.5`
的环境中运行命令:
`git`
和
`wget`
,确保安装了这两个组件。
```
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
source
install.sh
```
...
...
@@ -130,7 +130,7 @@ NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包
*
通过克隆源代码下载示例。
```
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 示例。
...
...
docs/zh_CN/AnnotationSpec.md
View file @
cd87a95a
...
...
@@ -30,7 +30,20 @@ NNI 中,有 4 种类型的 Annotation;
-
**sampling_algo**
: 指定搜索空间的采样算法。 可将其换成 NNI 支持的其它采样函数,函数要以
`nni.`
开头。例如,
`choice`
或
`uniform`
,详见
[
SearchSpaceSpec
](
SearchSpaceSpec.md
)
。
-
**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
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
...
...
@@ -45,7 +58,7 @@ learning_rate = 0.1
**参数**
-
**
\*
functions**
: 可选择的函数。 注意,必须是包括参数的完整函数调用。 例如
`max_pool(hidden_layer, pool_size)`
。
-
**functions**
: 可选择的函数。 注意,必须是包括参数的完整函数调用。 例如
`max_pool(hidden_layer, pool_size)`
。
-
**name**
: 将被替换的函数名称。
例如:
...
...
docs/zh_CN/Builtin_Assessors.md
View file @
cd87a95a
...
...
@@ -6,13 +6,10 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 As
当前支持的 Assessor:
*
[
Medianstop(中位数终止)
](
medianstopAssessor.md
)
*
[
Curvefitting(曲线拟合)
](
curvefittingAssessor.md
)
| Assessor | 算法简介 |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| __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
)
|
| Assessor | 算法简介 |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
[
**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
当前支持的 Tuner:
*
[
TPE
](
hyperoptTuner.md
)
*
[
Random Search(随机搜索)
](
hyperoptTuner.md
)
*
[
Anneal(退火算法)
](
hyperoptTuner.md
)
*
[
Naive Evolution(进化算法)
](
evolutionTuner.md
)
*
[
SMAC
](
smacTuner.md
)
*
[
Batch Tuner(批量调参器)
](
batchTuner.md
)
*
[
Grid Search(网格搜索)
](
gridsearchTuner.md
)
*
[
Hyperband
](
hyperbandAdvisor.md
)
*
[
Network Morphism
](
networkmorphismTuner.md
)
*
[
Metis Tuner
](
metisTuner.md
)
| Tuner | 算法简介 |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
**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/
)
|
| Tuner | 算法简介 |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
[
**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
/>
...
...
docs/zh_CN/Installation.md
View file @
cd87a95a
...
...
@@ -17,7 +17,7 @@
先决条件:
`python >=3.5, git, wget`
```
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
./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
### 改进
*
可配置
[
日志目录
](
ExperimentConfig.md
)
。
*
支持
[
不同级别的日志
](
ExperimentConfig.md
)
,使其更易于调试。
*
[
日志目录
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/en_US/
ExperimentConfig.md
)
可配置
。
*
支持
[
不同级别的日志
](
https://github.com/Microsoft/nni/blob/v0.5.1/docs/en_US/
ExperimentConfig.md
)
,使其更易于调试。
### 文档
...
...
@@ -23,14 +44,14 @@
#### 支持新的 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 的性能更好。
*
支持
[
Curve fitting (曲线拟合)Assessor
](
./Builtin_Tuner.md#Curvefitting
)
,通过曲线拟合的策略来实现提前终止 Trial。
*
支持
[
Curve fitting (曲线拟合)Assessor
](
curvefittingAssessor.md
)
,通过曲线拟合的策略来实现提前终止 Trial。
*
进一步支持
[
Weight Sharing(权重共享)
](
./AdvancedNAS.md
)
:为 NAS Tuner 通过 NFS 来提供权重共享。
#### 改进训练平台
*
[
FrameworkController 训练
服务
](
./FrameworkControllerMode.md
)
: 支持使用在 Kubernetes 上使用 FrameworkController。
*
[
FrameworkController 训练
平台
](
./FrameworkControllerMode.md
)
: 支持使用在 Kubernetes 上使用 FrameworkController。
*
FrameworkController 是 Kubernetes 上非常通用的控制器(Controller),能用来运行基于各种机器学习框架的分布式作业,如 TensorFlow,Pytorch, MXNet 等。
*
NNI 为作业定义了统一而简单的规范。
*
如何使用 FrameworkController 的 MNIST 样例。
...
...
@@ -48,12 +69,12 @@
#### 支持新的 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 训练
服务
支持
[
Pytorch-operator
](
https://github.com/kubeflow/pytorch-operator
)
。
*
将
[
Kubeflow 训练
平台
](
KubeflowMode.md
)
的依赖从 kubectl CLI 迁移到
[
Kubernetes API
](
https://kubernetes.io/docs/concepts/overview/kubernetes-api/
)
客户端。
*
Kubeflow 训练
平台
支持
[
Pytorch-operator
](
https://github.com/kubeflow/pytorch-operator
)
。
*
改进将本地代码文件上传到 OpenPAI HDFS 的性能。
*
修复 OpenPAI 在 WEB 界面的 Bug:当 OpenPAI 认证过期后,Web 界面无法更新 Trial 作业的状态。
...
...
@@ -82,8 +103,8 @@
*
[
Kubeflow 训练服务
](
./KubeflowMode.md
)
*
支持 tf-operator
*
使用 Kubeflow 的
[
分布式 Trial 样例
](
https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed/dist_mnist.py
)
*
[
网格搜索 Tuner
](
Builtin_Tuner.md#GridSearch
)
*
[
Hyperband Tuner
](
Builtin_Tuner.md#Hyperban
d
)
*
[
网格搜索 Tuner
](
gridsearchTuner.md
)
*
[
Hyperband Tuner
](
hyperbandAdvisor.m
d
)
*
支持在 MAC 上运行 NNI Experiment
*
Web 界面
*
支持 hyperband Tuner
...
...
@@ -137,13 +158,13 @@
*
float
*
包含有 'default' 键值的 dict,'default' 的值必须为 int 或 float。 dict 可以包含任何其它键值对。
### 新的
内置
Tuner
###
支持
新的 Tuner
*
**Batch Tuner(批处理调参器)**
会执行所有超参组合,可被用来批量提交 Trial 任务。
### 新样例
*
公
开
的 NNI Docker 映像:
*
公
共
的 NNI Docker 映像:
```
bash
docker pull msranni/nni:latest
...
...
@@ -166,7 +187,7 @@
*
支持
[
OpenPAI
](
https://github.com/Microsoft/pai
)
(
又称
pai) 训练服务 (参考
[
这里
](
./PAIMode.md
)
来了解如何在 OpenPAI 下提交 NNI 任务)
*
支持 pai 模式的训练服务。 NNI Trial 可发送至 OpenPAI 集群上运行
*
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
)
来支持。
*
支持将 NNI 安装在
[
conda
](
https://conda.io/docs/index.html
)
和 Python 虚拟环境中。
*
其它
...
...
docs/zh_CN/SearchSpaceSpec.md
View file @
cd87a95a
...
...
@@ -53,20 +53,20 @@
*
这表示变量值会类似于 round(loguniform(low, high)) / q)
*
q
*
适用于值是“平滑”的离散变量,但上下限均有限制。
*
{"_type":"normal","_value":[
label,
mu, sigma]}
*
{"_type":"normal","_value":[mu, sigma]}
*
变量值为实数,且为正态分布,均值为 mu,标准方差为 sigma。 优化时,此变量不受约束。
*
{"_type":"qnormal","_value":[
label,
mu, sigma, q]}
*
{"_type":"qnormal","_value":[mu, sigma, q]}
*
这表示变量值会类似于 round(normal(mu, sigma) / q)
*
q
*
适用于在 mu 周围的离散变量,且没有上下限限制。
*
{"_type":"lognormal","_value":[
label,
mu, sigma]}
*
{"_type":"lognormal","_value":[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
*
适用于值是“平滑”的离散变量,但某一边有界。
...
...
docs/zh_CN/Tutorials.rst
View file @
cd87a95a
...
...
@@ -3,6 +3,8 @@
######################
.. toctree::
:maxdepth: 2
安装<Installation>
实现 Trial<Trials>
Tuner<tuners>
...
...
docs/zh_CN/assessors.rst
View file @
cd87a95a
...
...
@@ -13,5 +13,7 @@ Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Tri
与 Tuner 类似,可使用内置的 Assessor,也可以自定义 Assessor。 参考下列教程,获取详细信息:
.. toctree::
内置 Assessor<Builtin_Assessors>
:maxdepth: 2
内置 Assessor<builtinAssessor>
自定义 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']
# -- Extension configuration -------------------------------------------------
github_doc_root
=
'https://github.com/Microsoft/nni/tree/master/doc/'
def
setup
(
app
):
app
.
add_config_value
(
'recommonmark_config'
,
{
'enable_auto_toc_tree'
:
True
,
},
True
)
app
.
add_transform
(
AutoStructify
)
'enable_eval_rst'
:
True
,
'enable_auto_toc_tree'
:
False
,
},
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 接收指标结果,来评估一组超参或网络结构的性
详细信息,参考以下教程:
.. toctree::
内置 Tuner<Builtin_Tuner>
:maxdepth: 2
内置 Tuner<builtinTuner>
自定义 Tuner<Customize_Tuner>
自定义 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.
在中间结果前加上:
'''@nni.report_intermediate_result(test_acc)'''
```
python
'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)'''
learning_rate
=
0.1
```
3.
在输出结果前加上:
'''@nni.report_final_result(test_acc)'''
此样例中,NNI 会从 (0.1, 0.01, 0.001) 中选择一个值赋给 learning_rate 变量。 第一行就是 NNI 的 Annotation,是 Python 中的一个字符串。 接下来的一行需要是赋值语句。 NNI 会根据 Annotation 行的信息,来给这一行的变量赋上相应的值。
4.
在代码中使用函数
`function_choice`
:
'''@nni.function_choice(max_pool(h_conv1, self.pool_size),avg_pool(h_conv1, self.pool_size),name=max_pool)'''
通过这种方式,不需要修改任何代码,代码既可以直接运行,又可以使用 NNI 来调参。
通过这种方法,能够轻松的在 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)`
变量可以是范围 [0, upper) 中的任意整数。
`'''@nni.variable(sampling_algo, name)'''`
3.
`@nni.variable(nni.uniform(low, high),name=variable)`
变量值会是 low 和 high 之间均匀分布的某个值。
`@nni.variable`
用来标记变量。
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)`
变量值是 exp(uniform(low, high)) 的点,数值以对数均匀分布
。
-
**sampling_algo**
: 指定搜索空间的采样算法。 可将其换成 NNI 支持的其它采样函数,函数要以
`nni.`
开头。例如,
`choice`
或
`uniform`
,详见
[
SearchSpaceSpec
](
https://nni.readthedocs.io/zh/latest/SearchSpaceSpec.html
)
。
-
**name**
: 将被赋值的变量名称。 注意,此参数应该与下面一行等号左边的值相同
。
6.
`@nni.variable(nni.qloguniform(low, high, q),name=variable)`
变量值会是 low 和 high 之间均匀分布的某个值,公式为:round(exp(uniform(low, high)) / q)
*
q
NNI 支持如下 10 种类型来表示搜索空间:
7.
`@nni.variable(nni.normal(label, mu, sigma),name=variable)`
变量值为正态分布的实数值,平均值为 mu,标准方差为 sigma。
-
`@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
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)`
变量值分布的公式为: exp(normal(mu, sigma))
```python
'''@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)`
变量值分布的公式为: round(exp(normal(mu, sigma)) / q)
*
q
\ No newline at end of file
### 2. 函数
`'''@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