From 6a69687fd51c595c3c66e45d01b0cfa35bab5163 Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Thu, 15 Jan 2026 10:55:48 -0300 Subject: [PATCH] SIENTIAPDE-1478 Enhance MLFlow logging and add skip_transform option in MLFlowRepository - Updated logging in mlflow.py to output processed input data as CSV. - Introduced skip_transform parameter in MLFlowRepository to conditionally bypass data transformation. - Improved logging in model_repository.py to display data in a more structured format (to_dict) for predictions and transformations. --- laborious/activities/mlflow.py | 4 ++-- laborious/utils/repository/model_repository.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/laborious/activities/mlflow.py b/laborious/activities/mlflow.py index 1847ff1..4a51d5e 100644 --- a/laborious/activities/mlflow.py +++ b/laborious/activities/mlflow.py @@ -157,8 +157,8 @@ class MLFlow(SientiaMonitoring): data.columns.name = None data.index.name = None - self.debug('Processed input data:', metadata) - self.debug(data.head(5).to_string(), metadata) + self.debug(f'Processed input data: \n {data.to_csv()}', metadata) + # Request transformation from MLFlow model response_data = await self.model_monitoring_repository.transform( diff --git a/laborious/utils/repository/model_repository.py b/laborious/utils/repository/model_repository.py index eaab16c..84bbbf0 100644 --- a/laborious/utils/repository/model_repository.py +++ b/laborious/utils/repository/model_repository.py @@ -752,6 +752,7 @@ class MLFlowRepository(SientiaMonitoring): latest_production_id: str, metadata: dict, transform_flavor: str = 'sklearn', + skip_transform: bool = False, predict_flavor: str = 'sklearn', target_name: str | None = None, ) -> dict[str, Any]: @@ -812,7 +813,10 @@ class MLFlowRepository(SientiaMonitoring): load_wrapper=load_predict_wrapper, ) - treated_data_candidate = data_model.fit(data) + if not skip_transform: + treated_data_candidate = data_model.fit(data) + else: + treated_data_candidate = data_model if not isinstance(treated_data_candidate, pd.DataFrame): data_model = treated_data_candidate @@ -1164,7 +1168,7 @@ class MLFlowRepository(SientiaMonitoring): and returned in the response structure rather than propagated. """ - self.debug(f'Data received for model transformation: {data.head(5).to_csv()}', metadata) + self.debug(f'Data received for model transformation: {data.to_csv()}', metadata) # data.to_csv( # f"tmp/data_{model_name}.csv", index=True) @@ -1250,7 +1254,7 @@ class MLFlowRepository(SientiaMonitoring): input_index = data.index start_time = datetime.now() - self.debug(f'Data received for model prediction: {data.head(5).to_csv()}', metadata) + self.debug(f'Data received for model prediction: {data.to_dict(orient="records")}', metadata) # data.to_csv( # f"tmp/treated_data_{model_name}.csv", index=True) @@ -1268,7 +1272,7 @@ class MLFlowRepository(SientiaMonitoring): if isinstance(predict_data, pd.DataFrame): self.debug( - f'Data received from model prediction: {data.head(5).to_csv()}', metadata + f'Data received from model prediction: {predict_data.to_dict(orient="records")}', metadata ) # predict_data.to_csv( @@ -1343,6 +1347,7 @@ class MLFlowRepository(SientiaMonitoring): transform_flavor = model_config.get('transform_flavor', 'sklearn') predict_flavor = model_config.get('predict_flavor', 'sklearn') + skip_transform = model_config.get('skip_transform', False) self.debug( f'Model configuration - transform_flavor: {transform_flavor}, predict_flavor: {predict_flavor}, target_name: {target_name}', @@ -1356,6 +1361,7 @@ class MLFlowRepository(SientiaMonitoring): model_name=model_name, data=data, transform_flavor=transform_flavor, + skip_transform=skip_transform, predict_flavor=predict_flavor, target_name=target_name, metadata=metadata,