mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-17 01:14:35 +08:00
fix mlflow & task bug
This commit is contained in:
@@ -97,7 +97,7 @@ class ModelFT(Model):
|
|||||||
|
|
||||||
# Finetune model based on previous trained model
|
# Finetune model based on previous trained model
|
||||||
with R.start(experiment_name="finetune model"):
|
with R.start(experiment_name="finetune model"):
|
||||||
recorder = R.get_recorder(rid, experiment_name="init models")
|
recorder = R.get_recorder(recorder_id=rid, experiment_name="init models")
|
||||||
model = recorder.load_object("init_model")
|
model = recorder.load_object("init_model")
|
||||||
model.finetune(dataset, num_boost_round=10)
|
model.finetune(dataset, num_boost_round=10)
|
||||||
|
|
||||||
|
|||||||
@@ -333,7 +333,9 @@ class QlibRecorder:
|
|||||||
"""
|
"""
|
||||||
self.exp_manager.set_uri(uri)
|
self.exp_manager.set_uri(uri)
|
||||||
|
|
||||||
def get_recorder(self, recorder_id=None, recorder_name=None, experiment_name=None) -> Recorder:
|
def get_recorder(
|
||||||
|
self, *, recorder_id=None, recorder_name=None, experiment_id=None, experiment_name=None
|
||||||
|
) -> Recorder:
|
||||||
"""
|
"""
|
||||||
Method for retrieving a recorder.
|
Method for retrieving a recorder.
|
||||||
|
|
||||||
@@ -386,7 +388,7 @@ class QlibRecorder:
|
|||||||
-------
|
-------
|
||||||
A recorder instance.
|
A recorder instance.
|
||||||
"""
|
"""
|
||||||
return self.get_exp(experiment_name=experiment_name, create=False).get_recorder(
|
return self.get_exp(experiment_name=experiment_name, experiment_id=experiment_id, create=False).get_recorder(
|
||||||
recorder_id, recorder_name, create=False, start=False
|
recorder_id, recorder_name, create=False, start=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -352,15 +352,8 @@ class MLflowExpManager(ExpManager):
|
|||||||
), "Please input at least one of experiment/recorder id or name before retrieving experiment/recorder."
|
), "Please input at least one of experiment/recorder id or name before retrieving experiment/recorder."
|
||||||
if experiment_id is not None:
|
if experiment_id is not None:
|
||||||
try:
|
try:
|
||||||
experiment_id = int(experiment_id)
|
# NOTE: the mlflow's experiment_id must be str type...
|
||||||
except ValueError as e:
|
# https://www.mlflow.org/docs/latest/python_api/mlflow.tracking.html#mlflow.tracking.MlflowClient.get_experiment
|
||||||
msg = "The `experiment_id` for mlflow backend must be `int`"
|
|
||||||
logger.error(msg)
|
|
||||||
# We have to raise type error here
|
|
||||||
# - The error looks like type error
|
|
||||||
# - Value Error will be catched
|
|
||||||
raise TypeError(msg)
|
|
||||||
try:
|
|
||||||
exp = self.client.get_experiment(experiment_id)
|
exp = self.client.get_experiment(experiment_id)
|
||||||
if exp.lifecycle_stage.upper() == "DELETED":
|
if exp.lifecycle_stage.upper() == "DELETED":
|
||||||
raise MlflowException("No valid experiment has been found.")
|
raise MlflowException("No valid experiment has been found.")
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ class TaskManager:
|
|||||||
task = self.fetch_task(query=query, status=status)
|
task = self.fetch_task(query=query, status=status)
|
||||||
try:
|
try:
|
||||||
yield task
|
yield task
|
||||||
except Exception:
|
except (Exception, KeyboardInterrupt): # KeyboardInterrupt is not a subclass of Exception
|
||||||
if task is not None:
|
if task is not None:
|
||||||
self.logger.info("Returning task before raising error")
|
self.logger.info("Returning task before raising error")
|
||||||
self.return_task(task, status=status) # return task as the original status
|
self.return_task(task, status=status) # return task as the original status
|
||||||
|
|||||||
Reference in New Issue
Block a user