Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/ infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk (fra første ## seksjon), advisor urørt (0 endringer). To applier-fixes oppdaget under kjøring (TDD, RED→GREEN): - insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer 500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor scan-vinduet, applierens post-write-assertion fanget + restaurerte). - normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i 500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent utvidelse av carve-out; kun stray metadata-linjer, aldri prosa. test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet (fila bærer nå Source). Suite 728/728 grønn.
21 KiB
Data Drift Monitoring and Detection
Last updated: 2026-04 Status: GA Category: MLOps & GenAIOps Type: reference Source: https://learn.microsoft.com/azure/machine-learning/concept-model-monitoring
Innhold
- Introduksjon
- Kjernekomponenter
- Arkitekturmønstre
- Beslutningsveiledning
- Integrasjon med Microsoft-stakken
- Offentlig sektor (Norge)
- Kostnad og lisensiering
- For arkitekten (Cosmo)
- Kilder og verifisering
Introduksjon
Data drift er endringer i statistisk fordeling av modellinput-data over tid som kan føre til forringet modellprestasjon. For machine learning-modeller er kontinuerlig overvåking av data drift avgjørende for å opprettholde produksjonskvalitet. Azure Machine Learning tilbyr innebygd drift detection som sammenligner produksjonsdata mot baseline-datasett (typisk treningsdata eller nylig produksjonsdata) og beregner statistiske avstandsmål.
Data drift oppstår av flere årsaker: upstream prosessendringer (f.eks. sensor byttet ut, endret måleenhet), datakvalitetsproblemer (defekt sensor som alltid leser 0), naturlig drift (temperatur endres med sesong), eller covariate shift (endring i relasjoner mellom features). Uten deteksjon kan drift føre til at modeller blir utdaterte og leverer dårlige prediksjoner i produksjon.
Azure Machine Learning Model Monitoring forenkler drift detection ved å beregne én enkelt metric som abstraherer kompleksiteten i datasett med hundrevis av features og titusener av rader. Når drift detekteres, kan du drille ned til feature-nivå for å identifisere root cause. Dette top-down approach gjør overvåking enklere enn tradisjonelle regelbaserte teknikker som kan være tidkrevende og feilutsatte.
Kjernekomponenter
Monitoring Signals Azure Machine Learning støtter flere overvåkingssignaler som kjøres som scheduled jobs:
- Data drift – sammenligner distribusjon av modell-input mot baseline (training data eller recent production data)
- Prediction drift – sporer endringer i distribusjon av modellens output
- Data quality – overvåker data-integritet (null values, type errors, out-of-bounds rate)
- Feature attribution drift – sporer endringer i feature importance mellom trening og produksjon
- Model performance – objektiv prestasjonsmåling mot ground truth data (krever labeled data)
Drift Detection Metrics (Verified — Azure ML docs) For numeriske features:
- Jensen-Shannon Distance – symmetrisk divergens mellom to sannsynlighetsfordelinger
- Population Stability Index (PSI) – misure endring i distribusjoner
- Normalized Wasserstein Distance – minimum "arbeid" for å transformere baseline til target distribution
- Two-Sample Kolmogorov-Smirnov Test – tester om to samples kommer fra samme fordeling
For kategoriske features:
- Pearson's Chi-Squared Test – tester uavhengighet mellom kategoriske variabler
- Euclidean Distance – beregnet på empiriske fordelinger av kategoriske kolonner
Lookback Windows og Offset (Verified — Azure ML docs)
Lookback window size definerer tidsperiode for produksjonsdata (ISO 8601 format, f.eks. P7D = 7 dager). Lookback window offset forskyvver slutten av datavindu fra kjøretidspunkt (f.eks. P2D for å ekskludere helgedata).
Best practice: Sørg for at reference data window og production data window ikke overlapper. Sett reference offset ≥ production window size + production offset.
Data Quality Metrics (Verified — Azure ML docs)
- Null value rate – andel null-verdier per feature (støtter 0.00001 presisjon)
- Data type error rate – andel verdier som ikke matcher infererred datatype fra reference data (støtter PySpark types: IntegerType, DoubleType, StringType, etc.)
- Out-of-bounds rate – andel verdier utenfor akseptabelt range/set bestemt av reference data (for numerical: [min, max], for categorical: distinct values set)
Azure Event Grid Integration (Verified — Azure ML docs) Model monitoring genererer events som kan trigge workflows via Event Grid. Når drift, datakvalitetsproblemer eller performance degradation detekteres, kan du automatisk starte retraining pipelines eller varslingssystemer.
Arkitekturmønstre
Out-of-Box Monitoring for Online Endpoints (Verified — Azure ML docs) Hvis modellen deployes til Azure Machine Learning online endpoint:
- Aktiver production inference data collection via model data collector
- Azure ML samler automatisk model inputs/outputs
- Sett opp model monitor via SDK/CLI eller Studio UI
- Spesifiser monitoring signals (data drift, data quality, etc.)
- Kjør scheduled monitoring jobs (daglig/ukentlig/månedlig)
- Motta alerts når thresholds overskrides
Advanced Monitoring Setup (Verified — code samples) For finkornet kontroll:
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
DataDriftSignal,
DataQualitySignal,
MonitorFeatureFilter,
NumericalDriftMetrics,
CategoricalDriftMetrics,
DataDriftMetricThreshold,
MonitorSchedule,
ServerlessSparkCompute
)
# Definer data drift signal
features = MonitorFeatureFilter(top_n_feature_importance=20)
metric_thresholds = DataDriftMetricThreshold(
numerical=NumericalDriftMetrics(jensen_shannon_distance=0.01),
categorical=CategoricalDriftMetrics(pearsons_chi_squared_test=0.02)
)
advanced_data_drift = DataDriftSignal(
production_data=production_data,
reference_data=reference_data_training,
features=features,
metric_thresholds=metric_thresholds,
alert_enabled=True
)
# Sett opp monitoring schedule
spark_compute = ServerlessSparkCompute(
instance_type="standard_e4s_v3",
runtime_version="3.3"
)
monitoring_signals = {'data_drift_advanced': advanced_data_drift}
monitor_definition = MonitorDefinition(
compute=spark_compute,
monitoring_signals=monitoring_signals,
alert_notification=AlertNotification(emails=['team@example.com'])
)
recurrence_trigger = RecurrenceTrigger(frequency="day", interval=1)
model_monitor = MonitorSchedule(
name="production_drift_monitor",
trigger=recurrence_trigger,
create_monitor=monitor_definition
)
ml_client.schedules.begin_create_or_update(model_monitor)
Top-N Feature Monitoring (Verified — Azure ML docs) For modeller med mange features: Overvåk kun topp-N viktigste features (basert på feature importance fra training) for å redusere compute cost og monitoring noise.
features = MonitorFeatureFilter(top_n_feature_importance=10)
# eller spesifikk feature-liste:
features = ['feature_A', 'feature_B', 'feature_C']
Custom Monitoring Signals (Baseline) Hvis built-in signals ikke passer: Definer custom monitoring signal component med egne metrics og thresholds. Krever implementering av Spark-basert beregningslogikk.
Legacy Dataset Monitors (v1) → Model Monitor Migration (Verified — Azure ML docs) Azure ML Dataset Monitors (preview, v1 SDK) er deprecated. Migrer til Model Monitor (v2 SDK):
- v1:
DataDriftDetector.create_from_datasets() - v2:
DataDriftSignal+MonitorSchedule
Model Monitor har flere capabilities (multi-signal, feature attribution drift, generative AI metrics).
Beslutningsveiledning
Når bruke data drift monitoring?
- Modellen er deployed til produksjon (online eller batch endpoint)
- Input-data kan endre seg over tid (sesongvariasjoner, skiftende brukeratferd, upstream prosessendringer)
- Modellprestasjon er kritisk for forretningen
- Du har tilgang til baseline-data (training data eller historisk production data)
Valg av baseline-data (Verified — best practices)
- Data drift/quality: Bruk training data som baseline for mer meningsfull sammenligning
- Prediction drift: Bruk validation data eller labeled test data som baseline
- Nylig produksjonsdata: Kan brukes som baseline hvis du vil detektere kortsiktige endringer
Monitoring Frequency (Verified — best practices)
- Daglig: Modell med høy daglig trafikk og rask data-akkumulering
- Ukentlig: Moderat trafikk, ugentlig data-akkumulering tilstrekkelig
- Månedlig: Lav trafikk eller sesongbaserte mønstre
Unngå for hyppig monitoring hvis produksjonsdata-volumet er lavt (statistisk insignifikante resultater).
Alert Threshold-setting (Baseline + Verified) Samarbeid med data scientists som kjenner modellen for å sette riktige thresholds. For høye thresholds = missed drift, for lave = alert fatigue.
Start konservativt (f.eks. Jensen-Shannon distance threshold 0.1 for numerical), juster basert på false positive/negative rates.
Compute Resource Sizing (Baseline) Model monitoring bruker Spark for store datasett. Velg instance type basert på data volum:
standard_e4s_v3: Små til medium datasett (<100K rows/dag)standard_e8s_v3eller høyere: Store datasett (>1M rows/dag)
Multi-Signal Monitoring (Verified — best practices) Kombiner flere signals for bredere dekkning:
- Data drift + Feature attribution drift = tidlig warning om performance issues
- Data quality + Data drift = detekter både strukturelle og distribusjonelle problemer
- Model performance (hvis ground truth tilgjengelig) = objektiv måling
Integrasjon med Microsoft-stakken
Azure Machine Learning Workspace (Verified) Data drift monitoring krever:
- Azure ML workspace (v2 API)
- Compute resources (serverless Spark eller managed compute cluster)
- Datastore for production inference data (Azure Blob Storage eller ADLS Gen2)
- Optional: Application Insights for custom metrics logging
Authentication Options (Verified — Azure ML docs)
- Credential-based: Legg til credentials på datastore
- Credential-less (anbefalt): Bruk User-Assigned Managed Identity (UAMI)
- Opprett UAMI og attach til workspace
- Grant UAMI permissions til datastore
- Sett
systemDatastoresAuthMode = 'identity'
Azure Monitor + Application Insights (Verified) Drift metrics emitteres til Application Insights (tilhører ML workspace). Bruk custom alerting for alle generated metrics.
Azure Event Grid for CI/CD Integration (Verified) Når model monitor detekterer drift og threshold overskrides:
- Event Grid emitter "Run status changed" event
- Filter på
azureml_modelmonitor_threshold_breachedtag - Trigger automated retraining pipeline (Azure ML pipeline eller Azure DevOps)
- Redeploy oppdatert modell
Eksempel Event Grid filter (advanced filter):
- Key:
data.RunTags.azureml_modelmonitor_threshold_breached - Operator:
String contains - Value:
has failed due to one or more features violating metric thresholds
Microsoft Foundry (tidligere Azure AI Studio) (Baseline + Verified) For generative AI workloads: Microsoft Foundry har egen monitoring med observability features og generation quality metrics (groundedness, relevance, fluency). Støtter også drift detection for grounding data i RAG scenarios.
Power BI Dashboards (Baseline) Export drift metrics fra Azure ML til Power BI for executive dashboards. Koble til workspace blob storage (JSON metrics output) eller Application Insights.
Offentlig sektor (Norge)
Krav til sporbarhet (Baseline + Verified) Offentlige virksomheter må kunne dokumentere hvordan AI-modeller oppfører seg over tid (Utredningsinstruksen §14, AI Act Article 12). Data drift monitoring gir:
- Tidsserie-logging av modellprestasjon og input-distribusjon
- Feature-level attribution for å forklare hvilke variabler som endrer seg
- Alert-historikk som viser når modellen ble degradert
DPIA-relevans (Baseline) Data Protection Impact Assessment (DPIA) krever kontinuerlig risikovurdering. Data drift kan indikere:
- Endringer i populasjonssammensetning (potensielt bias)
- Datakvalitetsproblemer som kan føre til feilaktige beslutninger
- Covariate shift som kan diskriminere mot underrepresenterte grupper
Dokumenter drift detection som del av "tiltak for å sikre rettmessighet" (GDPR Article 35).
AI Act Conformity Assessment (Baseline + Verified) AI Act krever risk management system for høyrisiko-AI (Article 9). Data drift monitoring er del av "technical and organizational measures" for å sikre accuracy, robustness, cybersecurity.
Spesifikt for offentlig sektor (høyrisiko use cases):
- Logg alle drift detection runs og alert events
- Etabler prosedyre for respons på drift alerts (retraining, model decommissioning)
- Dokumenter baseline-data valg og threshold-setting i teknisk dokumentasjon
NSM Grunnprinsipper for IKT-sikkerhet (Baseline) Prinsipp 2.1 (Kjenne seg selv) og 2.2 (Identifisere og kartlegge): Data drift monitoring gir innsikt i hvordan datagrunnlaget utvikler seg, kritisk for å vurdere om modellen fortsatt er egnet for formålet.
Digdir sine anbefalinger (Baseline) Kunstig intelligens og automatisering i offentlig sektor (veileder): "Systemer må overvåkes kontinuerlig for å sikre at de fungerer som forventet." Data drift monitoring oppfyller dette kravet.
Kostnad og lisensiering
Compute Costs (Baseline + Verified) Data drift monitoring kjører på Spark compute. Kostnader beregnes per monitoring job run:
-
Serverless Spark (anbefalt for starte):
standard_e4s_v3: ~100-150 NOK/time (4 cores, 32 GB RAM)standard_e8s_v3: ~200-300 NOK/time (8 cores, 64 GB RAM)- Kun betaler for job runtime (typisk 5-20 minutter per run)
-
Managed Compute Cluster (for store volumer):
- Samme instans-priser, men kan holdes online (idle cost)
- Anbefales kun hvis du kjører mange concurrent monitoring jobs
Daglig Drift Monitor (estimat):
- 1 daily job, 10 minutter runtime på
standard_e4s_v3: ~2-3 NOK/dag = ~60-90 NOK/måned - 1 hourly job, 10 minutter runtime: ~120-180 NOK/måned
Storage Costs (Baseline) Production inference data lagres i Azure Blob Storage eller ADLS Gen2:
- Inference data: ~0.15 NOK/GB/måned (hot tier)
- Drift metrics output (JSON): neglisjerbar (<1 MB per run)
Eksempel (medium-size deployment):
- 1M predictions/dag, 10 KB per record = ~10 GB/dag = ~300 GB/måned
- Storage: 300 GB × 0.15 NOK = 45 NOK/måned
- Daily monitoring (10 min/dag): 90 NOK/måned
- Total: ~135 NOK/måned
Application Insights Costs (Baseline) Metrics logging til App Insights: ~0.5 NOK/GB ingestion. Drift monitoring genererer minimal telemetry (<100 MB/måned for typical setup).
Lisensiering (Verified) Data drift monitoring er inkludert i Azure Machine Learning (ingen separat lisens):
- Krever Azure ML workspace (ingen cost for workspace selv)
- Compute og storage faktureres separat (consumption-based)
Cost Optimization Tips (Baseline)
- Bruk top-N feature monitoring istedenfor alle features
- Juster monitoring frequency basert på data growth rate
- Bruk lookback windows strategisk (ikke prosesser mer data enn nødvendig)
- Cleanup gamle inference data (retention policy)
- Bruk serverless Spark (kun betaler for runtime, ikke idle)
For arkitekten (Cosmo)
Når anbefale data drift monitoring:
- Alltid for production-deployed ML models (high-impact decisions)
- Spesielt kritisk: Finance (fraud detection), Healthcare (diagnostics), Public sector (benefit eligibility)
- Påkrevd hvis modellen brukes i automated decision-making (AI Act høyrisiko)
Implementeringsrekkefølge:
- Uke 1: Aktiver data collection for online endpoint (model data collector)
- Uke 2: Sett opp basic drift monitoring med default settings (out-of-box)
- Uke 3: Tune thresholds basert på første runs (samarbeid med data scientists)
- Uke 4: Integrer med Event Grid for automated retraining workflows
Arkitekturvalg:
| Scenario | Anbefaling |
|---|---|
| Ny modell i prod | Start med out-of-box monitoring (data drift + data quality) |
| Modell med mange features (>100) | Bruk top-N feature importance filter |
| Kritisk modell (finance, healthcare) | Multi-signal monitoring (drift + attribution + performance) |
| Høy trafikk (>1M/dag) | Daglig monitoring med serverless Spark e8s_v3 |
| Lav trafikk (<10K/dag) | Ukentlig monitoring med serverless Spark e4s_v3 |
| Ground truth tilgjengelig | Legg til model performance signal (objektiv måling) |
| Generative AI (RAG) | Bruk Microsoft Foundry monitoring (groundedness, relevance) |
Fallgruver å unngå:
- ❌ Ikke start monitoring uten å definere baseline-data (training data vs. recent production)
- ❌ Ikke sett thresholds uten data scientist input (risiko for alert fatigue eller missed drift)
- ❌ Ikke ignorer lookback window overlap (kan gi misleading results)
- ❌ Ikke bruk MLTable med Spark-based monitoring (limited support, bruk Spark API direkte)
- ❌ Ikke glem å sette opp response workflow (drift detection uten action er meningsløst)
Integrasjon med andre MLOps-komponenter:
- CI/CD pipeline: Event Grid → Azure DevOps → Automated retraining
- Model registry: Link drift alerts til model version (traceability)
- Experiment tracking: Logg drift metrics sammen med training metrics (MLflow)
- A/B testing: Bruk drift detection for å validere champion/challenger models
Offentlig sektor spesifikt:
- Dokumenter drift monitoring setup i teknisk dokumentasjon (AI Act krav)
- Etabler eskalasjonsprosedyre for kritiske drift alerts (hvem bestemmer om modell skal decommissioned?)
- Logg alle monitoring runs for audit trail (minimum 5 år retention for offentlig sektor)
- Inkluder drift metrics i årlig AI-system review (internal governance)
Migration fra v1 Dataset Monitors:
Hvis kunden bruker legacy DataDriftDetector (azureml-datadrift SDK):
- Map eksisterende baseline/target datasets til v2 reference/production data
- Konverter frequency (Day/Week/Month) til RecurrenceTrigger
- Migrer feature_list til MonitorFeatureFilter
- Migrer drift_threshold til DataDriftMetricThreshold (velg metric type)
- Test side-by-side før cutover (verifiser samme results)
Typical Conversation Flow:
- Discover: "Bruker dere ML i prod? Hvordan overvåker dere modellprestasjon?"
- Educate: "Data drift er en av hovedårsakene til model decay. Azure ML har innebygd drift detection."
- Scope: "La oss starte med basic setup for én modell, tune thresholds, deretter scale ut."
- Align: "For offentlig sektor må vi også dokumentere dette for DPIA og AI Act compliance."
- Deliver: "Jeg setter opp monitoring, dere definerer response workflow sammen med data scientists."
Red Flags (når advare):
- Kunde ønsker å monitore 1000+ features real-time (cost explosion, bruk sampling)
- Ingen plan for hva som skal skje når drift detekteres (monitoring uten action)
- Forventer 100% accuracy i drift detection (statistiske metoder har usikkerhet)
- Vil bruke monitoring på modeller uten production traffic (ingen data å monitore)
Kilder og verifisering
Verified (Microsoft Learn MCP, 2026-04):
- Azure Machine Learning model monitoring concept: https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-monitoring?view=azureml-api-2
- Monitor model performance in production: https://learn.microsoft.com/en-us/azure/machine-learning/how-to-monitor-model-performance?view=azureml-api-2
- Data drift (v1, deprecated): https://learn.microsoft.com/en-us/azure/machine-learning/how-to-monitor-datasets?view=azureml-api-1
- Python SDK examples (azure.ai.ml): Code samples verified via microsoft_code_sample_search
- Event Grid integration: https://learn.microsoft.com/en-us/azure/machine-learning/how-to-use-event-grid?view=azureml-api-2
Baseline (Model knowledge, januar 2025):
- Cost estimates (Spark compute pricing)
- Public sector compliance mapping (AI Act, DPIA, NSM)
- Custom monitoring signals implementation patterns
- Power BI integration for drift dashboards
- Migration patterns fra v1 til v2 API
MCP Calls: 5 (3 × microsoft_docs_search, 1 × microsoft_docs_fetch, 1 × microsoft_code_sample_search) Unique Sources: 12 Microsoft Learn URLs
Azure ML Model Monitoring — Data Drift Detection (2026) — Verified (MCP 2026-04)
Model monitoring signals (out-of-box for online endpoints):
| Signal | What it detects |
|---|---|
| Data quality | Null values, out-of-range values, type mismatches in input features |
| Data drift | Statistical distribution change: training data vs production data |
| Prediction drift | Distribution shift in model output predictions |
| Feature attribution drift | Changes in which features drive predictions |
| Custom signals | User-defined metrics via Python scripts |
Setup options:
- Out-of-box: Automatically configured for Azure ML online endpoints (no configuration required)
- Advanced: Custom monitoring for models deployed outside Azure ML (batch endpoints, external)
- Azure Event Grid integration: Route monitoring alerts for automated response
Statistical methods used:
- Jensen-Shannon divergence for categorical features
- Wasserstein distance (Earth Mover's Distance) for numerical features
- Population Stability Index (PSI) for feature stability
Reference dataset: Training dataset used as baseline; monitoring compares production distribution against it.
Alerting: Configure thresholds per signal; integrate with Azure Monitor alerts and Action Groups.