Unverified Commit 0fb78620 authored by SparkSnail's avatar SparkSnail Committed by GitHub
Browse files

Merge pull request #238 from microsoft/master

merge master
parents 3ee09617 b8d19e45
...@@ -154,7 +154,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> { ...@@ -154,7 +154,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> {
}); });
Promise.all([dispatcherPromise, nniManagerPromise]).then(() => { Promise.all([dispatcherPromise, nniManagerPromise]).then(() => {
this.setState({ isLoading: false }); this.setState({ isLoading: false });
this.timerId = window.setTimeout(this.refresh, 300); this.timerId = window.setTimeout(this.refresh, 10000);
}); });
} }
......
...@@ -77,8 +77,10 @@ const getFinal = (final?: MetricDataRecord[]): FinalType | undefined => { ...@@ -77,8 +77,10 @@ const getFinal = (final?: MetricDataRecord[]): FinalType | undefined => {
if (final) { if (final) {
showDefault = parseMetrics(final[final.length - 1].data); showDefault = parseMetrics(final[final.length - 1].data);
if (typeof showDefault === 'number') { if (typeof showDefault === 'number') {
showDefault = { default: showDefault }; if(!isNaN(showDefault)){
return showDefault; showDefault = { default: showDefault };
return showDefault;
}
} else if (isArrayType(showDefault)) { } else if (isArrayType(showDefault)) {
// not support final type // not support final type
return undefined; return undefined;
......
...@@ -5,7 +5,7 @@ class Trial implements TableObj { ...@@ -5,7 +5,7 @@ class Trial implements TableObj {
private metricsInitialized: boolean = false; private metricsInitialized: boolean = false;
private infoField: TrialJobInfo | undefined; private infoField: TrialJobInfo | undefined;
private intermediates: (MetricDataRecord | undefined)[] = [ ]; private intermediates: (MetricDataRecord | undefined)[] = [ ];
private final: MetricDataRecord | undefined; public final: MetricDataRecord | undefined;
private finalAcc: number | undefined; private finalAcc: number | undefined;
constructor(info?: TrialJobInfo, metrics?: MetricDataRecord[]) { constructor(info?: TrialJobInfo, metrics?: MetricDataRecord[]) {
...@@ -211,13 +211,21 @@ class Trial implements TableObj { ...@@ -211,13 +211,21 @@ class Trial implements TableObj {
public formatLatestAccuracy(): string { // TODO: this should be private public formatLatestAccuracy(): string { // TODO: this should be private
if (this.accuracy !== undefined) { if (this.accuracy !== undefined) {
return `${formatAccuracy(this.accuracy)} (FINAL)`; if (isNaN(this.accuracy)) {
return this.accuracy.toString();
} else {
return `${formatAccuracy(this.accuracy)} (FINAL)`;
}
} else if (this.intermediates.length === 0) { } else if (this.intermediates.length === 0) {
return '--'; return '--';
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const latest = this.intermediates[this.intermediates.length - 1]!; const latest = this.intermediates[this.intermediates.length - 1]!;
return `${formatAccuracy(metricAccuracy(latest))} (LATEST)`; if (isNaN(metricAccuracy(latest))) {
return 'NaN';
} else {
return `${formatAccuracy(metricAccuracy(latest))} (LATEST)`;
}
} }
} }
} }
......
This diff is collapsed.
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
import sys
import time
import traceback
from utils import GREEN, RED, CLEAR, setup_experiment
def test_nni_cli():
import nnicli as nc
config_file = 'config_test/examples/mnist-tfv1.test.yml'
try:
# Sleep here to make sure previous stopped exp has enough time to exit to avoid port conflict
time.sleep(6)
print(GREEN + 'Testing nnicli:' + config_file + CLEAR)
nc.start_nni(config_file)
time.sleep(3)
nc.set_endpoint('http://localhost:8080')
print(nc.version())
print(nc.get_job_statistics())
print(nc.get_experiment_status())
nc.list_trial_jobs()
print(GREEN + 'Test nnicli {}: TEST PASS'.format(config_file) + CLEAR)
except Exception as error:
print(RED + 'Test nnicli {}: TEST FAIL'.format(config_file) + CLEAR)
print('%r' % error)
traceback.print_exc()
raise error
finally:
nc.stop_nni()
if __name__ == '__main__':
installed = (sys.argv[-1] != '--preinstall')
setup_experiment(installed)
test_nni_cli()
authorName: nni authorName: nni
experimentName: default_test experimentName: default_test
maxExecDuration: 5m maxExecDuration: 5m
maxTrialNum: 2 maxTrialNum: 8
trialConcurrency: 1 trialConcurrency: 8
searchSpacePath: search_space.json searchSpacePath: ../naive_trial/search_space.json
tuner: tuner:
builtinTunerName: TPE builtinTunerName: TPE
...@@ -17,12 +17,12 @@ assessor: ...@@ -17,12 +17,12 @@ assessor:
start_step: 6 start_step: 6
threshold: 0.95 threshold: 0.95
trial: trial:
codeDir: ../../../examples/trials/mnist-tfv1 codeDir: ../naive_trial
command: python3 mnist.py --batch_num 100 command: python3 trial.py
gpuNum: 0 gpuNum: 0
useAnnotation: false useAnnotation: false
multiPhase: false multiPhase: false
multiThread: false multiThread: false
trainingServicePlatform: local trainingServicePlatform: local
\ No newline at end of file
...@@ -2,21 +2,24 @@ authorName: nni ...@@ -2,21 +2,24 @@ authorName: nni
experimentName: default_test experimentName: default_test
maxExecDuration: 5m maxExecDuration: 5m
maxTrialNum: 8 maxTrialNum: 8
trialConcurrency: 4 trialConcurrency: 8
searchSpacePath: ./search_space.json searchSpacePath: ../naive_trial/search_space.json
tuner: tuner:
builtinTunerName: TPE builtinTunerName: TPE
classArgs: classArgs:
optimize_mode: maximize optimize_mode: maximize
assessor:
builtinAssessorName: Medianstop
classArgs:
optimize_mode: maximize
trial: trial:
codeDir: . codeDir: ../naive_trial
command: python3 multi_phase.py command: python3 trial.py
gpuNum: 0 gpuNum: 0
useAnnotation: false useAnnotation: false
multiPhase: true
multiThread: false
trainingServicePlatform: local trainingServicePlatform: local
...@@ -12,7 +12,7 @@ assessor: ...@@ -12,7 +12,7 @@ assessor:
optimize_mode: maximize optimize_mode: maximize
trial: trial:
codeDir: ../../../examples/trials/mnist-annotation codeDir: ../../../examples/trials/mnist-annotation
command: python3 mnist.py --batch_num 100 command: python3 mnist.py --batch_num 10
gpuNum: 0 gpuNum: 0
useAnnotation: true useAnnotation: true
......
...@@ -14,7 +14,7 @@ assessor: ...@@ -14,7 +14,7 @@ assessor:
optimize_mode: maximize optimize_mode: maximize
trial: trial:
codeDir: ../../../examples/trials/mnist-nested-search-space codeDir: ../../../examples/trials/mnist-nested-search-space
command: python3 mnist.py --batch_num 100 command: python3 mnist.py --batch_num 10
gpuNum: 0 gpuNum: 0
useAnnotation: false useAnnotation: false
......
...@@ -13,7 +13,7 @@ assessor: ...@@ -13,7 +13,7 @@ assessor:
optimize_mode: maximize optimize_mode: maximize
trial: trial:
codeDir: ../../../examples/trials/mnist-pytorch codeDir: ../../../examples/trials/mnist-pytorch
command: python3 mnist.py --epochs 2 command: python3 mnist.py --epochs 1
gpuNum: 0 gpuNum: 0
useAnnotation: false useAnnotation: false
......
...@@ -13,7 +13,7 @@ assessor: ...@@ -13,7 +13,7 @@ assessor:
optimize_mode: maximize optimize_mode: maximize
trial: trial:
codeDir: ../../../examples/trials/mnist-tfv1 codeDir: ../../../examples/trials/mnist-tfv1
command: python3 mnist.py --batch_num 100 command: python3 mnist.py --batch_num 10
gpuNum: 0 gpuNum: 0
useAnnotation: false useAnnotation: false
......
defaultTestCaseConfig:
launchCommand: nnictl create --config $configFile
stopCommand: nnictl stop
experimentStatusCheck: True
platform: linux darwin win32
testCases:
#######################################################################
# nni examples test
#######################################################################
- name: sklearn-classification
# test case config yml file relative to nni source code directory
configFile: test/config/examples/sklearn-classification.yml
# test case specific config, the content of configFile will be overrided
# by config section
config:
# validator is called after experiment is done
# validator class needs to be implemented in nni_test/nnitest/validators.py
validator:
# launch command, default launch command is 'nnictl create --config $configFile'
launchCommand: nnictl create --config $configFile
# stop command, default stop command is 'nnictl stop', empty means no stop command
stopCommand: nnictl stop
# set experiment ID into variable, variable name should start with $, such as $expId
setExperimentIdtoVar: $expId
# check status of experiment before calling validator
experimentStatusCheck: True
- name: sklearn-regression
configFile: test/config/examples/sklearn-regression.yml
- name: mnist-tfv1
configFile: test/config/examples/mnist-tfv1.yml
- name: mnist-keras
configFile: test/config/examples/mnist-keras.yml
- name: mnist-pytorch
configFile: test/config/examples/mnist-pytorch.yml
- name: mnist-annotation
configFile: test/config/examples/mnist-annotation.yml
- name: cifar10-pytorch
configFile: test/config/examples/cifar10-pytorch.yml
config:
# this example downloads large pretrained model weights
# test 1 trial to save time
maxExecDuration: 10m
maxTrialNum: 1
trialConcurrency: 1
trial:
command: python3 main.py --epochs 1 --batches 1
gpuNum: 0
- name: nested-ss
configFile: test/config/examples/mnist-nested-search-space.yml
#########################################################################
# nni features test
#########################################################################
- name: metrics-float
configFile: test/config/metrics_test/config.yml
config:
maxTrialNum: 1
trialConcurrency: 1
validator:
class: MetricsValidator
kwargs:
expected_result_file: expected_metrics.json
# to be enabled
#- name: metrics-dict
# configFile: test/config/metrics_test/config_dict_metrics.yml
# config:
# maxTrialNum: 1
# trialConcurrency: 1
# validator:
# class: MetricsValidator
# kwargs:
# expected_result_file: expected_metrics_dict.json
- name: nnicli
configFile: test/config/examples/sklearn-regression.yml
config:
maxTrialNum: 4
trialConcurrency: 4
launchCommand: python3 -c 'import nnicli as nc; nc.start_nni("$configFile")'
stopCommand: python3 -c 'import nnicli as nc; nc.stop_nni()'
validator:
class: NnicliValidator
platform: linux darwin
- name: foreground
configFile: test/config/examples/sklearn-regression.yml
launchCommand: python3 nni_test/nnitest/foreground.py --config $configFile --timeout 45
stopCommand:
experimentStatusCheck: False
platform: linux darwin
# Experiment resume test part 1
- name: nnictl-resume-1
configFile: test/config/examples/sklearn-regression.yml
setExperimentIdtoVar: $resumeExpId
# Experiment resume test part 2
- name: nnictl-resume-2
configFile: test/config/examples/sklearn-regression.yml
launchCommand: nnictl resume $resumeExpId
# Experiment view test
- name: nnictl-view
configFile: test/config/examples/sklearn-regression.yml
launchCommand: nnictl view $resumeExpId
experimentStatusCheck: False
- name: multi-thread
configFile: test/config/multi_thread/config.yml
- name: multi-phase-batch
configFile: test/config/multi_phase/batch.yml
config:
# for batch tuner, maxTrialNum can not exceed length of search space
maxTrialNum: 2
trialConcurrency: 2
- name: multi-phase-evolution
configFile: test/config/multi_phase/evolution.yml
- name: multi-phase-grid
configFile: test/config/multi_phase/grid.yml
config:
maxTrialNum: 2
trialConcurrency: 2
- name: multi-phase-metis
configFile: test/config/multi_phase/metis.yml
- name: multi-phase-tpe
configFile: test/config/multi_phase/tpe.yml
#########################################################################
# nni assessor test
#########################################################################
- name: assessor-curvefitting
configFile: test/config/assessors/curvefitting.yml
- name: assessor-medianstop
configFile: test/config/assessors/medianstop.yml
#########################################################################
# nni tuners test
#########################################################################
- name: tuner-annel
configFile: test/config/tuners/anneal.yml
- name: tuner-evolution
configFile: test/config/tuners/evolution.yml
- name: tuner-random
configFile: test/config/tuners/random.yml
- name: tuner-smac
configFile: test/config/tuners/smac.yml
platform: linux darwin
- name: tuner-tpe
configFile: test/config/tuners/tpe.yml
- name: tuner-batch
configFile: test/config/tuners/batch.yml
- name: tuner-bohb
configFile: test/config/tuners/bohb.yml
platform: linux darwin
- name: tuner-gp
configFile: test/config/tuners/gp.yml
- name: tuner-grid
configFile: test/config/tuners/gridsearch.yml
- name: tuner-hyperband
configFile: test/config/tuners/hyperband.yml
- name: tuner-metis
configFile: test/config/tuners/metis.yml
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment