diff --git a/src/nni_manager/common/manager.ts b/src/nni_manager/common/manager.ts index 1d02a1775d..4deac47387 100644 --- a/src/nni_manager/common/manager.ts +++ b/src/nni_manager/common/manager.ts @@ -27,10 +27,12 @@ type ProfileUpdateType = 'TRIAL_CONCURRENCY' | 'MAX_EXEC_DURATION' | 'SEARCH_SPA interface ExperimentParams { authorName: string; experimentName: string; + description?: string; trialConcurrency: number; maxExecDuration: number; //seconds maxTrialNum: number; searchSpace: string; + trainingServicePlatform: string; multiPhase?: boolean; tuner: { className: string; diff --git a/src/nni_manager/core/nnimanager.ts b/src/nni_manager/core/nnimanager.ts index c84688c038..23364d5448 100644 --- a/src/nni_manager/core/nnimanager.ts +++ b/src/nni_manager/core/nnimanager.ts @@ -528,6 +528,7 @@ class NNIManager implements Manager { trialConcurrency: 0, maxExecDuration: 0, // unit: second maxTrialNum: 0, // maxTrialNum includes all the submitted trial jobs + trainingServicePlatform: '', searchSpace: '', tuner: { className: '', diff --git a/src/nni_manager/core/test/dataStore.test.ts b/src/nni_manager/core/test/dataStore.test.ts index 603daa1ac4..d4f5deb394 100644 --- a/src/nni_manager/core/test/dataStore.test.ts +++ b/src/nni_manager/core/test/dataStore.test.ts @@ -58,6 +58,7 @@ describe('Unit test for dataStore', () => { trialConcurrency: 2, maxExecDuration: 10, maxTrialNum: 5, + trainingServicePlatform: 'local', searchSpace: `{ "dropout_rate": { "_type": "uniform", diff --git a/src/nni_manager/core/test/nnimanager.test.ts b/src/nni_manager/core/test/nnimanager.test.ts index 1ca11f69f0..e73e269c2d 100644 --- a/src/nni_manager/core/test/nnimanager.test.ts +++ b/src/nni_manager/core/test/nnimanager.test.ts @@ -54,6 +54,7 @@ describe('Unit test for nnimanager', function () { trialConcurrency: 2, maxExecDuration: 5, maxTrialNum: 2, + trainingServicePlatform: 'local', searchSpace: '{"x":1}', tuner: { className: 'EvolutionTuner', diff --git a/src/nni_manager/core/test/sqlDatabase.test.ts b/src/nni_manager/core/test/sqlDatabase.test.ts index 7a67e98e96..03d1ab5e2a 100644 --- a/src/nni_manager/core/test/sqlDatabase.test.ts +++ b/src/nni_manager/core/test/sqlDatabase.test.ts @@ -36,6 +36,7 @@ const expParams1: ExperimentParams = { trialConcurrency: 3, maxExecDuration: 100, maxTrialNum: 5, + trainingServicePlatform: 'local', searchSpace: 'SS', tuner: { className: 'testTuner', @@ -50,6 +51,7 @@ const expParams2: ExperimentParams = { trialConcurrency: 5, maxExecDuration: 1000, maxTrialNum: 5, + trainingServicePlatform: 'local', searchSpace: '', tuner: { className: 'testTuner', diff --git a/src/nni_manager/rest_server/restValidationSchemas.ts b/src/nni_manager/rest_server/restValidationSchemas.ts index 01985cddb2..000ddee6a0 100644 --- a/src/nni_manager/rest_server/restValidationSchemas.ts +++ b/src/nni_manager/rest_server/restValidationSchemas.ts @@ -52,9 +52,11 @@ export namespace ValidationSchemas { export const STARTEXPERIMENT = { body: { experimentName: joi.string().required(), + description: joi.string(), authorName: joi.string(), maxTrialNum: joi.number().min(0).required(), trialConcurrency: joi.number().min(0).required(), + trainingServicePlatform: joi.string(), searchSpace: joi.string().required(), maxExecDuration: joi.number().min(0).required(), multiPhase: joi.boolean(), diff --git a/src/nni_manager/rest_server/test/mockedNNIManager.ts b/src/nni_manager/rest_server/test/mockedNNIManager.ts index 5acdd072ce..f93e0165ca 100644 --- a/src/nni_manager/rest_server/test/mockedNNIManager.ts +++ b/src/nni_manager/rest_server/test/mockedNNIManager.ts @@ -135,6 +135,7 @@ export class MockedNNIManager extends Manager { trialConcurrency: 2, maxExecDuration: 30, maxTrialNum: 3, + trainingServicePlatform: 'local', searchSpace: '{lr: 0.01}', tuner: { className: 'testTuner', diff --git a/tools/nnicmd/config_schema.py b/tools/nnicmd/config_schema.py index a4bb503291..ace9621a5a 100644 --- a/tools/nnicmd/config_schema.py +++ b/tools/nnicmd/config_schema.py @@ -24,6 +24,7 @@ common_schema = { 'authorName': str, 'experimentName': str, +Optional('description'): str, 'trialConcurrency': And(int, lambda n: 1 <=n <= 999999), Optional('maxExecDuration'): Regex(r'^[1-9][0-9]*[s|m|h|d]$'), Optional('maxTrialNum'): And(int, lambda x: 1 <= x <= 99999), diff --git a/tools/nnicmd/launcher.py b/tools/nnicmd/launcher.py index 1e4bd25f88..a44c263e90 100644 --- a/tools/nnicmd/launcher.py +++ b/tools/nnicmd/launcher.py @@ -130,6 +130,10 @@ def set_experiment(experiment_config, mode, port): request_data['maxExecDuration'] = experiment_config['maxExecDuration'] request_data['maxTrialNum'] = experiment_config['maxTrialNum'] request_data['searchSpace'] = experiment_config.get('searchSpace') + request_data['trainingServicePlatform'] = experiment_config.get('trainingServicePlatform') + + if experiment_config.get('description'): + request_data['description'] = experiment_config['description'] if experiment_config.get('multiPhase'): request_data['multiPhase'] = experiment_config.get('multiPhase') request_data['tuner'] = experiment_config['tuner']