From de152323b7237a3a0a61f22659d71a9752394205 Mon Sep 17 00:00:00 2001
From: chicm-ms <38930155+chicm-ms@users.noreply.github.com>
Date: Mon, 8 Oct 2018 15:11:06 +0800
Subject: [PATCH 1/2] Pull latest code (#2)
* 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
* Bug fix for SQuAD example tuner. (#134)
* Update Makefile (#151)
* test
* update setup.py
* update Makefile and install.sh
* rever setup.py
* change color
* update doc
* update doc
* fix auto-completion's extra space
* update Makefile
* update webui
* Update doc image (#163)
* update doc
* trivial
* trivial
* trivial
* trivial
* trivial
* trivial
* update image
* update image size
* Update ga squad (#104)
* update readme in ga_squad
* update readme
* fix typo
* Update README.md
* Update README.md
* Update README.md
* update readme
* sklearn examples (#169)
* fix nnictl bug
* fix install.sh
* add sklearn-regression example
* add sklearn classification
* update sklearn
* update example
* remove additional code
* Update batch tuner (#158)
* update readme in ga_squad
* update readme
* fix typo
* Update README.md
* Update README.md
* Update README.md
* update readme
* update batch tuner
* Quickly fix cascading search space bug in tuner (#156)
* update readme in ga_squad
* update readme
* fix typo
* Update README.md
* Update README.md
* Update README.md
* update readme
* quickly fix cascading searchspace bug in tuner
* Add iterative search space example (#119)
* update readme in ga_squad
* update readme
* fix typo
* Update README.md
* Update README.md
* Update README.md
* update readme
* add iterative search space example
* update
* update readme
* change name
---
Makefile | 19 +-
README.Makefile.md | 2 +-
README.md | 19 +-
docs/PAIMode.md | 1 +
docs/RELEASE.md | 4 +-
docs/StartExperiment.md | 33 ++
docs/WriteYourTrial.md | 3 +
docs/img/experiment_process.jpg | Bin 0 -> 302899 bytes
docs/nni_overview.png | Bin 0 -> 57734 bytes
examples/trials/auto-gbdt/config.yml | 2 +-
examples/trials/auto-gbdt/config_pai.yml | 36 ++
examples/trials/ga_squad/README.md | 506 +++++++++---------
examples/trials/ga_squad/config.yml | 2 +-
examples/trials/ga_squad/config_pai.yml | 34 ++
examples/trials/mnist-annotation/config.yml | 2 +-
.../trials/mnist-annotation/config_pai.yml | 35 ++
.../trials/mnist-batch-tune-keras/config.yml | 2 +-
.../mnist-batch-tune-keras/config_pai.yml | 36 ++
.../mnist-cascading-search-space/config.yml | 20 +
.../mnist-cascading-search-space/mnist.py | 164 ++++++
.../requirments.txt | 3 +
.../mnist-cascading-search-space/sample.json | 1 +
.../search_space.json | 62 +++
examples/trials/mnist-keras/config.yml | 2 +-
examples/trials/mnist-keras/config_pai.yml | 36 ++
examples/trials/mnist-smartparam/config.yml | 2 +-
.../trials/mnist-smartparam/config_pai.yml | 35 ++
examples/trials/mnist/config.yml | 2 +-
examples/trials/mnist/config_pai.yml | 36 ++
examples/trials/pytorch_cifar10/config.yml | 2 +-
.../trials/pytorch_cifar10/config_pai.yml | 36 ++
.../trials/sklearn/classification/config.yml | 20 +
.../trials/sklearn/classification/main.py | 83 +++
.../sklearn/classification/search_space.json | 7 +
examples/trials/sklearn/regression/config.yml | 20 +
examples/trials/sklearn/regression/main.py | 102 ++++
.../sklearn/regression/search_space.json | 5 +
.../ga_customer_tuner/customer_tuner.py | 6 +-
install.sh | 6 +-
.../rest_server/restValidationSchemas.ts | 2 +-
src/sdk/pynni/nni/constants.py | 2 +
.../nni/hyperopt_tuner/hyperopt_tuner.py | 2 +-
src/webui/package.json | 2 +-
src/webui/src/components/Sessionpro.tsx | 8 +-
src/webui/src/components/SlideBar.tsx | 4 +-
src/webui/src/components/TrialStatus.tsx | 6 +-
tools/README.md | 32 +-
tools/bash-completion | 2 +-
tools/completion | 61 ---
tools/nnicmd/common_utils.py | 8 +-
tools/nnicmd/config_schema.py | 2 +-
tools/nnicmd/constants.py | 33 +-
tools/nnicmd/launcher.py | 49 +-
tools/nnicmd/nnictl_utils.py | 5 +-
tools/trial_tool/trial_keeper.py | 18 +-
55 files changed, 1190 insertions(+), 432 deletions(-)
create mode 100644 docs/StartExperiment.md
create mode 100644 docs/img/experiment_process.jpg
create mode 100644 docs/nni_overview.png
create mode 100644 examples/trials/auto-gbdt/config_pai.yml
create mode 100644 examples/trials/ga_squad/config_pai.yml
create mode 100644 examples/trials/mnist-annotation/config_pai.yml
create mode 100644 examples/trials/mnist-batch-tune-keras/config_pai.yml
create mode 100644 examples/trials/mnist-cascading-search-space/config.yml
create mode 100644 examples/trials/mnist-cascading-search-space/mnist.py
create mode 100644 examples/trials/mnist-cascading-search-space/requirments.txt
create mode 100644 examples/trials/mnist-cascading-search-space/sample.json
create mode 100644 examples/trials/mnist-cascading-search-space/search_space.json
create mode 100644 examples/trials/mnist-keras/config_pai.yml
create mode 100644 examples/trials/mnist-smartparam/config_pai.yml
create mode 100644 examples/trials/mnist/config_pai.yml
create mode 100644 examples/trials/pytorch_cifar10/config_pai.yml
create mode 100644 examples/trials/sklearn/classification/config.yml
create mode 100644 examples/trials/sklearn/classification/main.py
create mode 100644 examples/trials/sklearn/classification/search_space.json
create mode 100644 examples/trials/sklearn/regression/config.yml
create mode 100644 examples/trials/sklearn/regression/main.py
create mode 100644 examples/trials/sklearn/regression/search_space.json
delete mode 100644 tools/completion
diff --git a/Makefile b/Makefile
index 38bdd2c6d4..8532cc17e7 100644
--- a/Makefile
+++ b/Makefile
@@ -122,7 +122,7 @@ easy-install: install
easy-install: update-bash-config
easy-install:
- #$(_INFO) Complete! #(_END)
+ #$(_INFO) Complete! $(_END)
# Target for setup.py
@@ -203,21 +203,22 @@ install-dependencies: $(NODE_TARBALL) $(YARN_TARBALL) $(SERVE_TARBALL)
.PHONY: install-python-modules
install-python-modules:
#$(_INFO) Installing Python SDK $(_END)
- cd src/sdk/pynni && python3 setup.py install $(PIP_MODE)
+ cd src/sdk/pynni && $(PIP_INSTALL) $(PIP_MODE) .
#$(_INFO) Installing nnictl $(_END)
- cd tools && python3 setup.py install $(PIP_MODE)
+ cd tools && $(PIP_INSTALL) $(PIP_MODE) .
.PHONY: install-node-modules
install-node-modules:
mkdir -p $(INSTALL_PREFIX)/nni
+ rm -rf ${PWD}/src/nni_manager/dist/node_modules
#$(_INFO) Installing NNI Manager $(_END)
- cp -rT src/nni_manager/dist $(INSTALL_PREFIX)/nni/nni_manager
- cp -rT src/nni_manager/node_modules $(INSTALL_PREFIX)/nni/nni_manager/node_modules
+ cp -rT ${PWD}/src/nni_manager/dist $(INSTALL_PREFIX)/nni/nni_manager
+ cp -rT ${PWD}/src/nni_manager/node_modules $(INSTALL_PREFIX)/nni/nni_manager/node_modules
#$(_INFO) Installing Web UI $(_END)
- cp -rT src/webui/build $(INSTALL_PREFIX)/nni/webui
+ cp -rT ${PWD}/src/webui/build $(INSTALL_PREFIX)/nni/webui
.PHONY: install-dev-modules
@@ -231,11 +232,11 @@ install-dev-modules:
mkdir -p $(INSTALL_PREFIX)/nni
#$(_INFO) Installing NNI Manager $(_END)
- ln -sf $(PWD)/src/nni_manager/dist $(INSTALL_PREFIX)/nni/nni_manager
- ln -sf $(PWD)/src/nni_manager/node_modules $(INSTALL_PREFIX)/nni/nni_manager/node_modules
+ ln -sf ${PWD}/src/nni_manager/dist $(INSTALL_PREFIX)/nni/nni_manager
+ ln -sf ${PWD}/src/nni_manager/node_modules $(INSTALL_PREFIX)/nni/nni_manager/node_modules
#$(_INFO) Installing Web UI $(_END)
- ln -sf $(PWD)/src/webui/build $(INSTALL_PREFIX)/nni/webui
+ ln -sf ${PWD}/src/webui/build $(INSTALL_PREFIX)/nni/webui
.PHONY: install-scripts
diff --git a/README.Makefile.md b/README.Makefile.md
index 3a815af9d9..ca7bc3d75a 100644
--- a/README.Makefile.md
+++ b/README.Makefile.md
@@ -13,7 +13,7 @@ The targets will be detailed later.
## Dependencies
-NNI requires at least Node.js, Yarn, and setuptools to build, while PIP and TypeScript are also recommended.
+NNI requires at least Node.js, Yarn, and PIP to build, while TypeScript is also recommended.
NNI requires Node.js, serve, and all dependency libraries to run.
Required Node.js libraries (including TypeScript) can be installed by Yarn, and required Python libraries can be installed by setuptools or PIP.
diff --git a/README.md b/README.md
index d99f2c8217..b77ff37418 100644
--- a/README.md
+++ b/README.md
@@ -5,21 +5,10 @@
NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning experiments.
The tool dispatches and runs trial jobs that generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments (e.g. local machine, remote servers and cloud).
-```
- AutoML experiment Training Services
-┌────────┐ ┌────────────────────────┐ ┌────────────────┐
-│ nnictl │ ─────> │ nni_manager │ │ Local Machine │
-└────────┘ │ sdk/tuner │ └────────────────┘
- │ hyperopt_tuner │
- │ evolution_tuner │ trial jobs ┌────────────────┐
- │ ... │ ────────> │ Remote Servers │
- ├────────────────────────┤ └────────────────┘
- │ trial job source code │
- │ sdk/annotation │ ┌────────────────┐
- ├────────────────────────┤ │ Yarn,K8s, │
- │ nni_board │ │ ... │
- └────────────────────────┘ └────────────────┘
-```
+
+
+
+
## **Who should consider using NNI**
* You want to try different AutoML algorithms for your training code (model) at local
* You want to run AutoML trial jobs in different environments to speed up search (e.g. remote servers and cloud)
diff --git a/docs/PAIMode.md b/docs/PAIMode.md
index d8470884d4..05da292afa 100644
--- a/docs/PAIMode.md
+++ b/docs/PAIMode.md
@@ -48,6 +48,7 @@ Compared with LocalMode and [RemoteMachineMode](RemoteMachineMode.md), trial con
* Required key. Should be positive number based on your trial program's memory requirement
* image
* Required key. In pai mode, your trial program will be scheduled by OpenPAI to run in [Docker container](https://www.docker.com/). This key is used to specify the Docker image used to create the container in which your traill will run.
+ * We already build a docker image [nnimsra/nni](https://hub.docker.com/r/msranni/nni/) on [Docker Hub](https://hub.docker.com/). It contains NNI python packages, Node modules and javascript artifact files required to start experiment, and all of NNI dependencies. The docker file used to build this image can be found at [here](../deployment/Dockerfile.build.base). You can either use this image directly in your config file, or build your own image based on it.
* dataDir
* Optional key. It specifies the HDFS data direcotry for trial to download data. The format should be something like hdfs://{your HDFS host}:9000/{your data directory}
* outputDir
diff --git a/docs/RELEASE.md b/docs/RELEASE.md
index e7ef20c729..61b4c78c72 100644
--- a/docs/RELEASE.md
+++ b/docs/RELEASE.md
@@ -1,9 +1,9 @@
# Release 0.2.0 - 9/29/2018
## Major Features
- * Support for [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service
+ * 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
- * Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner
+ * Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner (See [here](../src/sdk/pynni/nni/README.md) for instructions about how to use SMAC tuner)
* [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) 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 to handle categorical parameters. The SMAC supported by NNI is a wrapper on [SMAC3](https://github.com/automl/SMAC3)
* Support NNI installation on [conda](https://conda.io/docs/index.html) and python virtual environment
* Others
diff --git a/docs/StartExperiment.md b/docs/StartExperiment.md
new file mode 100644
index 0000000000..30f736ff15
--- /dev/null
+++ b/docs/StartExperiment.md
@@ -0,0 +1,33 @@
+How to start an experiment
+===
+## 1.Introduce
+There are few steps to start an new experiment of nni, here are the process.
+
+## 2.Details
+### 2.1 Check environment
+The first step to start an experiment is to check whether the environment is ready, nnictl will check if there is an old experiment running or the port of restfurl server is occupied.
+NNICTL will also validate the content of config yaml file, to ensure the experiment config is in correct format.
+
+### 2.2 Start restful server
+After check environment, nnictl will start an restful server process to manage nni experiment, the devault port is 51188.
+
+### 2.3 Check restful server
+Before next steps, nnictl will check whether restful server is successfully started, or the starting process will stop and show error message.
+
+### 2.4 Set experiment config
+NNICTL need to set experiment config before start an experiment, experiment config includes the config values in config yaml file.
+
+### 2.5 Check experiment cofig
+NNICTL will ensure the request to set config is successfully executed.
+
+### 2.6 Start Web UI
+NNICTL will start a Web UI process to show Web UI information,the default port of Web UI is 8080.
+
+### 2.7 Check Web UI
+If Web UI is not successfully started, nnictl will give a warning information, and will continue to start experiment.
+
+### 2.8 Start Experiment
+This is the most import step of starting an nni experiment, nnictl will call restful server process to setup an experiment.
+
+### 2.9 Check experiment
+After start experiment, nnictl will check whether the experiment is correctly created, and show more information of this experiment to users.
\ No newline at end of file
diff --git a/docs/WriteYourTrial.md b/docs/WriteYourTrial.md
index 18388aa9fd..328f273f11 100644
--- a/docs/WriteYourTrial.md
+++ b/docs/WriteYourTrial.md
@@ -121,3 +121,6 @@ In the yaml configure file, you need to set *useAnnotation* to true to enable NN
```
useAnnotation: true
```
+
+## More Trial Example
+* [Automatic Model Architecture Search for Reading Comprehension.](../examples/trials/ga_squad/README.md)
\ No newline at end of file
diff --git a/docs/img/experiment_process.jpg b/docs/img/experiment_process.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..141e41cad940c2299b4841af539a7fe8168b1576
GIT binary patch
literal 302899
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