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
eb65bc32
Unverified
Commit
eb65bc32
authored
Jun 08, 2021
by
liuzhe-lz
Committed by
GitHub
Jun 08, 2021
Browse files
Port trial examples' config file to v2 (#3721)
Co-authored-by:
liuzhe
<
zhe.liu@microsoft.com
>
parent
c4d449c5
Changes
67
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
27 additions
and
13 deletions
+27
-13
nni/experiment/config/common.py
nni/experiment/config/common.py
+5
-3
nni/experiment/config/convert.py
nni/experiment/config/convert.py
+2
-2
nni/experiment/config/local.py
nni/experiment/config/local.py
+3
-2
nni/experiment/config/remote.py
nni/experiment/config/remote.py
+2
-2
nni/experiment/config/util.py
nni/experiment/config/util.py
+7
-0
nni/tools/nnictl/launcher.py
nni/tools/nnictl/launcher.py
+7
-3
nni/tools/package_utils/__init__.py
nni/tools/package_utils/__init__.py
+1
-1
No files found.
nni/experiment/config/common.py
View file @
eb65bc32
...
@@ -29,6 +29,8 @@ class _AlgorithmConfig(ConfigBase):
...
@@ -29,6 +29,8 @@ class _AlgorithmConfig(ConfigBase):
super
().
validate
()
super
().
validate
()
_validate_algo
(
self
)
_validate_algo
(
self
)
_canonical_rules
=
{
'code_directory'
:
util
.
canonical_path
}
@
dataclass
(
init
=
False
)
@
dataclass
(
init
=
False
)
class
AlgorithmConfig
(
_AlgorithmConfig
):
class
AlgorithmConfig
(
_AlgorithmConfig
):
name
:
str
name
:
str
...
@@ -37,7 +39,7 @@ class AlgorithmConfig(_AlgorithmConfig):
...
@@ -37,7 +39,7 @@ class AlgorithmConfig(_AlgorithmConfig):
@
dataclass
(
init
=
False
)
@
dataclass
(
init
=
False
)
class
CustomAlgorithmConfig
(
_AlgorithmConfig
):
class
CustomAlgorithmConfig
(
_AlgorithmConfig
):
class_name
:
str
class_name
:
str
c
lass
_directory
:
Optional
[
PathLike
]
=
'.'
c
ode
_directory
:
Optional
[
PathLike
]
=
'.'
class_args
:
Optional
[
Dict
[
str
,
Any
]]
=
None
class_args
:
Optional
[
Dict
[
str
,
Any
]]
=
None
...
@@ -67,7 +69,7 @@ class ExperimentConfig(ConfigBase):
...
@@ -67,7 +69,7 @@ class ExperimentConfig(ConfigBase):
debug
:
bool
=
False
debug
:
bool
=
False
log_level
:
Optional
[
str
]
=
None
log_level
:
Optional
[
str
]
=
None
experiment_working_directory
:
PathLike
=
'~/nni-experiments'
experiment_working_directory
:
PathLike
=
'~/nni-experiments'
tuner_gpu_indices
:
Optional
[
Union
[
List
[
int
],
str
]
]
=
None
tuner_gpu_indices
:
Union
[
List
[
int
],
str
,
int
,
None
]
=
None
tuner
:
Optional
[
_AlgorithmConfig
]
=
None
tuner
:
Optional
[
_AlgorithmConfig
]
=
None
assessor
:
Optional
[
_AlgorithmConfig
]
=
None
assessor
:
Optional
[
_AlgorithmConfig
]
=
None
advisor
:
Optional
[
_AlgorithmConfig
]
=
None
advisor
:
Optional
[
_AlgorithmConfig
]
=
None
...
@@ -137,7 +139,7 @@ _canonical_rules = {
...
@@ -137,7 +139,7 @@ _canonical_rules = {
'trial_code_directory'
:
util
.
canonical_path
,
'trial_code_directory'
:
util
.
canonical_path
,
'max_experiment_duration'
:
lambda
value
:
f
'
{
util
.
parse_time
(
value
)
}
s'
if
value
is
not
None
else
None
,
'max_experiment_duration'
:
lambda
value
:
f
'
{
util
.
parse_time
(
value
)
}
s'
if
value
is
not
None
else
None
,
'experiment_working_directory'
:
util
.
canonical_path
,
'experiment_working_directory'
:
util
.
canonical_path
,
'tuner_gpu_indices'
:
lambda
value
:
[
int
(
idx
)
for
idx
in
value
.
split
(
','
)]
if
isinstance
(
value
,
str
)
else
value
,
'tuner_gpu_indices'
:
util
.
canonical_gpu_indices
,
'tuner'
:
lambda
config
:
None
if
config
is
None
or
config
.
name
==
'_none_'
else
config
.
canonical
(),
'tuner'
:
lambda
config
:
None
if
config
is
None
or
config
.
name
==
'_none_'
else
config
.
canonical
(),
'assessor'
:
lambda
config
:
None
if
config
is
None
or
config
.
name
==
'_none_'
else
config
.
canonical
(),
'assessor'
:
lambda
config
:
None
if
config
is
None
or
config
.
name
==
'_none_'
else
config
.
canonical
(),
'advisor'
:
lambda
config
:
None
if
config
is
None
or
config
.
name
==
'_none_'
else
config
.
canonical
(),
'advisor'
:
lambda
config
:
None
if
config
is
None
or
config
.
name
==
'_none_'
else
config
.
canonical
(),
...
...
nni/experiment/config/convert.py
View file @
eb65bc32
...
@@ -249,13 +249,13 @@ def convert_algo(algo_type, v1, v2):
...
@@ -249,13 +249,13 @@ def convert_algo(algo_type, v1, v2):
v2_algo
=
AlgorithmConfig
(
name
=
builtin_name
,
class_args
=
class_args
)
v2_algo
=
AlgorithmConfig
(
name
=
builtin_name
,
class_args
=
class_args
)
else
:
else
:
c
lass
_directory
=
util
.
canonical_path
(
v1_algo
.
pop
(
'codeDir'
))
c
ode
_directory
=
util
.
canonical_path
(
v1_algo
.
pop
(
'codeDir'
))
class_file_name
=
v1_algo
.
pop
(
'classFileName'
)
class_file_name
=
v1_algo
.
pop
(
'classFileName'
)
assert
class_file_name
.
endswith
(
'.py'
)
assert
class_file_name
.
endswith
(
'.py'
)
class_name
=
class_file_name
[:
-
3
]
+
'.'
+
v1_algo
.
pop
(
'className'
)
class_name
=
class_file_name
[:
-
3
]
+
'.'
+
v1_algo
.
pop
(
'className'
)
v2_algo
=
CustomAlgorithmConfig
(
v2_algo
=
CustomAlgorithmConfig
(
class_name
=
class_name
,
class_name
=
class_name
,
c
lass
_directory
=
c
lass
_directory
,
c
ode
_directory
=
c
ode
_directory
,
class_args
=
class_args
class_args
=
class_args
)
)
...
...
nni/experiment/config/local.py
View file @
eb65bc32
...
@@ -5,6 +5,7 @@ from dataclasses import dataclass
...
@@ -5,6 +5,7 @@ from dataclasses import dataclass
from
typing
import
List
,
Optional
,
Union
from
typing
import
List
,
Optional
,
Union
from
.common
import
TrainingServiceConfig
from
.common
import
TrainingServiceConfig
from
.
import
util
__all__
=
[
'LocalConfig'
]
__all__
=
[
'LocalConfig'
]
...
@@ -13,10 +14,10 @@ class LocalConfig(TrainingServiceConfig):
...
@@ -13,10 +14,10 @@ class LocalConfig(TrainingServiceConfig):
platform
:
str
=
'local'
platform
:
str
=
'local'
use_active_gpu
:
Optional
[
bool
]
=
None
use_active_gpu
:
Optional
[
bool
]
=
None
max_trial_number_per_gpu
:
int
=
1
max_trial_number_per_gpu
:
int
=
1
gpu_indices
:
Optional
[
Union
[
List
[
int
],
str
]
]
=
None
gpu_indices
:
Union
[
List
[
int
],
str
,
int
,
None
]
=
None
_canonical_rules
=
{
_canonical_rules
=
{
'gpu_indices'
:
lambda
value
:
[
int
(
idx
)
for
idx
in
value
.
split
(
','
)]
if
isinstance
(
value
,
str
)
else
value
'gpu_indices'
:
util
.
canonical_gpu_indices
}
}
_validation_rules
=
{
_validation_rules
=
{
...
...
nni/experiment/config/remote.py
View file @
eb65bc32
...
@@ -22,12 +22,12 @@ class RemoteMachineConfig(ConfigBase):
...
@@ -22,12 +22,12 @@ class RemoteMachineConfig(ConfigBase):
ssh_passphrase
:
Optional
[
str
]
=
None
ssh_passphrase
:
Optional
[
str
]
=
None
use_active_gpu
:
bool
=
False
use_active_gpu
:
bool
=
False
max_trial_number_per_gpu
:
int
=
1
max_trial_number_per_gpu
:
int
=
1
gpu_indices
:
Optional
[
Union
[
List
[
int
],
str
]
]
=
None
gpu_indices
:
Union
[
List
[
int
],
str
,
int
,
None
]
=
None
python_path
:
Optional
[
str
]
=
None
python_path
:
Optional
[
str
]
=
None
_canonical_rules
=
{
_canonical_rules
=
{
'ssh_key_file'
:
util
.
canonical_path
,
'ssh_key_file'
:
util
.
canonical_path
,
'gpu_indices'
:
lambda
value
:
[
int
(
idx
)
for
idx
in
value
.
split
(
','
)]
if
isinstance
(
value
,
str
)
else
value
,
'gpu_indices'
:
util
.
canonical_gpu_indices
}
}
_validation_rules
=
{
_validation_rules
=
{
...
...
nni/experiment/config/util.py
View file @
eb65bc32
...
@@ -92,3 +92,10 @@ def _parse_unit(string, target_unit, all_units):
...
@@ -92,3 +92,10 @@ def _parse_unit(string, target_unit, all_units):
value
=
float
(
number
)
*
factor
value
=
float
(
number
)
*
factor
return
math
.
ceil
(
value
/
all_units
[
target_unit
])
return
math
.
ceil
(
value
/
all_units
[
target_unit
])
raise
ValueError
(
f
'Unsupported unit in "
{
string
}
"'
)
raise
ValueError
(
f
'Unsupported unit in "
{
string
}
"'
)
def
canonical_gpu_indices
(
indices
:
Union
[
List
[
int
],
str
,
int
,
None
])
->
Optional
[
List
[
int
]]:
if
isinstance
(
indices
,
str
):
return
[
int
(
idx
)
for
idx
in
indices
.
split
(
','
)]
if
isinstance
(
indices
,
int
):
return
[
indices
]
return
indices
nni/tools/nnictl/launcher.py
View file @
eb65bc32
...
@@ -403,9 +403,13 @@ def launch_experiment(args, experiment_config, mode, experiment_id, config_versi
...
@@ -403,9 +403,13 @@ def launch_experiment(args, experiment_config, mode, experiment_id, config_versi
if
not
os
.
path
.
isdir
(
path
):
if
not
os
.
path
.
isdir
(
path
):
os
.
makedirs
(
path
)
os
.
makedirs
(
path
)
path
=
tempfile
.
mkdtemp
(
dir
=
path
)
path
=
tempfile
.
mkdtemp
(
dir
=
path
)
if
config_version
==
1
:
nas_mode
=
experiment_config
[
'trial'
].
get
(
'nasMode'
,
'classic_mode'
)
nas_mode
=
experiment_config
[
'trial'
].
get
(
'nasMode'
,
'classic_mode'
)
code_dir
=
expand_annotations
(
experiment_config
[
'trial'
][
'codeDir'
],
path
,
nas_mode
=
nas_mode
)
code_dir
=
expand_annotations
(
experiment_config
[
'trial'
][
'codeDir'
],
path
,
nas_mode
=
nas_mode
)
experiment_config
[
'trial'
][
'codeDir'
]
=
code_dir
experiment_config
[
'trial'
][
'codeDir'
]
=
code_dir
else
:
code_dir
=
expand_annotations
(
experiment_config
[
'trialCodeDirectory'
],
path
)
experiment_config
[
'trialCodeDirectory'
]
=
code_dir
search_space
=
generate_search_space
(
code_dir
)
search_space
=
generate_search_space
(
code_dir
)
experiment_config
[
'searchSpace'
]
=
search_space
experiment_config
[
'searchSpace'
]
=
search_space
assert
search_space
,
ERROR_INFO
%
'Generated search space is empty'
assert
search_space
,
ERROR_INFO
%
'Generated search space is empty'
...
...
nni/tools/package_utils/__init__.py
View file @
eb65bc32
...
@@ -187,7 +187,7 @@ def create_customized_class_instance(class_params):
...
@@ -187,7 +187,7 @@ def create_customized_class_instance(class_params):
Returns customized class instance.
Returns customized class instance.
"""
"""
code_dir
=
class_params
.
get
(
'c
lass
Directory'
)
code_dir
=
class_params
.
get
(
'c
ode
Directory'
)
qualified_class_name
=
class_params
.
get
(
'className'
)
qualified_class_name
=
class_params
.
get
(
'className'
)
class_args
=
class_params
.
get
(
'classArgs'
)
class_args
=
class_params
.
get
(
'classArgs'
)
...
...
Prev
1
2
3
4
Next
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