Das Modell beginnt an der Datengrenze
Ein produktiver ML-Workflow ist mehr als Modellcode. Datenabhängigkeiten, Konfiguration, Glue Code, unbekannte Konsumenten und Feedback Loops können stille technische Schulden erzeugen.[1] Deshalb definiere ich vor SQL oder Features einen Datenvertrag: Einheit, Schlüssel, Ereigniszeit, Verfügbarkeit zum Prognosezeitpunkt, Typ, zulässiger Bereich, Missingness-Semantik, Eigentümer, Retention und Änderungsprozess.
| Grenze | Prüfbare Frage | Typischer Fehler |
|---|---|---|
| Körnung | Ist eine Zeile Person, Dokument, Vorgang oder Ereignis? | Many-to-many-Join vervielfacht Labels. |
| Zeit | Wann entstand das Feld, wann war es verfügbar? | Späterer Prozessstatus leakt in Training. |
| Semantik | Heißt NULL unbekannt, nicht anwendbar oder noch nicht eingetroffen? | Imputation kaschiert Prozessänderung. |
| Vertrag | Welche Schema-, Bereichs- und Verteilungsgrenzen blockieren? | Spaltenänderung läuft still durch. |
SQL-Entwurf: erst Körnung, dann Join
WITH base AS (
SELECT entity_id, event_time, label
FROM outcomes
WHERE event_time < :cutoff
), features AS (
SELECT entity_id, MAX(value) AS value_before_cutoff
FROM events
WHERE observed_at < :cutoff
GROUP BY entity_id
)
SELECT b.entity_id, b.label, f.value_before_cutoff
FROM base b LEFT JOIN features f USING (entity_id);Geprüfte Join-Rechnung: Hat base 100 eindeutige Schlüssel und der Join 107 Zeilen, ist die Multiplikationsrate 107/100=1,07. Das ist kein akzeptabler Zufall, sondern ein zu erklärender Grain-Verstoß. Tests prüfen vor und nach dem Join Eindeutigkeit, Zeilenzahl, Nullanteile, Zeitgrenzen und Labelrate.
Reproduzierbare Pipeline
- Ingest: unveränderliche Rohreferenz, Schema und Herkunft erfassen.
- Validate: Vertrag, Keys, Zeit, Wertebereiche und sensible Felder prüfen.
- Transform: idempotente, versionierte Logik; gleiche Definition für Training und Inferenz.
- Split: Einheit und Zeit vor lernenden Transformationen trennen.
- Train/Evaluate: Code-, Daten-, Konfigurations- und Umgebungsstand protokollieren.
- Publish: Artefakt plus Input-/Output-Schema und Rückfallversion.
Reproduzierbarkeit heißt nicht, dass ein Resultat wahr ist: Ein deterministisch reproduzierbarer Leakage-Fehler bleibt Leakage.
Batch
- Gut für planbare große Mengen und tolerierbare Verzögerung.
- Einfacher zu wiederholen, auditieren und kapazitiv begrenzen.
- Risiko: veraltete Scores, lange Fehlerwirkung bis zum nächsten Lauf.
API / Echtzeit
- Nur wenn die Entscheidung frische Inputs und geringe Latenz benötigt.
- SLOs für P95/P99, Timeout, Last, Idempotenz und Authentisierung.
- Fallback bei Abhängigkeit, Schemafehler oder Unsicherheit explizit.
Interview-Fallen
- „Die Query läuft“ mit korrekter fachlicher Körnung verwechseln.
- Notebook-Reihenfolge statt deklarativer, testbarer Pipeline.
- Online-Architektur wählen, obwohl täglicher Batch die Entscheidung rechtzeitig versorgt.
- PII oder Gesundheitsdaten auf Vorrat als potenzielles Feature übernehmen.
60-Sekunden-Antwort
„Ich starte mit Entscheidung, Einheit und Prognosezeit. Dann dokumentiere ich je Feld Herkunft, Verfügbarkeit und Missingness-Semantik. Joins sichere ich über Keys und Grain-Tests, Transformationen werden idempotent und versioniert. Batch oder API entscheide ich nach Aktualität, Volumen, Latenz, Kosten und Fallback – nicht nach Modernität.“
Datenvertrag im Lab prüfen →Harter Vertrag ≠ weiches Warnsignal
Ein gebrochener Key, eine Zukunftszeit oder vervielfachte Grain widerlegt den Datenvertrag und stoppt die Pipeline. Ein PSI- oder Anomaliesignal ist dagegen zuerst Diagnose: Ohne Owner, Ursache, Kontext und vorab bestimmte Reaktion darf es weder Pager noch automatisches Retraining auslösen. Google SRE trennt Monitoringzwecke und warnt vor unspezifischen Seitenalarmen mit geringer Signalqualität.[2]
Widerlegungsprobe: Erhöhe durch einen Many-to-many-Join 100 erwartete Schlüssel auf 107 Zeilen. Der Vertrag muss vor Driftberechnung scheitern; ein Modellneutraining wäre die falsche Reaktion.
Belege auf dieser Seite
- Monitoring Distributed Systems · geprüft 2026-09-02