SIENTIAPDE-1273

Implement drift monitoring configuration and update formatters to support drift workflows. Add drift function to orchestrator utilities and enhance tests for drift functionality.
This commit is contained in:
vitor-aignosi
2025-11-14 09:22:24 -03:00
parent b45aa33188
commit c9b5e98726
5 changed files with 2115 additions and 6 deletions

View File

@@ -19,6 +19,7 @@ with workflow.unsafe.imports_passed_through():
minimal_retrain,
predictions_batch,
scouter,
drift,
)
topic_separator = '\n ========== \n'
@@ -34,7 +35,7 @@ class Formatters(SientiaMonitoring):
scheduled reports.
Key features:
- Pipeline schedule configuration formatting ("scouter", "predictions_batch", "minimal_retrain")
- Pipeline schedule configuration formatting ("scouter", "predictions_batch", "minimal_retrain", "drift")
- OPC slot distribution across active ingestors
- Notification filtering for comprehensive scheduled reports
- Group-based report filtering with ignore list support
@@ -132,6 +133,13 @@ class Formatters(SientiaMonitoring):
'updated_at', now().strftime(DATETIME_FORMAT_MS_WITH_TZ)
),
}
elif pipeline['workflow_type'] == 'drift':
schedule_config[self.laborious_namespace][pipeline['schedule_name']] = {
**drift(pipeline),
'updated_at': pipeline.get(
'updated_at', now().strftime(DATETIME_FORMAT_MS_WITH_TZ)
),
}
self.info('Processed schedules', metadata=metadata)
self.debug(json.dumps(schedule_config, indent=4, sort_keys=True), metadata=metadata)

View File

@@ -32,6 +32,25 @@ def common_config(config: dict[str, Any]):
}
def drift(config: dict[str, Any]):
"""
Build drift configuration from pipeline config.
"""
model = config['model']
return {
**common_config(config),
'schema': 'sientia_data',
'source_table_name': 'laborious_data',
'target_table_name': 'drift_metrics',
'interval': config.get('interval_minutes', 60),
'drift_metrics': config.get('drift_metrics', [
"kolmogorov_smirnov",
"jensen_shannon",
"wasserstein"
])
}
def minimal_retrain(config: dict[str, Any]):
"""
Build minimal retrain configuration from pipeline config.
@@ -47,8 +66,6 @@ def minimal_retrain(config: dict[str, Any]):
"""
return {
**common_config(config),
'workflow_type': 'minimal_retrain',
'schedule_name': config['schedule_name'],
'query': config['query'],
'schema': 'sientia_data',
'table_name': 'log_retrain',