diff --git a/.gitignore b/.gitignore index fd71582a60..3d0e2bee92 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,12 @@ +/nni_node/ +/toolchain/ + +# unit test generated files +/test/model_path/ +/test/temp.json +/test/ut/sdk/*.pth + + # Logs logs *.log diff --git a/Makefile b/Makefile deleted file mode 100644 index 3458bfbea9..0000000000 --- a/Makefile +++ /dev/null @@ -1,261 +0,0 @@ -# Setting variables -SHELL := /bin/bash -PIP_INSTALL := python3 -m pip install -PIP_UNINSTALL := python3 -m pip uninstall - -## Colorful output -_INFO := $(shell echo -e '\033[1;36m') -_WARNING := $(shell echo -e '\033[1;33m') -_END := $(shell echo -e '\033[0m') - -## Detect OS -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S), Linux) - OS_SPEC := linux - NODE_URL := https://nodejs.org/dist/v10.22.1/node-v10.22.1-linux-x64.tar.xz -else ifeq ($(UNAME_S), Darwin) - OS_SPEC := darwin - NODE_URL := https://nodejs.org/dist/v10.22.1/node-v10.22.1-darwin-x64.tar.xz -else - $(error platform $(UNAME_S) not supported) -endif - -## Install directories - -## For apt-get or pip installed virtualenv -ifdef VIRTUAL_ENV - ROOT_FOLDER ?= $(VIRTUAL_ENV) - BASH_COMP_PREFIX ?= ${HOME}/.bash_completion.d -else - ROOT_FOLDER ?= $(shell python3 -c 'import site; from pathlib import Path; print(Path(site.getsitepackages()[0]).parents[2])') - IS_SYS_PYTHON ?= $(shell [[ $(ROOT_FOLDER) == /usr* || $(ROOT_FOLDER) == /Library* ]] && echo TRUE || echo FALSE) - - ifeq ($(shell id -u), 0) # is root - _ROOT := 1 - BASH_COMP_PREFIX ?= /usr/share/bash-completion/completions - else # is normal user - ifeq (TRUE, $(IS_SYS_PYTHON)) - ROOT_FOLDER := $(shell python3 -c 'import site; from pathlib import Path; print(Path(site.getusersitepackages()).parents[2])') - PIP_MODE ?= --user - endif - BASH_COMP_PREFIX ?= ${HOME}/.bash_completion.d - endif -endif -BASH_COMP_SCRIPT := $(BASH_COMP_PREFIX)/nnictl - -NNI_INSTALL_PATH ?= $(INSTALL_PREFIX)/nni - -BIN_FOLDER ?= $(ROOT_FOLDER)/bin -NNI_PKG_FOLDER ?= $(ROOT_FOLDER)/nni -NASUI_PKG_FOLDER ?= $(ROOT_FOLDER)/nni/nasui - -## Dependency information -NNI_DEPENDENCY_FOLDER = /tmp/$(USER) -$(shell mkdir -p $(NNI_DEPENDENCY_FOLDER)) -NNI_NODE_TARBALL ?= $(NNI_DEPENDENCY_FOLDER)/nni-node-$(OS_SPEC)-x64.tar.xz -NNI_NODE_FOLDER = $(NNI_DEPENDENCY_FOLDER)/nni-node-$(OS_SPEC)-x64 -NNI_NODE ?= $(BIN_FOLDER)/node -NNI_NPM ?= $(BIN_FOLDER)/npm -NNI_YARN_TARBALL ?= $(NNI_DEPENDENCY_FOLDER)/nni-yarn.tar.gz -NNI_YARN_FOLDER ?= $(NNI_DEPENDENCY_FOLDER)/nni-yarn -NNI_YARN ?= PATH=$(BIN_FOLDER):$${PATH} $(NNI_YARN_FOLDER)/bin/yarn - -## Version number -NNI_VERSION_VALUE = $(shell git describe --tags) -NNI_VERSION_VALUE := $(NNI_VERSION_VALUE:v%=%) -NNI_VERSION_TEMPLATE = 999.0.0-developing - -# Main targets - -.PHONY: build -build: - #$(_INFO) Building NNI Manager $(_END) - cd src/nni_manager && $(NNI_YARN) && $(NNI_YARN) build - cp -rf src/nni_manager/config src/nni_manager/dist/ - #$(_INFO) Building WebUI $(_END) - cd src/webui && $(NNI_YARN) && $(NNI_YARN) build - #$(_INFO) Building NAS UI $(_END) - cd src/nasui && $(NNI_YARN) && $(NNI_YARN) build - -# All-in-one target for non-expert users -# Installs NNI as well as its dependencies, and update bashrc to set PATH -.PHONY: easy-install -easy-install: check-perm -easy-install: install-dependencies -easy-install: build -easy-install: install -easy-install: update-bash-config -easy-install: - #$(_INFO) Complete! $(_END) - -# All-in-one target for developer users -# Install NNI as well as its dependencies, and update bashrc to set PATH -.PHONY: dev-easy-install -dev-easy-install: dev-check-perm -dev-easy-install: install-dependencies -dev-easy-install: build -dev-easy-install: dev-install -dev-easy-install: update-bash-config -dev-easy-install: - #$(_INFO) Complete! $(_END) - -# Standard installation target -# Must be invoked after building -.PHONY: install -install: install-python-modules -install: install-node-modules -install: install-scripts -install: - #$(_INFO) Complete! You may want to add $(BIN_FOLDER) to your PATH environment $(_END) - -# Target for NNI developers -# Creates symlinks instead of copying files -.PHONY: dev-install -dev-install: dev-install-python-modules -dev-install: dev-install-node-modules -dev-install: install-scripts -dev-install: - #$(_INFO) Complete! You may want to add $(BIN_FOLDER) to your PATH environment $(_END) - -.PHONY: uninstall -uninstall: - -cd build && $(PIP_UNINSTALL) -y nni - -rm -rf build - -rm -rf $(NNI_PKG_FOLDER) - -rm -f $(BIN_FOLDER)/node - -rm -f $(BIN_FOLDER)/nnictl - -rm -f $(BASH_COMP_SCRIPT) - -.PHONY: clean -clean: - -rm -rf tools/build - -rm -rf tools/nnictl.egg-info - -rm -rf src/nni_manager/dist - -rm -rf src/nni_manager/node_modules - -rm -rf src/sdk/pynni/build - -rm -rf src/sdk/pynni/nni_sdk.egg-info - -rm -rf src/webui/build - -rm -rf src/webui/node_modules - -rm -rf src/nasui/build - -rm -rf src/nasui/node_modules - -# Main targets end - -# Helper targets - -$(NNI_NODE_TARBALL): - #$(_INFO) Downloading Node.js $(_END) - wget $(NODE_URL) -O $(NNI_NODE_TARBALL) - -$(NNI_YARN_TARBALL): - #$(_INFO) Downloading Yarn $(_END) - wget https://github.com/yarnpkg/yarn/releases/download/v1.22.5/yarn-v1.22.5.tar.gz -O $(NNI_YARN_TARBALL) - -.PHONY: install-dependencies -install-dependencies: $(NNI_NODE_TARBALL) $(NNI_YARN_TARBALL) - #$(_INFO) Extracting Node.js $(_END) - rm -rf $(NNI_NODE_FOLDER) - mkdir $(NNI_NODE_FOLDER) - tar -xf $(NNI_NODE_TARBALL) -C $(NNI_NODE_FOLDER) --strip-components 1 - mkdir -p $(BIN_FOLDER) - rm -f $(NNI_NODE) $(NNI_NPM) - ln -s $(NNI_NODE_FOLDER)/bin/node $(NNI_NODE) - ln -s $(NNI_NODE_FOLDER)/bin/npm $(NNI_NPM) - - #$(_INFO) Extracting Yarn $(_END) - rm -rf $(NNI_YARN_FOLDER) - mkdir $(NNI_YARN_FOLDER) - tar -xf $(NNI_YARN_TARBALL) -C $(NNI_YARN_FOLDER) --strip-components 1 - -.PHONY: install-python-modules -install-python-modules: - #$(_INFO) Installing Python SDK $(_END) - sed -ie 's/$(NNI_VERSION_TEMPLATE)/$(NNI_VERSION_VALUE)/' src/sdk/pynni/nni/__init__.py - sed -ie 's/$(NNI_VERSION_TEMPLATE)/$(NNI_VERSION_VALUE)/' setup.py && $(PIP_INSTALL) $(PIP_MODE) . - -.PHONY: dev-install-python-modules -dev-install-python-modules: - #$(_INFO) Installing Python SDK $(_END) - mkdir -p build - ln -sfT ../src/sdk/pynni/nni build/nni - ln -sfT ../src/sdk/pycli/nnicli build/nnicli - ln -sfT ../tools/nni_annotation build/nni_annotation - ln -sfT ../tools/nni_cmd build/nni_cmd - ln -sfT ../tools/nni_trial_tool build/nni_trial_tool - ln -sfT ../tools/nni_gpu_tool build/nni_gpu_tool - cp setup.py build/ - cp README.md build/ - sed -ie 's/$(NNI_VERSION_TEMPLATE)/$(NNI_VERSION_VALUE)/' build/setup.py - sed -ie 's/src\/sdk\/pynni\/nni/nni/g' build/setup.py - sed -ie 's/tools\///g' build/setup.py - cd build && $(PIP_INSTALL) $(PIP_MODE) -e . - - -.PHONY: install-node-modules -install-node-modules: - #$(_INFO) Installing NNI Package $(_END) - rm -rf $(NNI_PKG_FOLDER) - cp -r src/nni_manager/dist $(NNI_PKG_FOLDER) - cp src/nni_manager/package.json $(NNI_PKG_FOLDER) - sed -ie 's/$(NNI_VERSION_TEMPLATE)/$(NNI_VERSION_VALUE)/' $(NNI_PKG_FOLDER)/package.json - $(NNI_YARN) --prod --cwd $(NNI_PKG_FOLDER) - cp -r src/webui/build $(NNI_PKG_FOLDER)/static - # Install nasui - mkdir -p $(NASUI_PKG_FOLDER) - cp -rf src/nasui/build $(NASUI_PKG_FOLDER) - cp src/nasui/server.js $(NASUI_PKG_FOLDER) - - -.PHONY: dev-install-node-modules -dev-install-node-modules: - #$(_INFO) Installing NNI Package $(_END) - ln -sfT ${PWD}/src/nni_manager/dist $(NNI_PKG_FOLDER) - cp src/nni_manager/package.json $(NNI_PKG_FOLDER) - sed -ie 's/$(NNI_VERSION_TEMPLATE)/$(NNI_VERSION_VALUE)/' $(NNI_PKG_FOLDER)/package.json - ln -sfT ${PWD}/src/nni_manager/node_modules $(NNI_PKG_FOLDER)/node_modules - ln -sfT ${PWD}/src/webui/build $(NNI_PKG_FOLDER)/static - mkdir -p $(NASUI_PKG_FOLDER) - ln -sfT ${PWD}/src/nasui/build $(NASUI_PKG_FOLDER)/build - ln -sfT ${PWD}/src/nasui/server.js $(NASUI_PKG_FOLDER)/server.js - -.PHONY: install-scripts -install-scripts: - mkdir -p $(BASH_COMP_PREFIX) - install -m644 tools/bash-completion $(BASH_COMP_SCRIPT) - -.PHONY: update-bash-config -ifndef _ROOT -update-bash-config: - #$(_INFO) Updating bash configurations $(_END) - ifeq (, $(shell echo $$PATH | tr ':' '\n' | grep -x '$(BIN_FOLDER)')) # $(BIN_FOLDER) not in PATH - #$(_WARNING) NOTE: adding $(BIN_FOLDER) to PATH in bashrc $(_END) - echo 'export PATH="$$PATH:$(BIN_FOLDER)"' >> ~/.bashrc - endif - ifeq (, $(shell (source ~/.bash_completion ; command -v _nnictl) 2>/dev/null)) # completion not installed - #$(_WARNING) NOTE: adding $(BASH_COMP_SCRIPT) to ~/.bash_completion $(_END) - echo '[[ -f $(BASH_COMP_SCRIPT) ]] && source $(BASH_COMP_SCRIPT)' >> ~/.bash_completion - endif -else -update-bash-config: ; -endif - -.PHONY: check-perm -ifdef _ROOT -check-perm: - #$(_WARNING) Run easy-install as root is not optimal $(_END) - #$(_WARNING) Suggest run as non-privileged user or manually install instead $(_END) - #$(_WARNING) Continue easy-install as root? (y/N) $(_END) - @read CONFIRM && [ "$$CONFIRM" = y ] -else -check-perm: ; -endif - -.PHONY: dev-check-perm -ifdef _ROOT -dev-check-perm: - $(error You should not develop NNI as root) -else -dev-check-perm: ; -endif - -# Helper targets end diff --git a/README.md b/README.md index cbda92b421..41d0a87960 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The tool manages automated machine learning (AutoML) experiments, **dispatches a * Researchers and data scientists who want to easily **implement and experiment new AutoML algorithms**, may it be: hyperparameter tuning algorithm, neural architect search algorithm or model compression algorithm. * ML Platform owners who want to **support AutoML in their platform**. -### **[NNI v1.8 has been released!](https://github.com/microsoft/nni/releases) ** +### **[NNI v1.9 has been released!](https://github.com/microsoft/nni/releases) ** ## **NNI capabilities in a glance** @@ -246,7 +246,7 @@ The following example is built on TensorFlow 1.x. Make sure **TensorFlow 1.x is * Download the examples via clone the source code. ```bash - git clone -b v1.8 https://github.com/Microsoft/nni.git + git clone -b v1.9 https://github.com/Microsoft/nni.git ``` * Run the MNIST example. @@ -294,8 +294,8 @@ 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](docs/en_US/Tutorial/WebUI.md) are more Web UI pages.
- | + | + |
---|
' + - JSON.stringify(obj, null, 4) + - '' + - '