Open ablaom opened 11 months ago
Does this change replace our keyword argument in evaluate!
and save
?
Yes, everywhere we have a keyword argument logger=nothing
, we need to change to logger=default_logger()
. At present, that's just evaluate!
.
In the case of MLJBase.save
, there is nothing in MLJBase that connects save
to logging. That happens only in MLJFlow.jl, where MLJBase.save(::MLFlowLogger, ::Machine)
is overloaded. I suppose we could arrange that MLBase.save(mach)
saves the machine to the default logger, ie, do something like this in MLJBase:
const ERR_INVALID_DEFAULT_LOGGER = ArgumentError(
"`default_logger()` is currently `nothing`. Either specify an explicit path or stream as "
"target of the save, or use `default_logger(logger)` to change the default logger. "
)
"""
<new doc string>
"""
MLJBase.save(mach::Machine) = MLJBase(default_logger, mach)
MLJBase.save(::Nothing, ::Machine) = throw(ERR_INVALID_DEFAULT_LOGGER)
What do you think?
Awesome, how it could be used by MLJTuning and MLJIteration? Are we going to call to certain functions defined by us inside that packages?
This could be provided as either part of #925 or as a follow-up PR.
The idea is to define a global variable
DEFAULT_LOGGER
and to make the default value of thelogger
keyword option inevaluate!
equal toDEFAULT_LOGGER
, rather thannothing
. (And later, do the same forTunedModel
andIteratedModel
; see https://github.com/alan-turing-institute/MLJ.jl/issues/1029.)In
__init__
theDEFAULT_LOGGER
would be set tonothing
but MLJBase will provide a public methoddefault_logger
to set and inspect the value. For example:The required code can be modelled exactly on the
DEFAULT_RESOURCE
global variable (see src/init.jl) and thedefault_resource
setter/getter (see src/MLJBase.jl).To do after this integration:
default_logger
@pebeto