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.
407 lines
21 KiB
Markdown
407 lines
21 KiB
Markdown
# 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](#introduksjon)
|
||
- [Kjernekomponenter](#kjernekomponenter)
|
||
- [Arkitekturmønstre](#arkitekturmønstre)
|
||
- [Beslutningsveiledning](#beslutningsveiledning)
|
||
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
|
||
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
|
||
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
|
||
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
|
||
- [Kilder og verifisering](#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:
|
||
1. Aktiver production inference data collection via model data collector
|
||
2. Azure ML samler automatisk model inputs/outputs
|
||
3. Sett opp model monitor via SDK/CLI eller Studio UI
|
||
4. Spesifiser monitoring signals (data drift, data quality, etc.)
|
||
5. Kjør scheduled monitoring jobs (daglig/ukentlig/månedlig)
|
||
6. Motta alerts når thresholds overskrides
|
||
|
||
**Advanced Monitoring Setup** (Verified — code samples)
|
||
For finkornet kontroll:
|
||
|
||
```python
|
||
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.
|
||
|
||
```python
|
||
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_v3` eller 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)
|
||
1. Opprett UAMI og attach til workspace
|
||
2. Grant UAMI permissions til datastore
|
||
3. 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:
|
||
1. Event Grid emitter "Run status changed" event
|
||
2. Filter på `azureml_modelmonitor_threshold_breached` tag
|
||
3. Trigger automated retraining pipeline (Azure ML pipeline eller Azure DevOps)
|
||
4. 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:**
|
||
1. **Uke 1**: Aktiver data collection for online endpoint (model data collector)
|
||
2. **Uke 2**: Sett opp basic drift monitoring med default settings (out-of-box)
|
||
3. **Uke 3**: Tune thresholds basert på første runs (samarbeid med data scientists)
|
||
4. **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):
|
||
1. Map eksisterende baseline/target datasets til v2 reference/production data
|
||
2. Konverter frequency (Day/Week/Month) til RecurrenceTrigger
|
||
3. Migrer feature_list til MonitorFeatureFilter
|
||
4. Migrer drift_threshold til DataDriftMetricThreshold (velg metric type)
|
||
5. Test side-by-side før cutover (verifiser samme results)
|
||
|
||
**Typical Conversation Flow:**
|
||
1. **Discover**: "Bruker dere ML i prod? Hvordan overvåker dere modellprestasjon?"
|
||
2. **Educate**: "Data drift er en av hovedårsakene til model decay. Azure ML har innebygd drift detection."
|
||
3. **Scope**: "La oss starte med basic setup for én modell, tune thresholds, deretter scale ut."
|
||
4. **Align**: "For offentlig sektor må vi også dokumentere dette for DPIA og AI Act compliance."
|
||
5. **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.
|
||
|