mirror of
https://github.com/clearml/clearml
synced 2025-04-27 01:39:17 +00:00
Add Logger.set_default_debug_sample_history()/get_default_debug_sample_history() to allow controlling maximum debug samples programmatically
This commit is contained in:
parent
1e680ae82f
commit
3f9f3aedc7
@ -19,6 +19,7 @@ from .backend_interface.logger import StdStreamPatch
|
|||||||
from .backend_interface.task import Task as _Task
|
from .backend_interface.task import Task as _Task
|
||||||
from .backend_interface.task.log import TaskHandler
|
from .backend_interface.task.log import TaskHandler
|
||||||
from .backend_interface.util import mutually_exclusive
|
from .backend_interface.util import mutually_exclusive
|
||||||
|
from .backend_interface.metrics.events import UploadEvent
|
||||||
from .config import running_remotely, get_cache_dir, config, DEBUG_SIMULATE_REMOTE_TASK, deferred_config
|
from .config import running_remotely, get_cache_dir, config, DEBUG_SIMULATE_REMOTE_TASK, deferred_config
|
||||||
from .errors import UsageError
|
from .errors import UsageError
|
||||||
from .storage.helper import StorageHelper
|
from .storage.helper import StorageHelper
|
||||||
@ -94,6 +95,8 @@ class Logger(object):
|
|||||||
if base_logger and base_logger.handlers:
|
if base_logger and base_logger.handlers:
|
||||||
StdStreamPatch.patch_logging_formatter(self, base_logger.handlers[0])
|
StdStreamPatch.patch_logging_formatter(self, base_logger.handlers[0])
|
||||||
|
|
||||||
|
self._default_max_sample_history = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def current_logger(cls):
|
def current_logger(cls):
|
||||||
# type: () -> Logger
|
# type: () -> Logger
|
||||||
@ -853,7 +856,8 @@ class Logger(object):
|
|||||||
image=image,
|
image=image,
|
||||||
iter=iteration or 0,
|
iter=iteration or 0,
|
||||||
upload_uri=upload_uri,
|
upload_uri=upload_uri,
|
||||||
max_image_history=max_image_history,
|
max_image_history=max_image_history if max_image_history is not None
|
||||||
|
else self._default_max_sample_history,
|
||||||
delete_after_upload=delete_after_upload,
|
delete_after_upload=delete_after_upload,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -936,7 +940,7 @@ class Logger(object):
|
|||||||
stream=stream,
|
stream=stream,
|
||||||
iter=iteration or 0,
|
iter=iteration or 0,
|
||||||
upload_uri=upload_uri,
|
upload_uri=upload_uri,
|
||||||
max_history=max_history,
|
max_history=max_history if max_history is not None else self._default_max_sample_history,
|
||||||
delete_after_upload=delete_after_upload,
|
delete_after_upload=delete_after_upload,
|
||||||
file_extension=file_extension,
|
file_extension=file_extension,
|
||||||
)
|
)
|
||||||
@ -1091,6 +1095,48 @@ class Logger(object):
|
|||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def set_default_debug_sample_history(self, max_history):
|
||||||
|
# type: (int) -> None
|
||||||
|
"""
|
||||||
|
Set the default maximum debug sample history when reporting media/debug samples.
|
||||||
|
Overrides the configuration file defaults.
|
||||||
|
When reporting debug samples with the same title/series combination and running iterations,
|
||||||
|
only the last X samples are stored (in other words samples are overwritten).
|
||||||
|
The default history size set with `max_history` is used when calling
|
||||||
|
`report_image`, `report_media` etc. without specifying `max_history`
|
||||||
|
|
||||||
|
:param max_history: Number of samples (files) to store on a unique set of title/series being reported
|
||||||
|
with different iteration counter. This is used to make sure users do not end up exploding storage
|
||||||
|
on server storage side.
|
||||||
|
|
||||||
|
For example the following code sample will store the last 5 images even though
|
||||||
|
we are reporting 100 samples.
|
||||||
|
|
||||||
|
.. code-block:: py
|
||||||
|
|
||||||
|
logger.set_default_debug_sample_history(5)
|
||||||
|
for i in range(100):
|
||||||
|
logger.report_image(title='image', series='sample', iteration=i, ...)
|
||||||
|
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
self._default_max_sample_history = int(max_history)
|
||||||
|
|
||||||
|
def get_default_debug_sample_history(self):
|
||||||
|
# type: () -> int
|
||||||
|
"""
|
||||||
|
Return the the default max debug sample history when reporting media/debug samples.
|
||||||
|
If value was not set specifically, the functions returns the configuration file default value.
|
||||||
|
|
||||||
|
:return: default number of samples (files) to store on a unique set of title/series being reported
|
||||||
|
with different iteration counter. This is used to make sure users do not end up exploding storage
|
||||||
|
on server storage side.
|
||||||
|
"""
|
||||||
|
if self._default_max_sample_history is not None:
|
||||||
|
return self._default_max_sample_history
|
||||||
|
# noinspection PyProtectedMember
|
||||||
|
return int(UploadEvent._file_history_size)
|
||||||
|
|
||||||
def report_image_and_upload(
|
def report_image_and_upload(
|
||||||
self,
|
self,
|
||||||
title, # type: str
|
title, # type: str
|
||||||
@ -1298,7 +1344,7 @@ class Logger(object):
|
|||||||
matrix=matrix,
|
matrix=matrix,
|
||||||
iter=iteration or 0,
|
iter=iteration or 0,
|
||||||
upload_uri=upload_uri,
|
upload_uri=upload_uri,
|
||||||
max_image_history=max_image_history,
|
max_image_history=max_image_history if max_image_history is not None else self._default_max_sample_history,
|
||||||
delete_after_upload=delete_after_upload,
|
delete_after_upload=delete_after_upload,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1344,7 +1390,7 @@ class Logger(object):
|
|||||||
image=None,
|
image=None,
|
||||||
iter=iteration or 0,
|
iter=iteration or 0,
|
||||||
upload_uri=upload_uri,
|
upload_uri=upload_uri,
|
||||||
max_image_history=max_file_history,
|
max_image_history=max_file_history if max_file_history is not None else self._default_max_sample_history,
|
||||||
delete_after_upload=delete_after_upload,
|
delete_after_upload=delete_after_upload,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user