diff --git a/model_manager/activities/training.py b/model_manager/activities/training.py index 30c70a0..12302e5 100644 --- a/model_manager/activities/training.py +++ b/model_manager/activities/training.py @@ -283,17 +283,17 @@ class Training(SientiaMonitoring): self.info(f'Starting MLflow run for {train_params.model_type}', metadata) with self.mlflow_repository.start_run( model_name=train_params.model_name, - run_name=None, - experiment_name=f'{train_params.model_name}_experiment', + run_name=train_result.run_name, + experiment_name=train_result.experiment_name, tags=None, metadata=metadata, ) as run_info: - train_result.run_name = run_info.run_name train_result.run_id = run_info.run_id self._persist_training_artifacts(train_result, train_params, wrapper, metadata) return { 'run_name': train_result.run_name, + 'experiment_name': train_result.experiment_name, 'run_id': train_result.run_id, 'run_dir': train_result.run_dir, } diff --git a/model_manager/utils/models/train_model_result.py b/model_manager/utils/models/train_model_result.py index 98edc56..e89183f 100644 --- a/model_manager/utils/models/train_model_result.py +++ b/model_manager/utils/models/train_model_result.py @@ -44,6 +44,7 @@ class TrainModelResult: equation: dict | None = None equation_path: str | None = None run_name: str | None = None + experiment_name: str | None = None run_id: str | None = None report_path: str | None = None train_data_path: str | None = None diff --git a/model_manager/utils/repository/data_manager_repository.py b/model_manager/utils/repository/data_manager_repository.py index 73c46bc..2f6f387 100644 --- a/model_manager/utils/repository/data_manager_repository.py +++ b/model_manager/utils/repository/data_manager_repository.py @@ -20,6 +20,7 @@ from os import makedirs, path from shutil import rmtree from typing import Any +from mlflow.entities import experiment import numpy as np import pandas as pd from sientia_do.observability.logger import Logger @@ -200,9 +201,10 @@ class DataManagerRepository(SientiaMonitoring): metadata, ) - run_name = f'train_model_{params.model_type}_{params.model_name}_{params.experiment_run_id}' + experiment_name = f'train_model_{params.model_type}_{params.model_name}_{params.experiment_run_id}' + run_name = f'{experiment_name}_{datetime.now().strftime("%Y%m%d_%H%M%S")}' - return TrainModelResult(params=params, train_data=train_data, val_data=val_data, run_name=run_name) + return TrainModelResult(params=params, train_data=train_data, val_data=val_data, run_name=run_name, experiment_name=experiment_name) def _as_series(self, pred: pd.DataFrame | pd.Series) -> pd.Series: if isinstance(pred, pd.Series):