Skip to content
This repository has been archived by the owner on Sep 18, 2024. It is now read-only.

Dev exp stop more #221

Merged
merged 32 commits into from
Oct 18, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
fc5dce8
Exp stop refactor (#161)
QuanluZhang Oct 7, 2018
1392c93
Modify IT scripts for supporting multiple experiments
Oct 11, 2018
0dab726
Update ci (#175)
Crysple Oct 16, 2018
f16f6d2
Merge branch 'master' into dev-exp-stop-more
QuanluZhang Oct 16, 2018
1a215f5
file saving
QuanluZhang Oct 16, 2018
74a96d4
fix issues from code merge
QuanluZhang Oct 16, 2018
1b668e4
remove $(INSTALL_PREFIX)/nni/nni_manager before install
QuanluZhang Oct 16, 2018
07a891c
fix indent
QuanluZhang Oct 16, 2018
c532e38
Merge branch 'master' into dev-exp-stop-more
QuanluZhang Oct 16, 2018
6a0b987
fix merge issue
QuanluZhang Oct 16, 2018
cf7f2bd
socket close
QuanluZhang Oct 16, 2018
b5228b2
update port
QuanluZhang Oct 16, 2018
df28d9b
fix merge error
QuanluZhang Oct 16, 2018
8198e83
modify ci logic in nnimanager
QuanluZhang Oct 16, 2018
01131c0
fix ci
QuanluZhang Oct 16, 2018
185ecb3
fix bug
QuanluZhang Oct 16, 2018
b9db86d
change suspended to done
QuanluZhang Oct 17, 2018
da7abfd
update ci (#229)
Crysple Oct 17, 2018
9cdcb4d
update ci (#232)
Crysple Oct 17, 2018
fa1404a
update ci (#233)
Crysple Oct 17, 2018
e994e56
run.py (#238)
Crysple Oct 18, 2018
62ae744
Nnupdate ci (#239)
Crysple Oct 18, 2018
2854d2b
Nnupdate ci (#240)
Crysple Oct 18, 2018
c52fec5
Udci (#241)
Crysple Oct 18, 2018
409b903
update ci (#242)
Crysple Oct 18, 2018
c08ac06
revert install.sh (#244)
Crysple Oct 18, 2018
b9cfbe3
add comments
QuanluZhang Oct 18, 2018
54c9859
Merge branch 'dev-exp-stop-more' of github.com:Microsoft/nni into dev…
QuanluZhang Oct 18, 2018
e7010b7
Merge branch 'master' into dev-exp-stop-more
QuanluZhang Oct 18, 2018
aca9e6f
remove assert
QuanluZhang Oct 18, 2018
554a177
trivial change
QuanluZhang Oct 18, 2018
137346a
trivial change
QuanluZhang Oct 18, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ install-python-modules:
install-node-modules:
mkdir -p $(INSTALL_PREFIX)/nni
rm -rf src/nni_manager/dist/node_modules
rm -rf $(INSTALL_PREFIX)/nni/nni_manager

#$(_INFO) Installing NNI Manager $(_END)
cp -rT src/nni_manager/dist $(INSTALL_PREFIX)/nni/nni_manager
Expand Down
6 changes: 3 additions & 3 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ steps:
- script: python3 -m pip install --upgrade pip setuptools
displayName: 'Install python tools'
- script: |
make easy-install
export PATH=$HOME/.nni/bin:$PATH
source install.sh
displayName: 'Install dependencies'
- script: |
cd test/naive
PATH=$HOME/.local/nni/node/bin:$PATH python3 run.py
export PATH=$HOME/.local/bin:$PATH
Crysple marked this conversation as resolved.
Show resolved Hide resolved
python3 run.py
displayName: 'Run tests'
2 changes: 1 addition & 1 deletion docs/HowToContribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ After you change some code, just use **step 4** to rebuild your code, then the c

---
At last, wish you have a wonderful day.
For more contribution guidelines on making PR's or issues to NNI source code, you can refer to our [CONTRIBUTING](./docs/CONTRIBUTING.md) document.
For more contribution guidelines on making PR's or issues to NNI source code, you can refer to our [CONTRIBUTING](./docs/CONTRIBUTING.md) document.
2 changes: 1 addition & 1 deletion docs/WriteYourTrial.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,4 @@ useAnnotation: true
```

## More Trial Example
* [Automatic Model Architecture Search for Reading Comprehension.](../examples/trials/ga_squad/README.md)
* [Automatic Model Architecture Search for Reading Comprehension.](../examples/trials/ga_squad/README.md)
4 changes: 2 additions & 2 deletions src/nni_manager/common/manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import { MetricDataRecord, MetricType, TrialJobInfo } from './datastore';
import { TrialJobStatus } from './trainingService';

type ProfileUpdateType = 'TRIAL_CONCURRENCY' | 'MAX_EXEC_DURATION' | 'SEARCH_SPACE';
type ProfileUpdateType = 'TRIAL_CONCURRENCY' | 'MAX_EXEC_DURATION' | 'SEARCH_SPACE' | 'MAX_TRIAL_NUM';

interface ExperimentParams {
authorName: string;
Expand Down Expand Up @@ -73,7 +73,7 @@ interface TrialJobStatistics {
}

interface NNIManagerStatus {
status: 'INITIALIZED' | 'EXPERIMENT_RUNNING' | 'ERROR' | 'STOPPING' | 'STOPPED';
status: 'INITIALIZED' | 'EXPERIMENT_RUNNING' | 'ERROR' | 'STOPPING' | 'STOPPED' | 'DONE';
errors: string[];
}

Expand Down
274 changes: 160 additions & 114 deletions src/nni_manager/core/nnimanager.ts

Large diffs are not rendered by default.

131 changes: 0 additions & 131 deletions src/nni_manager/core/trialJobs.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/nni_manager/rest_server/restValidationSchemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export namespace ValidationSchemas {
};
export const UPDATEEXPERIMENT = {
query: {
update_type: joi.string().required().valid('TRIAL_CONCURRENCY', 'MAX_EXEC_DURATION', 'SEARCH_SPACE')
update_type: joi.string().required().valid('TRIAL_CONCURRENCY', 'MAX_EXEC_DURATION', 'SEARCH_SPACE', 'MAX_TRIAL_NUM')
},
body: {
id: joi.string().required(),
Expand Down
5 changes: 5 additions & 0 deletions test/naive/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
__pycache__

tuner_search_space.json
tuner_result.txt
assessor_result.txt
20 changes: 20 additions & 0 deletions test/naive/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Usage

* To test before installing:
`./run.py --preinstall`
* To test the integrity of installation:
`./run.py`
* It will print `PASS` in green eventually if everything works well.

## Details
* This test case tests the communication between trials and tuner/assessor.
* The naive trials receive an integer `x` as parameter, and reports `x`, `x²`, `x³`, ... , `x¹⁰` as metrics.
* The naive tuner simply generates the sequence of natural numbers, and print received metrics to `tuner_result.txt`.
* The naive assessor kills trials when `sum(metrics) % 11 == 1`, and print killed trials to `assessor_result.txt`.
* When tuner and assessor exit with exception, they will append `ERROR` to corresponding result file.
* When the experiment is done, meaning it is successfully done in this case, `Experiment done` can be detected in the nni_manager.log file.

## Issues
* Private APIs are used to detect whether tuner and assessor have terminated successfully.
* The output of REST server is not tested.
* Remote machine training service is not tested.
1 change: 0 additions & 1 deletion test/naive/expected_assessor_result.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,3 @@
5 3
7 2
8 3
DONE
1 change: 0 additions & 1 deletion test/naive/expected_tuner_result.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@
6 60466176
9 3486784401
10 10000000000
DONE
6 changes: 4 additions & 2 deletions test/naive/naive_assessor.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import logging
import os

from nni.assessor import Assessor, AssessResult

_logger = logging.getLogger('NaiveAssessor')
_logger.info('start')
_result = open('/tmp/nni_assessor_result.txt', 'w')

_pwd = os.path.dirname(__file__)
_result = open(os.path.join(_pwd, 'assessor_result.txt'), 'w')

class NaiveAssessor(Assessor):
def __init__(self, optimize_mode):
Expand All @@ -30,7 +33,6 @@ def assess_trial(self, trial_job_id, trial_history):
return AssessResult.Good

def _on_exit(self):
_result.write('DONE\n')
_result.close()

def _on_error(self):
Expand Down
8 changes: 5 additions & 3 deletions test/naive/naive_tuner.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import json
import logging
import os

from nni.tuner import Tuner

_logger = logging.getLogger('NaiveTuner')
_logger.info('start')
_result = open('/tmp/nni_tuner_result.txt', 'w')

_pwd = os.path.dirname(__file__)
_result = open(os.path.join(_pwd, 'tuner_result.txt'), 'w')

class NaiveTuner(Tuner):
def __init__(self, optimize_mode):
Expand All @@ -24,11 +27,10 @@ def receive_trial_result(self, parameter_id, parameters, reward):

def update_search_space(self, search_space):
_logger.info('update_search_space: %s' % search_space)
with open('/tmp/nni_tuner_search_space.json', 'w') as file_:
with open(os.path.join(_pwd, 'tuner_search_space.json'), 'w') as file_:
json.dump(search_space, file_)

def _on_exit(self):
_result.write('DONE\n')
_result.close()

def _on_error(self):
Expand Down
Loading