README.md 5.76 KB
Newer Older
1
2
# Neural Network Intelligence

Pranjal Vyas's avatar
Pranjal Vyas committed
3
[![MIT licensed](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE)
4
[![Build Status](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6)
Gems Guo's avatar
Gems Guo committed
5
6
7
[![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)
8
[![Version](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases)
Microsoft Open Source's avatar
Microsoft Open Source committed
9

Irene Tenison's avatar
Irene Tenison committed
10
11
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.
12

QuanluZhang's avatar
QuanluZhang committed
13
<p align="center">
Scarlett Li's avatar
Scarlett Li committed
14
<img src="./docs/img/nni_arch_overview.png" alt="drawing" width="800"/>
QuanluZhang's avatar
QuanluZhang committed
15
16
</p>

17
## **Who should consider using NNI**
Irene Tenison's avatar
Irene Tenison committed
18
19
20
21
* 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.
22

Scarlett Li's avatar
Scarlett Li committed
23
## **Install & Verify**
Scarlett Li's avatar
Scarlett Li committed
24

Gems Guo's avatar
Gems Guo committed
25
26
27
**Install through pip** 	
* We only support Linux in current stage, Ubuntu 16.04 or higher are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`.	
```bash	
QuanluZhang's avatar
QuanluZhang committed
28
    python3 -m pip install --user --upgrade nni
29
```
Gems Guo's avatar
Gems Guo committed
30
31
32
33
34

**Install through source code**
* We only support Linux (Ubuntu 16.04 or higher) in our current stage. 
* Run the following commands in an environment that has `python >= 3.5`, `git` and `wget`.
```bash	
Gems Guo's avatar
Gems Guo committed
35
    git clone -b v0.3.2 https://github.com/Microsoft/nni.git	
Gems Guo's avatar
Gems Guo committed
36
37
    cd nni	
    source install.sh	
38
39
```

Gems Guo's avatar
Gems Guo committed
40
41
42
43
**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	
Gems Guo's avatar
Gems Guo committed
44
    git clone -b v0.3.2 https://github.com/Microsoft/nni.git
Gems Guo's avatar
Gems Guo committed
45
46
```
* Run the mnist example.
47
```bash
Gems Guo's avatar
Gems Guo committed
48
    nnictl create --config nni/examples/trials/mnist/config.yml
49
```
Scarlett Li's avatar
Scarlett Li committed
50

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
* 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
-----------------------------------------------------------------------
Scarlett Li's avatar
Scarlett Li committed
75
```
Scarlett Li's avatar
Scarlett Li committed
76

Scarlett Li's avatar
Scarlett Li committed
77
78
79
80
81
82
83
## **Documentation**
* [Overview](docs/Overview.md)
* [Get started](docs/GetStarted.md)
## **How to**
* [Installation](docs/InstallNNI_Ubuntu.md)
* [Use command line tool nnictl](docs/NNICTLDOC.md)
* [Use NNIBoard](docs/WebUI.md)
Scarlett Li's avatar
Scarlett Li committed
84
* [How to define search space](docs/SearchSpaceSpec.md)
Scarlett Li's avatar
Scarlett Li committed
85
* [Config an experiment](docs/ExperimentConfig.md)
Scarlett Li's avatar
Scarlett Li committed
86
* [Use annotation](docs/AnnotationSpec.md)
Scarlett Li's avatar
Scarlett Li committed
87
88
* [Debug](docs/HowToDebug.md)
## **Tutorials**
Scarlett Li's avatar
Scarlett Li committed
89
90
91
92
93
94
95
* [Run an experiment on local (with multiple GPUs)?](docs/tutorial_1_CR_exp_local_api.md)
* [Run an experiment on multiple machines?](docs/tutorial_2_RemoteMachineMode.md)
* [Run an experiment on OpenPAI?](docs/PAIMode.md)
* [Try different tuners and assessors](docs/tutorial_3_tryTunersAndAccessors.md)
* [Implement a customized tuner](docs/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)
Scarlett Li's avatar
Scarlett Li committed
96
97

## **Contribute**
98
This project welcomes contributions and suggestions, we use [GitHub issues](https://github.com/Microsoft/nni/issues) for tracking requests and bugs.
Scarlett Li's avatar
Scarlett Li committed
99

100
101
102
103
104
105
106
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](docs/SetupNNIDeveloperEnvironment.md)

Before start coding, review and get familiar with the NNI Code Contribution Guideline: [Contributing](docs/CONTRIBUTING.md)

We are in construction of the instruction for [How to Debug](docs/HowToDebug.md), you are also welcome to contribute questions or suggestions on this area.
Microsoft Open Source's avatar
Microsoft Open Source committed
107

Scarlett Li's avatar
Scarlett Li committed
108
## **License** 
Vipul Gupta's avatar
Vipul Gupta committed
109
110
The entire codebase is under [MIT license](https://github.com/Microsoft/nni/blob/master/LICENSE)