Commit 781613df authored by SparkSnail's avatar SparkSnail Committed by chicm-ms
Browse files

Fix install.sh add add trial log path (#109)

* fix nnictl bug

* fix nnictl create bug

* add experiment status logic

* add more information for nnictl

* fix Evolution Tuner bug

* refactor code

* fix code in updater.py

* fix nnictl --help

* fix classArgs bug

* update check response.status_code logic

* show trial log path

* update document

* fix install.sh

* set default vallue for maxTrialNum and maxExecDuration

* fix nnictl
parent eeab424e
...@@ -234,4 +234,19 @@ nnictl log ...@@ -234,4 +234,19 @@ nnictl log
| --head, -h| False| |show head lines of stderr| | --head, -h| False| |show head lines of stderr|
| --tail, -t| False| |show tail lines of stderr| | --tail, -t| False| |show tail lines of stderr|
| --path, -p| False| |show the path of stderr file| | --path, -p| False| |show the path of stderr file|
* __nnictl log trial__
* Description
Show trial log path.
* Usage
nnictl log trial [options]
Options:
| Name, shorthand | Required|Default | Description |
| ------ | ------ | ------ |------ |
| --id, -I| False| |the id of trial|
\ No newline at end of file
#!/bin/bash #!/bin/bash
make easy-install make build
make install-dependencies
make dev-install
source ~/.bashrc source ~/.bashrc
...@@ -25,8 +25,8 @@ CONFIG_SCHEMA = Schema({ ...@@ -25,8 +25,8 @@ CONFIG_SCHEMA = Schema({
'authorName': str, 'authorName': str,
'experimentName': str, 'experimentName': str,
'trialConcurrency': And(int, lambda n: 1 <=n <= 999999), 'trialConcurrency': And(int, lambda n: 1 <=n <= 999999),
'maxExecDuration': Regex(r'^[1-9][0-9]*[s|m|h|d]$'), Optional('maxExecDuration'): Regex(r'^[1-9][0-9]*[s|m|h|d]$'),
'maxTrialNum': And(int, lambda x: 1 <= x <= 99999), Optional('maxTrialNum'): And(int, lambda x: 1 <= x <= 99999),
'trainingServicePlatform': And(str, lambda x: x in ['remote', 'local', 'pai']), 'trainingServicePlatform': And(str, lambda x: x in ['remote', 'local', 'pai']),
Optional('searchSpacePath'): os.path.exists, Optional('searchSpacePath'): os.path.exists,
'useAnnotation': bool, 'useAnnotation': bool,
...@@ -41,10 +41,7 @@ Optional('searchSpacePath'): os.path.exists, ...@@ -41,10 +41,7 @@ Optional('searchSpacePath'): os.path.exists,
'codeDir': os.path.exists, 'codeDir': os.path.exists,
'classFileName': str, 'classFileName': str,
'className': str, 'className': str,
Optional('classArgs'): { Optional('classArgs'): dict,
Optional('optimize_mode'): Or('maximize', 'minimize'),
Optional('speed'): int
},
Optional('gpuNum'): And(int, lambda x: 0 <= x <= 99999), Optional('gpuNum'): And(int, lambda x: 0 <= x <= 99999),
}), }),
'trial':{ 'trial':{
......
...@@ -82,6 +82,11 @@ def validate_common_content(experiment_config): ...@@ -82,6 +82,11 @@ def validate_common_content(experiment_config):
'''Validate whether the common values in experiment_config is valid''' '''Validate whether the common values in experiment_config is valid'''
try: try:
CONFIG_SCHEMA.validate(experiment_config) CONFIG_SCHEMA.validate(experiment_config)
#set default value
if experiment_config.get('maxExecDuration') is None:
experiment_config['maxExecDuration'] = '999d'
if experiment_config.get('maxTrialNum') is None:
experiment_config['maxTrialNum'] = 99999
except Exception as exception: except Exception as exception:
raise Exception(exception) raise Exception(exception)
......
...@@ -118,6 +118,10 @@ def parse_args(): ...@@ -118,6 +118,10 @@ def parse_args():
parser_log_stderr.add_argument('--head', '-H', dest='head', type=int, help='get head -100 content of stderr') parser_log_stderr.add_argument('--head', '-H', dest='head', type=int, help='get head -100 content of stderr')
parser_log_stderr.add_argument('--path', '-p', action='store_true', default=False, help='get the path of stderr file') parser_log_stderr.add_argument('--path', '-p', action='store_true', default=False, help='get the path of stderr file')
parser_log_stderr.set_defaults(func=log_stderr) parser_log_stderr.set_defaults(func=log_stderr)
parser_log_trial = parser_log_subparsers.add_parser('trial', help='get trial log path')
parser_log_trial.add_argument('--id', '-I', dest='id', help='find trial log path by id')
parser_log_trial.set_defaults(func=log_trial)
args = parser.parse_args() args = parser.parse_args()
args.func(args) args.func(args)
......
...@@ -175,6 +175,36 @@ def log_stderr(args): ...@@ -175,6 +175,36 @@ def log_stderr(args):
'''get stderr log''' '''get stderr log'''
log_internal(args, 'stderr') log_internal(args, 'stderr')
def log_trial(args):
''''get trial log path'''
trial_id_path_dict = {}
nni_config = Config()
rest_port = nni_config.get_config('restServerPort')
rest_pid = nni_config.get_config('restServerPid')
if not detect_process(rest_pid):
print_error('Experiment is not running...')
return
running, response = check_rest_server_quick(rest_port)
if running:
response = rest_get(trial_jobs_url(rest_port), 20)
if response and check_response(response):
content = json.loads(response.text)
for trial in content:
trial_id_path_dict[trial['id']] = trial['logPath']
else:
print_error('Restful server is not running...')
exit(0)
if args.id:
if trial_id_path_dict.get(args.id):
print('id:' + args.id + ' path:' + trial_id_path_dict[args.id])
else:
print_error('trial id is not valid!')
exit(0)
else:
for key in trial_id_path_dict.keys():
print('id:' + key + ' path:' + trial_id_path_dict[key])
def get_config(args): def get_config(args):
'''get config info''' '''get config info'''
nni_config = Config() nni_config = Config()
......
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