mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-11 06:46:56 +08:00
Merge pull request #404 from Derek-Wds/main
Support start exp with given exp & recorder id
This commit is contained in:
@@ -23,7 +23,10 @@ class QlibRecorder:
|
|||||||
@contextmanager
|
@contextmanager
|
||||||
def start(
|
def start(
|
||||||
self,
|
self,
|
||||||
|
*,
|
||||||
|
experiment_id: Optional[Text] = None,
|
||||||
experiment_name: Optional[Text] = None,
|
experiment_name: Optional[Text] = None,
|
||||||
|
recorder_id: Optional[Text] = None,
|
||||||
recorder_name: Optional[Text] = None,
|
recorder_name: Optional[Text] = None,
|
||||||
uri: Optional[Text] = None,
|
uri: Optional[Text] = None,
|
||||||
resume: bool = False,
|
resume: bool = False,
|
||||||
@@ -45,8 +48,12 @@ class QlibRecorder:
|
|||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
experiment_id : str
|
||||||
|
id of the experiment one wants to start.
|
||||||
experiment_name : str
|
experiment_name : str
|
||||||
name of the experiment one wants to start.
|
name of the experiment one wants to start.
|
||||||
|
recorder_id : str
|
||||||
|
id of the recorder under the experiment one wants to start.
|
||||||
recorder_name : str
|
recorder_name : str
|
||||||
name of the recorder under the experiment one wants to start.
|
name of the recorder under the experiment one wants to start.
|
||||||
uri : str
|
uri : str
|
||||||
@@ -57,7 +64,14 @@ class QlibRecorder:
|
|||||||
resume : bool
|
resume : bool
|
||||||
whether to resume the specific recorder with given name under the given experiment.
|
whether to resume the specific recorder with given name under the given experiment.
|
||||||
"""
|
"""
|
||||||
run = self.start_exp(experiment_name, recorder_name, uri, resume)
|
run = self.start_exp(
|
||||||
|
experiment_id=experiment_id,
|
||||||
|
experiment_name=experiment_name,
|
||||||
|
recorder_id=recorder_id,
|
||||||
|
recorder_name=recorder_name,
|
||||||
|
uri=uri,
|
||||||
|
resume=resume,
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
yield run
|
yield run
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -65,7 +79,9 @@ class QlibRecorder:
|
|||||||
raise e
|
raise e
|
||||||
self.end_exp(Recorder.STATUS_FI)
|
self.end_exp(Recorder.STATUS_FI)
|
||||||
|
|
||||||
def start_exp(self, experiment_name=None, recorder_name=None, uri=None, resume=False):
|
def start_exp(
|
||||||
|
self, *, experiment_id=None, experiment_name=None, recorder_id=None, recorder_name=None, uri=None, resume=False
|
||||||
|
):
|
||||||
"""
|
"""
|
||||||
Lower level method for starting an experiment. When use this method, one should end the experiment manually
|
Lower level method for starting an experiment. When use this method, one should end the experiment manually
|
||||||
and the status of the recorder may not be handled properly. Here is the example code:
|
and the status of the recorder may not be handled properly. Here is the example code:
|
||||||
@@ -79,8 +95,12 @@ class QlibRecorder:
|
|||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
experiment_id : str
|
||||||
|
id of the experiment one wants to start.
|
||||||
experiment_name : str
|
experiment_name : str
|
||||||
the name of the experiment to be started
|
the name of the experiment to be started
|
||||||
|
recorder_id : str
|
||||||
|
id of the recorder under the experiment one wants to start.
|
||||||
recorder_name : str
|
recorder_name : str
|
||||||
name of the recorder under the experiment one wants to start.
|
name of the recorder under the experiment one wants to start.
|
||||||
uri : str
|
uri : str
|
||||||
@@ -93,7 +113,14 @@ class QlibRecorder:
|
|||||||
-------
|
-------
|
||||||
An experiment instance being started.
|
An experiment instance being started.
|
||||||
"""
|
"""
|
||||||
return self.exp_manager.start_exp(experiment_name, recorder_name, uri, resume)
|
return self.exp_manager.start_exp(
|
||||||
|
experiment_id=experiment_id,
|
||||||
|
experiment_name=experiment_name,
|
||||||
|
recorder_id=recorder_id,
|
||||||
|
recorder_name=recorder_name,
|
||||||
|
uri=uri,
|
||||||
|
resume=resume,
|
||||||
|
)
|
||||||
|
|
||||||
def end_exp(self, recorder_status=Recorder.STATUS_FI):
|
def end_exp(self, recorder_status=Recorder.STATUS_FI):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -39,12 +39,14 @@ class Experiment:
|
|||||||
output["recorders"] = list(recorders.keys())
|
output["recorders"] = list(recorders.keys())
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def start(self, recorder_name=None, resume=False):
|
def start(self, *, recorder_id=None, recorder_name=None, resume=False):
|
||||||
"""
|
"""
|
||||||
Start the experiment and set it to be active. This method will also start a new recorder.
|
Start the experiment and set it to be active. This method will also start a new recorder.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
recorder_id : str
|
||||||
|
the id of the recorder to be created.
|
||||||
recorder_name : str
|
recorder_name : str
|
||||||
the name of the recorder to be created.
|
the name of the recorder to be created.
|
||||||
resume : bool
|
resume : bool
|
||||||
@@ -238,14 +240,14 @@ class MLflowExperiment(Experiment):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "{name}(id={id}, info={info})".format(name=self.__class__.__name__, id=self.id, info=self.info)
|
return "{name}(id={id}, info={info})".format(name=self.__class__.__name__, id=self.id, info=self.info)
|
||||||
|
|
||||||
def start(self, recorder_name=None, resume=False):
|
def start(self, *, recorder_id=None, recorder_name=None, resume=False):
|
||||||
logger.info(f"Experiment {self.id} starts running ...")
|
logger.info(f"Experiment {self.id} starts running ...")
|
||||||
# Get or create recorder
|
# Get or create recorder
|
||||||
if recorder_name is None:
|
if recorder_name is None:
|
||||||
recorder_name = self._default_rec_name
|
recorder_name = self._default_rec_name
|
||||||
# resume the recorder
|
# resume the recorder
|
||||||
if resume:
|
if resume:
|
||||||
recorder, _ = self._get_or_create_rec(recorder_name=recorder_name)
|
recorder, _ = self._get_or_create_rec(recorder_id=recorder_id, recorder_name=recorder_name)
|
||||||
# create a new recorder
|
# create a new recorder
|
||||||
else:
|
else:
|
||||||
recorder = self.create_recorder(recorder_name)
|
recorder = self.create_recorder(recorder_name)
|
||||||
|
|||||||
@@ -33,7 +33,10 @@ class ExpManager:
|
|||||||
|
|
||||||
def start_exp(
|
def start_exp(
|
||||||
self,
|
self,
|
||||||
|
*,
|
||||||
|
experiment_id: Optional[Text] = None,
|
||||||
experiment_name: Optional[Text] = None,
|
experiment_name: Optional[Text] = None,
|
||||||
|
recorder_id: Optional[Text] = None,
|
||||||
recorder_name: Optional[Text] = None,
|
recorder_name: Optional[Text] = None,
|
||||||
uri: Optional[Text] = None,
|
uri: Optional[Text] = None,
|
||||||
resume: bool = False,
|
resume: bool = False,
|
||||||
@@ -45,8 +48,12 @@ class ExpManager:
|
|||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
experiment_id : str
|
||||||
|
id of the active experiment.
|
||||||
experiment_name : str
|
experiment_name : str
|
||||||
name of the active experiment.
|
name of the active experiment.
|
||||||
|
recorder_id : str
|
||||||
|
id of the recorder to be started.
|
||||||
recorder_name : str
|
recorder_name : str
|
||||||
name of the recorder to be started.
|
name of the recorder to be started.
|
||||||
uri : str
|
uri : str
|
||||||
@@ -298,7 +305,10 @@ class MLflowExpManager(ExpManager):
|
|||||||
|
|
||||||
def start_exp(
|
def start_exp(
|
||||||
self,
|
self,
|
||||||
|
*,
|
||||||
|
experiment_id: Optional[Text] = None,
|
||||||
experiment_name: Optional[Text] = None,
|
experiment_name: Optional[Text] = None,
|
||||||
|
recorder_id: Optional[Text] = None,
|
||||||
recorder_name: Optional[Text] = None,
|
recorder_name: Optional[Text] = None,
|
||||||
uri: Optional[Text] = None,
|
uri: Optional[Text] = None,
|
||||||
resume: bool = False,
|
resume: bool = False,
|
||||||
@@ -308,11 +318,11 @@ class MLflowExpManager(ExpManager):
|
|||||||
# Create experiment
|
# Create experiment
|
||||||
if experiment_name is None:
|
if experiment_name is None:
|
||||||
experiment_name = self._default_exp_name
|
experiment_name = self._default_exp_name
|
||||||
experiment, _ = self._get_or_create_exp(experiment_name=experiment_name)
|
experiment, _ = self._get_or_create_exp(experiment_id=experiment_id, experiment_name=experiment_name)
|
||||||
# Set up active experiment
|
# Set up active experiment
|
||||||
self.active_experiment = experiment
|
self.active_experiment = experiment
|
||||||
# Start the experiment
|
# Start the experiment
|
||||||
self.active_experiment.start(recorder_name, resume)
|
self.active_experiment.start(recorder_id=recorder_id, recorder_name=recorder_name, resume=resume)
|
||||||
|
|
||||||
return self.active_experiment
|
return self.active_experiment
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user