GetStarted.md 4.23 KB
Newer Older
Yan Ni's avatar
Yan Ni committed
1
# Get Started with NNI
Deshui Yu's avatar
Deshui Yu committed
2

3
## **Installation**
Chi Song's avatar
Chi Song committed
4

5
* __Dependencies__
6

Chi Song's avatar
Chi Song committed
7
8
9
10
11
12
13
  ```bash
  python >= 3.5
  git
  wget
  ```

  python pip should also be correctly installed. You could use "python3 -m pip -v" to check in Linux.
14

Chi Song's avatar
Chi Song committed
15
  * Note: we don't support virtual environment in current releases.
Deshui Yu's avatar
Deshui Yu committed
16

17
* __Install NNI through pip__
Deshui Yu's avatar
Deshui Yu committed
18

Chi Song's avatar
Chi Song committed
19
20
21
  ```bash
  python3 -m pip install --user --upgrade nni
  ```
22
23

* __Install NNI through source code__
Chi Song's avatar
Chi Song committed
24
25

  ```bash
fishyds's avatar
fishyds committed
26
  git clone -b v0.5 https://github.com/Microsoft/nni.git
Chi Song's avatar
Chi Song committed
27
28
29
  cd nni
  source install.sh
  ```
Deshui Yu's avatar
Deshui Yu committed
30
31

## **Quick start: run a customized experiment**
Chi Song's avatar
Chi Song committed
32

Deshui Yu's avatar
Deshui Yu committed
33
34
35
36
37
38
39
An experiment is to run multiple trial jobs, each trial job tries a configuration which includes a specific neural architecture (or model) and hyper-parameter values. To run an experiment through NNI, you should:

* Provide a runnable trial
* Provide or choose a tuner
* Provide a yaml experiment configure file
* (optional) Provide or choose an assessor

40
**Prepare trial**: Let's use a simple trial example, e.g. mnist, provided by NNI. After you installed NNI, NNI examples have been put in ~/nni/examples, run `ls ~/nni/examples/trials` to see all the trial examples. You can simply execute the following command to run the NNI mnist example: 
Deshui Yu's avatar
Deshui Yu committed
41

Chi Song's avatar
Chi Song committed
42
43
44
```bash
python3 ~/nni/examples/trials/mnist-annotation/mnist.py
```
Deshui Yu's avatar
Deshui Yu committed
45

46
This command will be filled in the yaml configure file below. Please refer to [here](howto_1_WriteTrial.md) for how to write your own trial.
Deshui Yu's avatar
Deshui Yu committed
47

48
**Prepare tuner**: NNI supports several popular automl algorithms, including Random Search, Tree of Parzen Estimators (TPE), Evolution algorithm etc. Users can write their own tuner (refer to [here](howto_2_CustomizedTuner.md), but for simplicity, here we choose a tuner provided by NNI as below:
Deshui Yu's avatar
Deshui Yu committed
49

Chi Song's avatar
Chi Song committed
50
51
52
53
54
55
```yaml
tuner:
  builtinTunerName: TPE
    classArgs:
      optimize_mode: maximize
```
Deshui Yu's avatar
Deshui Yu committed
56

57
*builtinTunerName* is used to specify a tuner in NNI, *classArgs* are the arguments pass to the tuner, *optimization_mode* is to indicate whether you want to maximize or minimize your trial's result.
Deshui Yu's avatar
Deshui Yu committed
58

59
**Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the yaml configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below:
Deshui Yu's avatar
Deshui Yu committed
60

Chi Song's avatar
Chi Song committed
61
```yaml
Deshui Yu's avatar
Deshui Yu committed
62
63
authorName: your_name
experimentName: auto_mnist
64

Deshui Yu's avatar
Deshui Yu committed
65
66
# how many trials could be concurrently running
trialConcurrency: 2
67

Deshui Yu's avatar
Deshui Yu committed
68
69
# maximum experiment running duration
maxExecDuration: 3h
70

Deshui Yu's avatar
Deshui Yu committed
71
72
# empty means never stop
maxTrialNum: 100
73

SparkSnail's avatar
SparkSnail committed
74
# choice: local, remote, pai
Deshui Yu's avatar
Deshui Yu committed
75
trainingServicePlatform: local
76

Deshui Yu's avatar
Deshui Yu committed
77
78
79
# choice: true, false  
useAnnotation: true
tuner:
80
81
82
  builtinTunerName: TPE
  classArgs:
    optimize_mode: maximize
Deshui Yu's avatar
Deshui Yu committed
83
trial:
84
85
86
  command: python mnist.py
  codeDir: ~/nni/examples/trials/mnist-annotation
  gpuNum: 0
Chi Song's avatar
Chi Song committed
87
```
Deshui Yu's avatar
Deshui Yu committed
88

QuanluZhang's avatar
QuanluZhang committed
89
Here *useAnnotation* is true because this trial example uses our python annotation (refer to [here](../tools/annotation/README.md) for details). For trial, we should provide *trialCommand* which is the command to run the trial, provide *trialCodeDir* where the trial code is. The command will be executed in this directory. We should also provide how many GPUs a trial requires.
Deshui Yu's avatar
Deshui Yu committed
90
91
92

With all these steps done, we can run the experiment with the following command:

93
      nnictl create --config ~/nni/examples/trials/mnist-annotation/config.yml
Deshui Yu's avatar
Deshui Yu committed
94
95
96
97
98
99

You can refer to [here](NNICTLDOC.md) for more usage guide of *nnictl* command line tool.

## View experiment results
The experiment has been running now, NNI provides WebUI for you to view experiment progress, to control your experiment, and some other appealing features. The WebUI is opened by default by `nnictl create`.

100
## Read more
Chi Song's avatar
Chi Song committed
101

xuehui's avatar
xuehui committed
102
* [Tuners supported in the latest NNI release](./HowToChooseTuner.md)
Scarlett Li's avatar
Scarlett Li committed
103
* [Overview](Overview.md)
104
* [Installation](Installation.md)
Scarlett Li's avatar
Scarlett Li committed
105
106
107
108
109
110
111
* [Use command line tool nnictl](NNICTLDOC.md)
* [Use NNIBoard](WebUI.md)
* [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 OpenPAI?](PAIMode.md)
chicm-ms's avatar
chicm-ms committed
112
* [How to create a multi-phase experiment](multiPhase.md)