Snilld

Undgå train-and-forget med SageMaker AI og MLflow

AWS viser en praktisk vej til at fange data- og modeldrift tidligt ved at kombinere Evidently, Amazon SageMaker AI og MLflow. For danske datateams betyder det en konkret opskrift på overvågning i produktion, før fejlen bliver forretningskritisk.

8. juli 2026 Peter Munkholm

Maskinlæringsmodeller mister pusten hurtigere, end mange regner med. AWS skriver: “The effectiveness and accuracy of machine learning (ML) models decreases almost as soon as the training job finishes” [kilde: https://aws.amazon.com/blogs/machine-learning/monitoring-discriminative-ml-models-using-amazon-sagemaker-ai-with-mlflow/]. Det ses i driften: forbrugeradfærd ændrer sig, produktkataloger skifter, sensorer opgraderes, og makroforhold flytter sig.

Budskabet i AWS’ gennemgang er praktisk: byg overvågning ind som en fast del af MLOps. Kombinér Evidently til målinger, SageMaker AI til træning/afvikling og MLflow til sporbarhed og visning. Så kan ændringer opdages, før de koster konvertering, SLA-point eller kundetillid [kilde: samme URL].

Modeller bliver forældede hurtigere end komfortabelt

Hvor hurtigt falder kvaliteten? AWS’ formulering ovenfor er tydelig, og den ledsages af årsager som ændret forbrugeradfærd, nye produkter, sensoropgraderinger og skift i økonomi/politik, der ændrer de mønstre, modellen lærte ved træning [kilde: samme URL]. Det er daglig drift: et nyt betalingsflow kan flytte klikmønstre fra én dag til den næste.

Det meste ligger uden for dataholdets kontrol. Når kilden ændrer sig, bliver “train-and-forget” en blind vinkel. Overvågning af både input og performance er derfor en nødvendig del af produktionen.

Hænder flytter en blå plastkasse over på en smal hylde i et lille varehus, med transportbane og rullebure i baggrunden, cyan og grønne markeringer antyder sampling-rytme

Data drift vs. model drift i praksis

Data drift er ændringer i de statistiske egenskaber ved inputdata. Det kan være alt fra små type-skift (int til float) til store ændringer som nye produktlinjer [kilde: AWS, URL ovenfor]. Det måles ved at sammenligne baseline-statistikker fra træningsdatasættet med tilsvarende statistik på produktionsdata over tid.

Model drift er, når forudsigelseskvaliteten ændrer sig, fordi sandsynlighedsmønstrene fra træningen ikke længere passer til de indkomne data. Det måles ved at indsamle ground-truth labels i produktion, udregne kvalitetstal (f.eks. accuracy/AUC) og sammenligne med tallene fra træningen [kilde: AWS, URL ovenfor]. De to typer drift siger ikke det samme: den ene handler om input, den anden om output.

Hvad måler man helt konkret

For data: fordeling af features (middel, varians, kvantiler), kategori-frekvenser, manglende værdier, type-afvigelser. For modellen: accuracy, AUC, F1, log-loss, calibration. PSI (Population Stability Index) bruges mange steder som en drift-indikator, men den nævnes ikke eksplicit i AWS-kilden; brug den derfor først efter intern validering af grænser og følsomhed.

Baseline skabes ved træning. I produktion udtages samples i faste intervaller (time, dag, uge), hvorefter statistikker beregnes og holdes op mod baseline. Derfra sættes enkle alarmer: hvis fordelingen skifter væsentligt, eller performance falder markant, sendes en notifikation til det rigtige team.

Banner

Arkitekturen AWS foreslår

Set fra oven: Amazon SageMaker AI som fuldt styret ML-platform til træning og deployment; MLflow til modelsporing, versioner og visualisering; og Evidently som open source-bibliotek til data- og kvalitetsmålinger. AWS’ eksempel kører som en batch-inference workflow med lagring i S3, behandling i SageMaker Processing og visning/alarmering via MLflow og Slack [kilde: AWS, URL ovenfor].

Værd at bemærke: Evidently beregner modelmetrikker, men sammenligner ikke automatisk mod træningens tal for at erklære “model drift”. Den logik ligger i jeres egen processing-kode, som henter træningsbaseline og produktionsmålinger og afgør, om ændringerne er signifikante [kilde: AWS, URL ovenfor].

Nærbillede af en håndscanner på en slidt arbejdsjakke på en rullevogn, med ridser og støv tydeligt, skærmen vender væk

Sådan hænger komponenterne sammen

Træning i SageMaker AI på data i S3. Samme job logger metrikker til MLflow og gemmer et baseline-udtræk i S3. Ved batch-inference i produktion (SageMaker Batch Transform) lander resultater og input i S3. Et SageMaker Processing-job kører Evidently-presets på de nyeste batches og udregner data-statistikker og modelmetrikker.

Resultatet skubbes til MLflow for visualisering. Ved afvigelser går en notifikation i Slack. Derfra vælger man manuelt review eller en retræningspipeline. Rækkefølgen er: opdag, forklar, handle [kilde: AWS, URL ovenfor].

Fra plan til praksis i fem trin

Først: beregn baseline ved træning. Frys et datasætudtræk i S3, og log feature-statistikker samt modelmetrikker til MLflow. Versionér schema og datatyper, så sammenligning er robust.

Dernæst: vælg en sampling-kadence i produktion. Timevis for systemer med hurtig drift, dagligt eller ugentligt, hvor data ændrer sig langsommere. Batch er ofte passende til anbefalinger, kreditregler eller partnerrapporter. Realtid er dyrere og mere komplekst.

Det tredje trin er selve analysen

Kør Evidently på produktionens samples, gem målingerne, og byg en enkel sammenligningslogik: forskel i middel/varians, KL-divergens for kontinuerte features, andelsændringer for kategorier. Tilføj performance-sammenligning, når ground-truth foreligger. Det kræver tålmodighed, hvor labels først kommer efter dage eller uger.

Fjerde trin: alarmlogik og støjreduktion. Start simpelt. Én regel for datadrift og én for modellens performance. Undgå daglige støjalarmer. Brug hysterese og “N på hinanden følgende samples”-betingelser, før alarmen går videre til driftsteamet.

Luftigt kvadratisk blik over et lille industrikvarter, én rute ser fri ud og en anden delvist blokeret, med cyan/grønne refleksmarkeringer i skumringslys

Til sidst: beslutning og handling

Ved alarm: vælg mellem manuelt review, rollback til forrige modelversion eller auto-retrain. Auto-retrain kræver klar governance og tests; ellers risikerer man at forstærke fejl. Hav også SLA’er for re-deployment og rollback-veje, så I ikke blokeres af release-vinduer.

Latency og omkostninger er tradeoffs. Hyppige checks giver hurtigere opdagelse, men koster compute, lagring og udviklertid. For mange brugerrejser er batch fint, så længe man ikke overser hurtige skift ved kampagner eller prisændringer.

Roller, ansvar og KPI’er

Organisatorisk kræver overvågning tydeligt ejerskab. Data/MLOps konfigurerer pipelines og alarmer. SRE/observability kobler det på eksisterende alerting (Prometheus, Grafana, Slack/Teams). Forretningsansvarlige beslutter rollback, sandkassetest eller retræning.

Banner

KPI’er skal være både tekniske og forretningsnære: accuracy/AUC, F1, drift-rate over tid, PSI eller lignende for distributions-skift (valider grænser internt), label-latency og downstream KPI’er som afvisningsrate, konvertering eller nedskrivninger i kreditmodeller.

Begrænsninger og faldgruber

Labels er ofte den største hæmsko. Uden dem kan modeldrift kun vurderes indirekte via inputdrift, som ikke altid korrelerer med performance. AWS beskriver metoden tydeligt, men ikke specifikke tærskler eller domæneskabeloner [kilde: AWS, URL ovenfor]. Valg af thresholds må kalibreres pr. use case.

Falske positiver forekommer. Små fordelingsændringer kan udløse alarmer uden forretningsbetydning. Sæt regler med buffer, brug robuste mål, og aggregér over flere kørsler. Omkostninger er den anden faktor: flere jobs, mere lagring, mere kode. Det skal vejes op mod risikoen ved blinde pletter. Det fremgår ikke talfast i kilden og må estimeres pr. setup.

Batch nu, realtime senere

AWS’ eksempel viser batch-inference og Slack-alerting. Realtime kræver typisk streams (Kinesis, Kafka) og low-latency feature-stores. Kilden dækker ikke dette i dybden; det er en naturlig udbygning, men også et løft i kompleksitet, drift og omkostning. Indfør det trinvis.

Der er også alternativer. WhyLabs, Arize, Fiddler og andre tilbyder observability-platforme. AWS vælger Evidently i eksemplet, fordi det er åbent og let at indlejre. Valget bør styres af krav til dataejerskab, features, pris og integrationer i jeres stack.

Sikkerhed, compliance og bias

Overvågning er ikke kun teknik. I regulerede brancher kræves sporbarhed: hvilke data, hvilken modelversion, hvilket resultat, og hvilken beslutning. MLflow og S3-versionering hjælper med revisionsspor. Alertinglogs bør gemmes, ikke kun sendes i chat.

Fairness og bias-metrikker hører med. Segmentér performance pr. relevante grupper, mål forskelle i fejlrate og calibration. Kilden nævner generelt monitorering, men ikke konkrete fairness-mål [kilde: AWS, URL ovenfor]. Valg af metode er et organisationsansvar og kræver datagrundlag, governance og en fastlagt review-proces.

Hvad betyder det for arbejdet i morgen

Praktisk: definér dataformat og versionering. Sæt MLflow op til model- og metrics-tracking. Kør Evidently i et SageMaker Processing-job med adgang til både træningsbaseline og produktionens batches. Integrér med eksisterende observability.

Etabler en enkel alarmpolitik: få, stabile tal på ét dashboard. Én ansvarlig for triage. Én beslutningssti. Klart og gentageligt slår kreativt og uforudsigeligt i drift.

Anbefalinger og åbne spørgsmål

Start med batch. Etabler baseline og sammenligningslogik. Vælg et lille sæt metrikker, og valider thresholds på historiske data. Aftal label-SLA’er og processer for, hvornår retræning må udløses automatisk. Brug MLflow til at koble metrikker til versioner, så rollback er en knap, ikke en roman.

Åbne spørgsmål efter AWS’ udgivelse: Hvilke tærskler er rimelige pr. domæne? Hvad koster daglig vs. timebaseret driftkontrol i praksis? Hvornår giver realtime mening frem for batch? Kilden giver arkitektur og metode, men ikke tal. Resten afhænger af data, risikotolerance og budget [kilde: AWS, URL ovenfor].

Roadmap i grov skitse

  • Uge 1–2: Standardiser data- og schema-versionering; opsæt MLflow tracking af træningsmetrikker og modelartefakter.
  • Uge 3–4: Implementér SageMaker Processing-job med Evidently; beregn baseline og første produktionsmålinger.
  • Uge 5: Byg simpel alarmpipeline til Slack/Teams; integrér med eksisterende observability.
  • Uge 6–8: Kalibrér thresholds mod historik; etabler retræningspipeline og rollback-procedurer.
  • Senere: Udvid med fairness-segmentering, streaming og mere avanceret drift-detektion, hvis behovet er bevist.

En sidste observation: Det er fristende at skrue op for metrikker og dashboards, fordi det føles som handling. Ofte bliver det til støj. Få målinger, faste tider, klare roller. Man mærker forskellen, når det kører i praksis.

Kilder

    Gør brugeroplevelsen bedre.
    Hvilket firma arbejder du for?