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.
This commit is contained in:
vitor-aignosi
2026-01-15 10:55:48 -03:00
parent 966d4f8193
commit 6a69687fd5
2 changed files with 12 additions and 6 deletions

View File

@@ -157,8 +157,8 @@ class MLFlow(SientiaMonitoring):
data.columns.name = None data.columns.name = None
data.index.name = None data.index.name = None
self.debug('Processed input data:', metadata) self.debug(f'Processed input data: \n {data.to_csv()}', metadata)
self.debug(data.head(5).to_string(), metadata)
# Request transformation from MLFlow model # Request transformation from MLFlow model
response_data = await self.model_monitoring_repository.transform( response_data = await self.model_monitoring_repository.transform(

View File

@@ -752,6 +752,7 @@ class MLFlowRepository(SientiaMonitoring):
latest_production_id: str, latest_production_id: str,
metadata: dict, metadata: dict,
transform_flavor: str = 'sklearn', transform_flavor: str = 'sklearn',
skip_transform: bool = False,
predict_flavor: str = 'sklearn', predict_flavor: str = 'sklearn',
target_name: str | None = None, target_name: str | None = None,
) -> dict[str, Any]: ) -> dict[str, Any]:
@@ -812,7 +813,10 @@ class MLFlowRepository(SientiaMonitoring):
load_wrapper=load_predict_wrapper, 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): if not isinstance(treated_data_candidate, pd.DataFrame):
data_model = treated_data_candidate data_model = treated_data_candidate
@@ -1164,7 +1168,7 @@ class MLFlowRepository(SientiaMonitoring):
and returned in the response structure rather than propagated. 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( # data.to_csv(
# f"tmp/data_{model_name}.csv", index=True) # f"tmp/data_{model_name}.csv", index=True)
@@ -1250,7 +1254,7 @@ class MLFlowRepository(SientiaMonitoring):
input_index = data.index input_index = data.index
start_time = datetime.now() 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( # data.to_csv(
# f"tmp/treated_data_{model_name}.csv", index=True) # f"tmp/treated_data_{model_name}.csv", index=True)
@@ -1268,7 +1272,7 @@ class MLFlowRepository(SientiaMonitoring):
if isinstance(predict_data, pd.DataFrame): if isinstance(predict_data, pd.DataFrame):
self.debug( 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( # predict_data.to_csv(
@@ -1343,6 +1347,7 @@ class MLFlowRepository(SientiaMonitoring):
transform_flavor = model_config.get('transform_flavor', 'sklearn') transform_flavor = model_config.get('transform_flavor', 'sklearn')
predict_flavor = model_config.get('predict_flavor', 'sklearn') predict_flavor = model_config.get('predict_flavor', 'sklearn')
skip_transform = model_config.get('skip_transform', False)
self.debug( self.debug(
f'Model configuration - transform_flavor: {transform_flavor}, predict_flavor: {predict_flavor}, target_name: {target_name}', 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, model_name=model_name,
data=data, data=data,
transform_flavor=transform_flavor, transform_flavor=transform_flavor,
skip_transform=skip_transform,
predict_flavor=predict_flavor, predict_flavor=predict_flavor,
target_name=target_name, target_name=target_name,
metadata=metadata, metadata=metadata,