From ec7fdb69652546fb62af7eec696e9b3de9fc6860 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Fri, 28 Dec 2018 14:53:01 +0800 Subject: [PATCH 01/29] initial commit for document refactor (#533) * enable sphinx * fix docs/readme link * update conf * use mkdocs to build homepage * Update mkdocs.yml use docs/README as main * delete sphinx file * add nav to mkdocs config * fix mkdocs bug * add requirement for online build * clean requirements.txt * add contribution * change requirements file location * delete sphinx from gitignore --- docs/README.md | 129 ++++++++++++++++++++++++++++++++++++++++++ docs/requirements.txt | 1 + mkdocs.yml | 25 ++++++++ 3 files changed, 155 insertions(+) create mode 100644 docs/README.md create mode 100644 docs/requirements.txt create mode 100644 mkdocs.yml diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..193307cf6f --- /dev/null +++ b/docs/README.md @@ -0,0 +1,129 @@ +

+drawing +

+ +----------- + +[![MIT licensed](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE) +[![Build Status](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) +[![Issues](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) +[![Bugs](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) +[![Pull Requests](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) +[![Version](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) [![Join the chat at https://gitter.im/Microsoft/nni](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning (AutoML) experiments. +The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. + +

+drawing +

+ +## **Who should consider using NNI** +* Those who want to try different AutoML algorithms in their training code (model) at their local machine. +* Those who want to run AutoML trial jobs in different environments to speed up search (e.g. remote servers and cloud). +* Researchers and data scientists who want to implement their own AutoML algorithms and compare it with other algorithms. +* ML Platform owners who want to support AutoML in their platform. + +## **Install & Verify** + +**Install through pip** +* We support Linux and MacOS in current stage, Ubuntu 16.04 or higher, along with MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. +```bash + python3 -m pip install --user --upgrade nni +``` +* Note: + * If you are in docker container (as root), please remove `--user` from the installation command. + * If there is any error like `Segmentation fault`, please refer to [FAQ](FAQ.md) + +**Install through source code** +* We support Linux (Ubuntu 16.04 or higher), MacOS (10.14.1) in our current stage. +* Run the following commands in an environment that has `python >= 3.5`, `git` and `wget`. +```bash + git clone -b v0.4.1 https://github.com/Microsoft/nni.git + cd nni + source install.sh +``` + +For the system requirements of NNI, please refer to [Install NNI](Installation.md) + +**Verify install** + +The following example is an experiment built on TensorFlow. Make sure you have **TensorFlow installed** before running it. +* Download the examples via clone the source code. +```bash + git clone -b v0.4.1 https://github.com/Microsoft/nni.git +``` +* Run the mnist example. +```bash + nnictl create --config nni/examples/trials/mnist/config.yml +``` + +* Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. You can explore the experiment using the `Web UI url`. +``` +INFO: Starting restful server... +INFO: Successfully started Restful server! +INFO: Setting local config... +INFO: Successfully set local config! +INFO: Starting experiment... +INFO: Successfully started experiment! +----------------------------------------------------------------------- +The experiment id is egchD4qy +The Web UI urls are: http://223.255.255.1:8080 http://127.0.0.1:8080 +----------------------------------------------------------------------- + +You can use these commands to get more information about the experiment +----------------------------------------------------------------------- + commands description +1. nnictl experiment show show the information of experiments +2. nnictl trial ls list all of trial jobs +3. nnictl log stderr show stderr log content +4. nnictl log stdout show stdout log content +5. nnictl stop stop an experiment +6. nnictl trial kill kill a trial job by id +7. nnictl --help get help information about nnictl +----------------------------------------------------------------------- +``` + +* Open the `Web UI url` in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. [Here](WebUI.md) are more Web UI pages. + + + + +
drawingdrawing
+ +## **Documentation** +* [NNI overview](Overview.md) +* [Quick start](GetStarted.md) + +## **How to** +* [Install NNI](Installation.md) +* [Use command line tool nnictl](NNICTLDOC.md) +* [Use NNIBoard](WebUI.md) +* [How to define search space](SearchSpaceSpec.md) +* [How to define a trial](howto_1_WriteTrial.md) +* [Config an experiment](ExperimentConfig.md) +* [How to use annotation](howto_1_WriteTrial.md#nni-python-annotation) +## **Tutorials** +* [Run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) +* [Run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) +* [Run an experiment on OpenPAI?](PAIMode.md) +* [Run an experiment on Kubeflow?](KubeflowMode.md) +* [Try different tuners and assessors](tutorial_3_tryTunersAndAssessors.md) +* [Implement a customized tuner](howto_2_CustomizedTuner.md) +* [Implement a customized assessor](../examples/assessors/README.md) +* [Use Genetic Algorithm to find good model architectures for Reading Comprehension task](../examples/trials/ga_squad/README.md) + +## **Contribute** +This project welcomes contributions and suggestions, we use [GitHub issues](https://github.com/Microsoft/nni/issues) for tracking requests and bugs. + +Issues with the **good first issue** label are simple and easy-to-start ones that we recommend new contributors to start with. + +To set up environment for NNI development, refer to the instruction: [Set up NNI developer environment](SetupNNIDeveloperEnvironment.md) + +Before start coding, review and get familiar with the NNI Code Contribution Guideline: [Contributing](CONTRIBUTING.md) + +We are in construction of the instruction for [How to Debug](HowToDebug.md), you are also welcome to contribute questions or suggestions on this area. + +## **License** +The entire codebase is under [MIT license](https://github.com/Microsoft/nni/blob/master/LICENSE) + diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000000..baf208dd99 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1 @@ +mkdocs==1.0.4 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000000..3fbe9a63f1 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,25 @@ +site_name: Neural Network Intelligence + +nav: + - Overview: README.md + - What's New: RELEASE.md + - Tutorials: + - QuickStart: GetStarted.md + - Installation: Installation.md + - Trial HowTo: howto_1_WriteTrial.md + - WebUI: WebUI.md + - Tuners: HowToChooseTuner.md + - Training Platform: + - Remote: RemoteMachineMode.md + - PAI: PAIMode.md + - Kubeflow: KubeflowMode.md + - Reference: + - nnictl: NNICTLDOC.md + - Configuration: ExperimentConfig.md + - Search Space: SearchSpaceSpec.md + - Annotation: AnnotationSpec.md + - Contribution: + - Development Setup: SetupNNIDeveloperEnvironment.md + - Contribution Guide: CONTRIBUTING.md + - Debug HowTO: HowToDebug.md +theme: readthedocs From 1b4684f336959b536adc284bdd55100568fd6613 Mon Sep 17 00:00:00 2001 From: QuanluZhang Date: Mon, 7 Jan 2019 14:51:09 +0800 Subject: [PATCH 02/29] mnist examples doc (#566) * mnist examples doc * update * update * update * update * update --- docs/mnist_examples.md | 68 ++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 2 ++ 2 files changed, 70 insertions(+) create mode 100644 docs/mnist_examples.md diff --git a/docs/mnist_examples.md b/docs/mnist_examples.md new file mode 100644 index 0000000000..3ee443b948 --- /dev/null +++ b/docs/mnist_examples.md @@ -0,0 +1,68 @@ +# MNIST examples + +CNN MNIST classifier for deep learning is similar to `hello world` for programming languages. Thus, we use MNIST as example to introduce different features of NNI. The examples are listed below: + + - [MNIST with NNI API](#mnist) + - [MNIST with NNI annotation](#mnist-annotation) + - [MNIST in keras](#mnist-keras) + - [MNIST -- tuning with batch tuner](#mnist-batch) + - [MNIST -- tuning with hyperband](#mnist-hyperband) + - [MNIST -- tuning within a nested search space](#mnist-nested) + - [distributed MNIST (tensorflow) using kubeflow](#mnist-kubeflow-tf) + - [distributed MNIST (pytorch) using kubeflow](#mnist-kubeflow-pytorch) + + +**MNIST with NNI API** + +This is a simple network which has two convolutional layers, two pooling layers and a fully connected layer. We tune hyperparameters, such as dropout rate, convolution size, hidden size, etc. It can be tuned with most NNI built-in tuners, such as TPE, SMAC, Random. We also provide an exmaple yaml file which enables assessor. + +`code directory: examples/trials/mnist/` + + +**MNIST with NNI annotation** + +This example is similar to the example above, the only difference is that this example uses NNI annotation to specify search space and report results, while the example above uses NNI apis to receive configuration and report results. + +`code directory: examples/trials/mnist-annotation/` + + +**MNIST in keras** + +This example is implemented in keras. It is also a network for MNIST dataset, with two convolution layers, one pooling layer, and two fully connected layers. + +`code directory: examples/trials/mnist-keras/` + + +**MNIST -- tuning with batch tuner** + +This example is to show how to use batch tuner. Users simply list all the configurations they want to try in the search space file. NNI will try all of them. + +`code directory: examples/trials/mnist-batch-tune-keras/` + + +**MNIST -- tuning with hyperband** + +This example is to show how to use hyperband to tune the model. There is one more key `STEPS` in the received configuration for trials to control how long it can run (e.g., number of iterations). + +`code directory: examples/trials/mnist-hyperband/` + + +**MNIST -- tuning within a nested search space** + +This example is to show that NNI also support nested search space. The search space file is an example of how to define nested search space. + +`code directory: examples/trials/mnist-cascading-search-space/` + + +**distributed MNIST (tensorflow) using kubeflow** + +This example is to show how to run distributed training on kubeflow through NNI. Users can simply provide distributed training code and a configure file which specifies the kubeflow mode. For example, what is the command to run ps and what is the command to run worker, and how many resources they consume. This example is implemented in tensorflow, thus, uses kubeflow tensorflow operator. + +`code directory: examples/trials/mnist-distributed/` + + +**distributed MNIST (pytorch) using kubeflow** + +Similar to the previous example, the difference is that this example is implemented in pytorch, thus, it uses kubeflow pytorch operator. + +`code directory: examples/trials/mnist-distributed-pytorch/` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 3fbe9a63f1..a9230c3fc3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -13,6 +13,8 @@ nav: - Remote: RemoteMachineMode.md - PAI: PAIMode.md - Kubeflow: KubeflowMode.md + - Examples: + - MNIST Examples: mnist_examples.md - Reference: - nnictl: NNICTLDOC.md - Configuration: ExperimentConfig.md From c008d0c0ec9c521f7783c965c2f4947a1309277c Mon Sep 17 00:00:00 2001 From: ShufanHuang Date: Tue, 15 Jan 2019 14:26:09 +0800 Subject: [PATCH 03/29] Docs refactor of Tutorial (QuickStart, Tuners, Assessors) (#554) * Refactor of QuickStart * fix some typo * Make new changes based on suggestions * update successful INFO * update Tuners * update Tuners:overview * Update Tuners.md * Add Assessor.md * update * update * mkdocs.yml * Update QuickStart.md * update * update * update * update * update * add diff * modified QuickStart.md and add mnist without nni example * update * small change * update * update * update * update * update and refactor the mnist.py * update * update working process * refator the mnist.py * update * update * update mkdocs.md * add metis tuner * update QuickStart webUI part * update capture * update capture * update description * update picture for assessor * update * modified mkdocs.yml * update Tuners.md * test format * update Tuner.md * update Tuner.md * change display format * fix typo * update * fix typo * fix typo and rename customize_Advisor * fix typo and modified --- docs/Assessors.md | 90 +++++ ...tomizedAdvisor.md => Customize_Advisor.md} | 0 docs/Customize_Assessor.md | 66 ++++ docs/Customize_Tuner.md | 118 +++++++ docs/QuickStart.md | 248 ++++++++++++++ docs/Tuners.md | 324 ++++++++++++++++++ docs/img/Assessor.png | Bin 0 -> 122219 bytes docs/img/QuickStart1.png | Bin 0 -> 166032 bytes docs/img/QuickStart2.png | Bin 0 -> 69220 bytes docs/img/QuickStart3.png | Bin 0 -> 94429 bytes docs/img/QuickStart4.png | Bin 0 -> 298514 bytes docs/img/QuickStart5.png | Bin 0 -> 73213 bytes docs/img/QuickStart6.png | Bin 0 -> 121123 bytes docs/img/QuickStart7.png | Bin 0 -> 37560 bytes examples/trials/mnist/config_assessor.yml | 6 +- examples/trials/mnist/mnist.py | 75 ++-- examples/trials/mnist/mnist_before.py | 219 ++++++++++++ mkdocs.yml | 11 +- 18 files changed, 1117 insertions(+), 40 deletions(-) create mode 100644 docs/Assessors.md rename docs/{howto_3_CustomizedAdvisor.md => Customize_Advisor.md} (100%) create mode 100644 docs/Customize_Assessor.md create mode 100644 docs/Customize_Tuner.md create mode 100644 docs/QuickStart.md create mode 100644 docs/Tuners.md create mode 100644 docs/img/Assessor.png create mode 100644 docs/img/QuickStart1.png create mode 100644 docs/img/QuickStart2.png create mode 100644 docs/img/QuickStart3.png create mode 100644 docs/img/QuickStart4.png create mode 100644 docs/img/QuickStart5.png create mode 100644 docs/img/QuickStart6.png create mode 100644 docs/img/QuickStart7.png create mode 100644 examples/trials/mnist/mnist_before.py diff --git a/docs/Assessors.md b/docs/Assessors.md new file mode 100644 index 0000000000..0d3c0632a4 --- /dev/null +++ b/docs/Assessors.md @@ -0,0 +1,90 @@ +# Assessors + +## Overview + +In order to save our computing resources, NNI supports an early stop policy and creates **Assessor** to finish this job. + +Assessor receives the intermediate result from Trial and decides whether the Trial should be killed by specific algorithm. Once the Trial experiment meets the early stop conditions(which means assessor is pessimistic about the final results), the assessor will kill the trial and the status of trial will be `"EARLY_STOPPED"`. + +Here is an experimental result of MNIST after using 'Curvefitting' Assessor in 'maximize' mode, you can see that assessor successfully **early stopped** many trials with bad hyperparameters in advance. If you use assessor, we may get better hyperparameters under the same computing resources. + +*Implemented code directory: [config_assessor.yml][5]* + +![](./img/Assessor.png) + +NNI provides the-state-of-art tuning algorithm in our builtin-assessors and makes them easy to use. Below is the brief overview of NNI current builtin Assessors: + +|Assessor|Brief Introduction of Algorithm| +|---|---| +|**Medianstop**
[(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper][1]. It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress.| +|[Curvefitting][2]
[(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance.| + +
+ +## Usage of Builtin Assessors + +Use builtin assessors provided by NNI sdk requires to declare the **builtinAssessorName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirements, and example for each assessor. + +Note: Please follow the format when you write your `config.yml` file. + + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Median Stop Assessor` + +> Builtin Assessor Name: **Medianstop** + +**Suggested scenario** + +It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', assessor will **stop** the trial with smaller expectation. If 'minimize', assessor will **stop** the trial with larger expectation. +* **start_step** (*int, optional, default = 0*) - A trial is determined to be stopped or not, only after receiving start_step number of reported intermediate results. + +**Usage example:** + +```yaml +# config.yml +assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize + start_step: 5 +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Curve Fitting Assessor` + +> Builtin Assessor Name: **Curvefitting** + +**Suggested scenario** + +It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance. + +**Requirement of classArg** + +* **epoch_num** (*int, **required***) - The total number of epoch. We need to know the number of epoch to determine which point we need to predict. +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', assessor will **stop** the trial with smaller expectation. If 'minimize', assessor will **stop** the trial with larger expectation. +* **start_step** (*int, optional, default = 6*) - A trial is determined to be stopped or not, we start to predict only after receiving start_step number of reported intermediate results. +* **threshold** (*float, optional, default = 0.95*) - The threshold that we decide to early stop the worse performance curve. For example: if threshold = 0.95, optimize_mode = maximize, best performance in the history is 0.9, then we will stop the trial which predict value is lower than 0.95 * 0.9 = 0.855. + +**Usage example:** + +```yaml +# config.yml +assessor: + builtinAssessorName: Curvefitting + classArgs: + epoch_num: 20 + optimize_mode: maximize + start_step: 6 + threshold: 0.95 +``` + +[1]: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf +[2]: https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md +[5]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/config_assessor.yml \ No newline at end of file diff --git a/docs/howto_3_CustomizedAdvisor.md b/docs/Customize_Advisor.md similarity index 100% rename from docs/howto_3_CustomizedAdvisor.md rename to docs/Customize_Advisor.md diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md new file mode 100644 index 0000000000..2b2e8b9dd3 --- /dev/null +++ b/docs/Customize_Assessor.md @@ -0,0 +1,66 @@ +# Customize-Assessor + +## Customize Assessor + +NNI also support building a assessor by yourself to adjust your tuning demand. + +If you want to implement a customized Assessor, there are three things for you to do: + +1) Inherit a assessor of a base Assessor class +2) Implement assess_trial function +3) Write a script to run Assessor + +**1. Inherit an assessor of a base Assessor class** + +```python +from nni.assessor import Assessor + +class CustomizedAssessor(Assessor): + def __init__(self, ...): + ... +``` + +**2. Implement assess trial function** +```python +from nni.assessor import Assessor, AssessResult + +class CustomizedAssessor(Assessor): + def __init__(self, ...): + ... + + def assess_trial(self, trial_history): + """ + Determines whether a trial should be killed. Must override. + trial_history: a list of intermediate result objects. + Returns AssessResult.Good or AssessResult.Bad. + """ + # you code implement here. + ... +``` + +**3. Write a script to run Assessor** + +```python +import argparse + +import CustomizedAssessor + +def main(): + parser = argparse.ArgumentParser(description='parse command line parameters.') + # parse your assessor arg here. + ... + FLAGS, unparsed = parser.parse_known_args() + + assessor = CustomizedAssessor(...) + assessor.run() + +main() +``` + +Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assesor by using SDK `report_intermediate_result` function. + +Also, user could override the `run` function in Assessor to control the process logic. + +More detail example you could see: +> * [medianstop-assessor](../src/sdk/pynni/nni/medianstop_assessor) +> * [curvefitting-assessor](../src/sdk/pynni/nni/curvefitting_assessor) \ No newline at end of file diff --git a/docs/Customize_Tuner.md b/docs/Customize_Tuner.md new file mode 100644 index 0000000000..8092dff215 --- /dev/null +++ b/docs/Customize_Tuner.md @@ -0,0 +1,118 @@ +# Customize-Tuner + +## Customize Tuner + +NNI provides the-state-of-art tuning algorithm in our builtin-tuners. But we also support building a tuner by yourself to adjust your tuning demand. + +If you want to implement and use your own tuning algorithm, you can implement a customized Tuner, there are three things for you to do: + +1) Inherit a tuner of a base Tuner class +2) Implement receive_trial_result and generate_parameter function +3) Configure your customized tuner in experiment yaml config file + +Here is an example: + +**1. Inherit a tuner of a base Tuner class** + +```python +from nni.tuner import Tuner + +class CustomizedTuner(Tuner): + def __init__(self, ...): + ... +``` + +**2. Implement receive_trial_result and generate_parameter function** + +```python +from nni.tuner import Tuner + +class CustomizedTuner(Tuner): + def __init__(self, ...): + ... + + def receive_trial_result(self, parameter_id, parameters, value): + ''' + Record an observation of the objective function and Train + parameter_id: int + parameters: object created by 'generate_parameters()' + value: final metrics of the trial, including default matrix + ''' + # your code implements here. + ... + + def generate_parameters(self, parameter_id): + ''' + Returns a set of trial (hyper-)parameters, as a serializable object + parameter_id: int + ''' + # your code implements here. + return your_parameters + ... +``` + +`receive_trial_result` will receive the `parameter_id, parameters, value` as parameters input. Also, Tuner will receive the `value` object are exactly same value that Trial send. + +The `your_parameters` return from `generate_parameters` function, will be package as json object by NNI SDK. NNI SDK will unpack json object so the Trial will receive the exact same `your_parameters` from Tuner. + +For example: +If the you implement the `generate_parameters` like this: + +```python + +def generate_parameters(self, parameter_id): + ''' + Returns a set of trial (hyper-)parameters, as a serializable object + parameter_id: int + ''' + # your code implements here. + return {"dropout": 0.3, "learning_rate": 0.4} + +``` + +It means your Tuner will always generate parameters `{"dropout": 0.3, "learning_rate": 0.4}`. Then Trial will receive `{"dropout": 0.3, "learning_rate": 0.4}` by calling API `nni.get_next_parameter()`. Once the trial ends with a result (normally some kind of metrics), it can send the result to Tuner by calling API `nni.report_final_result()`, for example `nni.report_final_result(0.93)`. Then your Tuner's `receive_trial_result` function will receied the result like: + +``` + +parameter_id = 82347 +parameters = {"dropout": 0.3, "learning_rate": 0.4} +value = 0.93 + +``` + +**Note that** if you want to access a file (e.g., `data.txt`) in the directory of your own tuner, you cannot use `open('data.txt', 'r')`. Instead, you should use the following: + +``` + +_pwd = os.path.dirname(__file__) +_fd = open(os.path.join(_pwd, 'data.txt'), 'r') + +``` + +This is because your tuner is not executed in the directory of your tuner (i.e., `pwd` is not the directory of your own tuner). + +**3. Configure your customized tuner in experiment yaml config file** + +NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. + +```yaml + +tuner: + codeDir: /home/abc/mytuner + classFileName: my_customized_tuner.py + className: CustomizedTuner + # Any parameter need to pass to your tuner class __init__ constructor + # can be specified in this optional classArgs field, for example + classArgs: + arg1: value1 + +``` + +More detail example you could see: +> * [evolution-tuner](../src/sdk/pynni/nni/evolution_tuner) +> * [hyperopt-tuner](../src/sdk/pynni/nni/hyperopt_tuner) +> * [evolution-based-customized-tuner](../examples/tuners/ga_customer_tuner) + +### Write a more advanced automl algorithm + +The methods above are usually enough to write a general tuner. However, users may also want more methods, for example, intermediate results, trials' state (e.g., the methods in assessor), in order to have a more powerful automl algorithm. Therefore, we have another concept called `advisor` which directly inherits from `MsgDispatcherBase` in [`src/sdk/pynni/nni/msg_dispatcher_base.py`](../src/sdk/pynni/nni/msg_dispatcher_base.py). Please refer to [here](./howto_3_CustomizedAdvisor.md) for how to write a customized advisor. \ No newline at end of file diff --git a/docs/QuickStart.md b/docs/QuickStart.md new file mode 100644 index 0000000000..ed054e019e --- /dev/null +++ b/docs/QuickStart.md @@ -0,0 +1,248 @@ +# QuickStart + +## Installation + +We support Linux and MacOS in current stage, Ubuntu 16.04 or higher, along with MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. + +```bash + python3 -m pip install --upgrade nni +``` + +Note: + +* `--user` can be added if you want to install NNI in your home directory, which does not require any special privileges. +* If there is any error like `Segmentation fault`, please refer to [FAQ][1] +* For the `system requirements` of NNI, please refer to [Install NNI][2] + +## "Hello World" example on MNIST + +NNI is a toolkit to help users run automated machine learning experiments. It can automatically do the cyclic process of getting hyperparameters, running trials, testing results, tuning hyperparameters. Now, we show how to use NNI to help you find the optimal hyperparameters. + +Here is an example script to train a CNN on MNIST dataset **without NNI**: + +```python +def run_trial(params): + # Input data + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + # Build MNIST network + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) + mnist_network.build_network() + + test_acc = 0.0 + with tf.Session() as sess: + # Train MNIST network + mnist_network.train(sess, mnist) + # Evaluate MNIST network + test_acc = mnist_network.evaluate(mnist) + +if __name__ == '__main__': + params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} + run_trial(params) +``` + +Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py][7] + +The above code can only try one set of parameters at a time, if we want to tune learning rate, we need to manually tune the hyperparameters and start the trial again and again. + +NNI is born for helping user do the tuning jobs, the NNI working process is presented below: + +``` +input: search space, trial code, config file +output: one optimal hyperparameter configuration + +1: For t = 0, 1, 2, ..., maxTrialNum, +2: hyperparameter = chose a set of parameter from search space +3: final result = run_trial_and_evaluate(hyperparameter) +4: report final result to NNI +5: If reach the upper limit time, +6: Stop the experiment +7: return hyperparameter value with best final result +``` + +If you want to use NNI to automatically train your model and find the optimal hyper-parameters, you need to do three changes base on your code: + +**Three things required to do when using NNI** + +**Step 1**: Give a `Search Space` file in json, includes the `name` and the `distribution` (discrete valued or continuous valued) of all the hyperparameters you need to search. + +```diff +- params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, +- 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} ++ { ++ "dropout_rate":{"_type":"uniform","_value":[0.5, 0.9]}, ++ "conv_size":{"_type":"choice","_value":[2,3,5,7]}, ++ "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, ++ "batch_size": {"_type":"choice", "_value": [1, 4, 8, 16, 32]}, ++ "learning_rate":{"_type":"choice","_value":[0.0001, 0.001, 0.01, 0.1]} ++ } +``` + +*Implemented code directory: [search_space.json][3]* + +**Step 2**: Modified your `Trial` file to get the hyperparameter set from NNI and report the final result to NNI. + +```diff ++ import nni + + def run_trial(params): + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) + mnist_network.build_network() + + with tf.Session() as sess: + mnist_network.train(sess, mnist) + test_acc = mnist_network.evaluate(mnist) ++ nni.report_final_result(acc) + + if __name__ == '__main__': +- params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, +- 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} ++ params = nni.get_next_parameter() + run_trial(params) +``` + +*Implemented code directory: [mnist.py][4]* + +**Step 3**: Define a `config` file in yaml, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. + +```yaml +authorName: default +experimentName: example_mnist +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +trainingServicePlatform: local +# The path to Search Space +searchSpacePath: search_space.json +useAnnotation: false +tuner: + builtinTunerName: TPE +# The path and the running command of trial +trial: + command: python3 mnist.py + codeDir: . + gpuNum: 0 +``` + +*Implemented code directory: [config.yml][5]* + +All the codes above are already prepared and stored in [examples/trials/mnist/][8]. + +When these things are done, **run the config.yml file from your command line to start the experiment**. + +```bash + nnictl create --config nni/examples/trials/mnist/config.yml +``` + +Note: **nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. Click [here][6] for more usage of `nnictl` + +Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. And this is what we expected to get: + +``` +INFO: Starting restful server... +INFO: Successfully started Restful server! +INFO: Setting local config... +INFO: Successfully set local config! +INFO: Starting experiment... +INFO: Successfully started experiment! +----------------------------------------------------------------------- +The experiment id is egchD4qy +The Web UI urls are: [Your IP]:8080 +----------------------------------------------------------------------- + +You can use these commands to get more information about the experiment +----------------------------------------------------------------------- + commands description +1. nnictl experiment show show the information of experiments +2. nnictl trial ls list all of trial jobs +3. nnictl top monitor the status of running experiments +4. nnictl log stderr show stderr log content +5. nnictl log stdout show stdout log content +6. nnictl stop stop an experiment +7. nnictl trial kill kill a trial job by id +8. nnictl --help get help information about nnictl +----------------------------------------------------------------------- +``` + +If you prepare `trial`, `search space` and `config` according to the above steps and successfully create a NNI job, NNI will automatically tune the optimal hyper-parameters and run different hyper-parameters sets for each trial according to the requirements you set. You can clearly sees its progress by NNI WebUI. + +## WebUI + +After you start your experiment in NNI successfully, you can find a message in the command-line interface to tell you `Web UI url` like this: + +``` +The Web UI urls are: [Your IP]:8080 +``` + +Open the `Web UI url`(In this information is: `[Your IP]:8080`) in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. + +### View summary page + +Click the tab "Overview". + +Information about this experiment will be shown in the WebUI, including the experiment trial profile and search space message. NNI also support `download these information and parameters` through the **Download** button. You can download the experiment result anytime in the middle for the running or at the end of the execution, etc. + +![](./img/QuickStart1.png) + +Top 10 trials will be listed in the Overview page, you can browse all the trials in "Trials Detail" page. + +![](./img/QuickStart2.png) + +### View trials detail page + +Click the tab "Default Metric" to see the point graph of all trials. Hover to see its specific default metric and search space message. + +![](./img/QuickStart3.png) + +Click the tab "Hyper Parameter" to see the parallel graph. + +* You can select the percentage to see top trials. +* Choose two axis to swap its positions + +![](./img/QuickStart4.png) + +Click the tab "Trial Duration" to see the bar graph. + +![](./img/QuickStart5.png) + +Below is the status of the all trials. Specifically: + +* Trial detail: trial's id, trial's duration, start time, end time, status, accuracy and search space file. +* If you run a pai experiment, you can also see the hdfsLogPath. +* Kill: you can kill a job that status is running. +* Support to search for a specific trial. + +![](./img/QuickStart6.png) + +* Intermediate Result Grap + +![](./img/QuickStart7.png) + +## Related Topic + +* [How to use command line tool nnictl][16] +* [How to write a trial][9] +* [Try different Tuners][10] +* [Try different Assessors][11] +* [How to run an experiment on local (with multiple GPUs)?][12] +* [How to run an experiment on multiple machines?][13] +* [How to run an experiment on OpenPAI?][14] +* [How to run an experiment on Kubeflow?][15] + +[1]: https://github.com/Microsoft/nni/blob/master/docs/FAQ.md +[2]: https://github.com/Microsoft/nni/blob/master/docs/Installation.md +[3]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/search_space.json +[4]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/mnist.py +[5]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/config.yml +[6]: https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md +[7]: https://github.com/Microsoft/nni/blob/5000ae8b746aa5438d48db26cdc1e7104c9afa20/examples/trials/mnist/mnist_before.py +[8]: https://github.com/Microsoft/nni/tree/master/examples/trials/mnist +[9]: https://github.com/Microsoft/nni/blob/master/docs/howto_1_WriteTrial.md +[10]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_3_tryTunersAndAssessors.md +[11]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_3_tryTunersAndAssessors.md +[12]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_1_CR_exp_local_api.md +[13]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_2_RemoteMachineMode.md +[14]: https://github.com/Microsoft/nni/blob/master/docs/PAIMode.md +[15]: https://github.com/Microsoft/nni/blob/master/docs/KubeflowMode.md +[16]: https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md \ No newline at end of file diff --git a/docs/Tuners.md b/docs/Tuners.md new file mode 100644 index 0000000000..763b85a03a --- /dev/null +++ b/docs/Tuners.md @@ -0,0 +1,324 @@ +# Tuners + +## Overview + +NNI provides an easy way to adopt an approach to set up parameter tuning algorithms, we call them **Tuner**. + +Tuner receives the result from `Trial` as a matrix to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. + +In NNI, we support two approaches to set the tuner: first is directly use builtin tuner provided by nni sdk, second is customize a tuner file by yourself. + +NNI provides the-state-of-art tuning algorithm in our builtin-tuners and makes them easy to use. Below is the brief overview of NNI current builtin Tuners: + +|Tuner|Brief Introduction of Algorithm| +|---|---| +|**TPE**
[(Usage)](#TPE)|The Tree-structured Parzen Estimator (TPE) is a sequential model-based optimization (SMBO) approach. SMBO methods sequentially construct models to approximate the performance of hyperparameters based on historical measurements, and then subsequently choose new hyperparameters to test based on this model.| +|**Random Search**
[(Usage)](#Random)|In Random Search for Hyper-Parameter Optimization show that Random Search might be surprisingly simple and effective. We suggest that we could use Random Search as the baseline when we have no knowledge about the prior distribution of hyper-parameters.| +|**Anneal**
[(Usage)](#Anneal)|This simple annealing algorithm begins by sampling from the prior, but tends over time to sample from points closer and closer to the best ones observed. This algorithm is a simple variation on the random search that leverages smoothness in the response surface. The annealing rate is not adaptive.| +|**Naive Evolution**
[(Usage)](#Evolution)|Naive Evolution comes from Large-Scale Evolution of Image Classifiers. It randomly initializes a population-based on search space. For each generation, it chooses better ones and does some mutation (e.g., change a hyperparameter, add/remove one layer) on them to get the next generation. Naive Evolution requires many trials to works, but it's very simple and easy to expand new features.| +|**SMAC**
[(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 github repo.| +|**Batch tuner**
[(Usage)](#Batch)|Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type choice in search space spec.| +|**Grid Search**
[(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| +|[Hyperband][1]
[(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| +|[Network Morphism][2]
[(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| +|**Metis Tuner**
[(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predicts the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.| + +
+ +## Usage of Builtin Tuners + +Use builtin tuner provided by NNI sdk requires to declare the **builtinTunerName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirments and example for each tuner. + +Note: Please follow the format when you write your `config.yml` file. + + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `TPE` + +> Builtin Tuner Name: **TPE** + +**Suggested scenario** + +TPE, as a black-box optimization, can be used in various scenarios and shows good performance in general. Especially when you have limited computation resource and can only try a small number of trials. From a large amount of experiments, we could found that TPE is far better than Random Search. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example:** + +```yaml +# config.yml +tuner: + builtinTunerName: TPE + classArgs: + optimize_mode: maximize +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Random Search` + +> Builtin Tuner Name: **Random** + +**Suggested scenario** + +Random search is suggested when each trial does not take too long (e.g., each trial can be completed very soon, or early stopped by assessor quickly), and you have enough computation resource. Or you want to uniformly explore the search space. Random Search could be considered as baseline of search algorithm. + +**Requirement of classArg:** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: Random + classArgs: + optimize_mode: maximize +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Anneal` + +> Builtin Tuner Name: **Anneal** + +**Suggested scenario** + +Anneal is suggested when each trial does not take too long, and you have enough computation resource(almost same with Random Search). Or the variables in search space could be sample from some prior distribution. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: Anneal + classArgs: + optimize_mode: maximize +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Naive Evolution` + +> Builtin Tuner Name: **Evolution** + +**Suggested scenario** + +Its requirement of computation resource is relatively high. Specifically, it requires large inital population to avoid falling into local optimum. If your trial is short or leverages assessor, this tuner is a good choice. And, it is more suggested when your trial code supports weight transfer, that is, the trial could inherit the converged weights from its parent(s). This can greatly speed up the training progress. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: Evolution + classArgs: + optimize_mode: maximize +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `SMAC` + +> Builtin Tuner Name: **SMAC** + +**Suggested scenario** + +Similar to TPE, SMAC is also a black-box tuner which can be tried in various scenarios, and is suggested when computation resource is limited. It is optimized for discrete hyperparameters, thus, suggested when most of your hyperparameters are discrete. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: SMAC + classArgs: + optimize_mode: maximize +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Batch Tuner` + +> Builtin Tuner Name: BatchTuner + +**Suggested scenario** + +If the configurations you want to try have been decided, you can list them in searchspace file (using `choice`) and run them using batch tuner. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: BatchTuner +``` + +
+ +Note that the search space that BatchTuner supported like: + +```json +{ + "combine_params": + { + "_type" : "choice", + "_value" : [{"optimizer": "Adam", "learning_rate": 0.00001}, + {"optimizer": "Adam", "learning_rate": 0.0001}, + {"optimizer": "Adam", "learning_rate": 0.001}, + {"optimizer": "SGD", "learning_rate": 0.01}, + {"optimizer": "SGD", "learning_rate": 0.005}, + {"optimizer": "SGD", "learning_rate": 0.0002}] + } +} +``` + +The search space file including the high-level key `combine_params`. The type of params in search space must be `choice` and the `values` including all the combined-params value. + + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Grid Search` + +> Builtin Tuner Name: **Grid Search** + +**Suggested scenario** + +Note that the only acceptable types of search space are `choice`, `quniform`, `qloguniform`. **The number `q` in `quniform` and `qloguniform` has special meaning (different from the spec in [search space spec](./SearchSpaceSpec.md)). It means the number of values that will be sampled evenly from the range `low` and `high`.** + +It is suggested when search space is small, it is feasible to exhaustively sweeping the whole search space. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: GridSearch +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Hyperband` + +> Builtin Advisor Name: **Hyperband** + +**Suggested scenario** + +It is suggested when you have limited computation resource but have relatively large search space. It performs good in the scenario that intermediate result (e.g., accuracy) can reflect good or bad of final result (e.g., accuracy) to some extent. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. +* **R** (*int, optional, default = 60*) - the maximum STEPS (could be the number of mini-batches or epochs) can be allocated to a trial. Each trial should use STEPS to control how long it runs. +* **eta** (*int, optional, default = 3*) - proportion of discarded trials + +**Usage example** + +```yaml +# config.yml +advisor: + builtinAdvisorName: Hyperband + classArgs: + optimize_mode: maximize + R: 60 + eta: 3 +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Network Morphism` + +> Builtin Tuner Name: **NetworkMorphism** + +**Installation** + +NetworkMorphism requires [pyTorch](https://pytorch.org/get-started/locally), so users should install it first. + +**Suggested scenario** + +It is suggested that you want to apply deep learning methods to your task (your own dataset) but you have no idea of how to choose or design a network. You modify the [example](../examples/trials/network_morphism/cifar10/cifar10_keras.py) to fit your own dataset and your own data augmentation method. Also you can change the batch size, learning rate or optimizer. It is feasible for different tasks to find a good network architecture. Now this tuner only supports the computer vision domain. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. +* **task** (*('cv'), optional, default = 'cv'*) - The domain of experiment, for now, this tuner only supports the computer vision(cv) domain. +* **input_width** (*int, optional, default = 32*) - input image width +* **input_channel** (*int, optional, default = 3*) - input image channel +* **n_output_node** (*int, optional, default = 10*) - number of classes + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: NetworkMorphism + classArgs: + optimize_mode: maximize + task: cv + input_width: 32 + input_channel: 3 + n_output_node: 10 +``` + +
+ + + +![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Metis Tuner` + +> Builtin Tuner Name: **MetisTuner** + +Note that the only acceptable types of search space are `choice`, `quniform`, `uniform` and `randint`. + +**Installation** + +Metis Tuner requires [sklearn](https://scikit-learn.org/), so users should install it first. User could use `pip3 install sklearn` to install it. + +**Suggested scenario** + +Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](../examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the nni SDK. + +**Requirement of classArg** + +* **optimize_mode** (*'maximize' or 'minimize', optional, default = 'maximize'*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: MetisTuner + classArgs: + optimize_mode: maximize +``` + +[1]: https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor +[2]: https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md diff --git a/docs/img/Assessor.png b/docs/img/Assessor.png new file mode 100644 index 0000000000000000000000000000000000000000..23c13f9d1903487774b98118c44437841a3ea835 GIT binary patch literal 122219 zcmd422UL^I)-P^HMZpRp0TEH{IGc$Yk?Ad$&X7+wzp-rZZKyLKG_?%K82@ZbSX&CMr_51c={15EE|?<&Kco8uJrx!*LrxocNN zJok?Ceopz≤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

UK}7PfehQt$}-s@}sC(Vu}shy<#YQsX(E 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

  • K{0lxK`&F-g)fzEh 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%0A8!{$BD}eTh1ntkCn~qzamv=;GG+eT_F#MW)Ohl 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�V{dUA`|MP3S2vuo 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 t5u!^}9>t1)cu4@r*WT17Ng`0(e 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 KB-89r#6JPvd)h7l literal 0 HcmV?d00001 diff --git a/docs/img/QuickStart3.png b/docs/img/QuickStart3.png new file mode 100644 index 0000000000000000000000000000000000000000..11f24f7f62ebbf20ca334edc9b067170d427fb65 GIT binary patch literal 94429 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 literal 0 HcmV?d00001 diff --git a/docs/img/QuickStart4.png b/docs/img/QuickStart4.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6913e6205766add88fd97dad20576d8002267a GIT binary patch literal 298514 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 z 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

  • |-R^!X=!C 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/img/QuickStart7.png b/docs/img/QuickStart7.png new file mode 100644 index 0000000000000000000000000000000000000000..e60a48573604ff5102c4754968dba0d45f3b7414 GIT binary patch literal 37560 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 Date: Tue, 15 Jan 2019 19:35:11 -0800 Subject: [PATCH 04/29] Dev doc: Add docs for Trials, SearchSpace, Annotation and GridSearch (#569) * add Trials.md * add Trials.md * add Trials.md * add Trials.md * add docs * add docs * add docs * add docs * add docs * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * add grid search tuner doc * add grid search tuner doc --- docs/AnnotationSpec.md | 80 ++++++++++++--------- docs/GridSearchTuner.md | 23 ++++++ docs/SearchSpaceSpec.md | 34 ++++++--- docs/Trials.md | 151 ++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 4 +- 5 files changed, 248 insertions(+), 44 deletions(-) create mode 100644 docs/GridSearchTuner.md create mode 100644 docs/Trials.md diff --git a/docs/AnnotationSpec.md b/docs/AnnotationSpec.md index 3f665c94de..40614dfde6 100644 --- a/docs/AnnotationSpec.md +++ b/docs/AnnotationSpec.md @@ -1,58 +1,70 @@ # NNI Annotation -For good user experience and reduce user effort, we need to design a good annotation grammar. -If users use NNI system, they only need to: +## Overview - 1. Use nni.get_next_parameter() to retrieve hyper parameters from Tuner, before using other annotation, use following annotation at the begining of trial code: - '''@nni.get_next_parameter()''' +To improve user experience and reduce user effort, we design an annotation grammar. Using NNI annotation, users can adapt their code to NNI just by adding some standalone annotating strings, which does not affect the execution of the original code. - 2. Annotation variable in code as: +Below is an example: - '''@nni.variable(nni.choice(2,3,5,7),name=self.conv_size)''' +```python +'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)''' +learning_rate = 0.1 +``` +The meaning of this example is that NNI will choose one of several values (0.1, 0.01, 0.001) to assign to the learning_rate variable. Specifically, this first line is an NNI annotation, which is a single string. Following is an assignment statement. What nni does here is to replace the right value of this assignment statement according to the information provided by the annotation line. - 3. Annotation intermediate in code as: - '''@nni.report_intermediate_result(test_acc)''' +In this way, users could either run the python code directly or launch NNI to tune hyper-parameter in this code, without changing any codes. - 4. Annotation output in code as: +## Types of Annotation: - '''@nni.report_final_result(test_acc)''' +In NNI, there are mainly four types of annotation: - 5. Annotation `function_choice` in code as: - '''@nni.function_choice(max_pool(h_conv1, self.pool_size),avg_pool(h_conv1, self.pool_size),name=max_pool)''' +### 1. Annotate variables -In this way, they can easily implement automatic tuning on NNI. + `'''@nni.variable(sampling_algo, name)'''` -For `@nni.variable`, `nni.choice` is the type of search space and there are 10 types to express your search space as follows: +`@nni.variable` is used in NNI to annotate a variable. - 1. `@nni.variable(nni.choice(option1,option2,...,optionN),name=variable)` - Which means the variable value is one of the options, which should be a list The elements of options can themselves be stochastic expressions +**Arguments** - 2. `@nni.variable(nni.randint(upper),name=variable)` - Which means the variable value is a random integer in the range [0, upper). +- **sampling_algo**: Sampling algorithm that specifies a search space. User should replace it with a built-in NNI sampling function whose name consists of an `nni.` identification and a search space type specified in [SearchSpaceSpec](SearchSpaceSpec.md) such as `choice` or `uninform`. +- **name**: The name of the variable that the selected value will be assigned to. Note that this argument should be the same as the left value of the following assignment statement. - 3. `@nni.variable(nni.uniform(low, high),name=variable)` - Which means the variable value is a value uniformly between low and high. +An example here is: - 4. `@nni.variable(nni.quniform(low, high, q),name=variable)` - Which means the variable value is a value like round(uniform(low, high) / q) * q +```python +'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)''' +learning_rate = 0.1 +``` - 5. `@nni.variable(nni.loguniform(low, high),name=variable)` - Which means the variable value is a value drawn according to exp(uniform(low, high)) so that the logarithm of the return value is uniformly distributed. +### 2. Annotate functions - 6. `@nni.variable(nni.qloguniform(low, high, q),name=variable)` - Which means the variable value is a value like round(exp(uniform(low, high)) / q) * q + `'''@nni.function_choice(*functions, name)'''` - 7. `@nni.variable(nni.normal(label, mu, sigma),name=variable)` - Which means the variable value is a real value that's normally-distributed with mean mu and standard deviation sigma. +`@nni.function_choice` is used to choose one from several functions. - 8. `@nni.variable(nni.qnormal(label, mu, sigma, q),name=variable)` - Which means the variable value is a value like round(normal(mu, sigma) / q) * q +**Arguments** - 9. `@nni.variable(nni.lognormal(label, mu, sigma),name=variable)` - Which means the variable value is a value drawn according to exp(normal(mu, sigma)) +- **\*functions**: Several functions that are waiting to be selected from. Note that it should be a complete function call with aruguments. Such as `max_pool(hidden_layer, pool_size)`. +- **name**: The name of the function that will be replace in the following assignment statement. -10. `@nni.variable(nni.qlognormal(label, mu, sigma, q),name=variable)` - Which means the variable value is a value like round(exp(normal(mu, sigma)) / q) * q +An example here is: + +```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. Annotate intermediate result + + `'''@nni.report_intermediate_result(metrics)'''` + +`@nni.report_intermediate_result` is used to report itermediate result, whose usage is the same as `nni.report_intermediate_result` in [Trials.md](Trials.md) + +### 4. Annotate final result + + `'''@nni.report_final_result(metrics)'''` + +`@nni.report_final_result` is used to report final result of the current trial, whose usage is the same as `nni.report_final_result` in [Trials.md](Trials.md) \ No newline at end of file diff --git a/docs/GridSearchTuner.md b/docs/GridSearchTuner.md new file mode 100644 index 0000000000..96fa0d09ab --- /dev/null +++ b/docs/GridSearchTuner.md @@ -0,0 +1,23 @@ +Grid Search on nni +=== + +## 1. Introduction + +Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. + +Note that the only acceptable types of search space are `choice`, `quniform`, `qloguniform` since only these three types of search space can be exhausted. + +Moreover, in GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows: + +* Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. +* Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. + +## 2. Usage + +Since Grid Search Tuner will exhaust all possible hyper-parameter combination according to the search space file without any hyper-parameter for tuner itself, all you need to do is to specify tuner name in your experiment's yaml config file: + +``` +tuner: + builtinTunerName: GridSearch +``` + diff --git a/docs/SearchSpaceSpec.md b/docs/SearchSpaceSpec.md index 239182d50f..2fce7205f4 100644 --- a/docs/SearchSpaceSpec.md +++ b/docs/SearchSpaceSpec.md @@ -1,8 +1,12 @@ -## How to define search space? +# Search Space -### Hyper-parameter Search Space +## Overview -* A search space configure example as follow: +In NNI, tuner will sample parameters/architecture according to the search space, which is defined as a json file. + +To define a search space, users should define the name of variable, the type of sampling strategy and its parameters. + +* A example of search space definition as follow: ```python { @@ -15,11 +19,12 @@ ``` -The example define ```dropout_rate``` as variable which priori distribution is uniform distribution, and its value from ```0.1``` and ```0.5```. -The tuner will sample parameters/architecture by understanding the search space first. -User should define the name of variable, type and candidate value of variable. -The candidate type and value for variable is here: +Take the first line as an example. ```dropout_rate``` is defined as a variable whose priori distribution is a uniform distribution of a range from ```0.1``` and ```0.5```. + +## Types + +All types of sampling strategies and their parameter are listed here: * {"_type":"choice","_value":options} * Which means the variable value is one of the options, which should be a list The elements of options can themselves be [nested] stochastic expressions. In this case, the stochastic choices that only appear in some of the options become conditional parameters. @@ -67,8 +72,19 @@ The candidate type and value for variable is here: * Suitable for a discrete variable with respect to which the objective is smooth and gets smoother with the size of the variable, which is bounded from one side.
    -Note that SMAC only supports a subset of the types above, including `choice`, `randint`, `uniform`, `loguniform`, `quniform(q=1)`. In the current version, SMAC does not support cascaded search space (i.e., conditional variable in SMAC). -Note that GridSearch Tuner only supports a subset of the types above, including `choic`, `quniform` and `qloguniform`, where q here specifies the number of values that will be sampled. Details about the last two type as follows +## Search Space Types Supported by Each Tuner + +| | choice | randint | uniform | quniform | loguniform | qloguniform | normal | qnormal | lognormal | qlognormal | +|-------------------|---------|---------|---------|----------|------------|-------------|---------|---------|-----------|------------| +| Batch Tuner | ☑ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | +| Evolution Tuner | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | +| TPE Tuner | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | +| Hyperband Advisor | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | +| Smac Tuner | ☑ | ☑ | ☑ | ☐ | ☑ | ☐ | ☐ | ☐ | ☐ | ☑ | +| Grid Search Tuner | ☑ | ☐ | ☐ | ☑ | ☐ | ☑ | ☐ | ☐ | ☐ | ☐ | + +Note that In GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows + * Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. * Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. \ No newline at end of file diff --git a/docs/Trials.md b/docs/Trials.md new file mode 100644 index 0000000000..cc4661fa5a --- /dev/null +++ b/docs/Trials.md @@ -0,0 +1,151 @@ +# Trials + +## Overview + +In NNI, hyper-parameter searching space will be firstly defined using a json file (often called searchspace.json). According to the search space defined by this file, different hyper-parameter combinations will be generated to try and get feedback information like final accurary. + +A **Trial** in NNI is such an individual attempt at applying a set of hyper-parameters on a model. + + + +NNI provide two approaches for you to define a trial: `NNI API` and `NNI Python annotation`. + +## NNI API +> Step 1 - Prepare a SearchSpace parameters file. + +- First we should define a SearchSpace file so NNI could generate different sets of hyper-parameter, each of which is used to run an individual trial. + + - An example of a SearchSpace parameters file is shown below: + ``` + { + "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, + "conv_size":{"_type":"choice","_value":[2,3,5,7]}, + "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, + "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} + } + ``` + + - And a set of hyper-parameter, or a hyper-parameter combination generated by the search space above might be: + ``` + { + "dropout_rate": 0.3, + "conv_size: 2, + "hidden_size: 124, + "learning_rate": 0.01 + } + ``` + +- For more information about search space, please refer to [SearchSpaceSpec.md](SearchSpaceSpec.md). + +> Step 2 - Update model codes + +- Declare NNI API + Include `import nni` in your trial code to use NNI APIs. + +- Get predefined parameters + + - Use `RECEIVED_PARAMS = nni.get_next_parameter()` to get hyper-parameters' values assigned by tuner. + - Note that `RECEIVED_PARAMS` is an object, for example: + + {"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029} + +- Report NNI results + + - Trial should report `metrics` so NNI could evaluate the current set of hyper-parameters. `metrics` might be things like accuracy or loss. + - `metrics` could be any python object, but NNI built-in tuners/assessors only receive `metrics` that is: + - a numerical variable (e.g. float, int). + - a dict object that has a key named "default" whose value is a numerical variable, which will be used as the default metric + - Use `nni.report_intermediate_result(metrics)` to send `metrics` to [assessor](Assessors.md). (Optional) + - Use `nni.report_final_result(metrics)` to send `metrics` to [tuner](Tuners.md). + + + +> Step 3 - Enable NNI API + +- To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): + + ``` + useAnnotation: false + searchSpacePath: /path/to/your/search_space.json + ``` + +- You can refer to [here](ExperimentConfig.md) for more information about how to set up experiment configurations. + + +## NNI Python Annotation + +An alternative to write a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: + +* annotate the variables you want to tune +* specify in which range you want to tune the variables +* annotate which variable you want to report as intermediate result to `assessor` +* annotate which variable you want to report as the final result (e.g. model accuracy) to `tuner`. + +Again, take MNIST as an example, it only requires 2 steps to write a trial with NNI Annotation. + +> Step 1 - Update codes with annotations + +The following is a tensorflow code snippet for NNI Annotation, where the highlighted four lines are annotations that help you to: + 1. tune batch\_size and dropout\_rate + 2. report test\_acc every 100 steps + 3. at last report test\_acc as final result. + +What noteworthy is: as these new added codes are annotations, it does not actually change your previous codes logic, you can still run your code as usual in environments without NNI installed. + +```diff +with tf.Session() as sess: + sess.run(tf.global_variables_initializer()) ++ """@nni.variable(nni.choice(50, 250, 500), name=batch_size)""" + batch_size = 128 + for i in range(10000): + batch = mnist.train.next_batch(batch_size) ++ """@nni.variable(nni.choice(1, 5), name=dropout_rate)""" + dropout_rate = 0.5 + mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], + mnist_network.labels: batch[1], + mnist_network.keep_prob: dropout_rate}) + if i % 100 == 0: + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) ++ """@nni.report_intermediate_result(test_acc)""" + + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) ++ """@nni.report_final_result(test_acc)""" +``` + +**NOTE**: +- `@nni.variable` will take effect on its following line, which is an assignment statement whose leftvalue must be specified by the keyword `name` in `@nni.variable`. +- `@nni.report_intermediate_result`/`@nni.report_final_result` will send the data to assessor/tuner at that line. + +For more information about annotation syntax and its usage, please refer to [Annotation README](../tools/nni_annotation/README.md) . + + +>Step 2 - Enable NNI Annotation + +In the yaml configure file, you need to set *useAnnotation* to true to enable NNI annotation: +``` +useAnnotation: true +``` + +## Others + +### Output + +NNI is designed to show each trial's stdout and stderr in the log region of Webui. However, currently this feature is supported only on PAI and k8s platforms. On other platforms NNI will show trial log path and users can temporarily check the output manually. + +### Advance APIs + +#### get_sequence_id + +- Every trial has a sequence id, which is their unique identifier (a numeric value increasing from zero). +- This function receives no argument and will return the sequence id of the current trial, which can be used to perform task like k-fold validation + +You can use it like `trial_id = nni.get_sequence_id()` + +## More Trial Example +* [Automatic Model Architecture Search for Reading Comprehension.](../examples/trials/ga_squad/README.md) diff --git a/mkdocs.yml b/mkdocs.yml index 9ae9f53999..e548b06de5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -6,7 +6,7 @@ nav: - Tutorials: - QuickStart: QuickStart.md - Installation: Installation.md - - Trial HowTo: howto_1_WriteTrial.md + - Trials: Trials.md - Tuners: - Try Builtin Tuners: Tuners.md - Customized Tuners: Customize_Tuner.md @@ -25,6 +25,8 @@ nav: - Configuration: ExperimentConfig.md - Search Space: SearchSpaceSpec.md - Annotation: AnnotationSpec.md + - Tuners: + - GridSearchTuner.md - Contribution: - Development Setup: SetupNNIDeveloperEnvironment.md - Contribution Guide: CONTRIBUTING.md From cac2b830d32bc18293a93a4784ebfa6f42535f36 Mon Sep 17 00:00:00 2001 From: chicm-ms <38930155+chicm-ms@users.noreply.github.com> Date: Thu, 17 Jan 2019 17:29:16 +0800 Subject: [PATCH 05/29] Chec dev doc (#606) * multiPhase doc * updates * updates * updates * updates * updates * updates --- docs/GetStarted.md | 1 + docs/multiPhase.md | 43 +++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 2 ++ 3 files changed, 46 insertions(+) create mode 100644 docs/multiPhase.md diff --git a/docs/GetStarted.md b/docs/GetStarted.md index b665d09830..8dced37cd6 100644 --- a/docs/GetStarted.md +++ b/docs/GetStarted.md @@ -97,3 +97,4 @@ The experiment has been running now, NNI provides WebUI for you to view experime * [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) * [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) +* [How to create a multi-phase experiment](multiPhase.md) diff --git a/docs/multiPhase.md b/docs/multiPhase.md new file mode 100644 index 0000000000..86aadca699 --- /dev/null +++ b/docs/multiPhase.md @@ -0,0 +1,43 @@ +## Create multi-phase experiment + +Typically each trial job gets single set of configuration (e.g. hyper parameters) from tuner and do some kind of experiment, let's say train a model with that hyper parameter and reports its result to tuner. Sometimes you may want to train multiple models within one trial job to share information between models or saving system resource by creating less trial jobs, for example: +1. Train multiple models sequentially in one trial job, so that later models can leverage the weights or other information of prior models and may use different hyper parameters. +2. Train large amount of models on limited system resource, combine multiple models together to save system resource to create large amount of trial jobs. +3. Any other scenario that you would like to train multiple models with different hyper parameters in one trial job, be aware that if you allocate multiple GPUs to a trial job and you train multiple models concurrently within on trial job, you need to allocate GPU resource properly by your trial code. + +In above cases, you can leverage NNI multi-phase experiment to train multiple models with different hyper parameters within each trial job. + +Multi-phase experiments refer to experiments whose trial jobs request multiple hyper parameters from tuner and report multiple final results to NNI. + +To use multi-phase experiment, please follow below steps: + +1. Implement nni.multi_phase.MultiPhaseTuner. For example, this [ENAS tuner](https://github.com/countif/enas_nni/blob/master/nni/examples/tuners/enas/nni_controller_ptb.py) is a multi-phase Tuner which implements nni.multi_phase.MultiPhaseTuner. While implementing your MultiPhaseTuner, you may want to use the trial_job_id parameter of generate_parameters method to generate hyper parameters for each trial job. + +2. Set ```multiPhase``` field to ```true```, and configure your tuner implemented in step 1 as customized tuner in configuration file, for example: + +```yml +... +multiPhase: true +tuner: + codeDir: tuners/enas + classFileName: nni_controller_ptb.py + className: ENASTuner + classArgs: + say_hello: "hello" +... +``` + + +3. Invoke nni.get_next_parameter() API for multiple times as needed in a trial, for example: + +```python +for i in range(5): + # get parameter from tuner + tuner_param = nni.get_next_parameter() + + # consume the params + # ... + # report final result somewhere for the parameter retrieved above + nni.report_final_result() + # ... +``` diff --git a/mkdocs.yml b/mkdocs.yml index e548b06de5..c6246f0278 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,6 +18,8 @@ nav: - Remote: RemoteMachineMode.md - PAI: PAIMode.md - Kubeflow: KubeflowMode.md + - Advanced Features: + - multiPhase.md - Examples: - MNIST Examples: mnist_examples.md - Reference: From b74dffadb8db0c00a4321fbac3835064a4464d26 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Mon, 21 Jan 2019 10:10:49 +0800 Subject: [PATCH 06/29] update dev-doc to sphinx (#630) * add trigger (#544) * NNI logging architecture improvement (#539) * Removed unused log code, refactor to rename some class name in nni sdk and trial_tools * Fix the regression bug that loca/remote mode doesnt work * [WebUI] Fix issue#517 & issue#459 (#524) * [WebUI] Fix issue#517 & issue#459 * update * [Logging architecture refactor] Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor (#551) * Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor * Doc typo and format fixes (#560) * fix incorrect document * fix doc format and typo * fix state transition (#504) * Add enas nni version from contributor (#557) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add enas_nni * Code coverage report (#559) * Add UT code coverage report * updates * updates * updates * updates * updates * updates * integration test python code coverage report * Updating Readme to add the Related Projects like PAI, KubeLauncher and MMdnn (#565) * Adding related projects to Readme * Fix remote TrainingService bug, change forEach to "for of" (#564) trial job could not be stopped in remote machine when experiment is stopped, because awit/async does not work normally in forEach, refer https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404. * To install the whole nni in an virtual environment (#538) * support venv * adapt venv * adapt venv * adapt venv * adapt venv * new test * new test * new test * support venv * support venv * support venv * support venv * support venv * support venv * support venv * colorful output for mac * colorful output for mac * permission denied in /tmp * permission denied in /tmp * permission denied in /tmp * remove unused variable * final * remove build python * Make it feasible for annotation whether to add an extra line "nni.get_next_parameter()" or not (#526) * fix bug * add docs * add ut * add ut * add to ci * update doc * update doc * update ut * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * test * test * test * test * test * test * test * test * test * test * revert * refactor * refactor * s * merge * fix annotation for extra line * add deprecation warning * fix permision deny (#567) * Add Metis Tuner (#534) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add metis tuner code * 1. fix bug about import 2.update other sdk file * add auto-gbdt-example and remove unused code * add metis_tuner into README * update the README * update README | remove unused variable * fix typo * add sklearn into requirments * Update src/sdk/pynni/nni/metis_tuner/metis_tuner.py add default value in __init__ Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * fix typo | add more comments * Change WARNING to INFO (#574) change the warning level to info level when expand relative path add nnictl --version log update readme.md * Fix some bugs in doc and log (#561) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * Fix a race condidtion issue in trial_keeper for reading log from pipe (#578) * Fix a race condidtion issue in trial_keeper for reading log from pipe * [WebUI] Fix issue#458 about final result as dict (#563) * [WebUI] Fix issue#458 about final result as dict * Fix comments * fix bug * support frameworkcontroller log (#572) support frameworkcontroller log * Dev weight sharing (#568) (#576) * Dev weight sharing (#568) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * Dev weight sharing update doc (#577) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * Dev weight sharing update (#579) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * Dev weight sharing (#581) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * fix divide by zero risk * update tuner thread exception handling * fix bug for async test * Add frameworkcontroller document (#530) Add frameworkcontroller document. Fix other document small issues. * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * add __init__.py to metis_tuner (#588) * [Document] Update webui doc (#587) * Update webui document * update * Update Dockerfile and README (#589) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * update Dockerfile and README * Update README.md Merge to branch v0.5 * [WebUI] Fix bug (#591) * fix bug * fix bug of background * update * update * add frameworkcontroller platform * update README in metis and update RuntimeError info (#595) * update README in metis and update RuntimeError * fix typo * add numerical choice check * update * udpate NFS setup tutorial (#597) * Remove unused example (#600) * update README in metis and update RuntimeError * remove smart params * Update release note (#603) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add release note * sphinx init * migration to sphinx * update requirements * fix read the docs bug * fix reference * fix bug * fix logo for homepage * remote github root * update conf * Revert "remote github root" This reverts commit c3d9941caa0c618cbb06723b1e7544490983db16. * Revert "update conf" This reverts commit 8de482fee042082007c575e0985e6280d14f0e2f. * Revert "Revert "remote github root"" This reverts commit 3fe1370c256a2c01c5b419ed428fc8572deb2ec7. * update tutorial * add reference for nni.tuner.Tuner * udpate sdk reference * update assessors * update index * fix bug * fix doc bug * update * delete yml * Revert "Merge remote-tracking branch 'upstream/v0.5' into dev-doc" This reverts commit 48ff5c5cc78a4476334480a4469ef356876fee92, reversing changes made to ec7fdb69652546fb62af7eec696e9b3de9fc6860. * fix doc --- _config.yml | 1 - docs/.gitignore | 3 + docs/{Assessors.md => Builtin_Assessors.md} | 14 +- docs/{Tuners.md => Builtin_Tuner.md} | 10 +- docs/Contribution.rst | 8 + docs/Examples.rst | 6 + docs/FAQ.md | 2 + docs/GetStarted.md | 3 +- docs/Installation.md | 3 +- docs/Makefile | 19 ++ docs/README.md | 28 +-- docs/RELEASE.md | 61 +++++-- docs/Reference.rst | 11 ++ docs/Tutorials.rst | 13 ++ docs/assessors.rst | 19 ++ docs/conf.py | 187 ++++++++++++++++++++ docs/howto_1_WriteTrial.md | 3 +- docs/img/nni_logo_dark.png | Bin 0 -> 22693 bytes docs/index.rst | 20 +++ docs/requirements.txt | 8 +- docs/sdk_reference.rst | 22 +++ docs/training_services.rst | 7 + docs/tuners.rst | 19 ++ mkdocs.yml | 36 ---- tools/nni_cmd/nnictl.py | 8 +- 25 files changed, 413 insertions(+), 98 deletions(-) delete mode 100644 _config.yml create mode 100644 docs/.gitignore rename docs/{Assessors.md => Builtin_Assessors.md} (83%) rename docs/{Tuners.md => Builtin_Tuner.md} (96%) create mode 100644 docs/Contribution.rst create mode 100644 docs/Examples.rst create mode 100644 docs/Makefile create mode 100644 docs/Reference.rst create mode 100644 docs/Tutorials.rst create mode 100644 docs/assessors.rst create mode 100644 docs/conf.py create mode 100644 docs/img/nni_logo_dark.png create mode 100644 docs/index.rst create mode 100644 docs/sdk_reference.rst create mode 100644 docs/training_services.rst create mode 100644 docs/tuners.rst delete mode 100644 mkdocs.yml diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 9da9a0291e..0000000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-dinky \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000000..515c79da3c --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +_build +_static +_templates \ No newline at end of file diff --git a/docs/Assessors.md b/docs/Builtin_Assessors.md similarity index 83% rename from docs/Assessors.md rename to docs/Builtin_Assessors.md index 0d3c0632a4..25f3e54c83 100644 --- a/docs/Assessors.md +++ b/docs/Builtin_Assessors.md @@ -1,16 +1,4 @@ -# Assessors - -## Overview - -In order to save our computing resources, NNI supports an early stop policy and creates **Assessor** to finish this job. - -Assessor receives the intermediate result from Trial and decides whether the Trial should be killed by specific algorithm. Once the Trial experiment meets the early stop conditions(which means assessor is pessimistic about the final results), the assessor will kill the trial and the status of trial will be `"EARLY_STOPPED"`. - -Here is an experimental result of MNIST after using 'Curvefitting' Assessor in 'maximize' mode, you can see that assessor successfully **early stopped** many trials with bad hyperparameters in advance. If you use assessor, we may get better hyperparameters under the same computing resources. - -*Implemented code directory: [config_assessor.yml][5]* - -![](./img/Assessor.png) +# Builtin Assessors NNI provides the-state-of-art tuning algorithm in our builtin-assessors and makes them easy to use. Below is the brief overview of NNI current builtin Assessors: diff --git a/docs/Tuners.md b/docs/Builtin_Tuner.md similarity index 96% rename from docs/Tuners.md rename to docs/Builtin_Tuner.md index 763b85a03a..1f3d1c1816 100644 --- a/docs/Tuners.md +++ b/docs/Builtin_Tuner.md @@ -1,12 +1,4 @@ -# Tuners - -## Overview - -NNI provides an easy way to adopt an approach to set up parameter tuning algorithms, we call them **Tuner**. - -Tuner receives the result from `Trial` as a matrix to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. - -In NNI, we support two approaches to set the tuner: first is directly use builtin tuner provided by nni sdk, second is customize a tuner file by yourself. +# Builtin Tuners NNI provides the-state-of-art tuning algorithm in our builtin-tuners and makes them easy to use. Below is the brief overview of NNI current builtin Tuners: diff --git a/docs/Contribution.rst b/docs/Contribution.rst new file mode 100644 index 0000000000..ced890d516 --- /dev/null +++ b/docs/Contribution.rst @@ -0,0 +1,8 @@ +############################### +Contribution to NNI +############################### + +.. toctree:: + Development Setup + Contribution Guide + Debug HowTo \ No newline at end of file diff --git a/docs/Examples.rst b/docs/Examples.rst new file mode 100644 index 0000000000..32b83c37ea --- /dev/null +++ b/docs/Examples.rst @@ -0,0 +1,6 @@ +###################### +Examples +###################### + +.. toctree:: + MNIST_Examples \ No newline at end of file diff --git a/docs/FAQ.md b/docs/FAQ.md index 074f519c4c..e2423dcf1c 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,3 +1,5 @@ +# FAQ + This page is for frequent asked questions and answers. diff --git a/docs/GetStarted.md b/docs/GetStarted.md index 8dced37cd6..8301c10ab6 100644 --- a/docs/GetStarted.md +++ b/docs/GetStarted.md @@ -1,5 +1,4 @@ -**Get Started with NNI** -=== +# Get Started with NNI ## **Installation** * __Dependencies__ diff --git a/docs/Installation.md b/docs/Installation.md index ef7400df4b..fbd939d36d 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -1,5 +1,4 @@ -**Installation of NNI** -=== +# Installation of NNI Currently we only support installation on Linux & Mac. diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..298ea9e213 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 193307cf6f..a882498cd9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,22 +1,24 @@ +# Overview +

    -drawing +drawing

    ----------- -[![MIT licensed](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE) -[![Build Status](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) -[![Issues](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) -[![Bugs](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) -[![Pull Requests](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) -[![Version](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) [![Join the chat at https://gitter.im/Microsoft/nni](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE) +[![](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) +[![](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) +[![](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) +[![](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) +[![](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) +[![](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning (AutoML) experiments. The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. -

    -drawing -

    + +![](img/nni_arch_overview.png) ## **Who should consider using NNI** * Those who want to try different AutoML algorithms in their training code (model) at their local machine. @@ -86,11 +88,13 @@ You can use these commands to get more information about the experiment * Open the `Web UI url` in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. [Here](WebUI.md) are more Web UI pages. + - - + +
    drawingdrawingdrawingdrawing
    + ## **Documentation** * [NNI overview](Overview.md) * [Quick start](GetStarted.md) diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 390b18b10e..4043127c75 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,6 +1,35 @@ -# Release 0.4 - 12/6/2018 - -## Major Features +# ChangeLog + +## Release 0.4.1 - 12/14/2018 +### Major Features +#### New tuner supports + * Support [network morphism](./HowToChooseTuner.md#NetworkMorphism) as a new tuner + +#### Training Service improvements + * Migrate [Kubeflow training service](https://github.com/Microsoft/nni/blob/master/docs/KubeflowMode.md)'s dependency from kubectl CLI to [Kubernetes API](https://kubernetes.io/docs/concepts/overview/kubernetes-api/) client + * [Pytorch-operator](https://github.com/kubeflow/pytorch-operator) support for Kubeflow training service + * Improvement on local code files uploading to OpenPAI HDFS + * Fixed OpenPAI integration WebUI bug: WebUI doesn't show latest trial job status, which is caused by OpenPAI token expiration + +#### NNICTL improvements + * Show version information both in nnictl and WebUI. You can run **nnictl -v** to show your current installed NNI version + +#### WebUI improvements + * Enable modify concurrency number during experiment + * Add feedback link to NNI github 'create issue' page + * Enable customize top 10 trials regarding to metric numbers (largest or smallest) + * Enable download logs for dispatcher & nnimanager + * Enable automatic scaling of axes for metric number + * Update annotation to support displaying real choice in searchspace + +### New examples + * [FashionMnist](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism), work together with network morphism tuner + * [Distributed MNIST example](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch) written in PyTorch + + +## Release 0.4 - 12/6/2018 + +### Major Features * [Kubeflow Training service](./KubeflowMode.md) * Support tf-operator * [Distributed trial example](../examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow @@ -15,7 +44,7 @@ * Support search a specific trial by trial number * Show trial's hdfsLogPath * Download experiment parameters -## Others +### Others * Asynchronous dispatcher * Docker file update, add pytorch library * Refactor 'nnictl stop' process, send SIGTERM to nni manager process, rather than calling stop Rest API. @@ -25,8 +54,8 @@ * Don’t print useless ‘metrics is empty’ log int PAI job’s stdout. Only print useful message once new metrics are recorded, to reduce confusion when user checks PAI trial’s output for debugging purpose * Add timestamp at the beginning of each log entry in trial keeper. -# Release 0.3.0 - 11/2/2018 -## NNICTL new features and updates +## Release 0.3.0 - 11/2/2018 +### NNICTL new features and updates * Support running multiple experiments simultaneously. Before v0.3, NNI only supports running single experiment once a time. After this realse, users are able to run multiple experiments simultaneously. Each experiment will require a unique port, the 1st experiment will be set to the default port as previous versions. You can specify a unique port for the rest experiments as below: @@ -35,7 +64,7 @@ * Support updating max trial number. use ```nnictl update --help``` to learn more. Or refer to [NNICTL Spec](https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md) for the fully usage of NNICTL. -## API new features and updates +### API new features and updates * **breaking change**: nn.get_parameters() is refactored to nni.get_next_parameter. All examples of prior releases can not run on v0.3, please clone nni repo to get new examples. If you had applied NNI to your own codes, please update the API accordingly. * New API **nni.get_sequence_id()**. @@ -48,23 +77,23 @@ * float * A python dict containing 'default' key, the value of 'default' key should be of type int or float. The dict can contain any other key value pairs. -## New tuner support +### New tuner support * **Batch Tuner** which iterates all parameter combination, can be used to submit batch trial jobs. -## New examples +### New examples * A NNI Docker image for public usage: ```docker pull msranni/nni:latest``` * New trial example: [NNI Sklearn Example](https://github.com/Microsoft/nni/tree/master/examples/trials/sklearn) * New competition example: [Kaggle Competition TGS Salt Example](https://github.com/Microsoft/nni/tree/master/examples/trials/kaggle-tgs-salt) -## Others +### Others * UI refactoring, refer to [WebUI doc](WebUI.md) for how to work with the new UI. * Continuous Integration: NNI had switched to Azure pipelines * [Known Issues in release 0.3.0](https://github.com/Microsoft/nni/labels/nni030knownissues). -# Release 0.2.0 - 9/29/2018 -## Major Features +## Release 0.2.0 - 9/29/2018 +### Major Features * Support [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) * Support training services on pai mode. NNI trials will be scheduled to run on OpenPAI cluster * NNI trial's output (including logs and model file) will be copied to OpenPAI HDFS for further debugging and checking @@ -75,14 +104,14 @@ * Update ga squad example and related documentation * WebUI UX small enhancement and bug fix -## Known Issues +### Known Issues [Known Issues in release 0.2.0](https://github.com/Microsoft/nni/labels/nni020knownissues). -# Release 0.1.0 - 9/10/2018 (initial release) +## Release 0.1.0 - 9/10/2018 (initial release) Initial release of Neural Network Intelligence (NNI). -## Major Features +### Major Features * Installation and Deployment * Support pip install and source codes install * Support training services on local mode(including Multi-GPU mode) as well as multi-machines mode @@ -99,7 +128,7 @@ Initial release of Neural Network Intelligence (NNI). * Others * Support simple GPU job scheduling -## Known Issues +### Known Issues [Known Issues in release 0.1.0](https://github.com/Microsoft/nni/labels/nni010knownissues). diff --git a/docs/Reference.rst b/docs/Reference.rst new file mode 100644 index 0000000000..3ce330c3c4 --- /dev/null +++ b/docs/Reference.rst @@ -0,0 +1,11 @@ +References +================== + +.. toctree:: + :maxdepth: 3 + + Command Line + Python API + Annotation + Configuration + Search Space \ No newline at end of file diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst new file mode 100644 index 0000000000..04b97116ac --- /dev/null +++ b/docs/Tutorials.rst @@ -0,0 +1,13 @@ +###################### +Tutorials +###################### + +.. toctree:: + QuickStart + Installation + Trial + Tuners + Assessors + WebUI + Training Platform + AdvancedNAS \ No newline at end of file diff --git a/docs/assessors.rst b/docs/assessors.rst new file mode 100644 index 0000000000..9cb127798b --- /dev/null +++ b/docs/assessors.rst @@ -0,0 +1,19 @@ +Assessors +============== +Overview +-------------- +In order to save our computing resources, NNI supports an early stop policy and creates **Assessor** to finish this job. + +Assessor receives the intermediate result from Trial and decides whether the Trial should be killed by specific algorithm. Once the Trial experiment meets the early stop conditions(which means assessor is pessimistic about the final results), the assessor will kill the trial and the status of trial will be `"EARLY_STOPPED"`. + +Here is an experimental result of MNIST after using 'Curvefitting' Assessor in 'maximize' mode, you can see that assessor successfully **early stopped** many trials with bad hyperparameters in advance. If you use assessor, we may get better hyperparameters under the same computing resources. + +*Implemented code directory: [config_assessor.yml][5]* + +![](./img/Assessor.png) + +Like Tuners, users can either use built-in Assessors, or customize an Assessor on their own. Please refer to the following tutorials for detail: + +.. toctree:: + Builtin Assessors + Customized Assessors diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000000..5f4b99810c --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,187 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +import recommonmark +from recommonmark.parser import CommonMarkParser + +# -- Project information --------------------------------------------------- + +project = 'Neural Network Intelligence' +copyright = '2019, Microsoft' +author = 'Microsoft' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = 'v0.5' + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.mathjax', + 'sphinx_markdown_tables', + 'sphinxarg.ext', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_parsers = { + '.md': CommonMarkParser +} + +source_suffix = ['.rst', '.md'] + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'logo_only': True, +} + +# 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, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + +html_logo = './img/nni_logo_dark.png' + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'NeuralNetworkIntelligencedoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'NeuralNetworkIntelligence.tex', 'Neural Network Intelligence Documentation', + 'Microsoft', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'neuralnetworkintelligence', 'Neural Network Intelligence Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'NeuralNetworkIntelligence', 'Neural Network Intelligence Documentation', + author, 'NeuralNetworkIntelligence', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- diff --git a/docs/howto_1_WriteTrial.md b/docs/howto_1_WriteTrial.md index 506c6b8fa1..4693a68f1e 100644 --- a/docs/howto_1_WriteTrial.md +++ b/docs/howto_1_WriteTrial.md @@ -1,5 +1,4 @@ -**Write a Trial Run on NNI** -=== +# Write a Trial Run on NNI A **Trial** in NNI is an individual attempt at applying a set of parameters on a model. diff --git a/docs/img/nni_logo_dark.png b/docs/img/nni_logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6432b2cb767e1e67c53ce8875f71ce67ebeb5369 GIT binary patch literal 22693 zcmeFY_al|>{|9~}l#xoM9HB)j2bCiuBb96!A&!}{j&(xDF)Fk~QT8e$vS-#o3fbAt z!Lj$TIhNl=XyNnb$O$up~TL@%>qFXyYl@z+7QI(2|@Jq z2bsVV=V90L;Kw1S`-WHuLW19s=jooO$hm=sr=Q(5c&6j{FVSbS2im0!IhVwLb1$F2?vi#QNPo@_;VU70x%%Y}m zR{A3I%0WGaM3&onN4~#M)k|y&K6z4o)jtl`GDd5y`CIu$-t5WL7O|fXPg|K#g`g*t zjg58eS*tB?nv|~~%pJajz{<&*QK-KdqDnuuK9D{sC%+mVI>tj2mB79J;sGujE znUA`^)h9e1fBYIdR6TwGJTZyUG9fUxKUlGx>u6L&o(-^3Hf#aT_PP!lIi-~M)~4dO6(ar8b3g49$Jxgh&zpO2b(&{sm$$?*2F z>Wo(5fS^W1?M7uO9TfRi9_(hx*{Df$GP}-kq(0pQGP?$ro4x#z3C;CIAt1l>gKPBF zGSP1vXOE)&ZqkUo^)IFZu@R@BFX!7?p-$o}&kht1So7P46=^iKLSO9yQ}X0$WUKx- zKEntJoQ0R!UB0@i?Bv4AUnd(LgCDsHbNKEk;MxXr8wa?K9iV?*a9sj|EDx>G`>~UC zO-OhRaXP=6N2})`(Jz2awIAsf+o(0D7EQv-o_JKeAQTa-$_A~%qR-ghuKb_qn-5Ts z*>QgpDEDLBC!jTFmBVW&B#=@QR>$Ksfnj#hfrX9r()N5;&GMgz4no)A9c=7h6tXh| z$(>;>f8A$dz6<>R8kX`7ZJ{Yb#Fh@KoAVJHd^6;Tufi2&(3$1N5POxAtY}zMS;&k@ z11Rcw41a@HLYNWc>;@pf9|#!l``M~MW%9duG0m~BtO63{1I(SudBDhV3}QZ|5pM$V z!&Z1-aHs>-*Uq4p)?`k@x97)2A|Nwaz>w$%_PH^bkuhBnNHh{&+WDOx;pz8=+{_A9 zYk?(4966IQxk=2CL%SR6c|fokL@U|?ii`(~e{=r!hVkW0c+u4J6Og|J>*hgRjNi>_ zr~Zz|2W$|j=Wq8F zlC-*U3s4H2>yYriT4;}^24(>iF9SskdjwyO41lDnow7XWpy#i<*rBCDU>9>Fpcfgj zKs_!)ri1>$yQE2?Z}7pp5QAJgC1M#RAUghNz=TZJ1IB`5_nA*EG*+-e1A+j$A;ecX zX&QM+%=eZ5`VYau0uC+1&KfbTuwh5CYkR$mCmEq(382U&V2i7_<H300YL3qbK>I#eg*RKTU})KECG(m20NJVh3TI%`)Z-DOi6Wo zjswB>4c+i_cnhWA%UX+2R4ASf+Jt>)v+_T%^7Bcr(nIYah(Ixox*(v48vhmaG%c@y zoMiTw0n)yH?*|6(LtMtP5@vM6_u=hY1nv`oy+iptJn0}9%~5J^fq80y%R}IMC#7#J z#>{?fz=vc{J}M3)_V!$4@|(g@CYrd4Ajq^6wXH9HVMNFG7RXdLKXHN`KPxGAo&_EQ zRm;N!^uPuj5aeeJW2pm`d>;S;@}mQGgKQAm7xovzl(Zg3`)OvgLXbQTSmgWQh_ z;z~s&4u?#>s__Wy$D^Fc3}e1$dg)H;_4vgSSc8bHL=#(!q2D^u0x(EA0Ok z{gV90Dvz=KFJA(^jO-?}K;PALvGmcG*i-dPAxMhn#;dcS7xNk6iwwe#DD*9Nz{$^$9Vz;cmt-Hka z9r7nfV|#ID$QBlO2999mDyk%Y4$J6d4F7uG*qw5kDOB2pI2BL*ADvv74oIFI5~3xk z)z=QKMRTdxyMxpsuK<*B2@TAbN(e1Mt^7p3Y~I?GAxuS+;oQOkP$2&orVtb!jvsLi z#h(@LK!skjLHK~k1YLR!;F#h#ttzHR2z+^^H!A7|;}_+`-scZo%CQ;Xbx>Ex|Aj5G zes4Q2SSGvvK{BRYR@KoR_N{}!vsH>f7Ll>?rBMy;58fw*9=1W;k1Ay62m_Jizqb)o zZMC@Kkwn+ZsJ`OrYh>exW4~FlS@vXl&p=Q3!T#xBf0xhwq@s_#iz@%(JW1u5b#DT2 z2bO6`lIt7TT!vgrh0yqEx^nn09u1Y&{Dn2IUf>gID zkjWnd75E*4-T3lqmE-vw(u4{jFyGkPU9W|if^nsTY+?E~uzJpJfcjyrJg5+9C+4C; z%zaXRMG{xrPo6W@hZ3IwX~Ta46AXX?=ut1<`Yv+^$~r;3xEx(WPW*QQx)cZ4K)Il{ zJ0ucGJMo3=Rv(L#TDPjVA$eEWK7T?mJl^led0&IU0X$FTr(mUM znu57$UBu8uaXjEz)D}%d8##GdKRX1e0I>S8$FlEnCrAkT4_RSYue7BRdyATEWef~d zW^Th-Kn>pHEu6;Q<3jQNBN{a7VJh#TPsKIfP6;6H9#;o?_=H+ZF^~eG>Bp_a_;)_` zXqsB@XP?~2d%aMiE)cNqXa7>pPAT@tv|gJSY~|iiZ9?F&DTY-Bs2dJP2V(d!wa0-k zQv$k@*4S6Wiv7ctiK0HTaMrj6GK{D?hHl99~(9USzqNM`JhXm zU>(_`wuNwbw~rh)h<4d}RWXd>n^lFGF)nC31bkgegsXyQoQ=w)rF=&|wVdCD?9%(z zR4qDhyEzKgqwv z11oeQ1vu{SeT%?#Ktn&Uh$!<6;<<*64dQ@D(^*Vy;YQNH8v7(O^cI$70mzc<_En3@ zWSgPsZ$j27_ZrafqVtmha11SggY1?pL0KRfb81pI?4K-Os3HtNDSBuH##A2sGRxr_XVmfj8JQ6L+G2*D-)*Bk}zPh1R;JLypuJkP7PkHu@C4! zs&-k}s1z<7(#8Oi%}T&a8elIe1zz&ec0b|#H1Y-ggd-<@Fx2x*vSXytx52F;Ah<0k zX8hPIgR#O0+P&V>cL{;c>lZ_BBp_e!N`);(Tf!2S(L)_@{B(dNya*&zcw>Wbc(P3+ z{+iPyzVCcu+y+vp{3uXzZj!0yEbKAlG*2SH&Jm6{(LvjLRM&<*p*Np8C8obYk3q-a zHvq!q#N}^`TZXjs=tA~dd%n#@jTZ=ZEC94&mh)k#1I{=afFKjel_zAX?qjieH1*j1 zjB?BZ%lAdF)8@ZBQ2sviJ5nynL?@?|GkSB|ASr=d^w8FlU^2K<+U;8?2t|egO-S0X zTyD|}BYzgvgbZQza{=VPT$Ev- zK?Dj3FNwLwcTGm^;eIIV^`lg!7_We8;{x0WBB&D+U-r>|_nYdO6o6fFv#+nwKZ7SG z_tOT2F==Qzc~2O8cR{$$zP3BmAu;VvC5@p*wgfrKs<%p0#ew*fd8IJK;3mK&7X;VM zh0bI4(jN-hSG)AT+30nnRN3Bsc{a8v3-VM0+_a(Ani|D1wSz4OTjOC%cq!LwC$b?=R5h-iNbGx}E*&u&Y69>{eIuOte|o-2B&qQ&EvX&Y~21R|&`k zcD6>?wpLLQYwR3$ELYkF=t{EL6k`@v^j;gFw~+C3 z%D--(r!ej_*loP5+E_6cdy~8THk6OdGxA>tGAC!|9o6VTdf&QeNRQZBnfn&Ewdi=B zB#5gO?LbA6-UmTT2VjBW6n3feTC(G2Woqt9^BE_E^h1nz={IF!sDoh&h_44=x>)h5 zj{l=OvAa*#GxON}%LUnl#_V7aWkcagSG&6p63mglD1=iq1hK(EdSwTF`Gt=9q9GtT z_5K~S#0IY_gh>+f0m%#@pkwBNR2Es53!n9r^iP<;O$R?6;J;6|Vn9#@Fe|2KoMZ5ul*&jd@M41C8{y8j~X0pZ`itg#d6o5JmU zh8P5yBGRXX$i~?jlL|1geeYE7%n%1zE{4X66OkSq89jt zL|R&OH05IzQl0T1%Jvov_-wPV>yFoo!(8E00u_lCt)=qORBhb^ur&}g69WXjq;7Oy zQbm)*FSqE_a(m)=e@JkVOSHak*F8G^7qFnJozD3`Dq1S#9c91VC+521!YhZD9cL^2;@L$#7LdpgGFCKaC?=OV9?<*zu?e+MhNVbOMRZunEQ5 zof6>&sW1-9ojib1hi^C0!&11PhfuE*y8*oH+dQ&A^s&8}Zg z$*kKRgN1@};Yziq7^BGUEzDaCGRK(|d&}*SJ@M zh@h%~%-rD3lJ*t5Zoh!#D9*xN6Yt%P_~lAEDXRgn6I475Ph8}W0i78TU^K-5G@Ylc zv8(%I>=t$-8lUTV9{FoCBn3kfo}X0*%EpJG*D(ts-jv7QWjJ)(_G#jsM$co7hc{T( zddxw23Hcdld{dy?#fRos9P-!|{Zh#8tj!|-g?svQaS{?tmEhvD8(y3Y z6rA)>V?FzaP_B9rYz4AL>HDqO+)?L~e$8;?Q{=1vo9!t<;li)Z0vLrpiu)XmS4b>D z((rpL?_!a0M=kr!E=+Cc=OnKZly$bLv?fV(>J>%hipiZmoMUKjm92! z!^%Ak1M=0razoDJYF$uCKt$EGDh$(lZp*gRWEX01;Ce!xQwEox-oD}-Ei(=`4K%9~ zwHzwNslm$`(ElVnLBegV+!cmI(-xKo5`fdY=QoW-j=8#S`UZqg;C>;f3;(7+IpkmM z-g7bJ*_+rXYFm2*_TS?@;5F4%G*WQ8X=7?>UFala@E(jun)h9p))|U7_W`wv;`>;Q zkqJ)=(X?VA%uA1=I$0L^x_#d)Ija{jftgIfTr&Mu)$EWK)sp?60dj5r@H4N~{_Iber6aifE`nJ?bu4J#MsFlZ z;nZwr5M_(nk3uPxZd-{18f*@?O*B1DQM$1h+;P8VV0SY`$MYE)O$4A2(N>M}Ra|Xv z46Dz5yVL*E$^+Q$12SzKE6rmWIYwkONjfzveACb}g=*;+VpAx|>x6DM)~bEZCjaX{ zaYpn@#!`+sNt3HomA}XudT@SGKOy!I=?{b2pE^ssaBzb@mw!J#U^ctSH;~>z7KGO_ zm98ZqC9Fw~U4sn4c&0ja(gu{uRizPl1(H{GaMw~)o{MD7pfy(a8dsMnk|FdG*us|7 zPF(simi~;cq~&db2&VQKD4ieniX>wadpsimwEqB`YtaIS0!`0o&V21?L*`-bleC@^ z!;2LXuFEp)mvr_|cm*-FE-^H1-hRwlr84=ULqy%+Htp`;-a+HU5c=vxc#~Cl6SQWQ zbPL{ara)DdxU{@cWV*bHRUw70d>a8KW|%bv+4CgapSK`95k9WBg5IgfVjZ&F4DTR9 zi|JM!O2=+MZ$Kui7ML{eKwbS$xN?$!chDGSJt!l)q_mp*5VQ+IncpLcHPrU3H_|TI z@shA#t{bTHV>={b2l1_(G!2+ocCA7L-h6I_UQ`fP#2~DQRY~;KZ9~C;qJW3x?>lq{ zIO;wDIXeZR26$A967ju&sr8KUnnBDic)1f_EPnDevM!XooWN>(Du-^rG!%E3#%y+W zpVat`qQ$cF8$donqeWFT@05|)SoH3veIW(w)N)4v3tEdv4CZsQt7F?*j z^&lxH7-@qnAj$=EMr@Z;A_Tg^#~1z0`u!AeQqyG38H@_D({B06E`JW7<~v5wv38OB zs@0n{_7q08GX6c+7bH7Ad}?_6!UuRJE;rzElDjQHZUQz7#8z z8dbyZ+CR;*_hPmBfau3^!p`iS1v3frl%*)Ct>#JU7aE# z$cVgf6(|}4dbQ?{1ZKatAR1`Z!d5i}R<#k>M1UsbX9x0W5qcWyQbxCY7Kj>qKS-w% zQUjsck01eOfUM*-cAd4D)M`8L3281d6NzlT>?r3mey;FtwA9~$ayZP{iO5l|o{|7G z(b%zYUQt$p|I5KO2XOGz440cX;j#z}yfB-qy(e|Q+#_8{-J4h$)cmzwGZY)YGQDzT zk^KkN*aAd*vtzI|Do%eaKFdK1Z3{7N>GxG(J1{=5_h@Xxk-ImTah_%WFiw;aR^QP3 zgDaEYgp+wJJ0!wS9c(D&m<*TmY?WVx4Sa1QDK^H30*q390YLDQ2MobSDc}E5cBd-c zN+XfDTDR0HVGM(+Eh{nxR4nh|7CS5Ehz(*TpTjlHF|_!sde*WLf$2Ts#KuMF7~Bwp zuN8*23qjE!fKz-!=XZ>1MxH^yoz#~i4j4|~U{bDtlxh4UP_*?>q|k&w1li?*<%*)* zJpxlt`$=OIu>Yz3S)~MD2Ws4gZ&nSI>52rxd%RuPCJ7t&9kc!2yn@+G0cZovz;Zmo z49bc_UDzbi{l}l5QJsBRl5e=){Mq;JKI1zoS|G3Skg~ z0oi1WxiH~&qq7<{@R-DQIjFdGsDVOtt8k!qB`cQBAWY!G>oq)5wE+=vccuFiex#7J z6p=ixG>x^15UJf}HjR&o6BW_Mq?z#C<;xG>F(K9(F7JVGVF2c?>?C z8-QC=Wdt=^BB02IRj6KP2B9)A9WlUMo{wuCFaKa;1cxb`KA7&XJFILQSlJ;Ra5PIq zx6bIj<~XNJlve@Af|Fnz`4Wa{lK>bL<%1LNMb?F8qz4a}|su;riuKwxekRi!cllHW(yAu&mT@P>>Or$S#M( z6fS_t+SHc`m>#UU+R595z-xoAu60V>Z26Iy{$W-9o|PT@$L>p8k672}Md2R(qWyHj z`39qG?QHVjIQE?$*G7Ei#sAEDU+3=(q8J<@DZ-om0v=msauH2@=e1|}771aq&;mBn z!z9${?kdpHztE07kmgBu3eG7(fLA1#YCHXNoLAMh+-pi{R(x?^{oXo>oBM~(ia6Ia z1mBnYUgkeqyIQr87Sb3wcSbe(PhTP?t|L8stemxp~t z>0oZ?KwgRD*A9D7sY*0MUVR`ZcpctZ(LU?eeR+!j z1a^Y$zF^04`5nLGE#tWxMW0Ll8h1$8Cv1|y@SO|zjTU@*yFh@cWkua<0Rt=$e%sRa znFlTkuYjZPhr#)&dxXF;F!YX(yWH@EZB}DGo=a538e7<74RxsjUdlmfbgsdOuXkWw zi@Ec|UTF%(TD)`?F8jLyTyDaCPd?KH~?jQcnvDJQbItEgtsbi zgz7LrWg0$p566<_egx`CKG^drO?9-smSJgw_-=KkJ;m{+y9eF#_h1`}1f`Vo@vn9L zz1a&I?zN6#BNd4)4|HOzjZGk4*b{7Gm=HdNbn7`9qpox&Hi%0}ZLlQpfEyMhw?>IC zR!0N$O~5JYzJ}jgt9|p|?CCzyk6l*BBZnp5F-!zBUenlgJ9tz0Y(hDP5p2r1p6yTv z=E>Sr_!L(c#G^z9*tbxd(=SyUz$^urG_gla8ANbiAeWW|Oz!Dr^pVwj;?`laoS4T) zgPT~Z;Yq0L6`L@#+7MI{zWV|CkzVyt9DG=u0SYCp91tt$5Z-Gw7hMJ8 z037odgH!dJV0iLf$Ff%Q?oj#*!=jAppD8U#ZHAq6xw8HyepJ|MT`69_X<@eQ%$)fk zp#T0`@*K^E-P1_fj@88k`lFU$Q}*0*x*77EDjIxBw`kHm(WVAnNS& z{AJ&x9tSg5>jL}EcJyUF$OBq=IjhBYFQK50VgJZr9k%;-5Q?Z~w&46E&{COLeH^6D zMA)&{fwBu@(hruYr|B_Lk%Ui0ypRqovyx>P(+gXwnTuP7Jn7G-RTgvgahL`??37oc z2HF5M#TbWjj;q1;ehX5a7PAdv7(sr@qacBCv60sElXWiy^9C&upeU&usHaOYFl&Tl zR1iw<5;$_cyfGLdV%kM7-;V-!3r_0BR}t5)`|ptF)Wq*>**SgHk1^Ju9IsEeHDell zH0lapF4>I!O7GVQZXamL0$L;NvbD;@MD+|VmArxthQu2{o(Vhq%@K}AdPl6%SPGTL zWC;&f0N0mc_KMXvsjST?t0k|&^sbN$1wOS*bsuf^sxhI%lZ7JBd8f6t?|aZ|odxXX zD-)p*Sh)_=%~au_hs9|2)2(LR`6&RS>o3IbShvb|0K_{RQv7Yx9`QaCUb*!A5S zJL#sv2M;qI0KdzyBOn2@9^e&b&TsME43l(r3eZ;oi|`+LBg`1pTUJ2z1Ret64$LX= zVXaiy1wP~fG)=#>`G~JMmKcWtCw=Hm!1Fb6 z)OKR9`grAKg8_|%0~m*MMiE?zys%E-TO4Mu|Kl#FRZjnro2IiFZ{!!ylb!(Z&rK{D z0ogJBD@TU=M4e1%P8fe5s}?)hbL9ruGfO=g)biiB3zaAC5u3nhPW~cbv=J^9<>8Yo zAac%vohoTq=x{T`DvX_1@*;i#73^}}-5D?B+L^nnR=%=Nf|E=?6-@)05yd-zb)%Fd6jvfAgCLrK6DhGg+4zjP-zItF+6%9ZNlD)cz zA7d@X%x7j0GJh0Qz}x&rKuaeVP}@shgaj$4Tj3nI>^mTXz_oNDTX4$>>zAA#ixpyY zWo>&wF$NfZ0oWOb?;80Db;skAx(|Hf;Zg-tHlf4Xy5N=#40|M4wheI9S+4DNte|s9 zo)}vVPAUf`7%zcos{Af@%;olzg6A+VQR&7@dUoW4@(w_)E5$&q)jVKgm&j3uQe8RD zECh}?U&>TM0U*TXYL$!x1)+tm9}-%gtZlXW6Zw+`fQ$veJG7+k2}|MMH_rrnv(auC zZI5AzEb$AFB(QHoFDOYMY=$t1C)3-P&-(;zZOoxtSMHy)Ag8ddP%R|^OZq8!Qa^)LAA@$@{87k>(q20D$;*dX4= z;N`lAPY?jFJpUWHj6Vgv)y591c2C@MDd9r%CuiyN+3nysTLLhnHM?R|h=Qg^qd%xzTrkzS4F%a+ub(yXT;X2rWRidr6M&4D$cf%r#a&wY&KzWfFS)xH+wv z!jf2}5*Y;DZxi?(N4VZAA8$9I&p=wuHa$PLC|_JAzZk;m*cj1%hix_@nj!R~m?eei zQ{WY55LJA1BL5Wgut7}2R;Mw;mIq=vK5Q4~sK*!jBTv$^+|2eHH(h>*u!V>oxR}LA z*q9saqtHLLd&_4z$Ln}g?=xh$Rdf3!1o=#*T!vgwcN0s>b$T*X{N|romLOb#ELwhC z;4V>bNe*lGq0r9-{LH7pT`q5JM)_6~wat=bC#XS_^6kb{hW~lvHS8_ustqT87ulSW zF?_%G{7|_LPQEpjZ7n{^n=T(zPQ3jF?t=In2UAmUbkiZdV4}U#_U8P10w=)1SuWzdh@jxq`ac+x?GGVIWY9x?FXnaWw92@y?~)ge@(9*KE9U}$k)X%Z zf0}*wu5Fs5{01rxoBHy=L9pTXfWHa6rYm?bEd!2%D@zvsZPPvjX%D&~!x@JzbOsZ= zPEjq9qWIfuh!HIASrZ$*CHE?)>JA(D>H<=r-Rs0MFA%b)J9seR+)!`uphFkfOMcXX zzH%^dFXA<2%bCw_-Coi7GPq5<&&>r9l#*k~%pT9OEc{|;;LkN_G)oY+n;C35L)96l zIsEE1TWn(>x!*j!@vvJioi)&1;j{XlXM?Nn8MlldZ;PGw%0zbhiGsU>yF>2^UB?!E z0cob1AxnF{=@O3MLDdbb$i~T`IkEB+lbO2Iy`9pd+A;4AV>)GS>>1?Zo{;CcmqJ(Z zdkzT(s=NeEb=rt!Pj9(OT||A4c~G8}zLp_2i52GW5QD`O%uwGL?}wSeUtb-z#3IMEcYAvudU+es+7mD@7};(oIB^n zw^|DeV#Hkc>#Fq;4ZfsO-2JE@%7#b?q2WNwt{@auBpI*LawshI}*UKWWpjM14lgnBU?mYMY{O{*6ua>D(N{fp*U;0EG z1Y<)M>o&gjG>hE3_k(hFw;pG!LCT#uzqVJ2t31S!KzQ%kLpu7p5|#N)T6uZ#sC#yx zHMRT>nnsfx9j`euNZNf$;w?d9wJqw0i$|rT$@SehxmJySQ%&mDa24)ML~NT6iIl}_ zn=SS@ror8#$ih^nkR0RF>~jl8-}{Rbly*&YgGsFSn zft)R#vFV+i?y9H8Y0uI^+;^U;Rib3d3!XRxRxJNHz&9lRE0T}0CDs+S=sbJ3AN!Kv z8mfPN-M<2H%E!POTbA(rf!O0vs=J&?Xkhl>&au*?nalSE|HP>e{%uZJ7w8P2wr_A1 zh(*s4vUdQEI}>W3*&w1Bi5r$NImUJ2sR@djEOQ|(uU#9ac6WFsOx<33p9xGe%ZzT%MVE3sOQ^ad zW1qgeognIKKap(eyYTCy&}|d7J_XCdBwnmYBkyXyygQ43~Z@oms_?P{Hjq6^;P$d3{NyCtX@92F;p_%=}zgTKdcgdl(jFw>M&(IcS?%K zjp{KX-f$Mxalt^4YsWpt>%B*THt{A;w9v?#@2df{)xpxO?=dHI7(F@U7C1ZqsSN(k z&b#F0@Ui`Xb_cRc0QrkbH*{QpYj;|}#rS6W<4$LTSJ|cfTY2rf9o=(NuiYfph2HnY zBtA7K#GE0%rXq|M=5n_?&$J1fP|mi5q0qR`r^d;3KYtvJnO}U#zsQYfN_lZkB&*kF zP7oWHEB)o=F$=nj>k zcy9f9#rOR5sLMhnyHx^Pxxw=X8{xi8f?hhdT#lEKdoldX#+S>Mg#-d>=YG|P6*;zN zm7X$EVM+5Wxl-vqPvXXYb)RYZJ^rpYATH2_;VK$kKXh(#bs9@`P%F1NW@MUU$mgDNZ2k=Gv3e%oukEe%2sNG3SGqmzZP^i~&00&5B8Icc zuJOZ9GT2=4)*khy+w3~zG@QPel}q)Bea~?TKiQdC2UFV)k=J0-`$F*vy3xt zDU>18D{O{>&#K-XiQyKW@(rXFP>d_!kwp z3cY?vKkg3fnJ;&r$~#VVQc)Nxcg31GBW$=%DVm<>NYF7-C$pN zuC;bk>B^Mt5saBS+DJ}^y+9MmqsbDqc5*^Uq$@3d$*URdD1_Ad#+Ac5 zOEr3O|b^AC9IRRU>Z(?1#>B2-Se%&km8_m*3Thp z{SU0MEjRFKGJ$p3-8#mK2{OeZ&&6tkTwmUw521y-T(f^GUqf3Gr}UdTnvw=Rb|yB~ zDNE}Q=Gs2`mVX&&NLSfOt*gi5cE&c=OLo^I@H;!DdwU$1rOt*nPpiD>_dk3FPS2`G z?&T$<%#BPm>|&>--Rl<=Nn18|s)We*2Gvi+uh=xoR9fnUsC`azNBp~|W02@Z-mH!5 zt$(w(s~kD0G*x%WIqRA1S7Gm~_7!ato;#893ErHuRP$o@>sgHWxxI4V_Z6~P*&qM- zEUvS86_(???_V`*f#wGCK2`+}M6{lmmw9rADz!q;l*CJ156@y>J>ap}hUGi?QzPc% z+`sIEUGDe~@A5TN2J8 z0_rDw|Gm1Q$-*npCP#^RTe5S`y|-$^ol05IKn$#f%|-sLJ8x|RuK()XG!ERXe;E;E(2xyTh-}yvo!)ce&v2t0eLt)8;N~_oN{{iU;EKrOg3};U~ia3;B-23Fi?9 znxs;3zVp&sq=m{|vE||QE&so(0{K-56koe+Df82L60<#JoU$or(^3~`N^*xe4kZ@u zJgpnJAX%JUB|UngKx`8^TI6N1eacq4W_{?DjRv>9ptZZ=$q+F*BISHb*N0@bbfmc@=+ z_g*1 zSO?qH)=-@vl)2%>qj?`|sg|wl>jQ@+-WTs|;#Pm-v)D=W1K1po$sx@_*VhkZTs!BJ zeA-_*Gu!goa*ELc77F$VReOD#jp}=gd)#9B39r1E&zm&&$%~x7Qc^Bo8qfBw(u*Q_ z?!J?+jw|m!{vmKG6R|;!`ZG6jyxMBhEqY_gvzNmpZD&|~Qnw{%XNoOOCLxC3f_F#m z5HF+pU%kg>lR=^G+#mYbJ4s3v6ag18&y$Ukf3aus9!6SJMA|m@Be!>x=3e!&_tc2s zsvORfs^*$*K4Hjz=+hqd^yHGe#0a@^i@Ma+F zpX_r5M`{oJ2@O)t*QLiah_5L-Wk}qO5nZqerR-8^&b)w;z26LBhQ~?4)V93r}yL=)wuVFKiPcxO*Lx8)0f3rus*0TEwbj>k3$zO zZb%iMj*ysCe!mD}>8Rs5!PQT73rX+#g;v%y)-Tlb$y6%V;oFXqG0kss7HN0Kj)%-v zu{sML*Cu!m4!+_zVtGx=z`NxBdXl1V|GBtGIi8pSP|b&9LjOSxEY5Efo^FOA8nKYkfc<?`^ANPJcTx=Jln53Yt9Xvi`g?)AsgKU53{So3UCU!`Xyw8Wx%bAU2V06^AD7@O zO}4zYzgXD3kzWJ_?cW*a@RFlvJU^_EYnODoeAw*HU>#ByIgXHDOq9Jb(5>j=`Gn5> z68~$2e0wp<()?jZ->qju+yw{aQirl@m+3zDEnZv0mHWS2@8b)J^dh^S9`&gmdHe?@ z*DK)dP~H&SThE`OZJRnIzo2LgP3tACBd#x?13eCFv7r@be%NHiSQ1I<79^YCwm8cj zXU@O`dlSzrvGw(;x5iK7vfEp=E8g&8ukGnXP8}knPwh%`?8R`JT-7zyKZ^{g4LKXq znaXvPb;hlZZs&5USnl^y`W+z*@-Io&rNi^HGHpR%B}qivzb~`h*4F0-Silmj)6lLE%kxcB)pX!XT(A1nNRN%F14#~ms9q`b((OXfVU-UPdF`MfW!(7QXP4g%} z<7RHV_mP|{*w$MT=9?`ODby}w%fHBxIo!`l%vYSpbZ7ixZ3W$2Qtyhdmme3a{v%M% zRj|*1jMA@#7GA0hJp6@s%TUAU`4;Ldaxs?<{sz%ZR z=G7;IX?rZuiI*(pNgFwS{wqx>C z1>-|^uLc{lIeJXQ&gfU^xJ`j;m*fXyS_MXNPtRuYgw`$GX!)F0f}nknlq^Fm$9-t& zERV~RwU98d!`!r#bx)5$NFL~eQH;7N%p%%t5ZhG2YDc`dJ*e{LoxMrsHe;E(?}FUI z`TO^fi28RvIuy&L*IZ+Q)23jinBsl^V)g7Z=Q7LjcGnuWufD57GCZ4vtR?i}FDz>- zN|FZ@d|w*}`2bfopMK63^2U((#q-hL=Sj2e$F4t^J*CxudzIZKr_3=c&Cox>YX1O%=no^YU;SI4tjI{;)&uAR(rY!m|mSlC^jA!@w7s=&Sg|HuuB6a3|-KG8a zf-@z#KHW}~Kn2ut)SwTn6c}x;9u9HEKUi10iV9GSXqwSp7aO@*8aGXv7ueJw9>Ukx zd`_)qD|0rQ<%axjSKc4@dR7%luE&`@3gTZpCYRl_PFgsOcGv!1?!3y;Z5n_)vMxJ{ zLsLV8XUC5AGV~s3o0uW*mK2;PVw?Beda)j!B@8q!HFC0}QBNBf`>R}RH);%_$*Yth zF6l6NlvhNdMJZ{!>m|fqxR(sb@ed}G=P)F}TOV{o9Ol3L@=qr-?b0ygdu~fUzZS1= zl)u7jl22yX(N%fx9FyFQUne&eF+-P{-@U>&A;U);EdrdYCrV~LPcp3&>+JQc+Az5H!OtCqeO7V_HWUf9-8P7Mkh z^ood=WY&|&ujhs`ZbN2gN8MPrbSy|y`J_ztotp0(Cf{aWXsYgvTDpI-m=@vP6aLpi zKk=Mv3(v9Rb?aL55q%u-wA6yh#^T`9YlnBv|18Z5AFTG>(l(7qs#l~8GHO; zJo4o8j~28Yofl^^q(|0s{1>ISf3{7qoVhOWy`r-|>OqM)!n0r;yC+L$Qdd|$=g;|^ z;z$~d;*S`(`Nw`CJDBt?o4M>6OAd3zQ(E=9T6!$4Xz z$g^~|=ab@?JAf?yh7MQ6(XSoS+RtXHw6xrSY< zWNfk&U&Z|;X}HAuka<1r$#B))fa4KHkJFZXqb{lL{uS@k8m;F|dfEdzHyZX9l3eS% zNP-*X&t$W6M+|>p>NAP4$zI+IA-BleSf`8#sXyggvz?O-{USPUt^3Gk8SaWCn3s%hQ3Q5YLY|Q𝔲hUr(j84y8J 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 + Changelog + Tutorials + Examples + Reference + Contribution + FAQ \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt index baf208dd99..4d6a69d9f4 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1 +1,7 @@ -mkdocs==1.0.4 \ No newline at end of file +sphinx==1.8.3 +sphinx-argparse==0.2.5 +sphinx-markdown-tables==0.0.9 +sphinx-rtd-theme==0.4.2 +sphinxcontrib-websupport==1.1.0 +recommonmark==0.5.0 +nni==0.5 \ No newline at end of file diff --git a/docs/sdk_reference.rst b/docs/sdk_reference.rst new file mode 100644 index 0000000000..e3d69e59df --- /dev/null +++ b/docs/sdk_reference.rst @@ -0,0 +1,22 @@ +########################### +Python API Reference +########################### + +API for trial code +------------------------ +.. autofunction:: nni.get_next_parameter +.. autofunction:: nni.get_current_parameter +.. autofunction:: nni.report_intermediate_result +.. autofunction:: nni.report_final_result +.. autofunction:: nni.get_sequence_id + + +API for tuners +------------------------ +.. autoclass:: nni.tuner.Tuner + :members: + +API for assessors +------------------------ +.. autoclass:: nni.assessor.Assessor + :members: \ No newline at end of file diff --git a/docs/training_services.rst b/docs/training_services.rst new file mode 100644 index 0000000000..aa975369d9 --- /dev/null +++ b/docs/training_services.rst @@ -0,0 +1,7 @@ +Introduction to NNI Training Services +===================================== + +.. toctree:: + Remote + PAI + Kubeflow \ No newline at end of file diff --git a/docs/tuners.rst b/docs/tuners.rst new file mode 100644 index 0000000000..67e16dadf1 --- /dev/null +++ b/docs/tuners.rst @@ -0,0 +1,19 @@ +################# +Tuners +################# + +Overview +----------------- + +NNI provides an easy way to adopt an approach to set up parameter tuning algorithms, we call them **Tuner**. + +Tuner receives the result from `Trial` as a matrix to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. + +In NNI, we support two approaches to set the tuner: first is directly use builtin tuner provided by nni sdk, second is customize a tuner file by yourself. We also have Advisor that combines the functinality of Tuner & Assessor. + +For details, please refer to the following tutorials: + +.. toctree:: + Builtin Tuners + Customized Tuners + Customized Advisor \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index c6246f0278..0000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,36 +0,0 @@ -site_name: Neural Network Intelligence - -nav: - - Overview: README.md - - What's New: RELEASE.md - - Tutorials: - - QuickStart: QuickStart.md - - Installation: Installation.md - - Trials: Trials.md - - Tuners: - - Try Builtin Tuners: Tuners.md - - Customized Tuners: Customize_Tuner.md - - Customized Advisor: Customize_Advisor.md - - Assessors: - - Try Builtin Assessors: Assessors.md - - Customized Assessors: Customize_Assessor.md - - Training Platform: - - Remote: RemoteMachineMode.md - - PAI: PAIMode.md - - Kubeflow: KubeflowMode.md - - Advanced Features: - - multiPhase.md - - Examples: - - MNIST Examples: mnist_examples.md - - Reference: - - nnictl: NNICTLDOC.md - - Configuration: ExperimentConfig.md - - Search Space: SearchSpaceSpec.md - - Annotation: AnnotationSpec.md - - Tuners: - - GridSearchTuner.md - - Contribution: - - Development Setup: SetupNNIDeveloperEnvironment.md - - Contribution Guide: CONTRIBUTING.md - - Debug HowTO: HowToDebug.md -theme: readthedocs diff --git a/tools/nni_cmd/nnictl.py b/tools/nni_cmd/nnictl.py index e76c86a5cc..ca7ec6086d 100644 --- a/tools/nni_cmd/nnictl.py +++ b/tools/nni_cmd/nnictl.py @@ -34,7 +34,7 @@ def nni_info(*args): else: print('please run "nnictl {positional argument} --help" to see nnictl guidance') -def parse_args(): +def parser_init(): '''Definite the arguments users need to follow and input''' parser = argparse.ArgumentParser(prog='nnictl', description='use nnictl command to control nni experiments') parser.add_argument('--version', '-v', action='store_true') @@ -171,9 +171,9 @@ def parse_args(): parser_top.add_argument('--time', '-t', dest='time', type=int, default=3, help='the time interval to update the experiment status, ' \ 'the unit is second') parser_top.set_defaults(func=monitor_experiment) + return parser +if __name__ == '__main__': + parser = parser_init() args = parser.parse_args() args.func(args) - -if __name__ == '__main__': - parse_args() From e7e87c5cfb32232e8db8243ef8479284b40c9b21 Mon Sep 17 00:00:00 2001 From: QuanluZhang Date: Mon, 21 Jan 2019 11:31:15 +0800 Subject: [PATCH 07/29] update doc: overview (#555) * doc overview * update overview * modification * update overview * update * update * update * update * Delete mkdocs.yml --- docs/Overview.md | 70 +++++++++++++++++++++--------------- docs/img/highlevelarchi.png | Bin 0 -> 33968 bytes 2 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 docs/img/highlevelarchi.png diff --git a/docs/Overview.md b/docs/Overview.md index 0b8bf2df80..c477758206 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -1,49 +1,61 @@ # NNI Overview -NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning experiments. For each experiment, user only need to define a search space and update a few lines of code, and then leverage NNI build-in algorithms and training services to search the best hyper parameters and/or neural architecture. +NNI (Neural Network Intelligence) is a toolkit to help users design and tune machine learning models (e.g., hyperparameters), neural network architectures, or complex system's parameters, in an efficient and automatic way. NNI has several appealing properties: easy-to-use, scalability, flexibility, and efficiency. ->Step 1: [Define search space](SearchSpaceSpec.md) +* **Easy-to-use**: NNI can be easily installed through python pip. Only several lines need to be added to your code in order to use NNI's power. You can use both commandline tool and WebUI to work with your experiments. +* **Scalability**: Tuning hyperparameters or neural architecture often demands large amount of computation resource, while NNI is designed to fully leverage different computation resources, such as remote machines, training platforms (e.g., PAI, Kubernetes). Thousands of trials could run in parallel by depending on the capacity of your configured training platforms. +* **Flexibility**: Besides rich built-in algorithms, NNI allows users to customize various hyperparameter tuning algorithms, neural architecture search algorithms, early stopping algorithms, etc. Users could also extend NNI with more training platforms, such as virtual machines, kubernetes service on the cloud. Moreover, NNI can connect to external environments to tune special applications/models on them. +* **Efficiency**: We are intensively working on more efficient model tuning from both system level and algorithm level. For example, leveraging early feedback to speedup tuning procedure. ->Step 2: [Update model codes](howto_1_WriteTrial.md) +The figure below shows high-level architecture of NNI. ->Step 3: [Define Experiment](ExperimentConfig.md) +

    +drawing +

    + +## Key Concepts +* *Experiment*: An experiment is one task of, for example, finding out the best hyperparameters of a model, finding out the best neural network architecture. It consists of trials and AutoML algorithms. -

    -drawing -

    +* *Search Space*: It means the feasible region for tuning the model. For example, the value range of each hyperparameters. -After user submits the experiment through a command line tool [nnictl](../tools/README.md), a demon process (NNI manager) take care of search process. NNI manager continuously get search settings that generated by tuning algorithms, then NNI manager asks the training service component to dispatch and run trial jobs in a targeted training environment (e.g. local machine, remote servers and cloud). The results of trials jobs such as model accurate will send back to tuning algorithms for generating more meaningful search settings. NNI manager stops the search process after it find the best models. +* *Configuration*: A configuration is an instance from the search space, that is, each hyperparameter has a specific value. -## Architecture Overview -

    -drawing -

    +* *Trial*: Trial is an individual attempt at applying a new configuration (e.g., a set of hyperparameter values, a specific nerual architecture). Trial code should be able to run with the provided configuration. -User can use the nnictl and/or a visualized Web UI nniboard to monitor and debug a given experiment. +* *Tuner*: Tuner is an AutoML algorithm, which generates a new configuration for the next try. A new trial will run with this configuration. -NNI provides a set of examples in the package to get you familiar with the above process. In the following example [/examples/trials/mnist], we had already set up the configuration and updated the training codes for you. You can directly run the following command to start an experiment. +* *Assessor*: Assessor analyzes trial's intermediate results (e.g., periodically evaluated accuracy on test dataset) to tell whether this trial can be early stopped or not. -## Key Concepts +* *Training Platform*: It means where trials are executed. Depending on your experiment's configuration, it could be your local machine, or remote servers, or large-scale training platform (e.g., PAI, Kubernetes). -**Experiment** in NNI is a method for testing different assumptions (hypotheses) by Trials under conditions constructed and controlled by NNI. During the experiment, one or more conditions are allowed to change in an organized manner and effects of these changes on associated conditions. +Basically, an experiment runs as follows: Tuner receives search space and generates configurations. These configurations will be submitted to training platforms, such as local machine, remote machines, or training clusters. Their performances are reported back to Tuner. Then, new configurations are generated and submitted. -### **Trial** -**Trial** in NNI is an individual attempt at applying a set of parameters on a model. +For each experiment, user only needs to define a search space and update a few lines of code, and then leverage NNI built-in Tuner/Assessor and training platforms to search the best hyperparameters and/or neural architecture. There are basically 3 steps: -### **Tuner** -**Tuner** in NNI is an implementation of Tuner API for a special tuning algorithm. [Read more about the Tuners supported in the latest NNI release](HowToChooseTuner.md) +>Step 1: [Define search space](SearchSpaceSpec.md) + +>Step 2: [Update model codes](howto_1_WriteTrial.md) + +>Step 3: [Define Experiment](ExperimentConfig.md) + + +

    +drawing +

    -### **Assessor** -**Assessor** in NNI is an implementation of Assessor API for optimizing the execution of experiment. +More details about how to run an experiment, please refer to [Get Started](). ## Learn More * [Get started](GetStarted.md) -* [Install NNI](Installation.md) -* [Use command line tool nnictl](NNICTLDOC.md) -* [Use NNIBoard](WebUI.md) -* [Use annotation](howto_1_WriteTrial.md#nni-python-annotation) -### **Tutorials** -* [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) +* [How to adapt your trial code on NNI?]() +* [What are tuners supported by NNI?]() +* [How to customize your own tuner?]() +* [What are assessors supported by NNI?]() +* [How to customize your own assessor?]() +* [How to run an experiment on local?](tutorial_1_CR_exp_local_api.md) * [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) -* [How to run an experiment on OpenPAI?](PAIMode.md) \ No newline at end of file +* [How to run an experiment on OpenPAI?](PAIMode.md) +* [How to do trouble shooting when using NNI?]() +* [Examples]() +* [Reference]() \ No newline at end of file diff --git a/docs/img/highlevelarchi.png b/docs/img/highlevelarchi.png new file mode 100644 index 0000000000000000000000000000000000000000..0885fcab5ebcbb75f399d68fcdc71e11a6ab5d29 GIT binary patch literal 33968 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 U+~w|?CI6m+tcnau+9crr0MJF1X8-^I literal 0 HcmV?d00001 From 1509c83fa9d365408b3406883d962c4acc269cb9 Mon Sep 17 00:00:00 2001 From: ShufanHuang Date: Mon, 21 Jan 2019 12:49:23 +0800 Subject: [PATCH 08/29] cifar10 example doc (#573) * add cifar10 examples * add search space and result * update * update typo * update * update --- docs/cifar10_examples.md | 84 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 docs/cifar10_examples.md diff --git a/docs/cifar10_examples.md b/docs/cifar10_examples.md new file mode 100644 index 0000000000..e2b7911dad --- /dev/null +++ b/docs/cifar10_examples.md @@ -0,0 +1,84 @@ +# CIFAR-10 examples + +## Overview + +[CIFAR-10][3] classification is a common benchmark problem in machine learning. The CIFAR-10 dataset is the collection of images. It is one of the most widely used datasets for machine learning research which contains 60,000 32x32 color images in 10 different classes. Thus, we use CIFAR-10 classification as an example to introduce NNI usage. + +### **Goals** + +As we all know, the choice of model optimizer is directly affects the performance of the final matrix. The goal of this tutorial is to **tune a better performace optimizer** to train a relatively small convolutional neural network (CNN) for recognizing images. + +In this example, we have selected the following common deep learning optimizer: + +> "SGD", "Adadelta", "Adagrad", "Adam", "Adamax" + +### **Experimental** + +#### Preparations + +This example requires pytorch. Pytorch install package should be chosen based on python version and cuda version. + +Here is an example of the environment python==3.5 and cuda == 8.0, then using the following commands to install [pytorch][2]: + +```bash +python3 -m pip install http://download.pytorch.org/whl/cu80/torch-0.4.1-cp35-cp35m-linux_x86_64.whl +python3 -m pip install torchvision +``` + +#### CIFAR-10 with NNI + +**Search Space** + +As we stated in the target, we target to find out the best `optimizer` for training CIFAR-10 classification. When using different optimizers, we also need to adjust `learning rates` and `network structure` accordingly. so we chose these three parameters as hyperparameters and write the following search space. + +```json +{ + "lr":{"_type":"choice", "_value":[0.1, 0.01, 0.001, 0.0001]}, + "optimizer":{"_type":"choice", "_value":["SGD", "Adadelta", "Adagrad", "Adam", "Adamax"]}, + "model":{"_type":"choice", "_value":["vgg", "resnet18", "googlenet", "densenet121", "mobilenet", "dpn92", "senet18"]} +} +``` + +*Implemented code directory: [search_space.json][8]* + +**Trial** + +The code for CNN training of each hyperparameters set, paying particular attention to the following points are specific for NNI: + +* Use `nni.get_next_parameter()` to get next training hyperparameter set. +* Use `nni.report_intermediate_result(acc)` to report the intermedian result after finish each epoch. +* Use `nni.report_intermediate_result(acc)` to report the final result before the trial end. + +*Implemented code directory: [main.py][9]* + +You can also use your previous code directly, refer to [How to define a trial][5] for modify. + +**Config** + +Here is the example of running this experiment on local(with multiple GPUs): + +code directory: [examples/trials/cifar10_pytorch/config.yml][6] + +Here is the example of running this experiment on OpenPAI: + +code directory: [examples/trials/cifar10_pytorch/config_pai.yml][7] + +*The complete examples we have implemented: [examples/trials/cifar10_pytorch/][1]* + +#### Lauch the experiment + +We are ready for the experiment, let's now **run the config.yml file from your command line to start the experiment**. + + ```bash + nnictl create --config nni/examples/trials/cifar10_pytorch/config.yml +``` + +[1]: https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch +[2]: https://pytorch.org/ +[3]: https://www.cs.toronto.edu/~kriz/cifar.html +[4]: https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch +[5]: https://github.com/Microsoft/nni/blob/master/docs/howto_1_WriteTrial.md +[6]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config.yml +[7]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config_pai.yml +[8]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/search_space.json +[9]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/main.py \ No newline at end of file From 74e9031a81c934c02098440d8805a8b0c32e2417 Mon Sep 17 00:00:00 2001 From: SparkSnail Date: Mon, 21 Jan 2019 13:00:00 +0800 Subject: [PATCH 09/29] Update doc: refactor ExperimentConfig.md (#602) * fix doc * add link in doc * update * add nnictl package cmd --- docs/ExperimentConfig.md | 17 ++++++-- docs/NNICTLDOC.md | 83 +++++++++++++++++++++++++++------------- 2 files changed, 69 insertions(+), 31 deletions(-) diff --git a/docs/ExperimentConfig.md b/docs/ExperimentConfig.md index 33a5f96633..c6caae4a0b 100644 --- a/docs/ExperimentConfig.md +++ b/docs/ExperimentConfig.md @@ -3,6 +3,12 @@ A config file is needed when create an experiment, the path of the config file is provide to nnictl. The config file is written in yaml format, and need to be written correctly. This document describes the rule to write config file, and will provide some examples and templates. + + - [Template](#Template) (the templates of an config file) + - [Configuration spec](#Configuration) (the configuration specification of every attribute in config file) + - [Examples](#Examples) (the examples of config file) + +
    ## Template * __light weight(without Annotation and Assessor)__ ``` @@ -107,7 +113,8 @@ machineList: username: passwd: ``` -## Configuration + +## Configuration spec * __authorName__ * Description @@ -123,14 +130,16 @@ machineList: * __trialConcurrency__ * Description - __trialConcurrency__ specifies the max num of trial jobs run simultaneously. + __trialConcurrency__ specifies the max num of trial jobs run simultaneously. - Note: if trialGpuNum is bigger than the free gpu numbers, and the trial jobs running simultaneously can not reach trialConcurrency number, some trial jobs will be put into a queue to wait for gpu allocation. + Note: if trialGpuNum is bigger than the free gpu numbers, and the trial jobs running simultaneously can not reach trialConcurrency number, some trial jobs will be put into a queue to wait for gpu allocation. * __maxExecDuration__ * Description __maxExecDuration__ specifies the max duration time of an experiment.The unit of the time is {__s__, __m__, __h__, __d__}, which means {_seconds_, _minutes_, _hours_, _days_}. + + Note: The maxExecDuration spec set the time of an experiment, not a trial job. If the experiment reach the max duration time, the experiment will not stop, but could not submit new trial jobs any more. * __maxTrialNum__ * Description @@ -421,7 +430,7 @@ machineList: - + ## Examples * __local mode__ diff --git a/docs/NNICTLDOC.md b/docs/NNICTLDOC.md index a2d9e11fb7..0ab53a73d6 100644 --- a/docs/NNICTLDOC.md +++ b/docs/NNICTLDOC.md @@ -5,20 +5,23 @@ __nnictl__ is a command line tool, which can be used to control experiments, suc ## Commands nnictl support commands: -``` -nnictl create -nnictl stop -nnictl update -nnictl resume -nnictl trial -nnictl experiment -nnictl config -nnictl log -nnictl webui -nnictl tensorboard -nnictl top -``` + - [nnictl create](#create) + - [nnictl resume](#resume) + - [nnictl stop](#stop) + - [nnictl update](#update) + - [nnictl trial](#trial) + - [nnictl top](#top) + - [nnictl experiment](#experiment) + - [nnictl config](#config) + - [nnictl log](#log) + - [nnictl webui](#webui) + - [nnictl tensorboard](#tensorboard) + - [nnictl package](#package) + + + ### Manage an experiment + * __nnictl create__ * Description @@ -37,7 +40,7 @@ nnictl top | ------ | ------ | ------ |------ | | --config, -c| True| |yaml configure file of the experiment| | --port, -p | False| |the port of restful server| - + * __nnictl resume__ * Description @@ -56,7 +59,7 @@ nnictl top - + * __nnictl stop__ * Description @@ -74,7 +77,7 @@ nnictl top 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. 6.Users could use 'nnictl stop all' to stop all experiments - + * __nnictl update__ * __nnictl update searchspace__ @@ -142,7 +145,7 @@ nnictl top | --value, -v| True| |the new number of maxtrialnum you want to set| - + * __nnictl trial__ * __nnictl trial ls__ * Description @@ -173,10 +176,10 @@ nnictl top | ------ | ------ | ------ |------ | | id| False| |ID of the experiment you want to set| | --trialid, -t| True| |ID of the trial you want to kill.| - - * __nnictl top__ - - * Description + +* __nnictl top__ + + * Description Monitor all of running experiments. @@ -192,7 +195,7 @@ nnictl top | --time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| - + ### Manage experiment information * __nnictl experiment show__ @@ -240,7 +243,7 @@ nnictl top | all| False| False|Show all of experiments, including stopped experiments.| - + * __nnictl config show__ * Description @@ -250,7 +253,7 @@ nnictl top nnictl config show - + ### Manage log * __nnictl log stdout__ * Description @@ -305,7 +308,7 @@ nnictl top | ------ | ------ | ------ |------ | | id| False| |the id of trial| - + ### Manage webui * __nnictl webui url__ * Description @@ -322,7 +325,7 @@ nnictl top | ------ | ------ | ------ |------ | | id| False| |ID of the experiment you want to set| - + ### Manage tensorboard * __nnictl tensorboard start__ * Description @@ -362,4 +365,30 @@ nnictl top | Name, shorthand | Required|Default | Description | | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| \ No newline at end of file + | id| False| |ID of the experiment you want to set| + + +### Manage package +* __nnictl package install__ + * Description + + Install the packages needed in nni experiments. + + * Usage + + nnictl package install [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | --name| True| |The name of package to be installed| + +* __nnictl package show__ + * Description + + List the packages supported. + + * Usage + + nnictl package show From 4516e308a96ccfe064d2d45e3a20fdf50c72dc6c Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Mon, 21 Jan 2019 13:36:44 +0800 Subject: [PATCH 10/29] update doc index & add api reference (#636) * add trigger (#544) * NNI logging architecture improvement (#539) * Removed unused log code, refactor to rename some class name in nni sdk and trial_tools * Fix the regression bug that loca/remote mode doesnt work * [WebUI] Fix issue#517 & issue#459 (#524) * [WebUI] Fix issue#517 & issue#459 * update * [Logging architecture refactor] Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor (#551) * Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor * Doc typo and format fixes (#560) * fix incorrect document * fix doc format and typo * fix state transition (#504) * Add enas nni version from contributor (#557) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add enas_nni * Code coverage report (#559) * Add UT code coverage report * updates * updates * updates * updates * updates * updates * integration test python code coverage report * Updating Readme to add the Related Projects like PAI, KubeLauncher and MMdnn (#565) * Adding related projects to Readme * add Trials.md * add Trials.md * add Trials.md * Fix remote TrainingService bug, change forEach to "for of" (#564) trial job could not be stopped in remote machine when experiment is stopped, because awit/async does not work normally in forEach, refer https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404. * add Trials.md * add docs * To install the whole nni in an virtual environment (#538) * support venv * adapt venv * adapt venv * adapt venv * adapt venv * new test * new test * new test * support venv * support venv * support venv * support venv * support venv * support venv * support venv * colorful output for mac * colorful output for mac * permission denied in /tmp * permission denied in /tmp * permission denied in /tmp * remove unused variable * final * remove build python * Make it feasible for annotation whether to add an extra line "nni.get_next_parameter()" or not (#526) * fix bug * add docs * add ut * add ut * add to ci * update doc * update doc * update ut * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * test * test * test * test * test * test * test * test * test * test * revert * refactor * refactor * s * merge * fix annotation for extra line * add deprecation warning * fix permision deny (#567) * Add Metis Tuner (#534) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add metis tuner code * 1. fix bug about import 2.update other sdk file * add auto-gbdt-example and remove unused code * add metis_tuner into README * update the README * update README | remove unused variable * fix typo * add sklearn into requirments * Update src/sdk/pynni/nni/metis_tuner/metis_tuner.py add default value in __init__ Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * fix typo | add more comments * Change WARNING to INFO (#574) change the warning level to info level when expand relative path add nnictl --version log update readme.md * Fix some bugs in doc and log (#561) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * Fix a race condidtion issue in trial_keeper for reading log from pipe (#578) * Fix a race condidtion issue in trial_keeper for reading log from pipe * [WebUI] Fix issue#458 about final result as dict (#563) * [WebUI] Fix issue#458 about final result as dict * Fix comments * fix bug * support frameworkcontroller log (#572) support frameworkcontroller log * Dev weight sharing (#568) (#576) * Dev weight sharing (#568) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * Dev weight sharing update doc (#577) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * Dev weight sharing update (#579) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * Dev weight sharing (#581) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * fix divide by zero risk * update tuner thread exception handling * fix bug for async test * Add frameworkcontroller document (#530) Add frameworkcontroller document. Fix other document small issues. * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * add __init__.py to metis_tuner (#588) * add docs * [Document] Update webui doc (#587) * Update webui document * update * Update Dockerfile and README (#589) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * update Dockerfile and README * Update README.md Merge to branch v0.5 * [WebUI] Fix bug (#591) * fix bug * fix bug of background * update * update * add frameworkcontroller platform * update README in metis and update RuntimeError info (#595) * update README in metis and update RuntimeError * fix typo * add numerical choice check * update * udpate NFS setup tutorial (#597) * Remove unused example (#600) * update README in metis and update RuntimeError * remove smart params * Update release note (#603) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add release note * merge continue * Revert "Merge remote-tracking branch 'upstream/v0.5' into dev-doc" This reverts commit 48ff5c5cc78a4476334480a4469ef356876fee92, reversing changes made to ec7fdb69652546fb62af7eec696e9b3de9fc6860. * add api & update index --- docs/AnnotationSpec.md | 2 +- docs/Examples.rst | 5 ++++- docs/Overview.md | 2 +- docs/Tutorials.rst | 2 +- docs/index.rst | 2 +- docs/sdk_reference.rst | 31 ++++++++++++++++++++++++++++++- docs/training_services.rst | 1 + 7 files changed, 39 insertions(+), 6 deletions(-) diff --git a/docs/AnnotationSpec.md b/docs/AnnotationSpec.md index 40614dfde6..62c4f2a0ad 100644 --- a/docs/AnnotationSpec.md +++ b/docs/AnnotationSpec.md @@ -67,4 +67,4 @@ h_pooling = max_pool(hidden_layer, pool_size) `'''@nni.report_final_result(metrics)'''` -`@nni.report_final_result` is used to report final result of the current trial, whose usage is the same as `nni.report_final_result` in [Trials.md](Trials.md) \ No newline at end of file +`@nni.report_final_result` is used to report final result of the current trial, whose usage is the same as `nni.report_final_result` in [Trials.md](Trials.md) diff --git a/docs/Examples.rst b/docs/Examples.rst index 32b83c37ea..fef0429278 100644 --- a/docs/Examples.rst +++ b/docs/Examples.rst @@ -3,4 +3,7 @@ Examples ###################### .. toctree:: - MNIST_Examples \ No newline at end of file + :maxdepth: 2 + + MNIST + Cifar10 \ No newline at end of file diff --git a/docs/Overview.md b/docs/Overview.md index c477758206..dfbd94522c 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -1,4 +1,4 @@ -# NNI Overview +# Overview NNI (Neural Network Intelligence) is a toolkit to help users design and tune machine learning models (e.g., hyperparameters), neural network architectures, or complex system's parameters, in an efficient and automatic way. NNI has several appealing properties: easy-to-use, scalability, flexibility, and efficiency. diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst index 04b97116ac..c294e00292 100644 --- a/docs/Tutorials.rst +++ b/docs/Tutorials.rst @@ -10,4 +10,4 @@ Tutorials Assessors WebUI Training Platform - AdvancedNAS \ No newline at end of file + MultiPhase \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index c507346a02..d342781251 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -11,7 +11,7 @@ Contents :maxdepth: 2 :glob: - Overview + Overview Changelog Tutorials Examples diff --git a/docs/sdk_reference.rst b/docs/sdk_reference.rst index e3d69e59df..a743d55591 100644 --- a/docs/sdk_reference.rst +++ b/docs/sdk_reference.rst @@ -16,7 +16,36 @@ API for tuners .. autoclass:: nni.tuner.Tuner :members: +.. autoclass:: nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner + :members: + +.. autoclass:: nni.batch_tuner.batch_tuner.BatchTuner + :members: + +.. autoclass:: nni.evolution_tuner.evolution_tuner.EvolutionTuner + :members: + +.. autoclass:: nni.gridsearch_tuner.gridsearch_tuner.GridSearchTuner + :members: + +.. autoclass:: nni.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner + :members: + +.. autoclass:: nni.smac_tuner.smac_tuner.SMACTuner + :members: + API for assessors ------------------------ .. autoclass:: nni.assessor.Assessor - :members: \ No newline at end of file + :members: + +.. autoclass:: nni.curvefitting_assessor.curvefitting_assessor.CurvefittingAssessor + :members: + +.. autoclass:: nni.medianstop_assessor.medianstop_assessor.MedianstopAssessor + :members: + + +API for Advisors +------------------------ +.. autoclass:: nni.hyperband_advisor.hyperband_advisor.Hyperband \ No newline at end of file diff --git a/docs/training_services.rst b/docs/training_services.rst index aa975369d9..17eca50f98 100644 --- a/docs/training_services.rst +++ b/docs/training_services.rst @@ -2,6 +2,7 @@ Introduction to NNI Training Services ===================================== .. toctree:: + Local Remote PAI Kubeflow \ No newline at end of file From a6f3b03ac27226222f316bd21499cdae470831e7 Mon Sep 17 00:00:00 2001 From: SparkSnail Date: Wed, 23 Jan 2019 13:32:29 +0800 Subject: [PATCH 11/29] Add sklearn_example.md (#647) * fix doc * add link in doc * update * add nnictl package cmd * add sklearn-example.md * update * update * fix link * add desc in example.rst --- docs/Examples.rst | 3 +- docs/sklearn_examples.md | 69 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 docs/sklearn_examples.md diff --git a/docs/Examples.rst b/docs/Examples.rst index fef0429278..33a54ede68 100644 --- a/docs/Examples.rst +++ b/docs/Examples.rst @@ -6,4 +6,5 @@ Examples :maxdepth: 2 MNIST - Cifar10 \ No newline at end of file + Cifar10 + sklearn \ No newline at end of file diff --git a/docs/sklearn_examples.md b/docs/sklearn_examples.md new file mode 100644 index 0000000000..893640d167 --- /dev/null +++ b/docs/sklearn_examples.md @@ -0,0 +1,69 @@ +# Scikit-learn in NNI +[Scikit-learn](https://github.com/scikit-learn/scikit-learn) is a pupular meachine learning tool for data mining and data analysis. It supports many kinds of meachine learning models like LinearRegression, LogisticRegression, DecisionTree, SVM etc. How to make the use of scikit-learn more efficiency is a valuable topic. +NNI supports many kinds of tuning algorithms to search the best models and/or hyper-parameters for scikit-learn, and support many kinds of environments like local machine, remote servers and cloud. + +## 1. How to run the example +To start using NNI, you should install the nni package, and use the command line tool `nnictl` to start an experiment. For more information about installation and preparing for the environment, please [refer](GetStarted.md). +After you installed NNI, you could enter the corresponding folder and start the experiment using following commands: +``` +nnictl create --config ./config.yml +``` + +## 2. Description of the example + + +### 2.1 classification +This example uses the dataset of digits, which is made up of 1797 8x8 images, and each image is a hand-written digit, the goal is to classify these images into 10 classes. +In this example, we use SVC as the model, and choose some parameters of this model, including `"C", "keral", "degree", "gamma" and "coef0"`. For more information of these parameters, please [refer](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html). + + +### 2.2 regression +This example uses the Boston Housing Dataset, this dataset consists of price of houses in various places in Boston and the information such as Crime (CRIM), areas of non-retail business in the town (INDUS), the age of people who own the house (AGE) etc to predict the house price of boston. +In this example, we tune different kinds of regression models including `"LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"` and some parameters like `"svr_kernel", "knr_weights"`. You could get more details about these models from [here](https://scikit-learn.org/stable/supervised_learning.html#supervised-learning). + +## 3. How to write sklearn code using nni +It is easy to use nni in your sklearn code, there are only a few steps. +* __step 1__ + Prepare a search_space.json to storage your choose spaces. + For example, if you want to choose different models, you may try: + ``` + { + "model_name":{"_type":"choice","_value":["LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"]} + } + ``` + If you want to choose different models and parameters, you could put them together in a search_space.json file. + ``` + { + "model_name":{"_type":"choice","_value":["LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"]}, + "svr_kernel": {"_type":"choice","_value":["linear", "poly", "rbf"]}, + "knr_weights": {"_type":"choice","_value":["uniform", "distance"]} + } + ``` + Then you could read these values as a dict from your python code, please get into the step 2. +* __step 2__ + At the beginning of your python code, you should `import nni` to insure the packages works normally. + First, you should use `nni.get_next_parameter()` function to get your parameters given by nni. Then you could use these parameters to update your code. + For example, if you define your search_space.json like following format: + ``` + { + "C": {"_type":"uniform","_value":[0.1, 1]}, + "keral": {"_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]}, + "degree": {"_type":"choice","_value":[1, 2, 3, 4]}, + "gamma": {"_type":"uniform","_value":[0.01, 0.1]}, + "coef0 ": {"_type":"uniform","_value":[0.01, 0.1]} + } + ``` + You may get a parameter dict like this: + ``` + params = { + 'C': 1.0, + 'keral': 'linear', + 'degree': 3, + 'gamma': 0.01, + 'coef0': 0.01 + } + ``` + Then you could use these variables to write your scikit-learn code. +* __step 3__ + After you finished your training, you could get your own score of the model, like your percision, recall or MSE etc. NNI needs your score to tuner algorithms and generate next group of parameters, please report the score back to NNI and start next trial job. + You just need to use `nni.report_final_result(score)` to communitate with NNI after you process your scikit-learn code. Or if you have multiple scores in the steps of training, you could also report them back to NNI using `nni.report_intemediate_result(score)`. Note, you may not report intemediate result of your job, but you must report back your final result. From 5dbeb3796a7f4a255a2a1fb3dc45139606febc04 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Thu, 24 Jan 2019 11:16:34 +0800 Subject: [PATCH 12/29] revert nnictl before sphinx try --- tools/nni_cmd/nnictl.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/nni_cmd/nnictl.py b/tools/nni_cmd/nnictl.py index f641300f28..f0825f4411 100644 --- a/tools/nni_cmd/nnictl.py +++ b/tools/nni_cmd/nnictl.py @@ -38,7 +38,7 @@ def nni_info(*args): else: print('please run "nnictl {positional argument} --help" to see nnictl guidance') -def parser_init(): +def parse_args(): '''Definite the arguments users need to follow and input''' parser = argparse.ArgumentParser(prog='nnictl', description='use nnictl command to control nni experiments') parser.add_argument('--version', '-v', action='store_true') @@ -175,9 +175,9 @@ def parser_init(): parser_top.add_argument('--time', '-t', dest='time', type=int, default=3, help='the time interval to update the experiment status, ' \ 'the unit is second') parser_top.set_defaults(func=monitor_experiment) - return parser -if __name__ == '__main__': - parser = parser_init() args = parser.parse_args() args.func(args) + +if __name__ == '__main__': + parse_args() From 1ecf76e4d5e36f2d94a9771573dd075c22a7c075 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Thu, 24 Jan 2019 11:48:26 +0800 Subject: [PATCH 13/29] fix mnist.py example --- examples/trials/mnist/mnist.py | 68 +++++++++++++++------------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/examples/trials/mnist/mnist.py b/examples/trials/mnist/mnist.py index 6a1d673804..0e305cf2d1 100644 --- a/examples/trials/mnist/mnist.py +++ b/examples/trials/mnist/mnist.py @@ -120,34 +120,6 @@ def build_network(self): self.accuracy = tf.reduce_mean( tf.cast(correct_prediction, tf.float32)) - def train(self, sess, mnist): - sess.run(tf.global_variables_initializer()) - for i in range(params['batch_num']): - batch = mnist.train.next_batch(params['batch_size']) - self.train_step.run(feed_dict={self.images: batch[0], - self.labels: batch[1], - self.keep_prob: 1 - params['dropout_rate']} - ) - - if i % 100 == 0: - test_acc = self.accuracy.eval( - feed_dict={self.images: mnist.test.images, - self.labels: mnist.test.labels, - self.keep_prob: 1.0}) - - nni.report_intermediate_result(test_acc) - logger.debug('test accuracy %g', test_acc) - logger.debug('Pipe send intermediate result done.') - - def evaluate(self, mnist): - test_acc = self.accuracy.eval( - feed_dict={self.images: mnist.test.images, - self.labels: mnist.test.labels, - self.keep_prob: 1.0}) - logger.debug('Final result is %g', test_acc) - logger.debug('Send final result done.') - return test_acc - def conv2d(x_input, w_matrix): """conv2d returns a 2d convolution layer with full stride.""" @@ -171,14 +143,8 @@ def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial) -def write_log(): - # Write log - graph_location = tempfile.mkdtemp() - logger.debug('Saving graph to: %s', graph_location) - train_writer = tf.summary.FileWriter(graph_location) - train_writer.add_graph(tf.get_default_graph()) -def run_trial(params): +def main(params): ''' Main function, build mnist network, run and send result to NNI. ''' @@ -197,12 +163,38 @@ def run_trial(params): learning_rate=params['learning_rate']) mnist_network.build_network() logger.debug('Mnist build network done.') - write_log() + + # Write log + graph_location = tempfile.mkdtemp() + logger.debug('Saving graph to: %s', graph_location) + train_writer = tf.summary.FileWriter(graph_location) + train_writer.add_graph(tf.get_default_graph()) test_acc = 0.0 with tf.Session() as sess: - mnist_network.train(sess, mnist) - test_acc = mnist_network.evaluate(mnist) + sess.run(tf.global_variables_initializer()) + for i in range(params['batch_num']): + batch = mnist.train.next_batch(params['batch_size']) + mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], + mnist_network.labels: batch[1], + mnist_network.keep_prob: 1 - params['dropout_rate']} + ) + + if i % 100 == 0: + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + + nni.report_intermediate_result(test_acc) + logger.debug('test accuracy %g', test_acc) + logger.debug('Pipe send intermediate result done.') + + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + nni.report_final_result(test_acc) logger.debug('Final result is %g', test_acc) logger.debug('Send final result done.') From 1bd16f4476d51f182b420f9db4a49a1669ff4cbe Mon Sep 17 00:00:00 2001 From: xuehui Date: Thu, 24 Jan 2019 12:55:15 +0800 Subject: [PATCH 14/29] add SQuAD_evolution_examples.md (#620) * add SQuAD_evolution_examples.md * add update * remove yml file * remove mkdoc.yml * update Example.rst --- docs/Examples.rst | 3 +- docs/SQuAD_evolution_examples.md | 310 +++++++++++++++++++++++++++++++ 2 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 docs/SQuAD_evolution_examples.md diff --git a/docs/Examples.rst b/docs/Examples.rst index 33a54ede68..3a913f2d5f 100644 --- a/docs/Examples.rst +++ b/docs/Examples.rst @@ -7,4 +7,5 @@ Examples MNIST Cifar10 - sklearn \ No newline at end of file + sklearn + EvolutionSQuAD \ No newline at end of file diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md new file mode 100644 index 0000000000..9967f31669 --- /dev/null +++ b/docs/SQuAD_evolution_examples.md @@ -0,0 +1,310 @@ +# Automatic Model Architecture Search for Reading Comprehension +This example shows us how to use Genetic Algorithm to find good model architectures for Reading Comprehension. + +## Search Space +Since attention and recurrent neural network (RNN) have been proven effective in Reading Comprehension. +We conclude the search space as follow: + +1. IDENTITY (Effectively means keep training). +2. INSERT-RNN-LAYER (Inserts a LSTM. Comparing the performance of GRU and LSTM in our experiment, we decided to use LSTM here.) +3. REMOVE-RNN-LAYER +4. INSERT-ATTENTION-LAYER(Inserts a attention layer.) +5. REMOVE-ATTENTION-LAYER +6. ADD-SKIP (Identity between random layers). +7. REMOVE-SKIP (Removes random skip). + +![ga-squad-logo](https://github.com/Microsoft/nni/blob/master/examples/trials/ga_squad/ga_squad.png) + +## New version +Also we have another version which time cost is less and performance is better. We will release soon. + +# How to run this example? + +## Run this example on local or remote + +### Use downloading script to download data + +Execute the following command to download needed files +using the downloading script: + +``` +chmod +x ./download.sh +./download.sh +``` + +### Or Download manually + +1. download "dev-v1.1.json" and "train-v1.1.json" in https://rajpurkar.github.io/SQuAD-explorer/ + +``` +wget https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v1.1.json +wget https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json +``` + +2. download "glove.840B.300d.txt" in https://nlp.stanford.edu/projects/glove/ + +``` +wget http://nlp.stanford.edu/data/glove.840B.300d.zip +unzip glove.840B.300d.zip +``` + +### Update configuration +Modify `nni/examples/trials/ga_squad/config.yml`, here is the default configuration: + +``` +authorName: default +experimentName: example_ga_squad +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 1 +#choice: local, remote +trainingServicePlatform: local +#choice: true, false +useAnnotation: false +tuner: + codeDir: ~/nni/examples/tuners/ga_customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + optimize_mode: maximize +trial: + command: python3 trial.py + codeDir: ~/nni/examples/trials/ga_squad + gpuNum: 0 +``` + +In the "trial" part, if you want to use GPU to perform the architecture search, change `gpuNum` from `0` to `1`. You need to increase the `maxTrialNum` and `maxExecDuration`, according to how long you want to wait for the search result. + +### submit this job + +``` +nnictl create --config ~/nni/examples/trials/ga_squad/config.yml +``` + +## Run this example on OpenPAI + +Due to the memory limitation of upload, we only upload the source code and complete the data download and training on OpenPAI. This experiment requires sufficient memory that `memoryMB >= 32G`, and the training may last for several hours. + +### Update configuration +Modify `nni/examples/trials/ga_squad/config_pai.yaml`, here is the default configuration: + +``` +authorName: default +experimentName: example_ga_squad +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +#choice: local, remote, pai +trainingServicePlatform: pai +#choice: true, false +useAnnotation: false +#Your nni_manager ip +nniManagerIp: 10.10.10.10 +tuner: + codeDir: ../../tuners/ga_customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + optimize_mode: maximize +trial: + command: chmod +x ./download.sh && ./download.sh && python3 trial.py + codeDir: . + gpuNum: 0 + cpuNum: 1 + memoryMB: 32869 + #The docker image to run nni job on pai + image: msranni/nni:latest + #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' + dataDir: hdfs://10.10.10.10:9000/username/nni + #The hdfs directory to store output data generated by nni, format 'hdfs://host:port/directory' + outputDir: hdfs://10.10.10.10:9000/username/nni +paiConfig: + #The username to login pai + userName: username + #The password to login pai + passWord: password + #The host of restful server of pai + host: 10.10.10.10 +``` + +Please change the default value to your personal account and machine information. Including `nniManagerIp`, `dataDir`, `outputDir`, `userName`, `passWord` and `host`. + +In the "trial" part, if you want to use GPU to perform the architecture search, change `gpuNum` from `0` to `1`. You need to increase the `maxTrialNum` and `maxExecDuration`, according to how long you want to wait for the search result. + +`trialConcurrency` is the number of trials running concurrently, which is the number of GPUs you want to use, if you are setting `gpuNum` to 1. + +### submit this job + +``` +nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml +``` + +# Techinal details about the trial + +## How does it works +The evolution-algorithm based architecture for question answering has two different parts just like any other examples: the trial and the tuner. + +### The trial + +The trial has a lot of different files, functions and classes. Here we will only give most of those files a brief introduction: + +* `attention.py` contains an implementation for attention mechanism in Tensorflow. +* `data.py` contains functions for data preprocessing. +* `evaluate.py` contains the evaluation script. +* `graph.py` contains the definition of the computation graph. +* `rnn.py` contains an implementation for GRU in Tensorflow. +* `train_model.py` is a wrapper for the whole question answering model. + +Among those files, `trial.py` and `graph_to_tf.py` is special. + +`graph_to_tf.py` has a function named as `graph_to_network`, here is its skeleton code: + +``` +def graph_to_network(input1, + input2, + input1_lengths, + input2_lengths, + graph, + dropout_rate, + is_training, + num_heads=1, + rnn_units=256): + topology = graph.is_topology() + layers = dict() + layers_sequence_lengths = dict() + num_units = input1.get_shape().as_list()[-1] + layers[0] = input1*tf.sqrt(tf.cast(num_units, tf.float32)) + \ + positional_encoding(input1, scale=False, zero_pad=False) + layers[1] = input2*tf.sqrt(tf.cast(num_units, tf.float32)) + layers[0] = dropout(layers[0], dropout_rate, is_training) + layers[1] = dropout(layers[1], dropout_rate, is_training) + layers_sequence_lengths[0] = input1_lengths + layers_sequence_lengths[1] = input2_lengths + for _, topo_i in enumerate(topology): + if topo_i == '|': + continue + if graph.layers[topo_i].graph_type == LayerType.input.value: + # ...... + elif graph.layers[topo_i].graph_type == LayerType.attention.value: + # ...... + # More layers to handle +``` + +As we can see, this function is actually a compiler, that converts the internal model DAG configuration (which will be introduced in the `Model configuration format` section) `graph`, to a Tensorflow computation graph. + +``` +topology = graph.is_topology() +``` + +performs topological sorting on the internal graph representation, and the code inside the loop: + +``` +for _, topo_i in enumerate(topology): +``` + +performs actually conversion that maps each layer to a part in Tensorflow computation graph. + +### The tuner + +The tuner is much more simple than the trial. They actually share the same `graph.py`. Besides, the tuner has a `customer_tuner.py`, the most important class in which is `CustomerTuner`: + +``` +class CustomerTuner(Tuner): + # ...... + + def generate_parameters(self, parameter_id): + """Returns a set of trial graph config, as a serializable object. + parameter_id : int + """ + if len(self.population) <= 0: + logger.debug("the len of poplution lower than zero.") + raise Exception('The population is empty') + pos = -1 + for i in range(len(self.population)): + if self.population[i].result == None: + pos = i + break + if pos != -1: + indiv = copy.deepcopy(self.population[pos]) + self.population.pop(pos) + temp = json.loads(graph_dumps(indiv.config)) + else: + random.shuffle(self.population) + if self.population[0].result > self.population[1].result: + self.population[0] = self.population[1] + indiv = copy.deepcopy(self.population[0]) + self.population.pop(1) + indiv.mutation() + graph = indiv.config + temp = json.loads(graph_dumps(graph)) + + # ...... +``` + +As we can see, the overloaded method `generate_parameters` implements a pretty naive mutation algorithm. The code lines: + +``` + if self.population[0].result > self.population[1].result: + self.population[0] = self.population[1] + indiv = copy.deepcopy(self.population[0]) +``` + +controls the mutation process. It will always take two random individuals in the population, only keeping and mutating the one with better result. + +## Model configuration format + +Here is an example of the model configuration, which is passed from the tuner to the trial in the architecture search procedure. + +``` +{ + "max_layer_num": 50, + "layers": [ + { + "input_size": 0, + "type": 3, + "output_size": 1, + "input": [], + "size": "x", + "output": [4, 5], + "is_delete": false + }, + { + "input_size": 0, + "type": 3, + "output_size": 1, + "input": [], + "size": "y", + "output": [4, 5], + "is_delete": false + }, + { + "input_size": 1, + "type": 4, + "output_size": 0, + "input": [6], + "size": "x", + "output": [], + "is_delete": false + }, + { + "input_size": 1, + "type": 4, + "output_size": 0, + "input": [5], + "size": "y", + "output": [], + "is_delete": false + }, + {"Comment": "More layers will be here for actual graphs."} + ] +} +``` + +Every model configuration will has a "layers" section, which is a JSON list of layer definitions. The definition of each layer is also a JSON object, where: + + * `type` is the type of the layer. 0, 1, 2, 3, 4 correspond to attention, self-attention, RNN, input and output layer respectively. + * `size` is the length of the output. "x", "y" correspond to document length / question length, respectively. + * `input_size` is the number of inputs the layer has. + * `input` is the indices of layers taken as input of this layer. + * `output` is the indices of layers use this layer's output as their input. + * `is_delete` means whether the layer is still available. From 72f6467a1ab046007e2db7cde67b8e004afe507d Mon Sep 17 00:00:00 2001 From: xuehui Date: Thu, 24 Jan 2019 16:24:48 +0800 Subject: [PATCH 15/29] Add GBDT example doc (#654) * add SQuAD_evolution_examples.md * add update * remove yml file * remove mkdoc.yml * update Example.rst * update gbdt_example.md * update * add run command line * update Evlution_SQuAD.md * update link * add gbdt in Example.rst --- docs/Examples.rst | 3 +- docs/SQuAD_evolution_examples.md | 34 +++--- docs/gbdt_example.md | 176 +++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 19 deletions(-) create mode 100644 docs/gbdt_example.md diff --git a/docs/Examples.rst b/docs/Examples.rst index 3a913f2d5f..4ccf62d798 100644 --- a/docs/Examples.rst +++ b/docs/Examples.rst @@ -8,4 +8,5 @@ Examples MNIST Cifar10 sklearn - EvolutionSQuAD \ No newline at end of file + EvolutionSQuAD + GBDT diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md index 9967f31669..e10e255a38 100644 --- a/docs/SQuAD_evolution_examples.md +++ b/docs/SQuAD_evolution_examples.md @@ -1,7 +1,7 @@ # Automatic Model Architecture Search for Reading Comprehension This example shows us how to use Genetic Algorithm to find good model architectures for Reading Comprehension. -## Search Space +## 1. Search Space Since attention and recurrent neural network (RNN) have been proven effective in Reading Comprehension. We conclude the search space as follow: @@ -13,16 +13,14 @@ We conclude the search space as follow: 6. ADD-SKIP (Identity between random layers). 7. REMOVE-SKIP (Removes random skip). -![ga-squad-logo](https://github.com/Microsoft/nni/blob/master/examples/trials/ga_squad/ga_squad.png) +![ga-squad-logo](https://raw.githubusercontent.com/Microsoft/nni/blob/master/examples/trials/ga_squad/ga_squad.png) -## New version +### New version Also we have another version which time cost is less and performance is better. We will release soon. -# How to run this example? +## 2. How to run this example in local? -## Run this example on local or remote - -### Use downloading script to download data +### 2.1 Use downloading script to download data Execute the following command to download needed files using the downloading script: @@ -32,7 +30,7 @@ chmod +x ./download.sh ./download.sh ``` -### Or Download manually +Or Download manually 1. download "dev-v1.1.json" and "train-v1.1.json" in https://rajpurkar.github.io/SQuAD-explorer/ @@ -48,7 +46,7 @@ wget http://nlp.stanford.edu/data/glove.840B.300d.zip unzip glove.840B.300d.zip ``` -### Update configuration +### 2.2 Update configuration Modify `nni/examples/trials/ga_squad/config.yml`, here is the default configuration: ``` @@ -75,17 +73,17 @@ trial: In the "trial" part, if you want to use GPU to perform the architecture search, change `gpuNum` from `0` to `1`. You need to increase the `maxTrialNum` and `maxExecDuration`, according to how long you want to wait for the search result. -### submit this job +### 2.3 submit this job ``` nnictl create --config ~/nni/examples/trials/ga_squad/config.yml ``` -## Run this example on OpenPAI +## 3 Run this example on OpenPAI Due to the memory limitation of upload, we only upload the source code and complete the data download and training on OpenPAI. This experiment requires sufficient memory that `memoryMB >= 32G`, and the training may last for several hours. -### Update configuration +### 3.1 Update configuration Modify `nni/examples/trials/ga_squad/config_pai.yaml`, here is the default configuration: ``` @@ -133,18 +131,18 @@ In the "trial" part, if you want to use GPU to perform the architecture search, `trialConcurrency` is the number of trials running concurrently, which is the number of GPUs you want to use, if you are setting `gpuNum` to 1. -### submit this job +### 3.2 submit this job ``` nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml ``` -# Techinal details about the trial +## 4. Techinal details about the trial -## How does it works +### 4.1 How does it works The evolution-algorithm based architecture for question answering has two different parts just like any other examples: the trial and the tuner. -### The trial +### 4.2 The trial The trial has a lot of different files, functions and classes. Here we will only give most of those files a brief introduction: @@ -204,7 +202,7 @@ for _, topo_i in enumerate(topology): performs actually conversion that maps each layer to a part in Tensorflow computation graph. -### The tuner +### 4.3 The tuner The tuner is much more simple than the trial. They actually share the same `graph.py`. Besides, the tuner has a `customer_tuner.py`, the most important class in which is `CustomerTuner`: @@ -251,7 +249,7 @@ As we can see, the overloaded method `generate_parameters` implements a pretty n controls the mutation process. It will always take two random individuals in the population, only keeping and mutating the one with better result. -## Model configuration format +### 4.4 Model configuration format Here is an example of the model configuration, which is passed from the tuner to the trial in the architecture search procedure. diff --git a/docs/gbdt_example.md b/docs/gbdt_example.md new file mode 100644 index 0000000000..19a63b01c0 --- /dev/null +++ b/docs/gbdt_example.md @@ -0,0 +1,176 @@ +# GBDT in nni +Gradient boosting is a machine learning technique for regression and classification problems, which produces a prediction model in the form of an ensemble of weak prediction models, typically decision trees. It builds the model in a stage-wise fashion as other boosting methods do, and it generalizes them by allowing optimization of an arbitrary differentiable loss function. + +Gradient boosting decision tree has many popular implementation, such as [lightgbm](https://github.com/Microsoft/LightGBM), [xgboost](https://github.com/dmlc/xgboost), and [catboost](https://github.com/catboost/catboost), etc. GBDT is a great tool for solving the problem of traditional machine learning problem. Since GBDT is a robust algorithm, it could use in many domains. The better hyper-parameters for GBDT, the better performance you could achieve. + +NNI is a great platform for tuning hyper-parameters, you could try various builtin search algorithm in nni and run multiple trials concurrently. + + +## 1. Search Space in GBDT +There are many hyper-parameters in GBDT, but what kind of parameters will effect the performance or speed? Based on some pratical experience, some suggestion here(Take lightgbm as example): + +> * For better accuracy + * `learning_rate`. The range of `learning rate` could be [0.001, 0.9]. + * `num_leaves`. `num_leaves` is realted to `max_depth`, you don't have to tune both of them. + * `bagging_freq`. `bagging_freq` could be [1, 2, 4, 8, 10] + * `num_iterations`. May larger if underfitting. + +> * For speed up + * `bagging_fraction`. The range of `bagging_fraction` could be [0.7, 1.0]. + * `feature_fraction`. The range of `feature_fraction` could be [0.6, 1.0]. + * `max_bin`. + +> * For avoid overfitting + * `min_data_in_leaf`. This depend on your dataset. + * `min_sum_hessian_in_leaf`. This depend on your dataset. + * `lambda_l1` and `lambda_l2`. + * `min_gain_to_split`. + * `num_leaves`. + +Reference link: +[lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) +[autoxgoboost](https://github.com/ja-thomas/autoxgboost/blob/master/poster_2018.pdf) + +## 2. Task description +Now we come back to our example "auto-gbdt" which run in lightgbm and nni. The data including [train data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train) and [test data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train). +Given the features and label in train data, we train a GBDT regession model and use it to predict. + +## 3. How to run in nni + +### 3.1 Prepare your trial code +You need to prepare a basic code as following: +``` python + +... + +def get_default_parameters(): + ... + return params + + +def load_data(train_path='./data/regression.train', test_path='./data/regression.test'): + ''' + Load or create dataset + ''' + ... + + return lgb_train, lgb_eval, X_test, y_test + +def run(lgb_train, lgb_eval, params, X_test, y_test): + # train + gbm = lgb.train(params, + lgb_train, + num_boost_round=20, + valid_sets=lgb_eval, + early_stopping_rounds=5) + # predict + y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) + + # eval + rmse = mean_squared_error(y_test, y_pred) ** 0.5 + print('The rmse of prediction is:', rmse) + +if __name__ == '__main__': + lgb_train, lgb_eval, X_test, y_test = load_data() + + PARAMS = get_default_parameters() + # train + run(lgb_train, lgb_eval, PARAMS, X_test, y_test) +``` + +### 3.2 Prepare your search space. +If you like to tune `num_leaves`, `learning_rate`, `bagging_fraction` and `bagging_freq`, +you could write a [search_space.json](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/search_space.json) as follow: +``` +{ + "num_leaves":{"_type":"choice","_value":[31, 28, 24, 20]}, + "learning_rate":{"_type":"choice","_value":[0.01, 0.05, 0.1, 0.2]}, + "bagging_fraction":{"_type":"uniform","_value":[0.7, 1.0]}, + "bagging_freq":{"_type":"choice","_value":[1, 2, 4, 8, 10]} +} +``` + +More support variable type you could reference [here](https://github.com/Microsoft/nni/blob/master/docs/SearchSpaceSpec.md). + +### 3.3 Add SDK of nni into your code. +```diff ++import nni +... + +def get_default_parameters(): + ... + return params + + +def load_data(train_path='./data/regression.train', test_path='./data/regression.test'): + ''' + Load or create dataset + ''' + ... + + return lgb_train, lgb_eval, X_test, y_test + +def run(lgb_train, lgb_eval, params, X_test, y_test): + # train + gbm = lgb.train(params, + lgb_train, + num_boost_round=20, + valid_sets=lgb_eval, + early_stopping_rounds=5) + # predict + y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) + + # eval + rmse = mean_squared_error(y_test, y_pred) ** 0.5 + print('The rmse of prediction is:', rmse) ++ nni.report_final_result(rmse) + +if __name__ == '__main__': + lgb_train, lgb_eval, X_test, y_test = load_data() ++ RECEIVED_PARAMS = nni.get_next_parameter() + PARAMS = get_default_parameters() ++ PARAMS.update(RECEIVED_PARAMS) + PARAMS = get_default_parameters() + PARAMS.update(RECEIVED_PARAMS) + + # train + run(lgb_train, lgb_eval, PARAMS, X_test, y_test) +``` + +### 3.4 Write a config file and run it. +In the config file, you could set some settings including: + +* Experiment setting: `trialConcurrency`, `maxExecDuration`, `maxTrialNum`, `trial gpuNum`, etc. +* Platform setting: `trainingServicePlatform`, etc. +* Path seeting: `searchSpacePath`, `trial codeDir`, etc. +* Algorithm setting: select `tuner` algorithm, `tuner optimize_mode`, etc. + +An config.yml as follow: +```yml +authorName: default +experimentName: example_auto-gbdt +trialConcurrency: 1 +maxExecDuration: 10h +maxTrialNum: 10 +#choice: local, remote, pai +trainingServicePlatform: local +searchSpacePath: search_space.json +#choice: true, false +useAnnotation: false +tuner: + #choice: TPE, Random, Anneal, Evolution, BatchTuner + #SMAC (SMAC should be installed through nnictl) + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: minimize +trial: + command: python3 main.py + codeDir: . + gpuNum: 0 +``` + +Run this experiment with command as follow: +``` +nnictl create --config ./config.yml +``` \ No newline at end of file From 1b6874bfdab19420693ec5df42f16a3a0a0691b2 Mon Sep 17 00:00:00 2001 From: Zejun Lin <871886504@qq.com> Date: Thu, 24 Jan 2019 18:35:41 -0800 Subject: [PATCH 16/29] Update SearchSpaceSpec (#656) * add Trials.md * add Trials.md * add Trials.md * add Trials.md * add docs * add docs * add docs * add docs * add docs * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * add grid search tuner doc * add grid search tuner doc * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec --- docs/SearchSpaceSpec.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/SearchSpaceSpec.md b/docs/SearchSpaceSpec.md index cdc000e4cf..991a61d3ff 100644 --- a/docs/SearchSpaceSpec.md +++ b/docs/SearchSpaceSpec.md @@ -76,15 +76,20 @@ All types of sampling strategies and their parameter are listed here: ## Search Space Types Supported by Each Tuner | | choice | randint | uniform | quniform | loguniform | qloguniform | normal | qnormal | lognormal | qlognormal | -|-------------------|---------|---------|---------|----------|------------|-------------|---------|---------|-----------|------------| -| Batch Tuner | ☑ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ | -| Evolution Tuner | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | -| TPE Tuner | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | -| Hyperband Advisor | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | -| Smac Tuner | ☑ | ☑ | ☑ | ☐ | ☑ | ☐ | ☐ | ☐ | ☐ | ☑ | -| Grid Search Tuner | ☑ | ☐ | ☐ | ☑ | ☐ | ☑ | ☐ | ☐ | ☐ | ☐ | +|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:| +| TPE Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Random Search Tuner| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Anneal Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Evolution Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| SMAC Tuner | ✓ | ✓ | ✓ | | ✓ | | | | | ✓ | +| Batch Tuner | ✓ | | | | | | | | | | +| Grid Search Tuner | ✓ | | | ✓ | | ✓ | | | | | +| Hyperband Advisor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Metis Tuner | ✓ | ✓ | ✓ | ✓ | | | | | | | Note that In GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows * Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. * Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. + +Note that Metis Tuner only support numerical `choice` now From c3a1413134eb57bb6cbdc299211ce05499153fd8 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Fri, 25 Jan 2019 10:47:16 +0800 Subject: [PATCH 17/29] fix color for zejun --- docs/SearchSpaceSpec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/SearchSpaceSpec.md b/docs/SearchSpaceSpec.md index 991a61d3ff..4f769597fc 100644 --- a/docs/SearchSpaceSpec.md +++ b/docs/SearchSpaceSpec.md @@ -81,7 +81,7 @@ All types of sampling strategies and their parameter are listed here: | Random Search Tuner| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Anneal Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Evolution Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -| SMAC Tuner | ✓ | ✓ | ✓ | | ✓ | | | | | ✓ | +| SMAC Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | Batch Tuner | ✓ | | | | | | | | | | | Grid Search Tuner | ✓ | | | ✓ | | ✓ | | | | | | Hyperband Advisor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | From b6321cf1fb22356fb8a6667a4363977113530254 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Fri, 25 Jan 2019 11:25:51 +0800 Subject: [PATCH 18/29] fix mnist before --- examples/trials/mnist/mnist_before.py | 108 +++++++++++++------------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/examples/trials/mnist/mnist_before.py b/examples/trials/mnist/mnist_before.py index 565ec3c93d..c67fc01681 100644 --- a/examples/trials/mnist/mnist_before.py +++ b/examples/trials/mnist/mnist_before.py @@ -1,5 +1,5 @@ """A deep MNIST classifier using convolutional layers.""" - +import argparse import logging import math import tempfile @@ -7,8 +7,6 @@ from tensorflow.examples.tutorials.mnist import input_data -import nni - FLAGS = None logger = logging.getLogger('mnist_AutoML') @@ -18,6 +16,7 @@ class MnistNetwork(object): ''' MnistNetwork is for initializing and building basic network for mnist. ''' + def __init__(self, channel_1_num, channel_2_num, @@ -36,8 +35,10 @@ def __init__(self, self.x_dim = x_dim self.y_dim = y_dim - self.images = tf.placeholder(tf.float32, [None, self.x_dim], name='input_x') - self.labels = tf.placeholder(tf.float32, [None, self.y_dim], name='input_y') + self.images = tf.placeholder( + tf.float32, [None, self.x_dim], name='input_x') + self.labels = tf.placeholder( + tf.float32, [None, self.y_dim], name='input_y') self.keep_prob = tf.placeholder(tf.float32, name='keep_prob') self.train_step = None @@ -118,30 +119,6 @@ def build_network(self): tf.argmax(y_conv, 1), tf.argmax(self.labels, 1)) self.accuracy = tf.reduce_mean( tf.cast(correct_prediction, tf.float32)) - - def train(self, sess, mnist): - sess.run(tf.global_variables_initializer()) - for i in range(params['batch_num']): - batch = mnist.train.next_batch(params['batch_size']) - self.train_step.run(feed_dict={self.images: batch[0], - self.labels: batch[1], - self.keep_prob: 1 - params['dropout_rate']} - ) - - if i % 100 == 0: - test_acc = self.accuracy.eval( - feed_dict={self.images: mnist.test.images, - self.labels: mnist.test.labels, - self.keep_prob: 1.0}) - logger.debug('test accuracy %g', test_acc) - def evaluate(self, mnist): - test_acc = self.accuracy.eval( - feed_dict={self.images: mnist.test.images, - self.labels: mnist.test.labels, - self.keep_prob: 1.0}) - logger.debug('Final result is %g', test_acc) - logger.debug('Send final result done.') - return test_acc def conv2d(x_input, w_matrix): @@ -166,14 +143,8 @@ def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial) -def write_log(): - # Write log - graph_location = tempfile.mkdtemp() - logger.debug('Saving graph to: %s', graph_location) - train_writer = tf.summary.FileWriter(graph_location) - train_writer.add_graph(tf.get_default_graph()) -def run_trial(params): +def main(params): ''' Main function, build mnist network, run and send result to NNI. ''' @@ -192,28 +163,61 @@ def run_trial(params): learning_rate=params['learning_rate']) mnist_network.build_network() logger.debug('Mnist build network done.') - write_log() + + # Write log + graph_location = tempfile.mkdtemp() + logger.debug('Saving graph to: %s', graph_location) + train_writer = tf.summary.FileWriter(graph_location) + train_writer.add_graph(tf.get_default_graph()) test_acc = 0.0 with tf.Session() as sess: - mnist_network.train(sess, mnist) - test_acc = mnist_network.evaluate(mnist) - print ("Final result is", test_acc) + sess.run(tf.global_variables_initializer()) + for i in range(params['batch_num']): + batch = mnist.train.next_batch(params['batch_size']) + mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], + mnist_network.labels: batch[1], + mnist_network.keep_prob: 1 - params['dropout_rate']} + ) + + if i % 100 == 0: + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + + logger.debug('test accuracy %g', test_acc) + logger.debug('Pipe send intermediate result done.') + + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + + logger.debug('Final result is %g', test_acc) + logger.debug('Send final result done.') + +def get_params(): + ''' Get parameters from command line ''' + parser = argparse.ArgumentParser() + parser.add_argument("--data_dir", type=str, default='/tmp/tensorflow/mnist/input_data', help="data directory") + parser.add_argument("--dropout_rate", type=float, default=0.5, help="dropout rate") + parser.add_argument("--channel_1_num", type=int, default=32) + parser.add_argument("--channel_2_num", type=int, default=64) + parser.add_argument("--conv_size", type=int, default=5) + parser.add_argument("--pool_size", type=int, default=2) + parser.add_argument("--hidden_size", type=int, default=1024) + parser.add_argument("--learning_rate", type=float, default=1e-4) + parser.add_argument("--batch_num", type=int, default=2000) + parser.add_argument("--batch_size", type=int, default=32) + + args, _ = parser.parse_known_args() + return args if __name__ == '__main__': try: - params = { - 'data_dir': '/tmp/tensorflow/mnist/input_data', - 'dropout_rate': 0.5, - 'channel_1_num': 32, - 'channel_2_num': 64, - 'conv_size': 5, - 'pool_size': 2, - 'hidden_size': 1024, - 'learning_rate': 1e-4, - 'batch_num': 2000, - 'batch_size': 32} - run_trial(params) + params = vars(get_params()) + main(params) except Exception as exception: logger.exception(exception) raise From 7163384e9295c68bd419d5f5ec4eb7c83f7debf6 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Fri, 25 Jan 2019 11:35:24 +0800 Subject: [PATCH 19/29] fix image --- docs/SQuAD_evolution_examples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md index e10e255a38..d17f2cd610 100644 --- a/docs/SQuAD_evolution_examples.md +++ b/docs/SQuAD_evolution_examples.md @@ -13,7 +13,7 @@ We conclude the search space as follow: 6. ADD-SKIP (Identity between random layers). 7. REMOVE-SKIP (Removes random skip). -![ga-squad-logo](https://raw.githubusercontent.com/Microsoft/nni/blob/master/examples/trials/ga_squad/ga_squad.png) +![](../examples/trials/ga_squad/ga_squad.png) ### New version Also we have another version which time cost is less and performance is better. We will release soon. From 584080df5ba394f6e83e324dc37adf584fa800e7 Mon Sep 17 00:00:00 2001 From: xuehui Date: Fri, 25 Jan 2019 13:21:16 +0800 Subject: [PATCH 20/29] Fix doc format (#658) * add SQuAD_evolution_examples.md * add update * remove yml file * fix format problem --- docs/gbdt_example.md | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/docs/gbdt_example.md b/docs/gbdt_example.md index 19a63b01c0..b44e0432f1 100644 --- a/docs/gbdt_example.md +++ b/docs/gbdt_example.md @@ -10,25 +10,34 @@ NNI is a great platform for tuning hyper-parameters, you could try various built There are many hyper-parameters in GBDT, but what kind of parameters will effect the performance or speed? Based on some pratical experience, some suggestion here(Take lightgbm as example): > * For better accuracy - * `learning_rate`. The range of `learning rate` could be [0.001, 0.9]. - * `num_leaves`. `num_leaves` is realted to `max_depth`, you don't have to tune both of them. - * `bagging_freq`. `bagging_freq` could be [1, 2, 4, 8, 10] - * `num_iterations`. May larger if underfitting. +* `learning_rate`. The range of `learning rate` could be [0.001, 0.9]. + +* `num_leaves`. `num_leaves` is realted to `max_depth`, you don't have to tune both of them. + +* `bagging_freq`. `bagging_freq` could be [1, 2, 4, 8, 10] + +* `num_iterations`. May larger if underfitting. > * For speed up - * `bagging_fraction`. The range of `bagging_fraction` could be [0.7, 1.0]. - * `feature_fraction`. The range of `feature_fraction` could be [0.6, 1.0]. - * `max_bin`. +* `bagging_fraction`. The range of `bagging_fraction` could be [0.7, 1.0]. + +* `feature_fraction`. The range of `feature_fraction` could be [0.6, 1.0]. + +* `max_bin`. > * For avoid overfitting - * `min_data_in_leaf`. This depend on your dataset. - * `min_sum_hessian_in_leaf`. This depend on your dataset. - * `lambda_l1` and `lambda_l2`. - * `min_gain_to_split`. - * `num_leaves`. +* `min_data_in_leaf`. This depend on your dataset. + +* `min_sum_hessian_in_leaf`. This depend on your dataset. + +* `lambda_l1` and `lambda_l2`. + +* `min_gain_to_split`. + +* `num_leaves`. Reference link: -[lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) +[lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) and [autoxgoboost](https://github.com/ja-thomas/autoxgboost/blob/master/poster_2018.pdf) ## 2. Task description From fbd0c3fa5330cd2aca29a4f57da1251178645393 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Fri, 25 Jan 2019 13:43:37 +0800 Subject: [PATCH 21/29] update index --- docs/Tutorials.rst | 3 ++- docs/training_services.rst | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst index c294e00292..e97e94f10b 100644 --- a/docs/Tutorials.rst +++ b/docs/Tutorials.rst @@ -10,4 +10,5 @@ Tutorials Assessors WebUI Training Platform - MultiPhase \ No newline at end of file + MultiPhase + AdVancedNAS \ No newline at end of file diff --git a/docs/training_services.rst b/docs/training_services.rst index 17eca50f98..d721ca8477 100644 --- a/docs/training_services.rst +++ b/docs/training_services.rst @@ -5,4 +5,5 @@ Introduction to NNI Training Services Local Remote PAI - Kubeflow \ No newline at end of file + Kubeflow + Framework Controller Mode \ No newline at end of file From a6d04b4b9855cae282b639ed3e4fa17257eafe45 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Fri, 25 Jan 2019 17:36:48 +0800 Subject: [PATCH 22/29] fix typo --- docs/Tutorials.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst index e97e94f10b..ecb599fdc5 100644 --- a/docs/Tutorials.rst +++ b/docs/Tutorials.rst @@ -11,4 +11,4 @@ Tutorials WebUI Training Platform MultiPhase - AdVancedNAS \ No newline at end of file + AdvancedNAS \ No newline at end of file From 95245d2fded9f7d410e7a1be90eaccd06208aefe Mon Sep 17 00:00:00 2001 From: ShufanHuang Date: Sat, 26 Jan 2019 11:59:12 +0800 Subject: [PATCH 23/29] fix broken-links of quickstart/tuners/assessors (#662) * update assessor.rst * fix --- docs/Builtin_Assessors.md | 14 ++++------- docs/Builtin_Tuner.md | 29 +++++++++++------------ docs/QuickStart.md | 49 +++++++++++++-------------------------- docs/assessors.rst | 2 +- 4 files changed, 35 insertions(+), 59 deletions(-) diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md index 25f3e54c83..63049514f6 100644 --- a/docs/Builtin_Assessors.md +++ b/docs/Builtin_Assessors.md @@ -4,8 +4,8 @@ NNI provides the-state-of-art tuning algorithm in our builtin-assessors and make |Assessor|Brief Introduction of Algorithm| |---|---| -|**Medianstop**
    [(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper][1]. It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress.| -|[Curvefitting][2]
    [(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance.| +|**Medianstop**
    [(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf). It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress.| +|[Curvefitting](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md)
    [(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance.|
    @@ -17,7 +17,7 @@ Note: Please follow the format when you write your `config.yml` file. -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Median Stop Assessor` +![](https://placehold.it/15/1589F0/000000?text=+) `Median Stop Assessor` > Builtin Assessor Name: **Medianstop** @@ -45,7 +45,7 @@ assessor: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Curve Fitting Assessor` +![](https://placehold.it/15/1589F0/000000?text=+) `Curve Fitting Assessor` > Builtin Assessor Name: **Curvefitting** @@ -71,8 +71,4 @@ assessor: optimize_mode: maximize start_step: 6 threshold: 0.95 -``` - -[1]: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf -[2]: https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md -[5]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/config_assessor.yml \ No newline at end of file +``` \ No newline at end of file diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index 1f3d1c1816..eb52c0d6a6 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -11,8 +11,8 @@ NNI provides the-state-of-art tuning algorithm in our builtin-tuners and makes t |**SMAC**
    [(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 github repo.| |**Batch tuner**
    [(Usage)](#Batch)|Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type choice in search space spec.| |**Grid Search**
    [(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| -|[Hyperband][1]
    [(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| -|[Network Morphism][2]
    [(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| +|[Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor)
    [(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| +|[Network Morphism](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md)
    [(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| |**Metis Tuner**
    [(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predicts the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.|
    @@ -25,7 +25,7 @@ Note: Please follow the format when you write your `config.yml` file. -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `TPE` +![](https://placehold.it/15/1589F0/000000?text=+) `TPE` > Builtin Tuner Name: **TPE** @@ -51,7 +51,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Random Search` +![](https://placehold.it/15/1589F0/000000?text=+) `Random Search` > Builtin Tuner Name: **Random** @@ -77,7 +77,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Anneal` +![](https://placehold.it/15/1589F0/000000?text=+) `Anneal` > Builtin Tuner Name: **Anneal** @@ -103,7 +103,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Naive Evolution` +![](https://placehold.it/15/1589F0/000000?text=+) `Naive Evolution` > Builtin Tuner Name: **Evolution** @@ -129,7 +129,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `SMAC` +![](https://placehold.it/15/1589F0/000000?text=+) `SMAC` > Builtin Tuner Name: **SMAC** @@ -155,7 +155,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Batch Tuner` +![](https://placehold.it/15/1589F0/000000?text=+) `Batch Tuner` > Builtin Tuner Name: BatchTuner @@ -194,7 +194,7 @@ The search space file including the high-level key `combine_params`. The type of -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Grid Search` +![](https://placehold.it/15/1589F0/000000?text=+) `Grid Search` > Builtin Tuner Name: **Grid Search** @@ -216,7 +216,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Hyperband` +![](https://placehold.it/15/1589F0/000000?text=+) `Hyperband` > Builtin Advisor Name: **Hyperband** @@ -246,7 +246,7 @@ advisor: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Network Morphism` +![](https://placehold.it/15/1589F0/000000?text=+) `Network Morphism` > Builtin Tuner Name: **NetworkMorphism** @@ -284,7 +284,7 @@ tuner: -![#1589F0](https://placehold.it/15/1589F0/000000?text=+) `Metis Tuner` +![](https://placehold.it/15/1589F0/000000?text=+) `Metis Tuner` > Builtin Tuner Name: **MetisTuner** @@ -310,7 +310,4 @@ tuner: builtinTunerName: MetisTuner classArgs: optimize_mode: maximize -``` - -[1]: https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor -[2]: https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md +``` \ No newline at end of file diff --git a/docs/QuickStart.md b/docs/QuickStart.md index ed054e019e..e99ca99acd 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -11,8 +11,8 @@ We support Linux and MacOS in current stage, Ubuntu 16.04 or higher, along with Note: * `--user` can be added if you want to install NNI in your home directory, which does not require any special privileges. -* If there is any error like `Segmentation fault`, please refer to [FAQ][1] -* For the `system requirements` of NNI, please refer to [Install NNI][2] +* If there is any error like `Segmentation fault`, please refer to [FAQ](FAQ.md) +* For the `system requirements` of NNI, please refer to [Install NNI](Installation.md) ## "Hello World" example on MNIST @@ -40,7 +40,7 @@ if __name__ == '__main__': run_trial(params) ``` -Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py][7] +Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py](../examples/trials/mnist/mnist_before.py) The above code can only try one set of parameters at a time, if we want to tune learning rate, we need to manually tune the hyperparameters and start the trial again and again. @@ -77,7 +77,7 @@ If you want to use NNI to automatically train your model and find the optimal hy + } ``` -*Implemented code directory: [search_space.json][3]* +*Implemented code directory: [search_space.json](../examples/trials/mnist/search_space.json)* **Step 2**: Modified your `Trial` file to get the hyperparameter set from NNI and report the final result to NNI. @@ -102,7 +102,7 @@ If you want to use NNI to automatically train your model and find the optimal hy run_trial(params) ``` -*Implemented code directory: [mnist.py][4]* +*Implemented code directory: [mnist.py](../examples/trials/mnist/mnist.py)* **Step 3**: Define a `config` file in yaml, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. @@ -125,9 +125,9 @@ trial: gpuNum: 0 ``` -*Implemented code directory: [config.yml][5]* +*Implemented code directory: [config.yml](../examples/trials/mnist/config.yml)* -All the codes above are already prepared and stored in [examples/trials/mnist/][8]. +All the codes above are already prepared and stored in [examples/trials/mnist/](../examples/trials/mnist). When these things are done, **run the config.yml file from your command line to start the experiment**. @@ -135,7 +135,7 @@ When these things are done, **run the config.yml file from your command line to nnictl create --config nni/examples/trials/mnist/config.yml ``` -Note: **nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. Click [here][6] for more usage of `nnictl` +Note: **nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. Click [here](NNICTLDOC.md) for more usage of `nnictl` Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. And this is what we expected to get: @@ -221,28 +221,11 @@ Below is the status of the all trials. Specifically: ## Related Topic -* [How to use command line tool nnictl][16] -* [How to write a trial][9] -* [Try different Tuners][10] -* [Try different Assessors][11] -* [How to run an experiment on local (with multiple GPUs)?][12] -* [How to run an experiment on multiple machines?][13] -* [How to run an experiment on OpenPAI?][14] -* [How to run an experiment on Kubeflow?][15] - -[1]: https://github.com/Microsoft/nni/blob/master/docs/FAQ.md -[2]: https://github.com/Microsoft/nni/blob/master/docs/Installation.md -[3]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/search_space.json -[4]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/mnist.py -[5]: https://github.com/Microsoft/nni/blob/master/examples/trials/mnist/config.yml -[6]: https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md -[7]: https://github.com/Microsoft/nni/blob/5000ae8b746aa5438d48db26cdc1e7104c9afa20/examples/trials/mnist/mnist_before.py -[8]: https://github.com/Microsoft/nni/tree/master/examples/trials/mnist -[9]: https://github.com/Microsoft/nni/blob/master/docs/howto_1_WriteTrial.md -[10]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_3_tryTunersAndAssessors.md -[11]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_3_tryTunersAndAssessors.md -[12]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_1_CR_exp_local_api.md -[13]: https://github.com/Microsoft/nni/blob/master/docs/tutorial_2_RemoteMachineMode.md -[14]: https://github.com/Microsoft/nni/blob/master/docs/PAIMode.md -[15]: https://github.com/Microsoft/nni/blob/master/docs/KubeflowMode.md -[16]: https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md \ No newline at end of file +* [Try different Tuners](Tuners.md) +* [Try different Assessors](Assessors.md) +* [How to use command line tool nnictl](NNICTLDOC.md) +* [How to write a trial](Trial.md) +* [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) +* [How to run an experiment on multiple machines?](RemoteMachineMode.md) +* [How to run an experiment on OpenPAI?](PAIMode.md) +* [How to run an experiment on Kubeflow?](KubeflowMode.md) \ No newline at end of file diff --git a/docs/assessors.rst b/docs/assessors.rst index 9cb127798b..a56a170454 100644 --- a/docs/assessors.rst +++ b/docs/assessors.rst @@ -8,7 +8,7 @@ Assessor receives the intermediate result from Trial and decides whether the Tri Here is an experimental result of MNIST after using 'Curvefitting' Assessor in 'maximize' mode, you can see that assessor successfully **early stopped** many trials with bad hyperparameters in advance. If you use assessor, we may get better hyperparameters under the same computing resources. -*Implemented code directory: [config_assessor.yml][5]* +*Implemented code directory: [config_assessor.yml](../examples/trials/mnist/config_assessor.yml)* ![](./img/Assessor.png) From bd28fa8d16b4c53678509c16bce6584f18a23a88 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Mon, 28 Jan 2019 16:49:41 +0800 Subject: [PATCH 24/29] Dev doc fix4 (#672) * refactor index * fix title format for remote * fix nnictl doc w/ rst * fix assessor pic link * fix type for training service * adjust tutorial * fix typo --- docs/AnnotationSpec.md | 10 +- docs/Builtin_Assessors.md | 6 +- docs/Builtin_Tuner.md | 10 +- docs/Customize_Assessor.md | 8 +- docs/Customize_Tuner.md | 2 +- docs/NNICTL.rst | 630 +++++++++++++++++++++++++++++++ docs/Reference.rst | 2 +- docs/RemoteMachineMode.md | 4 +- docs/SQuAD_evolution_examples.md | 10 +- docs/Trials.md | 10 +- docs/Tutorials.rst | 4 +- docs/advanced.rst | 6 + docs/assessors.rst | 6 +- docs/gbdt_example.md | 12 +- docs/index.rst | 5 +- docs/training_services.rst | 2 +- 16 files changed, 679 insertions(+), 48 deletions(-) create mode 100644 docs/NNICTL.rst create mode 100644 docs/advanced.rst diff --git a/docs/AnnotationSpec.md b/docs/AnnotationSpec.md index 62c4f2a0ad..a566fefb2e 100644 --- a/docs/AnnotationSpec.md +++ b/docs/AnnotationSpec.md @@ -29,7 +29,7 @@ In NNI, there are mainly four types of annotation: **Arguments** -- **sampling_algo**: Sampling algorithm that specifies a search space. User should replace it with a built-in NNI sampling function whose name consists of an `nni.` identification and a search space type specified in [SearchSpaceSpec](SearchSpaceSpec.md) such as `choice` or `uninform`. +- **sampling_algo**: Sampling algorithm that specifies a search space. User should replace it with a built-in NNI sampling function whose name consists of an `nni.` identification and a search space type specified in [SearchSpaceSpec](SearchSpaceSpec.md) such as `choice` or `uniform`. - **name**: The name of the variable that the selected value will be assigned to. Note that this argument should be the same as the left value of the following assignment statement. An example here is: @@ -47,8 +47,8 @@ learning_rate = 0.1 **Arguments** -- **\*functions**: Several functions that are waiting to be selected from. Note that it should be a complete function call with aruguments. Such as `max_pool(hidden_layer, pool_size)`. -- **name**: The name of the function that will be replace in the following assignment statement. +- **\*functions**: Several functions that are waiting to be selected from. Note that it should be a complete function call with arguments. Such as `max_pool(hidden_layer, pool_size)`. +- **name**: The name of the function that will be replaced in the following assignment statement. An example here is: @@ -61,10 +61,10 @@ h_pooling = max_pool(hidden_layer, pool_size) `'''@nni.report_intermediate_result(metrics)'''` -`@nni.report_intermediate_result` is used to report itermediate result, whose usage is the same as `nni.report_intermediate_result` in [Trials.md](Trials.md) +`@nni.report_intermediate_result` is used to report intermediate result, whose usage is the same as `nni.report_intermediate_result` in [Trials.md](Trials.md) ### 4. Annotate final result `'''@nni.report_final_result(metrics)'''` -`@nni.report_final_result` is used to report final result of the current trial, whose usage is the same as `nni.report_final_result` in [Trials.md](Trials.md) +`@nni.report_final_result` is used to report the final result of the current trial, whose usage is the same as `nni.report_final_result` in [Trials.md](Trials.md) diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md index 63049514f6..87f987a231 100644 --- a/docs/Builtin_Assessors.md +++ b/docs/Builtin_Assessors.md @@ -1,6 +1,6 @@ -# Builtin Assessors +# Built-in Assessors -NNI provides the-state-of-art tuning algorithm in our builtin-assessors and makes them easy to use. Below is the brief overview of NNI current builtin Assessors: +NNI provides state-of-the-art tuning algorithm in our builtin-assessors and makes them easy to use. Below is the brief overview of NNI current builtin Assessors: |Assessor|Brief Introduction of Algorithm| |---|---| @@ -11,7 +11,7 @@ NNI provides the-state-of-art tuning algorithm in our builtin-assessors and make ## Usage of Builtin Assessors -Use builtin assessors provided by NNI sdk requires to declare the **builtinAssessorName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirements, and example for each assessor. +Use builtin assessors provided by NNI SDK requires to declare the **builtinAssessorName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirements, and example for each assessor. Note: Please follow the format when you write your `config.yml` file. diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index eb52c0d6a6..925c968355 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -1,6 +1,6 @@ -# Builtin Tuners +# Built-in Tuners -NNI provides the-state-of-art tuning algorithm in our builtin-tuners and makes them easy to use. Below is the brief overview of NNI current builtin Tuners: +NNI provides state-of-the-art tuning algorithm in our builtin-tuners and makes them easy to use. Below is the brief overview of NNI current builtin Tuners: |Tuner|Brief Introduction of Algorithm| |---|---| @@ -8,7 +8,7 @@ NNI provides the-state-of-art tuning algorithm in our builtin-tuners and makes t |**Random Search**
    [(Usage)](#Random)|In Random Search for Hyper-Parameter Optimization show that Random Search might be surprisingly simple and effective. We suggest that we could use Random Search as the baseline when we have no knowledge about the prior distribution of hyper-parameters.| |**Anneal**
    [(Usage)](#Anneal)|This simple annealing algorithm begins by sampling from the prior, but tends over time to sample from points closer and closer to the best ones observed. This algorithm is a simple variation on the random search that leverages smoothness in the response surface. The annealing rate is not adaptive.| |**Naive Evolution**
    [(Usage)](#Evolution)|Naive Evolution comes from Large-Scale Evolution of Image Classifiers. It randomly initializes a population-based on search space. For each generation, it chooses better ones and does some mutation (e.g., change a hyperparameter, add/remove one layer) on them to get the next generation. Naive Evolution requires many trials to works, but it's very simple and easy to expand new features.| -|**SMAC**
    [(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 github repo.| +|**SMAC**
    [(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 Github repo.| |**Batch tuner**
    [(Usage)](#Batch)|Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type choice in search space spec.| |**Grid Search**
    [(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| |[Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor)
    [(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| @@ -19,7 +19,7 @@ NNI provides the-state-of-art tuning algorithm in our builtin-tuners and makes t ## Usage of Builtin Tuners -Use builtin tuner provided by NNI sdk requires to declare the **builtinTunerName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirments and example for each tuner. +Use builtin tuner provided by NNI SDK requires to declare the **builtinTunerName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirements and example for each tuner. Note: Please follow the format when you write your `config.yml` file. @@ -109,7 +109,7 @@ tuner: **Suggested scenario** -Its requirement of computation resource is relatively high. Specifically, it requires large inital population to avoid falling into local optimum. If your trial is short or leverages assessor, this tuner is a good choice. And, it is more suggested when your trial code supports weight transfer, that is, the trial could inherit the converged weights from its parent(s). This can greatly speed up the training progress. +Its requirement of computation resource is relatively high. Specifically, it requires large initial population to avoid falling into local optimum. If your trial is short or leverages assessor, this tuner is a good choice. And, it is more suggested when your trial code supports weight transfer, that is, the trial could inherit the converged weights from its parent(s). This can greatly speed up the training progress. **Requirement of classArg** diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md index 2b2e8b9dd3..5ce9485f5e 100644 --- a/docs/Customize_Assessor.md +++ b/docs/Customize_Assessor.md @@ -2,11 +2,11 @@ ## Customize Assessor -NNI also support building a assessor by yourself to adjust your tuning demand. +NNI also support building an assessor by yourself to adjust your tuning demand. If you want to implement a customized Assessor, there are three things for you to do: -1) Inherit a assessor of a base Assessor class +1) Inherit an assessor of a base Assessor class 2) Implement assess_trial function 3) Write a script to run Assessor @@ -57,9 +57,9 @@ def main(): main() ``` -Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assesor by using SDK `report_intermediate_result` function. +Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assessor by using SDK `report_intermediate_result` function. -Also, user could override the `run` function in Assessor to control the process logic. +Also, user could override the `run` function in Assessor to control the processing logic. More detail example you could see: > * [medianstop-assessor](../src/sdk/pynni/nni/medianstop_assessor) diff --git a/docs/Customize_Tuner.md b/docs/Customize_Tuner.md index 8092dff215..8279864ba0 100644 --- a/docs/Customize_Tuner.md +++ b/docs/Customize_Tuner.md @@ -2,7 +2,7 @@ ## Customize Tuner -NNI provides the-state-of-art tuning algorithm in our builtin-tuners. But we also support building a tuner by yourself to adjust your tuning demand. +NNI provides state-of-the-art tuning algorithm in our builtin-tuners. We also support building a tuner by yourself to adjust your tuning demand. If you want to implement and use your own tuning algorithm, you can implement a customized Tuner, there are three things for you to do: diff --git a/docs/NNICTL.rst b/docs/NNICTL.rst new file mode 100644 index 0000000000..c53b6e4a9b --- /dev/null +++ b/docs/NNICTL.rst @@ -0,0 +1,630 @@ +.. role:: raw-html-m2r(raw) + :format: html + + +nnictl +====== + +Introduction +------------ + +**nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. + +Commands +-------- + +nnictl support commands: + + +* `nnictl create <#create>`_ +* `nnictl resume <#resume>`_ +* `nnictl stop <#stop>`_ +* `nnictl update <#update>`_ +* `nnictl trial <#trial>`_ +* `nnictl top <#top>`_ +* `nnictl experiment <#experiment>`_ +* `nnictl config <#config>`_ +* `nnictl log <#log>`_ +* `nnictl webui <#webui>`_ +* `nnictl tensorboard <#tensorboard>`_ +* `nnictl package <#package>`_ + +Manage an experiment +^^^^^^^^^^^^^^^^^^^^ + +:raw-html-m2r:`` + + +* + **nnictl create** + + + * + Description + + You can use this command to create a new experiment, using the configuration specified in config file. + After this command is successfully done, the context will be set as this experiment, + which means the following command you issued is associated with this experiment, + unless you explicitly changes the context(not supported yet). + + + * + Usage + + .. code-block:: bash + + nnictl create [OPTIONS] + + + * + Options: + + +-------------------+-----------+-----------+-------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+=====================================+ + | --config, -c | True | |yaml configure file of the experiment| + +-------------------+-----------+-----------+-------------------------------------+ + | --port, -p | False | |the port of restful server | + +-------------------+-----------+-----------+-------------------------------------+ + :raw-html-m2r:`` + +* + **nnictl resume** + + + * + Description + + You can use this command to resume a stopped experiment. + + * + Usage + + .. code-block:: bash + + nnictl resume [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |The id of the experiment you want to resume | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --port, -p | False | |Rest port of the experiment you want to resume | + +-------------------+-----------+-----------+-----------------------------------------------+ + + +:raw-html-m2r:`` + + +* + **nnictl stop** + + + * + Description + + You can use this command to stop a running experiment or multiple experiments. + + * + Usage + + .. code-block:: bash + + nnictl stop [id] + + * + Detail + + 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. + 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. + 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. + 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. + 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. + 6.Users could use 'nnictl stop all' to stop all experiments + + :raw-html-m2r:`` + +* + **nnictl update** + + + * + **nnictl update searchspace** + + + * + Description + + You can use this command to update an experiment's search space. + + * + Usage + + .. code-block:: bash + + nnictl update searchspace [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --filename, -f | True | |the file storing your new search space | + +-------------------+-----------+-----------+-----------------------------------------------+ + + + * + **nnictl update concurrency** + + + * + Description + + You can use this command to update an experiment's concurrency. + + * + Usage + + .. code-block:: bash + + nnictl update concurrency [OPTIONS] + + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --value, -v | True | |the number of allowed concurrent trials | + +-------------------+-----------+-----------+-----------------------------------------------+ + + * + **nnictl update duration** + + + * + Description + + You can use this command to update an experiment's concurrency. + + * + Usage + + .. code-block:: bash + + nnictl update duration [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --value, -v | True | |the experiment duration will be NUMBER seconds.| + | | | |SUFFIX may be 's' for seconds (the default), | + | | | |'m' for minutes, 'h' for hours or 'd' for days.| + +-------------------+-----------+-----------+-----------------------------------------------+ + + + * + **nnictl update trialnum** + + + * + Description + + You can use this command to update an experiment's maxtrialnum. + + * + Usage + + .. code-block:: bash + + nnictl update trialnum [OPTIONS] + + * + Options: + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --value, -v | True | |the new number of maxtrialnum you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + +:raw-html-m2r:`` + + +* + **nnictl trial** + + + * + **nnictl trial ls** + + + * + Description + + You can use this command to show trial's information. + + * + Usage + + .. code-block:: bash + + nnictl trial ls + + * + Options: + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + + * + **nnictl trial kill** + + + * + Description + + You can use this command to kill a trial job. + + + * + Usage + + .. code-block:: bash + + nnictl trial kill [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --trialid, -t | True | |ID of the trial you want to kill. | + +-------------------+-----------+-----------+-----------------------------------------------+ + :raw-html-m2r:`` + +* + **nnictl top** + + + * + Description + + Monitor all of running experiments. + + + * + Usage + + .. code-block:: bash + + nnictl top + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --time, -t | False | |The interval to update the experiment status, | + | | | |the unit of time is second, | + | | | |and the default value is 3 second. | + +-------------------+-----------+-----------+-----------------------------------------------+ + +:raw-html-m2r:`` + +Manage experiment information +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +* + **nnictl experiment show** + + + * + Description + + Show the information of experiment. + + * + Usage + + .. code-block:: bash + + nnictl experiment show + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl experiment status** + + + * + Description + + Show the status of experiment. + + * + Usage + + .. code-block:: bash + + nnictl experiment status + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to check | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl experiment list** + + + * + Description + + Show the information of all the (running) experiments. + + * + Usage + + .. code-block:: bash + + nnictl experiment list + +:raw-html-m2r:`` + + +* + **nnictl config show** + + + * + Description + + Display the current context information. + + * + Usage + + .. code-block:: bash + + nnictl config show + +:raw-html-m2r:`` + +Manage log +^^^^^^^^^^ + + +* + **nnictl log stdout** + + + * + Description + + Show the stdout log content. + + * + Usage + + .. code-block:: bash + + nnictl log stdout [options] + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --head, -h | False | |show head lines of stdout | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --tail, -t | False | |show tail lines of stdout | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --path, -p | False | |show the path of stdout file | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl log stderr** + + + * + Description + + Show the stderr log content. + + * + Usage + + .. code-block:: bash + + nnictl log stderr [options] + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --head, -h | False | |show head lines of stderr | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --tail, -t | False | |show tail lines of stderr | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --path, -p | False | |show the path of stderr file | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl log trial** + + + * + Description + + Show trial log path. + + * + Usage + +:raw-html-m2r:`` + +Manage webui +^^^^^^^^^^^^ + + +* + **nnictl webui url** + +:raw-html-m2r:`` + +Manage tensorboard +^^^^^^^^^^^^^^^^^^ + + +* + **nnictl tensorboard start** + + + * + Description + + Start the tensorboard process. + + * + Usage + + .. code-block:: bash + + nnictl tensorboard start + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --trialid | False | |ID of the trial | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --port | False | 6006 |The port of the tensorboard process | + +-------------------+-----------+-----------+-----------------------------------------------+ + + * + Detail + + + #. NNICTL support tensorboard function in local and remote platform for the moment, other platforms will be supported later. + #. If you want to use tensorboard, you need to write your tensorboard log data to environment variable [NNI_OUTPUT_DIR] path. + #. In local mode, nnictl will set --logdir=[NNI_OUTPUT_DIR] directly and start a tensorboard process. + #. In remote mode, nnictl will create a ssh client to copy log data from remote machine to local temp directory firstly, and then start a tensorboard process in your local machine. You need to notice that nnictl only copy the log data one time when you use the command, if you want to see the later result of tensorboard, you should execute nnictl tensorboard command again. + #. If there is only one trial job, you don't need to set trialid. If there are multiple trial jobs running, you should set the trialid, or you could use [nnictl tensorboard start --trialid all] to map --logdir to all trial log paths. + +* + **nnictl tensorboard stop** + + + * + Description + + Stop all of the tensorboard process. + + * + Usage + + .. code-block:: bash + + nnictl tensorboard stop + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment | + +-------------------+-----------+-----------+-----------------------------------------------+ + +:raw-html-m2r:`` + +Manage package +^^^^^^^^^^^^^^ + + +* + **nnictl package install** + + + * + Description + + Install the packages needed in nni experiments. + + * + Usage + + .. code-block:: bash + + nnictl package install [OPTIONS] + +* + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | --name | True | |The name of package to be installed | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl package show** + + + * + Description + + .. code-block:: bash + + List the packages supported. + + * + Usage + + .. code-block:: bash + + nnictl package show diff --git a/docs/Reference.rst b/docs/Reference.rst index 3ce330c3c4..53d1573f04 100644 --- a/docs/Reference.rst +++ b/docs/Reference.rst @@ -4,7 +4,7 @@ References .. toctree:: :maxdepth: 3 - Command Line + Command Line Python API Annotation Configuration diff --git a/docs/RemoteMachineMode.md b/docs/RemoteMachineMode.md index 613fbf2126..899681752f 100644 --- a/docs/RemoteMachineMode.md +++ b/docs/RemoteMachineMode.md @@ -1,6 +1,4 @@ -**Run an Experiment on Multiple Machines** - -=== +# Run an Experiment on Multiple Machines NNI supports running an experiment on multiple machines through SSH channel, called `remote` mode. NNI assumes that you have access to those machines, and already setup the environment for running deep learning training code. diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md index d17f2cd610..a3406f9f4a 100644 --- a/docs/SQuAD_evolution_examples.md +++ b/docs/SQuAD_evolution_examples.md @@ -8,7 +8,7 @@ We conclude the search space as follow: 1. IDENTITY (Effectively means keep training). 2. INSERT-RNN-LAYER (Inserts a LSTM. Comparing the performance of GRU and LSTM in our experiment, we decided to use LSTM here.) 3. REMOVE-RNN-LAYER -4. INSERT-ATTENTION-LAYER(Inserts a attention layer.) +4. INSERT-ATTENTION-LAYER(Inserts an attention layer.) 5. REMOVE-ATTENTION-LAYER 6. ADD-SKIP (Identity between random layers). 7. REMOVE-SKIP (Removes random skip). @@ -137,7 +137,7 @@ In the "trial" part, if you want to use GPU to perform the architecture search, nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml ``` -## 4. Techinal details about the trial +## 4. Technical details about the trial ### 4.1 How does it works The evolution-algorithm based architecture for question answering has two different parts just like any other examples: the trial and the tuner. @@ -153,7 +153,7 @@ The trial has a lot of different files, functions and classes. Here we will only * `rnn.py` contains an implementation for GRU in Tensorflow. * `train_model.py` is a wrapper for the whole question answering model. -Among those files, `trial.py` and `graph_to_tf.py` is special. +Among those files, `trial.py` and `graph_to_tf.py` are special. `graph_to_tf.py` has a function named as `graph_to_network`, here is its skeleton code: @@ -298,9 +298,9 @@ Here is an example of the model configuration, which is passed from the tuner to } ``` -Every model configuration will has a "layers" section, which is a JSON list of layer definitions. The definition of each layer is also a JSON object, where: +Every model configuration will have a "layers" section, which is a JSON list of layer definitions. The definition of each layer is also a JSON object, where: - * `type` is the type of the layer. 0, 1, 2, 3, 4 correspond to attention, self-attention, RNN, input and output layer respectively. + * `type` is the type of the layer. 0, 1, 2, 3, 4 corresponds to attention, self-attention, RNN, input and output layer respectively. * `size` is the length of the output. "x", "y" correspond to document length / question length, respectively. * `input_size` is the number of inputs the layer has. * `input` is the indices of layers taken as input of this layer. diff --git a/docs/Trials.md b/docs/Trials.md index cc4661fa5a..1ee7ef03b1 100644 --- a/docs/Trials.md +++ b/docs/Trials.md @@ -2,13 +2,13 @@ ## Overview -In NNI, hyper-parameter searching space will be firstly defined using a json file (often called searchspace.json). According to the search space defined by this file, different hyper-parameter combinations will be generated to try and get feedback information like final accurary. +In NNI, hyper-parameter searching space will be first defined using a json file (often called searchspace.json). According to the search space defined by this file, different hyper-parameter combinations will be generated to try and get feedback information like final accuracy. A **Trial** in NNI is such an individual attempt at applying a set of hyper-parameters on a model. -NNI provide two approaches for you to define a trial: `NNI API` and `NNI Python annotation`. +NNI provides two approaches for you to define a trial: `NNI API` and `NNI Python annotation`. ## NNI API > Step 1 - Prepare a SearchSpace parameters file. @@ -74,7 +74,7 @@ NNI provide two approaches for you to define a trial: `NNI API` and `NNI Python ## NNI Python Annotation -An alternative to write a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: +An alternative to writing a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: * annotate the variables you want to tune * specify in which range you want to tune the variables @@ -90,7 +90,7 @@ The following is a tensorflow code snippet for NNI Annotation, where the highlig 2. report test\_acc every 100 steps 3. at last report test\_acc as final result. -What noteworthy is: as these new added codes are annotations, it does not actually change your previous codes logic, you can still run your code as usual in environments without NNI installed. +What noteworthy is: as these newly added codes are annotations, it does not actually change your previous codes logic, you can still run your code as usual in environments without NNI installed. ```diff with tf.Session() as sess: @@ -136,7 +136,7 @@ useAnnotation: true ### Output -NNI is designed to show each trial's stdout and stderr in the log region of Webui. However, currently this feature is supported only on PAI and k8s platforms. On other platforms NNI will show trial log path and users can temporarily check the output manually. +NNI is designed to show each trial's stdout and stderr in the log region of WebUI. However, currently this feature is supported only on PAI and k8s platforms. On other platforms NNI will show trial log path and users can temporarily check the output manually. ### Advance APIs diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst index ecb599fdc5..8d65f7bf69 100644 --- a/docs/Tutorials.rst +++ b/docs/Tutorials.rst @@ -3,12 +3,10 @@ Tutorials ###################### .. toctree:: - QuickStart Installation Trial Tuners Assessors WebUI Training Platform - MultiPhase - AdvancedNAS \ No newline at end of file + advanced \ No newline at end of file diff --git a/docs/advanced.rst b/docs/advanced.rst new file mode 100644 index 0000000000..3362096805 --- /dev/null +++ b/docs/advanced.rst @@ -0,0 +1,6 @@ +Advanced Features +===================== + +.. toctree:: + MultiPhase + AdvancedNAS \ No newline at end of file diff --git a/docs/assessors.rst b/docs/assessors.rst index a56a170454..5a3466cdf8 100644 --- a/docs/assessors.rst +++ b/docs/assessors.rst @@ -1,16 +1,14 @@ Assessors ============== -Overview --------------- In order to save our computing resources, NNI supports an early stop policy and creates **Assessor** to finish this job. Assessor receives the intermediate result from Trial and decides whether the Trial should be killed by specific algorithm. Once the Trial experiment meets the early stop conditions(which means assessor is pessimistic about the final results), the assessor will kill the trial and the status of trial will be `"EARLY_STOPPED"`. Here is an experimental result of MNIST after using 'Curvefitting' Assessor in 'maximize' mode, you can see that assessor successfully **early stopped** many trials with bad hyperparameters in advance. If you use assessor, we may get better hyperparameters under the same computing resources. -*Implemented code directory: [config_assessor.yml](../examples/trials/mnist/config_assessor.yml)* +*Implemented code directory: config_assessor.yml * -![](./img/Assessor.png) +.. image:: ./img/Assessor.png Like Tuners, users can either use built-in Assessors, or customize an Assessor on their own. Please refer to the following tutorials for detail: diff --git a/docs/gbdt_example.md b/docs/gbdt_example.md index b44e0432f1..e5bb053ace 100644 --- a/docs/gbdt_example.md +++ b/docs/gbdt_example.md @@ -1,18 +1,18 @@ # GBDT in nni Gradient boosting is a machine learning technique for regression and classification problems, which produces a prediction model in the form of an ensemble of weak prediction models, typically decision trees. It builds the model in a stage-wise fashion as other boosting methods do, and it generalizes them by allowing optimization of an arbitrary differentiable loss function. -Gradient boosting decision tree has many popular implementation, such as [lightgbm](https://github.com/Microsoft/LightGBM), [xgboost](https://github.com/dmlc/xgboost), and [catboost](https://github.com/catboost/catboost), etc. GBDT is a great tool for solving the problem of traditional machine learning problem. Since GBDT is a robust algorithm, it could use in many domains. The better hyper-parameters for GBDT, the better performance you could achieve. +Gradient boosting decision tree has many popular implementations, such as [lightgbm](https://github.com/Microsoft/LightGBM), [xgboost](https://github.com/dmlc/xgboost), and [catboost](https://github.com/catboost/catboost), etc. GBDT is a great tool for solving the problem of traditional machine learning problem. Since GBDT is a robust algorithm, it could use in many domains. The better hyper-parameters for GBDT, the better performance you could achieve. NNI is a great platform for tuning hyper-parameters, you could try various builtin search algorithm in nni and run multiple trials concurrently. ## 1. Search Space in GBDT -There are many hyper-parameters in GBDT, but what kind of parameters will effect the performance or speed? Based on some pratical experience, some suggestion here(Take lightgbm as example): +There are many hyper-parameters in GBDT, but what kind of parameters will affect the performance or speed? Based on some practical experience, some suggestion here(Take lightgbm as example): > * For better accuracy * `learning_rate`. The range of `learning rate` could be [0.001, 0.9]. -* `num_leaves`. `num_leaves` is realted to `max_depth`, you don't have to tune both of them. +* `num_leaves`. `num_leaves` is related to `max_depth`, you don't have to tune both of them. * `bagging_freq`. `bagging_freq` could be [1, 2, 4, 8, 10] @@ -25,8 +25,8 @@ There are many hyper-parameters in GBDT, but what kind of parameters will effect * `max_bin`. -> * For avoid overfitting -* `min_data_in_leaf`. This depend on your dataset. +> * To avoid overfitting +* `min_data_in_leaf`. This depends on your dataset. * `min_sum_hessian_in_leaf`. This depend on your dataset. @@ -42,7 +42,7 @@ Reference link: ## 2. Task description Now we come back to our example "auto-gbdt" which run in lightgbm and nni. The data including [train data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train) and [test data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train). -Given the features and label in train data, we train a GBDT regession model and use it to predict. +Given the features and label in train data, we train a GBDT regression model and use it to predict. ## 3. How to run in nni diff --git a/docs/index.rst b/docs/index.rst index d342781251..7ec897d3b2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,9 +12,10 @@ Contents :glob: Overview - Changelog + GetStarted Tutorials Examples Reference + FAQ Contribution - FAQ \ No newline at end of file + Changelog \ No newline at end of file diff --git a/docs/training_services.rst b/docs/training_services.rst index d721ca8477..e573c677aa 100644 --- a/docs/training_services.rst +++ b/docs/training_services.rst @@ -6,4 +6,4 @@ Introduction to NNI Training Services Remote PAI Kubeflow - Framework Controller Mode \ No newline at end of file + FrameworkController Mode \ No newline at end of file From 8ce13e94b25c55b281c9847119de033ecc0be717 Mon Sep 17 00:00:00 2001 From: xumeng723 <549922905@qq.com> Date: Mon, 28 Jan 2019 16:58:06 +0800 Subject: [PATCH 25/29] Dev doc (#669) * changed image link * deleted link of triallog.png new version do not has this function * Update AdvancedNAS.md * changed image link weight sharing image --- docs/AdvancedNAS.md | 4 ++-- docs/Overview.md | 4 ++-- docs/WebUI.md | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/AdvancedNAS.md b/docs/AdvancedNAS.md index 04997f7b39..ca5e063c26 100644 --- a/docs/AdvancedNAS.md +++ b/docs/AdvancedNAS.md @@ -19,7 +19,7 @@ tuner: ``` And let tuner decide where to save & load weights and feed the paths to trials through `nni.get_next_parameters()`: -![weight_sharing_design](./img/weight_sharing.png) +drawing For example, in tensorflow: ```python @@ -86,4 +86,4 @@ For details, please refer to this [simple weight sharing example](../test/async_ [2]: https://arxiv.org/abs/1707.07012 [3]: https://arxiv.org/abs/1806.09055 [4]: https://arxiv.org/abs/1806.10282 -[5]: https://arxiv.org/abs/1703.01041 \ No newline at end of file +[5]: https://arxiv.org/abs/1703.01041 diff --git a/docs/Overview.md b/docs/Overview.md index a18fbb8dba..6cb93f9607 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -10,7 +10,7 @@ NNI (Neural Network Intelligence) is a toolkit to help users design and tune mac The figure below shows high-level architecture of NNI.

    -drawing +drawing

    ## Key Concepts @@ -41,7 +41,7 @@ For each experiment, user only needs to define a search space and update a few l

    -drawing +drawing

    More details about how to run an experiment, please refer to [Get Started](). diff --git a/docs/WebUI.md b/docs/WebUI.md index 544c22421e..baf34d0a37 100644 --- a/docs/WebUI.md +++ b/docs/WebUI.md @@ -45,7 +45,6 @@ Click the tab "Trials Detail" to see the status of the all trials. Specifically: ![](./img/webui-img/detail-pai.png) -![](./img/webui-img/trialog.png) * Kill: you can kill a job that status is running. * Support to search for a specific trial. From ce9cb23d7fa2e2815c52dbb46908801b3f98fb9e Mon Sep 17 00:00:00 2001 From: QuanluZhang Date: Mon, 28 Jan 2019 17:01:49 +0800 Subject: [PATCH 26/29] update doc (#670) * update doc * Dev doc fix4 (#672) * refactor index * fix title format for remote * fix nnictl doc w/ rst * fix assessor pic link * fix type for training service * adjust tutorial * fix typo --- docs/Builtin_Assessors.md | 4 +- docs/Builtin_Tuner.md | 4 +- docs/Examples.rst | 2 +- docs/Installation.md | 21 +++---- docs/Overview.md | 22 +++---- docs/QuickStart.md | 13 ++-- docs/RemoteMachineMode.md | 8 --- docs/Trials.md | 126 +++++++++++++++++--------------------- docs/Tutorials.rst | 2 +- 9 files changed, 87 insertions(+), 115 deletions(-) diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md index 87f987a231..46fd4f89d5 100644 --- a/docs/Builtin_Assessors.md +++ b/docs/Builtin_Assessors.md @@ -4,8 +4,8 @@ NNI provides state-of-the-art tuning algorithm in our builtin-assessors and make |Assessor|Brief Introduction of Algorithm| |---|---| -|**Medianstop**
    [(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf). It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress.| -|[Curvefitting](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md)
    [(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve|It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance.| +|**Medianstop**
    [(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf). It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.| +|[Curvefitting](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md)
    [(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve|
    diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index 925c968355..c0d11b0790 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -1,6 +1,6 @@ # Built-in Tuners -NNI provides state-of-the-art tuning algorithm in our builtin-tuners and makes them easy to use. Below is the brief overview of NNI current builtin Tuners: +NNI provides state-of-the-art tuning algorithm as our builtin-tuners and makes them easy to use. Below is the brief summary of NNI currently built-in Tuners: |Tuner|Brief Introduction of Algorithm| |---|---| @@ -310,4 +310,4 @@ tuner: builtinTunerName: MetisTuner classArgs: optimize_mode: maximize -``` \ No newline at end of file +``` diff --git a/docs/Examples.rst b/docs/Examples.rst index 4ccf62d798..8c605f67a3 100644 --- a/docs/Examples.rst +++ b/docs/Examples.rst @@ -7,6 +7,6 @@ Examples MNIST Cifar10 - sklearn + Scikit-learn EvolutionSQuAD GBDT diff --git a/docs/Installation.md b/docs/Installation.md index a00426b5ea..dc6ec25a14 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -3,28 +3,21 @@ Currently we only support installation on Linux & Mac. ## **Installation** -* __Dependencies__ - - ```bash - python >= 3.5 - git - wget - ``` - - python pip should also be correctly installed. You could use "python3 -m pip -v" to check pip version. * __Install NNI through pip__ + Prerequisite: `python >= 3.5` ```bash - python3 -m pip install --user --upgrade nni + python3 -m pip install --upgrade nni ``` * __Install NNI through source code__ + Prerequisite: `python >=3.5, git, wget` ```bash - git clone -b v0.5 https://github.com/Microsoft/nni.git + git clone -b v0.5.1 https://github.com/Microsoft/nni.git cd nni - source install.sh + ./install.sh ``` * __Install NNI in docker image__ @@ -65,5 +58,7 @@ Below are the minimum system requirements for NNI on macOS. Due to potential pro * [Define search space](SearchSpaceSpec.md) * [Config an experiment](ExperimentConfig.md) * [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) -* [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) +* [How to run an experiment on multiple machines?](RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) +* [How to run an experiment on Kubernetes through Kubeflow?](KubeflowMode.md) +* [How to run an experiment on Kubernetes through FrameworkController?](FrameworkControllerMode.md) \ No newline at end of file diff --git a/docs/Overview.md b/docs/Overview.md index 6cb93f9607..dbfef6bc02 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -35,7 +35,7 @@ For each experiment, user only needs to define a search space and update a few l >Step 1: [Define search space](SearchSpaceSpec.md) ->Step 2: [Update model codes](howto_1_WriteTrial.md) +>Step 2: [Update model codes](Trials.md) >Step 3: [Define Experiment](ExperimentConfig.md) @@ -44,18 +44,18 @@ For each experiment, user only needs to define a search space and update a few l drawing

    -More details about how to run an experiment, please refer to [Get Started](). +More details about how to run an experiment, please refer to [Get Started](QuickStart.md). ## Learn More -* [Get started](GetStarted.md) -* [How to adapt your trial code on NNI?]() -* [What are tuners supported by NNI?]() -* [How to customize your own tuner?]() -* [What are assessors supported by NNI?]() -* [How to customize your own assessor?]() +* [Get started](QuickStart.md) +* [How to adapt your trial code on NNI?](Trials.md) +* [What are tuners supported by NNI?](Builtin_Tuner.md) +* [How to customize your own tuner?](Customize_Tuner.md) +* [What are assessors supported by NNI?](Builtin_Assessors.md) +* [How to customize your own assessor?](Customize_Assessor.md) * [How to run an experiment on local?](tutorial_1_CR_exp_local_api.md) * [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) -* [How to do trouble shooting when using NNI?]() -* [Examples]() -* [Reference]() +* [Examples](mnist_examples.md) + +[How to do trouble shooting when using NNI?]: <> () \ No newline at end of file diff --git a/docs/QuickStart.md b/docs/QuickStart.md index e99ca99acd..4167a92d5b 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -2,7 +2,7 @@ ## Installation -We support Linux and MacOS in current stage, Ubuntu 16.04 or higher, along with MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. +We support Linux and MacOS in current stage, Ubuntu 16.04 or higher and MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. ```bash python3 -m pip install --upgrade nni @@ -42,7 +42,7 @@ if __name__ == '__main__': Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py](../examples/trials/mnist/mnist_before.py) -The above code can only try one set of parameters at a time, if we want to tune learning rate, we need to manually tune the hyperparameters and start the trial again and again. +The above code can only try one set of parameters at a time, if we want to tune learning rate, we need to manually modify the hyperparameter and start the trial again and again. NNI is born for helping user do the tuning jobs, the NNI working process is presented below: @@ -221,11 +221,12 @@ Below is the status of the all trials. Specifically: ## Related Topic -* [Try different Tuners](Tuners.md) -* [Try different Assessors](Assessors.md) +* [Try different Tuners](Builtin_Tuner.md) +* [Try different Assessors](Builtin_Assessors.md) * [How to use command line tool nnictl](NNICTLDOC.md) -* [How to write a trial](Trial.md) +* [How to write a trial](Trials.md) * [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) * [How to run an experiment on multiple machines?](RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) -* [How to run an experiment on Kubeflow?](KubeflowMode.md) \ No newline at end of file +* [How to run an experiment on Kubernetes through Kubeflow?](KubeflowMode.md) +* [How to run an experiment on Kubernetes through FrameworkController?](FrameworkControllerMode.md) \ No newline at end of file diff --git a/docs/RemoteMachineMode.md b/docs/RemoteMachineMode.md index 899681752f..2099d7a0e8 100644 --- a/docs/RemoteMachineMode.md +++ b/docs/RemoteMachineMode.md @@ -14,14 +14,6 @@ e.g. Three machines and you login in with account `bob` (Note: the account is no Install NNI on each of your machines following the install guide [here](GetStarted.md). -For remote machines that are used only to run trials but not the nnictl, you can just install python SDK: - -* __Install python SDK through pip__ - - ```bash - python3 -m pip install --user --upgrade nni-sdk - ``` - ## Run an experiment Install NNI on another machine which has network accessibility to those three machines above, or you can just use any machine above to run nnictl command line tool. diff --git a/docs/Trials.md b/docs/Trials.md index 1ee7ef03b1..c6182e6c3c 100644 --- a/docs/Trials.md +++ b/docs/Trials.md @@ -1,77 +1,70 @@ -# Trials +# Write a Trial Run on NNI -## Overview +A **Trial** in NNI is an individual attempt at applying a configuration (e.g., a set of hyper-parameters) on a model. -In NNI, hyper-parameter searching space will be first defined using a json file (often called searchspace.json). According to the search space defined by this file, different hyper-parameter combinations will be generated to try and get feedback information like final accuracy. +To define an NNI trial, you need to firstly define the set of parameters (i.e., search space) and then update the model. NNI provide two approaches for you to define a trial: [NNI API](#nni-api) and [NNI Python annotation](#nni-annotation). You could also refer to [here](#more-examples) for more trial examples. -A **Trial** in NNI is such an individual attempt at applying a set of hyper-parameters on a model. + +## NNI API + +### Step 1 - Prepare a SearchSpace parameters file. +An example is shown below: +```json +{ + "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, + "conv_size":{"_type":"choice","_value":[2,3,5,7]}, + "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, + "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} +} +``` -NNI provides two approaches for you to define a trial: `NNI API` and `NNI Python annotation`. +Refer to [SearchSpaceSpec.md](./SearchSpaceSpec.md) to learn more about search space. Tuner will generate configurations from this search space, that is, choosing a value for each hyperparameter from the range. + +### Step 2 - Update model codes + +- Import NNI -## NNI API -> Step 1 - Prepare a SearchSpace parameters file. - -- First we should define a SearchSpace file so NNI could generate different sets of hyper-parameter, each of which is used to run an individual trial. - - - An example of a SearchSpace parameters file is shown below: - ``` - { - "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, - "conv_size":{"_type":"choice","_value":[2,3,5,7]}, - "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, - "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} - } - ``` - - - And a set of hyper-parameter, or a hyper-parameter combination generated by the search space above might be: - ``` - { - "dropout_rate": 0.3, - "conv_size: 2, - "hidden_size: 124, - "learning_rate": 0.01 - } - ``` - -- For more information about search space, please refer to [SearchSpaceSpec.md](SearchSpaceSpec.md). - -> Step 2 - Update model codes - -- Declare NNI API Include `import nni` in your trial code to use NNI APIs. -- Get predefined parameters +- Get configuration from Tuner - - Use `RECEIVED_PARAMS = nni.get_next_parameter()` to get hyper-parameters' values assigned by tuner. - - Note that `RECEIVED_PARAMS` is an object, for example: +```json +RECEIVED_PARAMS = nni.get_next_parameter() +``` +`RECEIVED_PARAMS` is an object, for example: +`{"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029}`. - {"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029} +- Report metric data periodically (optional) -- Report NNI results +```json +nni.report_intermediate_result(metrics) +``` +`metrics` could be any python object. If users use NNI built-in tuner/assessor, `metrics` can only have two formats: 1) a number e.g., float, int, 2) a dict object that has a key named `default` whose value is a number. This `metrics` is reported to [assessor](Builtin_Assessors.md). Usually, `metrics` could be periodically evaluated loss or accuracy. - - Trial should report `metrics` so NNI could evaluate the current set of hyper-parameters. `metrics` might be things like accuracy or loss. - - `metrics` could be any python object, but NNI built-in tuners/assessors only receive `metrics` that is: - - a numerical variable (e.g. float, int). - - a dict object that has a key named "default" whose value is a numerical variable, which will be used as the default metric - - Use `nni.report_intermediate_result(metrics)` to send `metrics` to [assessor](Assessors.md). (Optional) - - Use `nni.report_final_result(metrics)` to send `metrics` to [tuner](Tuners.md). +- Report performance of the configuration +```json +nni.report_final_result(metrics) +``` +`metrics` also could be any python object. If users use NNI built-in tuner/assessor, `metrics` follows the same format rule as that in `report_intermediate_result`, the number indicates the model's performance, for example, the model's accuracy, loss etc. This `metrics` is reported to [tuner](Builtin-Tuner.md). +### Step 3 - Enable NNI API -> Step 3 - Enable NNI API +To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): -- To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): +```json +useAnnotation: false +searchSpacePath: /path/to/your/search_space.json +``` - ``` - useAnnotation: false - searchSpacePath: /path/to/your/search_space.json - ``` +You can refer to [here](ExperimentConfig.md) for more information about how to set up experiment configurations. -- You can refer to [here](ExperimentConfig.md) for more information about how to set up experiment configurations. +*Please refer to [here]() for more APIs (e.g., `nni.get_sequence_id()`) provided by NNI. + ## NNI Python Annotation An alternative to writing a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: @@ -83,7 +76,7 @@ An alternative to writing a trial is to use NNI's syntax for python. Simple as a Again, take MNIST as an example, it only requires 2 steps to write a trial with NNI Annotation. -> Step 1 - Update codes with annotations +### Step 1 - Update codes with annotations The following is a tensorflow code snippet for NNI Annotation, where the highlighted four lines are annotations that help you to: 1. tune batch\_size and dropout\_rate @@ -125,27 +118,18 @@ with tf.Session() as sess: For more information about annotation syntax and its usage, please refer to [Annotation README](../tools/nni_annotation/README.md) . ->Step 2 - Enable NNI Annotation +### Step 2 - Enable NNI Annotation In the yaml configure file, you need to set *useAnnotation* to true to enable NNI annotation: ``` useAnnotation: true ``` -## Others - -### Output - -NNI is designed to show each trial's stdout and stderr in the log region of WebUI. However, currently this feature is supported only on PAI and k8s platforms. On other platforms NNI will show trial log path and users can temporarily check the output manually. - -### Advance APIs - -#### get_sequence_id - -- Every trial has a sequence id, which is their unique identifier (a numeric value increasing from zero). -- This function receives no argument and will return the sequence id of the current trial, which can be used to perform task like k-fold validation - -You can use it like `trial_id = nni.get_sequence_id()` + +## More Trial Examples -## More Trial Example -* [Automatic Model Architecture Search for Reading Comprehension.](../examples/trials/ga_squad/README.md) +* [MNIST examples](mnist_examples.md) +* [Finding out best optimizer for Cifar10 classification](cifar10_examples.md) +* [How to tune Scikit-learn on NNI](sklearn_examples.md) +* [Automatic Model Architecture Search for Reading Comprehension.](SQuAD_evolution_examples.md) +* [Tuning GBDT on NNI](gbdt_example.md) diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst index 8d65f7bf69..48f6a8054b 100644 --- a/docs/Tutorials.rst +++ b/docs/Tutorials.rst @@ -4,7 +4,7 @@ Tutorials .. toctree:: Installation - Trial + Write Trial Tuners Assessors WebUI From 81a32afa37b21e6d86aee3666fd7e7c9afa7486a Mon Sep 17 00:00:00 2001 From: chicm-ms <38930155+chicm-ms@users.noreply.github.com> Date: Mon, 28 Jan 2019 17:02:13 +0800 Subject: [PATCH 27/29] Update customized assessor doc (#671) * Update customized assessor doc * updates --- docs/Customize_Assessor.md | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md index 5ce9485f5e..fa6bfa5031 100644 --- a/docs/Customize_Assessor.md +++ b/docs/Customize_Assessor.md @@ -1,4 +1,4 @@ -# Customize-Assessor +# Customize Assessor ## Customize Assessor @@ -8,7 +8,7 @@ If you want to implement a customized Assessor, there are three things for you t 1) Inherit an assessor of a base Assessor class 2) Implement assess_trial function -3) Write a script to run Assessor +3) Configure your customized Assessor in experiment yaml config file **1. Inherit an assessor of a base Assessor class** @@ -38,29 +38,25 @@ class CustomizedAssessor(Assessor): ... ``` -**3. Write a script to run Assessor** +**3. Configure your customized Assessor in experiment yaml config file** -```python -import argparse - -import CustomizedAssessor +NNI needs to locate your customized Assessor class and instantiate the class, so you need to specify the location of the customized Assessor class and pass literal values as parameters to the \_\_init__ constructor. -def main(): - parser = argparse.ArgumentParser(description='parse command line parameters.') - # parse your assessor arg here. - ... - FLAGS, unparsed = parser.parse_known_args() +```yaml - assessor = CustomizedAssessor(...) - assessor.run() +assessor: + codeDir: /home/abc/myassessor + classFileName: my_customized_assessor.py + className: CustomizedAssessor + # Any parameter need to pass to your Assessor class __init__ constructor + # can be specified in this optional classArgs field, for example + classArgs: + arg1: value1 -main() ``` Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assessor by using SDK `report_intermediate_result` function. -Also, user could override the `run` function in Assessor to control the processing logic. - More detail example you could see: > * [medianstop-assessor](../src/sdk/pynni/nni/medianstop_assessor) > * [curvefitting-assessor](../src/sdk/pynni/nni/curvefitting_assessor) \ No newline at end of file From 8e97ee2aace988376131446cd986774b3c475e40 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Mon, 28 Jan 2019 17:14:34 +0800 Subject: [PATCH 28/29] fix typo --- docs/Builtin_Tuner.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index c0d11b0790..c3e7314049 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -13,7 +13,7 @@ NNI provides state-of-the-art tuning algorithm as our builtin-tuners and makes t |**Grid Search**
    [(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| |[Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor)
    [(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| |[Network Morphism](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md)
    [(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| -|**Metis Tuner**
    [(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predicts the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.| +|**Metis Tuner**
    [(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predict the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.|
    @@ -222,7 +222,7 @@ tuner: **Suggested scenario** -It is suggested when you have limited computation resource but have relatively large search space. It performs good in the scenario that intermediate result (e.g., accuracy) can reflect good or bad of final result (e.g., accuracy) to some extent. +It is suggested when you have limited computation resource but have relatively large search space. It performs well in the scenario that intermediate result (e.g., accuracy) can reflect good or bad of final result (e.g., accuracy) to some extent. **Requirement of classArg** From 6919976ec02ba5a7c5d2532db1dbe71c24d1b102 Mon Sep 17 00:00:00 2001 From: QuanluZhang Date: Mon, 28 Jan 2019 17:31:16 +0800 Subject: [PATCH 29/29] update doc (#673) --- docs/Builtin_Tuner.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index c3e7314049..e9dde6bf1d 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -228,7 +228,7 @@ It is suggested when you have limited computation resource but have relatively l * **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. * **R** (*int, optional, default = 60*) - the maximum STEPS (could be the number of mini-batches or epochs) can be allocated to a trial. Each trial should use STEPS to control how long it runs. -* **eta** (*int, optional, default = 3*) - proportion of discarded trials +* **eta** (*int, optional, default = 3*) - `(eta-1)/eta` is the proportion of discarded trials **Usage example**