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
a63f2ed3
Commit
a63f2ed3
authored
Nov 22, 2019
by
liuzhe-lz
Committed by
QuanluZhang
Nov 22, 2019
Browse files
Improve logging for standalone mode (#1768)
parent
dbf98714
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
10 deletions
+47
-10
src/sdk/pynni/nni/common.py
src/sdk/pynni/nni/common.py
+21
-0
src/sdk/pynni/nni/platform/standalone.py
src/sdk/pynni/nni/platform/standalone.py
+20
-6
src/sdk/pynni/nni/trial.py
src/sdk/pynni/nni/trial.py
+6
-4
No files found.
src/sdk/pynni/nni/common.py
View file @
a63f2ed3
...
...
@@ -68,6 +68,27 @@ def init_logger(logger_file_path, log_level_name='info'):
sys
.
stdout
=
_LoggerFileWrapper
(
logger_file
)
def
init_standalone_logger
():
"""
Initialize root logger for standalone mode.
This will set NNI's log level to INFO and print its log to stdout.
"""
fmt
=
'[%(asctime)s] %(levelname)s (%(name)s) %(message)s'
formatter
=
logging
.
Formatter
(
fmt
,
_time_format
)
handler
=
logging
.
StreamHandler
(
sys
.
stdout
)
handler
.
setFormatter
(
formatter
)
nni_logger
=
logging
.
getLogger
(
'nni'
)
nni_logger
.
addHandler
(
handler
)
nni_logger
.
setLevel
(
logging
.
INFO
)
nni_logger
.
propagate
=
False
# Following line does not affect NNI loggers, but without this user's logger won't be able to
# print log even it's level is set to INFO, so we do it for user's convenience.
# If this causes any issue in future, remove it and use `logging.info` instead of
# `logging.getLogger('xxx')` in all examples.
logging
.
basicConfig
()
_multi_thread
=
False
_multi_phase
=
False
...
...
src/sdk/pynni/nni/platform/standalone.py
View file @
a63f2ed3
...
...
@@ -22,14 +22,26 @@
import
logging
import
json_tricks
from
..common
import
init_standalone_logger
# print INFO log to stdout
logging
.
basicConfig
()
logging
.
getLogger
(
'nni'
).
setLevel
(
logging
.
INFO
)
__all__
=
[
'get_next_parameter'
,
'get_experiment_id'
,
'get_trial_id'
,
'get_sequence_id'
,
'send_metric'
,
]
init_standalone_logger
()
_logger
=
logging
.
getLogger
(
'nni'
)
def
get_next_parameter
():
pass
_logger
.
warning
(
'Requesting parameter without NNI framework, returning empty dict'
)
return
{
'parameter_id'
:
None
,
'parameters'
:
{}
}
def
get_experiment_id
():
pass
...
...
@@ -43,6 +55,8 @@ def get_sequence_id():
def
send_metric
(
string
):
metric
=
json_tricks
.
loads
(
string
)
if
metric
[
'type'
]
==
'FINAL'
:
print
(
'Final result:'
,
metric
[
'value'
])
_logger
.
info
(
'Final result:
%s
'
,
metric
[
'value'
])
elif
metric
[
'type'
]
==
'PERIODICAL'
:
print
(
'Intermediate result:'
,
metric
[
'value'
])
_logger
.
info
(
'Intermediate result: %s (Index %s)'
,
metric
[
'value'
],
metric
[
'sequence'
])
else
:
_logger
.
error
(
'Unexpected metric: %s'
,
string
)
src/sdk/pynni/nni/trial.py
View file @
a63f2ed3
...
...
@@ -126,9 +126,10 @@ def report_intermediate_result(metric):
serializable object.
"""
global
_intermediate_seq
assert
_params
is
not
None
,
'nni.get_next_parameter() needs to be called before report_intermediate_result'
assert
_params
or
trial_env_vars
.
NNI_PLATFORM
is
None
,
\
'nni.get_next_parameter() needs to be called before report_intermediate_result'
metric
=
json_tricks
.
dumps
({
'parameter_id'
:
_params
[
'parameter_id'
],
'parameter_id'
:
_params
[
'parameter_id'
]
if
_params
else
None
,
'trial_job_id'
:
trial_env_vars
.
NNI_TRIAL_JOB_ID
,
'type'
:
'PERIODICAL'
,
'sequence'
:
_intermediate_seq
,
...
...
@@ -147,9 +148,10 @@ def report_final_result(metric):
metric:
serializable object.
"""
assert
_params
is
not
None
,
'nni.get_next_parameter() needs to be called before report_final_result'
assert
_params
or
trial_env_vars
.
NNI_PLATFORM
is
None
,
\
'nni.get_next_parameter() needs to be called before report_final_result'
metric
=
json_tricks
.
dumps
({
'parameter_id'
:
_params
[
'parameter_id'
],
'parameter_id'
:
_params
[
'parameter_id'
]
if
_params
else
None
,
'trial_job_id'
:
trial_env_vars
.
NNI_TRIAL_JOB_ID
,
'type'
:
'FINAL'
,
'sequence'
:
0
,
...
...
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