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
41e58703
Unverified
Commit
41e58703
authored
Sep 16, 2019
by
liuzhe-lz
Committed by
GitHub
Sep 16, 2019
Browse files
Change `receive_customized_trial_result` API (#1491)
* Refactor `receive_customized_trial_result` API * add doc
parent
15952874
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
21 deletions
+21
-21
src/sdk/pynni/nni/msg_dispatcher.py
src/sdk/pynni/nni/msg_dispatcher.py
+8
-8
src/sdk/pynni/nni/tuner.py
src/sdk/pynni/nni/tuner.py
+10
-7
src/sdk/pynni/tests/test_tuner.py
src/sdk/pynni/tests/test_tuner.py
+3
-6
No files found.
src/sdk/pynni/nni/msg_dispatcher.py
View file @
41e58703
...
@@ -171,15 +171,15 @@ class MsgDispatcher(MsgDispatcherBase):
...
@@ -171,15 +171,15 @@ class MsgDispatcher(MsgDispatcherBase):
id_
=
data
[
'parameter_id'
]
id_
=
data
[
'parameter_id'
]
value
=
data
[
'value'
]
value
=
data
[
'value'
]
if
id_
in
_customized_parameter_ids
:
if
id_
in
_customized_parameter_ids
:
if
multi_phase_enabled
():
if
not
hasattr
(
self
.
tuner
,
'_accept_customized'
):
self
.
tuner
.
receive_customized_trial_result
(
id_
,
_trial_params
[
id_
],
value
,
trial_job_id
=
data
[
'trial_job_id'
])
self
.
tuner
.
_accept_customized
=
False
else
:
if
not
self
.
tuner
.
_accept_customized
:
self
.
tuner
.
receive_customized_trial_result
(
id_
,
_trial_params
[
id_
],
value
)
_logger
.
info
(
'Customized trial job %s ignored by tuner'
,
id_
)
return
customized
=
True
else
:
else
:
if
multi_phase_enabled
():
customized
=
False
self
.
tuner
.
receive_trial_result
(
id_
,
_trial_params
[
id_
],
value
,
trial_job_id
=
data
[
'trial_job_id'
])
self
.
tuner
.
receive_trial_result
(
id_
,
_trial_params
[
id_
],
value
,
customized
=
customized
,
trial_job_id
=
data
.
get
(
'trial_job_id'
))
else
:
self
.
tuner
.
receive_trial_result
(
id_
,
_trial_params
[
id_
],
value
)
def
_handle_intermediate_metric_data
(
self
,
data
):
def
_handle_intermediate_metric_data
(
self
,
data
):
"""Call assessor to process intermediate results
"""Call assessor to process intermediate results
...
...
src/sdk/pynni/nni/tuner.py
View file @
41e58703
...
@@ -57,19 +57,22 @@ class Tuner(Recoverable):
...
@@ -57,19 +57,22 @@ class Tuner(Recoverable):
def
receive_trial_result
(
self
,
parameter_id
,
parameters
,
value
,
**
kwargs
):
def
receive_trial_result
(
self
,
parameter_id
,
parameters
,
value
,
**
kwargs
):
"""Invoked when a trial reports its final result. Must override.
"""Invoked when a trial reports its final result. Must override.
By default this only reports results of algorithm-generated hyper-parameters.
Use `accept_customized_trials()` to receive results from user-added parameters.
parameter_id: int
parameter_id: int
parameters: object created by 'generate_parameters()'
parameters: object created by 'generate_parameters()'
reward: object reported by trial
value: object reported by trial
customized: bool, true if the trial is created from web UI, false if generated by algorithm
trial_job_id: str, only available in multiphase mode.
"""
"""
raise
NotImplementedError
(
'Tuner: receive_trial_result not implemented'
)
raise
NotImplementedError
(
'Tuner: receive_trial_result not implemented'
)
def
receive_customized_trial_result
(
self
,
parameter_id
,
parameters
,
value
,
**
kwargs
):
def
accept_customized_trials
(
self
,
accept
=
True
):
"""Invoked when a trial added by WebUI reports its final result. Do nothing by default.
"""Enable or disable receiving results of user-added hyper-parameters.
parameter_id: int
By default `receive_trial_result()` will only receive results of algorithm-generated hyper-parameters.
parameters: object created by user
If tuners want to receive those of customized parameters as well, they can call this function in `__init__()`.
value: object reported by trial
"""
"""
_logger
.
info
(
'Customized trial job %s ignored by tuner'
,
parameter_id
)
self
.
_accept_customized
=
accept
def
trial_end
(
self
,
parameter_id
,
success
,
**
kwargs
):
def
trial_end
(
self
,
parameter_id
,
success
,
**
kwargs
):
"""Invoked when a trial is completed or terminated. Do nothing by default.
"""Invoked when a trial is completed or terminated. Do nothing by default.
...
...
src/sdk/pynni/tests/test_tuner.py
View file @
41e58703
...
@@ -34,6 +34,7 @@ class NaiveTuner(Tuner):
...
@@ -34,6 +34,7 @@ class NaiveTuner(Tuner):
self
.
param
=
0
self
.
param
=
0
self
.
trial_results
=
[
]
self
.
trial_results
=
[
]
self
.
search_space
=
None
self
.
search_space
=
None
self
.
accept_customized_trials
()
def
generate_parameters
(
self
,
parameter_id
,
**
kwargs
):
def
generate_parameters
(
self
,
parameter_id
,
**
kwargs
):
# report Tuner's internal states to generated parameters,
# report Tuner's internal states to generated parameters,
...
@@ -45,13 +46,9 @@ class NaiveTuner(Tuner):
...
@@ -45,13 +46,9 @@ class NaiveTuner(Tuner):
'search_space'
:
self
.
search_space
'search_space'
:
self
.
search_space
}
}
def
receive_trial_result
(
self
,
parameter_id
,
parameters
,
value
,
**
kwargs
):
def
receive_trial_result
(
self
,
parameter_id
,
parameters
,
value
,
customized
,
**
kwargs
):
reward
=
extract_scalar_reward
(
value
)
reward
=
extract_scalar_reward
(
value
)
self
.
trial_results
.
append
((
parameter_id
,
parameters
[
'param'
],
reward
,
False
))
self
.
trial_results
.
append
((
parameter_id
,
parameters
[
'param'
],
reward
,
customized
))
def
receive_customized_trial_result
(
self
,
parameter_id
,
parameters
,
value
):
reward
=
extract_scalar_reward
(
value
)
self
.
trial_results
.
append
((
parameter_id
,
parameters
[
'param'
],
reward
,
True
))
def
update_search_space
(
self
,
search_space
):
def
update_search_space
(
self
,
search_space
):
self
.
search_space
=
search_space
self
.
search_space
=
search_space
...
...
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