Commit ba8dccd6 authored by suiguoxin's avatar suiguoxin
Browse files

Merge branch 'master' of https://github.com/microsoft/nni

parents 56a1575b 150ee83a
...@@ -28,12 +28,6 @@ Currently we support installation on Linux, Mac and Windows(local, remote and pa ...@@ -28,12 +28,6 @@ Currently we support installation on Linux, Mac and Windows(local, remote and pa
## **Installation on Windows** ## **Installation on Windows**
When you use PowerShell to run script for the first time, you need **run PowerShell as administrator** with this command:
```powershell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
```
Anaconda or Miniconda is highly recommended. Anaconda or Miniconda is highly recommended.
* __Install NNI through pip__ * __Install NNI through pip__
...@@ -48,12 +42,10 @@ Set-ExecutionPolicy -ExecutionPolicy Unrestricted ...@@ -48,12 +42,10 @@ Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Prerequisite: `python >=3.5`, `git`, `PowerShell`. Prerequisite: `python >=3.5`, `git`, `PowerShell`.
you can install NNI as administrator or current user as follows:
```bash ```bash
git clone -b v0.8 https://github.com/Microsoft/nni.git git clone -b v0.8 https://github.com/Microsoft/nni.git
cd nni cd nni
powershell .\install.ps1 powershell -ExecutionPolicy Bypass -file install.ps1
``` ```
## **System requirements** ## **System requirements**
......
...@@ -21,16 +21,6 @@ For other examples you need to change trial command `python3` into `python` in e ...@@ -21,16 +21,6 @@ For other examples you need to change trial command `python3` into `python` in e
Make sure C++ 14.0 compiler installed. Make sure C++ 14.0 compiler installed.
>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
### Fail to run PowerShell when install NNI from source
If you run PowerShell script for the first time and did not set the execution policies for executing the script, you will meet this error below. Try to run PowerShell as administrator with this command first:
```bash
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
```
>...cannot be loaded because running scripts is disabled on this system.
### Trial failed with missing DLL in command line or PowerShell ### Trial failed with missing DLL in command line or PowerShell
This error caused by missing LIBIFCOREMD.DLL and LIBMMD.DLL and fail to install SciPy. Using Anaconda or Miniconda with Python(64-bit) can solve it. This error caused by missing LIBIFCOREMD.DLL and LIBMMD.DLL and fail to install SciPy. Using Anaconda or Miniconda with Python(64-bit) can solve it.
...@@ -38,11 +28,7 @@ This error caused by missing LIBIFCOREMD.DLL and LIBMMD.DLL and fail to install ...@@ -38,11 +28,7 @@ This error caused by missing LIBIFCOREMD.DLL and LIBMMD.DLL and fail to install
### Trial failed on webUI ### Trial failed on webUI
Please check the trial log file stderr for more details. If there is no such file and NNI is installed through pip, then you need to run PowerShell as administrator with this command first: Please check the trial log file stderr for more details.
```bash
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
```
If there is a stderr file, please check out. Two possible cases are as follows: If there is a stderr file, please check out. Two possible cases are as follows:
......
...@@ -10,11 +10,7 @@ We support Linux MacOS and Windows in current stage, Ubuntu 16.04 or higher, Mac ...@@ -10,11 +10,7 @@ We support Linux MacOS and Windows in current stage, Ubuntu 16.04 or higher, Mac
``` ```
#### Windows #### Windows
If you are using NNI on Windows, you need run below PowerShell command as administrator at first time.
```bash
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
```
Then install nni through pip:
```bash ```bash
python -m pip install --upgrade nni python -m pip install --upgrade nni
``` ```
......
...@@ -144,7 +144,7 @@ export NNI_TRIAL_SEQ_ID=1 ...@@ -144,7 +144,7 @@ export NNI_TRIAL_SEQ_ID=1
export MULTI_PHASE=false export MULTI_PHASE=false
export CUDA_VISIBLE_DEVICES= export CUDA_VISIBLE_DEVICES=
eval python3 mnist.py 2>/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$/stderr eval python3 mnist.py 2>/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$/stderr
echo $? `date +%s000` >/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$/.nni/state echo $? `date +%s%3N` >/home/user_name/nni/experiments/$experiment_id$/trials/$trial_id$/.nni/state
``` ```
### Other Modes ### Other Modes
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Assessor 的介绍: NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Assessor 的介绍:
注意:点击 **Assessor 的名称**跳转到算法的详细描述,点击**用法**看到 Assessor 的安装要求、建议场景和使用样例等等 注意:点击 **Assessor 的名称**可看到 Assessor 的安装需求,建议场景以及示例。 算法的详细说明在每个 Assessor 建议场景的最后
当前支持的 Assessor: 当前支持的 Assessor:
...@@ -25,7 +25,7 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 As ...@@ -25,7 +25,7 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 As
**建议场景** **建议场景**
适用于各种性能曲线,可用到各种场景中来加速优化过程。 适用于各种性能曲线,可用到各种场景中来加速优化过程。 [详细说明](./MedianstopAssessor.md)
**参数** **参数**
...@@ -53,7 +53,7 @@ assessor: ...@@ -53,7 +53,7 @@ assessor:
**建议场景** **建议场景**
适用于各种性能曲线,可用到各种场景中来加速优化过程。 更好的地方是,它能处理并评估性能类似的曲线。 适用于各种性能曲线,可用到各种场景中来加速优化过程。 更好的地方是,它能处理并评估性能类似的曲线。 [详细说明](./CurvefittingAssessor.md)
**参数** **参数**
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tuner 的简单介绍: NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tuner 的简单介绍:
注意:点击 **Tuner 的名称**跳转到算法的详细描述,点击**用法**看到 Tuner 的安装要求、建议场景和使用样例等等。 [此文章](./CommunitySharings/HPOComparison.md)对比了不同 Tuner 在几个问题下的不同效果。 注意:点击 **Tuner 的名称**可看到 Tuner 的安装需求,建议场景以及示例。 算法的详细说明在每个 Tuner 建议场景的最后。 [本文](./CommunitySharings/HpoComparision.md)对比了不同 Tuner 在几个问题下的不同效果。
当前支持的 Tuner: 当前支持的 Tuner:
...@@ -36,13 +36,13 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tu ...@@ -36,13 +36,13 @@ NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tu
**建议场景** **建议场景**
TPE 是一种黑盒优化方法,可以使用在各种场景中,通常情况下都能得到较好的结果。 特别是在计算资源有限,只能运行少量 Trial 的情况。 大量的实验表明,TPE 的性能远远优于随机搜索。 TPE 是一种黑盒优化方法,可以使用在各种场景中,通常情况下都能得到较好的结果。 特别是在计算资源有限,只能运行少量 Trial 的情况。 大量的实验表明,TPE 的性能远远优于随机搜索。 [详细说明](./HyperoptTuner.md)
**参数** **参数**
* **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。 * **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -62,13 +62,13 @@ tuner: ...@@ -62,13 +62,13 @@ tuner:
**建议场景** **建议场景**
在每个 Trial 运行时间不长(例如,能够非常快的完成,或者很快的被 Assessor 终止),并有充足计算资源的情况下。 或者需要均匀的探索搜索空间。 随机搜索可作为搜索算法的基准线。 在每个 Trial 运行时间不长(例如,能够非常快的完成,或者很快的被 Assessor 终止),并有充足计算资源的情况下。 或者需要均匀的探索搜索空间。 随机搜索可作为搜索算法的基准线。 [详细说明](./HyperoptTuner.md)
**参数** **参数**
* **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。 * **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -86,13 +86,13 @@ tuner: ...@@ -86,13 +86,13 @@ tuner:
**建议场景** **建议场景**
当每个 Trial 的时间不长,并且有足够的计算资源时使用(与随机搜索基本相同)。 或者搜索空间的变量能从一些先验分布中采样。 当每个 Trial 的时间不长,并且有足够的计算资源时使用(与随机搜索基本相同)。 或者搜索空间的变量能从一些先验分布中采样。 [详细说明](./HyperoptTuner.md)
**参数** **参数**
* **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。 * **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -112,9 +112,9 @@ tuner: ...@@ -112,9 +112,9 @@ tuner:
**建议场景** **建议场景**
此算法对计算资源的需求相对较高。 需要非常大的初始种群,以免落入局部最优中。 如果 Trial 时间很短,或者使用了 Assessor,就非常适合此算法。 如果 Trial 代码支持权重迁移,即每次 Trial 会从上一轮继承已经收敛的权重,建议使用此算法。 这会大大提高训练速度。 此算法对计算资源的需求相对较高。 需要非常大的初始种群,以免落入局部最优中。 如果 Trial 时间很短,或者使用了 Assessor,就非常适合此算法。 如果 Trial 代码支持权重迁移,即每次 Trial 会从上一轮继承已经收敛的权重,建议使用此算法。 这会大大提高训练速度。 [详细说明](./EvolutionTuner.md)
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -144,13 +144,13 @@ nnictl package install --name=SMAC ...@@ -144,13 +144,13 @@ nnictl package install --name=SMAC
**建议场景** **建议场景**
与 TPE 类似,SMAC 也是一个可以被用在各种场景中的黑盒 Tuner。在计算资源有限时,也可以使用。 此算法为离散超参而优化,因此,如果大部分超参是离散值时,建议使用此算法。 与 TPE 类似,SMAC 也是一个可以被用在各种场景中的黑盒 Tuner。在计算资源有限时,也可以使用。 此算法为离散超参而优化,因此,如果大部分超参是离散值时,建议使用此算法。 [详细说明](./SmacTuner.md)
**参数** **参数**
* **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。 * **optimize_mode** (*maximize 或 minimize, 可选项, 默认值为 maximize*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -170,9 +170,9 @@ tuner: ...@@ -170,9 +170,9 @@ tuner:
**建议场景** **建议场景**
如果 Experiment 配置已确定,可通过 `choice` 将它们罗列到搜索空间文件中运行即可。 如果 Experiment 配置已确定,可通过 `choice` 将它们罗列到搜索空间文件中运行即可。 [详细说明](./BatchTuner.md)
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -211,9 +211,9 @@ tuner: ...@@ -211,9 +211,9 @@ tuner:
注意,搜索空间仅支持 `choice`, `quniform`, `qloguniform``quniform``qloguniform` 中的 **数字 `q` 有不同的含义(与[搜索空间](./SearchSpaceSpec.md)说明不同)。 这里的意义是在 `low``high` 之间均匀取值的数量。</p> 注意,搜索空间仅支持 `choice`, `quniform`, `qloguniform``quniform``qloguniform` 中的 **数字 `q` 有不同的含义(与[搜索空间](./SearchSpaceSpec.md)说明不同)。 这里的意义是在 `low``high` 之间均匀取值的数量。</p>
当搜索空间比较小,能够遍历整个搜索空间。 当搜索空间比较小,能够遍历整个搜索空间。 [详细说明](./GridsearchTuner.md)
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -231,7 +231,7 @@ tuner: ...@@ -231,7 +231,7 @@ tuner:
**建议场景** **建议场景**
当搜索空间很大,但计算资源有限时建议使用。 中间结果能够很好的反映最终结果的情况下,此算法会非常有效。 当搜索空间很大,但计算资源有限时建议使用。 中间结果能够很好的反映最终结果的情况下,此算法会非常有效。 [详细说明](./HyperbandAdvisor.md)
**参数** **参数**
...@@ -239,7 +239,7 @@ tuner: ...@@ -239,7 +239,7 @@ tuner:
* **R** (*int, 可选, 默认为 60*) - 分配给 Trial 的最大资源(可以是 mini-batches 或 epochs 的数值)。 每个 Trial 都需要用 TRIAL_BUDGET 来控制运行的步数。 * **R** (*int, 可选, 默认为 60*) - 分配给 Trial 的最大资源(可以是 mini-batches 或 epochs 的数值)。 每个 Trial 都需要用 TRIAL_BUDGET 来控制运行的步数。
* **eta** (*int, 可选, 默认为 3*) - `(eta-1)/eta` 是丢弃 Trial 的比例。 * **eta** (*int, 可选, 默认为 3*) - `(eta-1)/eta` 是丢弃 Trial 的比例。
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -265,7 +265,7 @@ advisor: ...@@ -265,7 +265,7 @@ advisor:
**建议场景** **建议场景**
需要将深度学习方法应用到自己的任务(自己的数据集)上,但不清楚该如何选择或设计网络。 可修改[样例](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism/cifar10/cifar10_keras.py)来适配自己的数据集和数据增强方法。 也可以修改批处理大小,学习率或优化器。 它可以为不同的任务找到好的网络架构。 当前,此 Tuner 仅支持视觉领域。 需要将深度学习方法应用到自己的任务(自己的数据集)上,但不清楚该如何选择或设计网络。 可修改[样例](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism/cifar10/cifar10_keras.py)来适配自己的数据集和数据增强方法。 也可以修改批处理大小,学习率或优化器。 它可以为不同的任务找到好的网络架构。 当前,此 Tuner 仅支持视觉领域。 [详细说明](./NetworkmorphismTuner.md)
**参数** **参数**
...@@ -275,7 +275,7 @@ advisor: ...@@ -275,7 +275,7 @@ advisor:
* **input_channel** (*int, 可选, 默认为 3*) - 输入图像的通道数 * **input_channel** (*int, 可选, 默认为 3*) - 输入图像的通道数
* **n_output_node** (*int, 可选, 默认为 10*) - 输出分类的数量 * **n_output_node** (*int, 可选, 默认为 10*) - 输出分类的数量
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -299,19 +299,15 @@ tuner: ...@@ -299,19 +299,15 @@ tuner:
注意,搜索空间仅支持 `choice`, `quniform`, `uniform``randint` 注意,搜索空间仅支持 `choice`, `quniform`, `uniform``randint`
**安装**
Metis Tuner 需要先安装 [sklearn](https://scikit-learn.org/)。 可通过 `pip3 install sklearn` 命令来安装。
**建议场景** **建议场景**
与 TPE 和 SMAC 类似,Metis 是黑盒 Tuner。 如果系统需要很长时间才能完成一次 Trial,Metis 就比随机搜索等其它方法要更合适。 此外,Metis 还为接下来的 Trial 提供了候选。 如何使用 Metis 的[样例](https://github.com/Microsoft/nni/tree/master/examples/trials/auto-gbdt/search_space_metis.json)。 通过调用 NNI 的 SDK,用户只需要发送 `精度` 这样的最终结果给 Tuner。 与 TPE 和 SMAC 类似,Metis 是黑盒 Tuner。 如果系统需要很长时间才能完成一次 Trial,Metis 就比随机搜索等其它方法要更合适。 此外,Metis 还为接下来的 Trial 提供了候选。 如何使用 Metis 的[样例](https://github.com/Microsoft/nni/tree/master/examples/trials/auto-gbdt/search_space_metis.json)。 通过调用 NNI 的 SDK,用户只需要发送`精度`这样的最终结果给 Tuner。 [详细说明](./MetisTuner.md)
**参数** **参数**
* **optimize_mode** (*'maximize' 或 'minimize', 可选项, 默认值为 'maximize'*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。 * **optimize_mode** (*'maximize' 或 'minimize', 可选项, 默认值为 'maximize'*) - 如果为 'maximize',表示 Tuner 的目标是将指标最大化。 如果为 'minimize',表示 Tuner 的目标是将指标最小化。
**使用样例:** **示例**
```yaml ```yaml
# config.yml # config.yml
...@@ -339,7 +335,7 @@ nnictl package install --name=BOHB ...@@ -339,7 +335,7 @@ nnictl package install --name=BOHB
**建议场景** **建议场景**
与 Hyperband 类似, 当计算资源有限但搜索空间相对较大时, 建议使用此方法。 中间结果能够很好的反映最终结果的情况下,此算法会非常有效。 在这种情况下, 由于贝叶斯优化使用, 它可能会收敛到更好的配置。 与 Hyperband 类似, 当计算资源有限但搜索空间相对较大时, 建议使用此方法。 中间结果能够很好的反映最终结果的情况下,此算法会非常有效。 在这种情况下, 由于贝叶斯优化使用, 它可能会收敛到更好的配置。 [详细说明](./BohbAdvisor.md)
**参数** **参数**
...@@ -356,7 +352,7 @@ nnictl package install --name=BOHB ...@@ -356,7 +352,7 @@ nnictl package install --name=BOHB
*目前 NNI 的浮点类型仅支持十进制表示,必须使用 0.333 来代替 1/3,0.001代替 1e-3。* *目前 NNI 的浮点类型仅支持十进制表示,必须使用 0.333 来代替 1/3,0.001代替 1e-3。*
**使用样例:** **示例**
```yml ```yml
advisor: advisor:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment