Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
nni
Commits
4b38e64f
"...git@developer.sourcefind.cn:yangql/composable_kernel.git" did not exist on "b79bbbc22f847255a984bf71130908b7db41438f"
Unverified
Commit
4b38e64f
authored
Jul 12, 2021
by
SparkSnail
Committed by
GitHub
Jul 12, 2021
Browse files
Support view/resume experiment from external folder (#3870)
parent
9f32a06f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
4 deletions
+58
-4
docs/en_US/Tutorial/Nnictl.rst
docs/en_US/Tutorial/Nnictl.rst
+8
-0
nni/tools/nnictl/launcher.py
nni/tools/nnictl/launcher.py
+45
-3
nni/tools/nnictl/nnictl.py
nni/tools/nnictl/nnictl.py
+4
-0
nni/tools/nnictl/nnictl_utils.py
nni/tools/nnictl/nnictl_utils.py
+1
-1
No files found.
docs/en_US/Tutorial/Nnictl.rst
View file @
4b38e64f
...
@@ -166,6 +166,10 @@ nnictl resume
...
@@ -166,6 +166,10 @@ nnictl resume
- False
- False
-
-
- set foreground mode, print log content to terminal
- set foreground mode, print log content to terminal
* - --experiment_dir, -e
- False
-
- Resume experiment from external folder, specify the full path of experiment folder
...
@@ -218,6 +222,10 @@ nnictl view
...
@@ -218,6 +222,10 @@ nnictl view
- False
- False
-
-
- Rest port of the experiment you want to view
- Rest port of the experiment you want to view
* - --experiment_dir, -e
- False
-
- View experiment from external folder, specify the full path of experiment folder
...
...
nni/tools/nnictl/launcher.py
View file @
4b38e64f
...
@@ -539,7 +539,9 @@ def manage_stopped_experiment(args, mode):
...
@@ -539,7 +539,9 @@ def manage_stopped_experiment(args, mode):
#find the latest stopped experiment
#find the latest stopped experiment
if
not
args
.
id
:
if
not
args
.
id
:
print_error
(
'Please set experiment id!
\n
You could use
\'
nnictl {0} id
\'
to {0} a stopped experiment!
\n
'
\
print_error
(
'Please set experiment id!
\n
You could use
\'
nnictl {0} id
\'
to {0} a stopped experiment!
\n
'
\
'You could use
\'
nnictl experiment list --all
\'
to show all experiments!'
.
format
(
mode
))
'You could use
\'
nnictl experiment list --all
\'
to show all experiments!
\n
'
\
'If your experiment is not started in current machine, you could specify experiment folder using '
\
'--experiment_dir argument'
.
format
(
mode
))
exit
(
1
)
exit
(
1
)
else
:
else
:
if
experiments_dict
.
get
(
args
.
id
)
is
None
:
if
experiments_dict
.
get
(
args
.
id
)
is
None
:
...
@@ -570,8 +572,48 @@ def manage_stopped_experiment(args, mode):
...
@@ -570,8 +572,48 @@ def manage_stopped_experiment(args, mode):
def
view_experiment
(
args
):
def
view_experiment
(
args
):
'''view a stopped experiment'''
'''view a stopped experiment'''
manage_stopped_experiment
(
args
,
'view'
)
if
args
.
experiment_dir
:
manage_external_experiment
(
args
,
'view'
)
else
:
manage_stopped_experiment
(
args
,
'view'
)
def
resume_experiment
(
args
):
def
resume_experiment
(
args
):
'''resume an experiment'''
'''resume an experiment'''
manage_stopped_experiment
(
args
,
'resume'
)
'''view a stopped experiment'''
if
args
.
experiment_dir
:
manage_external_experiment
(
args
,
'resume'
)
else
:
manage_stopped_experiment
(
args
,
'resume'
)
def
manage_external_experiment
(
args
,
mode
):
'''view a experiment from external path'''
# validate arguments
if
not
os
.
path
.
exists
(
args
.
experiment_dir
):
print_error
(
'Folder %s does not exist!'
%
args
.
experiment_dir
)
exit
(
1
)
if
not
os
.
path
.
isdir
(
args
.
experiment_dir
):
print_error
(
'Path %s is not folder directory!'
%
args
.
experiment_dir
)
exit
(
1
)
if
args
.
id
:
experiment_id
=
args
.
id
log_dir
=
args
.
experiment_dir
else
:
print_normal
(
'NNI can not detect experiment id in argument, will use last folder name as experiment id in experiment_dir argument.'
)
experiment_id
=
Path
(
args
.
experiment_dir
).
name
log_dir
=
os
.
path
.
dirname
(
args
.
experiment_dir
)
if
not
experiment_id
:
print_error
(
"Please set experiment id argument, or add id as the last folder name in experiment_dir argument."
)
exit
(
1
)
args
.
url_prefix
=
None
experiment_config
=
Config
(
experiment_id
,
log_dir
).
get_config
()
assert
'trainingService'
in
experiment_config
or
'trainingServicePlatform'
in
experiment_config
try
:
if
'trainingServicePlatform'
in
experiment_config
:
experiment_config
[
'logDir'
]
=
log_dir
launch_experiment
(
args
,
experiment_config
,
mode
,
experiment_id
,
1
)
else
:
experiment_config
[
'experimentWorkingDirectory'
]
=
log_dir
launch_experiment
(
args
,
experiment_config
,
mode
,
experiment_id
,
2
)
except
Exception
as
exception
:
print_error
(
exception
)
exit
(
1
)
nni/tools/nnictl/nnictl.py
View file @
4b38e64f
...
@@ -66,12 +66,16 @@ def parse_args():
...
@@ -66,12 +66,16 @@ def parse_args():
parser_resume
.
add_argument
(
'--port'
,
'-p'
,
default
=
DEFAULT_REST_PORT
,
dest
=
'port'
,
type
=
int
,
help
=
'the port of restful server'
)
parser_resume
.
add_argument
(
'--port'
,
'-p'
,
default
=
DEFAULT_REST_PORT
,
dest
=
'port'
,
type
=
int
,
help
=
'the port of restful server'
)
parser_resume
.
add_argument
(
'--debug'
,
'-d'
,
action
=
'store_true'
,
help
=
' set debug mode'
)
parser_resume
.
add_argument
(
'--debug'
,
'-d'
,
action
=
'store_true'
,
help
=
' set debug mode'
)
parser_resume
.
add_argument
(
'--foreground'
,
'-f'
,
action
=
'store_true'
,
help
=
' set foreground mode, print log content to terminal'
)
parser_resume
.
add_argument
(
'--foreground'
,
'-f'
,
action
=
'store_true'
,
help
=
' set foreground mode, print log content to terminal'
)
parser_resume
.
add_argument
(
'--experiment_dir'
,
'-e'
,
help
=
'resume experiment from external folder, specify the full path of '
\
'experiment folder'
)
parser_resume
.
set_defaults
(
func
=
resume_experiment
)
parser_resume
.
set_defaults
(
func
=
resume_experiment
)
# parse view command
# parse view command
parser_view
=
subparsers
.
add_parser
(
'view'
,
help
=
'view a stopped experiment'
)
parser_view
=
subparsers
.
add_parser
(
'view'
,
help
=
'view a stopped experiment'
)
parser_view
.
add_argument
(
'id'
,
nargs
=
'?'
,
help
=
'The id of the experiment you want to view'
)
parser_view
.
add_argument
(
'id'
,
nargs
=
'?'
,
help
=
'The id of the experiment you want to view'
)
parser_view
.
add_argument
(
'--port'
,
'-p'
,
default
=
DEFAULT_REST_PORT
,
dest
=
'port'
,
type
=
int
,
help
=
'the port of restful server'
)
parser_view
.
add_argument
(
'--port'
,
'-p'
,
default
=
DEFAULT_REST_PORT
,
dest
=
'port'
,
type
=
int
,
help
=
'the port of restful server'
)
parser_view
.
add_argument
(
'--experiment_dir'
,
'-e'
,
help
=
'view experiment from external folder, specify the full path of '
\
'experiment folder'
)
parser_view
.
set_defaults
(
func
=
view_experiment
)
parser_view
.
set_defaults
(
func
=
view_experiment
)
# parse update command
# parse update command
...
...
nni/tools/nnictl/nnictl_utils.py
View file @
4b38e64f
...
@@ -524,7 +524,7 @@ def experiment_clean(args):
...
@@ -524,7 +524,7 @@ def experiment_clean(args):
for
experiment_id
in
experiment_id_list
:
for
experiment_id
in
experiment_id_list
:
experiment_id
=
get_config_filename
(
args
)
experiment_id
=
get_config_filename
(
args
)
experiment_config
=
Config
(
experiment_id
,
Experiments
().
get_all_experiments
()[
experiment_id
][
'logDir'
]).
get_config
()
experiment_config
=
Config
(
experiment_id
,
Experiments
().
get_all_experiments
()[
experiment_id
][
'logDir'
]).
get_config
()
platform
=
experiment_config
.
get
(
'trainingServicePlatform'
)
platform
=
experiment_config
.
get
(
'trainingServicePlatform'
)
or
experiment_config
.
get
(
'trainingService'
,
{}).
get
(
'platform'
)
if
platform
==
'remote'
:
if
platform
==
'remote'
:
machine_list
=
experiment_config
.
get
(
'machineList'
)
machine_list
=
experiment_config
.
get
(
'machineList'
)
remote_clean
(
machine_list
,
experiment_id
)
remote_clean
(
machine_list
,
experiment_id
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment