Logo GH

Bereitstellung von ML-Modellen

1) Rolle und Ziele

Bereitstellung = zuverlässige Lieferung von Inference an das Produkt und den Betrieb unter Einhaltung von RG/AML/Legal und Budgets.
Ziele: geringe Latenz, hohe Verfügbarkeit, Reproduzierbarkeit, Sicherheit und schnelle Reversibilität (Rollback).

2) Serving-Architekturen

2. 1 Muster

Online (real-time): REST/gRPC, p95 50-150 ms für Personalisierung; ≤2 -5 s für RG/AML-Alert.
Near-real-time: Mikrobatches 1-5 min (OLAP-Vitrinen).
Batch/offline: Nachtvitrinen Gold, WORM-Exporte für die Regulierungsbehörde.
In-Process Scoring: Einbettung des Light-Modells in den Service (geringe Latenz).
Serverless: Kaltstartfunktionen für seltene Aufgaben.

2. 2 Topologien

Single Model Service → einfach und schnell.
Ensemble/Graph (router → preprocess → model → postprocess) → komplexe Pipelines.
Sidecar Feature Fetcher → zieht Online-Dateien aus Caches (Redis/Scylla).

3) Modellregister und Versionen

Registry: 'model _ id', 'version', 'stage = {Staging, Production, Archived}', Artefakte (Gewichte, Preprozessor, Kalibrierung), Anforderungen (CPU/GPU/Speicher), Modellkarte (Daten, Metriken, Risiken, Fairness).
Immutable Artefakte: content-hash; WORM-Kopien von Releases.
Rücknahmepolitik: nur über Register und deklarative Manifeste.

4) Containerisierung und Verpackung

Dockerfile (Skizze):
dockerfile
FROM python:3. 11-slim
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements. txt.
RUN pip install -r requirements. txt --no-cache-dir
COPY artifacts/./artifacts/
COPY src/./src/
CMD ["python", "src/serve. py"]
Server (FastAPI + gRPC, Idee):
python serve. py from fastapi import FastAPI import joblib, time app = FastAPI()
model = joblib. load("artifacts/model. joblib")
scaler = joblib. load("artifacts/scaler. joblib")

@app. post("/score")
def score(payload: dict):
t0 = time. time()
x = preprocess(payload, scaler)
y = float(model. predict_proba([x])[0,1])
return {"score": y, "latency_ms": int((time. time()-t0)1000), "model_version": "1. 8. 3"}

5) Kubernetes/Helm und Auto-Scaling

Deployment (Fragment):
yaml apiVersion: apps/v1 kind: Deployment metadata: {name: ml-score, labels: {app: ml-score}}
spec:
replicas: 3 selector: {matchLabels: {app: ml-score}}
template:
metadata: {labels: {app: ml-score}}
spec:
containers:
- name: api image: registry/ml-score:1. 8. 3@sha256:...
ports: [{containerPort: 8080}]
resources:
requests: {cpu: "500m", memory: "512Mi"}
limits:  {cpu: "2",  memory: "2Gi"}
envFrom: [{secretRef: {name: ml-secrets}}]
readinessProbe: {httpGet: {path: /healthz, port: 8080}, periodSeconds: 5}
livenessProbe: {httpGet: {path: /livez,  port: 8080}, periodSeconds: 10}
HPA (nach RPS/CPU):
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: {name: ml-score-hpa}
spec:
scaleTargetRef: {apiVersion: apps/v1, kind: Deployment, name: ml-score}
minReplicas: 3 maxReplicas: 50 metrics:
- type: Pods pods:
metric: {name: requests_per_second}
target: {type: AverageValue, averageValue: "15"}
- type: Resource resource: {name: cpu, target: {type: Utilization, averageUtilization: 70}}

6) Roll-out-Strategien

Schatten (dunkler Start): Das neue Modell verarbeitet Abfragekopien, Antworten werden ignoriert; Vergleich der Metriken/Latenz/Kosten.
Canary: 1-10% Traffic → 25% → 50% → 100% mit grünem SLO; automatisches Zurückrollen bei Degradation.
Blau-Grün: parallele Stapel; Instant-Routing-Switch.
Gradual Feature Flag: Routing über Märkte/Tenanten/Geräte.
A/B/n: Online-Experimente mit sequentiellen Tests.

Routing (Idee):
yaml routes:
- match: {tenant: "EEA"} # feature-flags/rules to: {model: "1. 8. 3", weight: 20}
- match: {tenant: "EEA"}
to: {model: "1. 7. 9", weight: 80}

7) Fichy online/offline: Äquivalenz

Einheitliche Transformationsbibliothek und Feature Store (online + offline).
Äquivalenztest: MAE/MAPE zwischen Online-Fichs und Offline-Referenz auf einer Referenzprobe.
Cache-Fich: Redis/Scylla, TTL für Fenstermerkmale; Timeouts und Fallbacks.

8) Beobachtbarkeit, SLO und Warnung

8. 1 SLI/SLO-Benchmarks

Latenz: p95 ≤ 150 ms (Personalisierung), p99 ≤ 300 ms; RG/AML Alert ≤ 5 mit Ende-zu-Ende.
Verfügbarkeit: ≥ 99. 9%.
Inference-Fehler: ≤ 0 5% 5xx; coverage ≥ 99%.
Drift: PSI fich/scora <Schwelle, ECE (Kalibrierung) stabil.
Бизнес: uplift Net Revenue, fraud saved, time-to-intervene.

8. 2 Metriken (Prometheus)

yaml
- http_request_duration_seconds{quantile="0. 95"}
- http_requests_total{code=~"5.."}
- model_inference_latency_ms_bucket
- feature_fetch_latency_ms_bucket
- model_score_distribution_bucket
- psi_feature_{name}
- expected_cost_live
Alerts (Fragment):
yaml
- alert: HighP95Latency expr: histogram_quantile(0. 95, sum(rate(model_inference_latency_ms_bucket[5m])) by (le)) > 0. 15 for: 10m
- alert: DriftDetected expr: psi_feature_amount_base > 0. 25 for: 15m

Трейсинг: OpenTelemetry — span’ы `feature_fetch`, `score`, `postprocess`, `guardrail`.

9) RG/AML guardrails und Sicherheitspolitik

Pre-/Post-Filter: Masken für verbotene Aktionen (Häufigkeit von Impressionen, Cooldown, Verbot von aggressiven Offern).
Policy Shielding: Steigung über der RG-Schwelle → sanfte Intervention/Pause.
Audit: Protokollierung von 'policy _ id', 'propensity', 'mask', 'decision', 'reason'.
PII und Wohnsitz: Token statt ID, separate Verschlüsselungsschlüssel und Cluster im EWR/UK/BR; Verbot regionenübergreifender Join's ohne Grundlage.
Geheimnisse: KMS/CMK, Secret Manager; keine PII in Logs/Traces.

10) Kalibrierung, Schwellenwerte und Entscheidungspolitik

Kalibrierung (Platt/Isotonic) als Artefakt.
Schwelle für erwartete Kosten; konfigurierbar in Registry/Ficha-Flag.
Sicherheitskappen: obere/untere Aktionsgrenzen, manuelle Override für Compliance.

11) Pullbacks, Degradationen und DR

Ein-Klick-Rollback: Umschalten der Route auf die vorherige' model _ version'.
Runbook: Skripte „latentnost↑“, „Fehler 5xx↑“, „Drift/Kalibrierung gebrochen“, „Externer Fitch-Provider nicht verfügbar“.
Fehlerisolierung: Circuit Breaker, Retry/Backoff, Cache der letzten gültigen Lösung.
DR: Artefakt/Registry-Backups, Replikation in die „warme“ Region, Übungen.

Circuit Breaker (Pseudocode):
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback

12) Kosten-Engineering und Produktivität

Pfadprofilierung: fichy (30-60%), Modell (20-40%), Netzwerk/IO (10-30%).
Kostenreduzierung: Caching von Hot Fich, Replay-Quoten, Lightweight-Modelle, INT8/FP16 (falls zutreffend), Lazy-Postprocess.
HPA auf RPS/CPU/Latenz, Beschränkung auf State-Size bei Stream-Fit.
Chargeback: cost/request, cost/feature; Budgets für Märkte/Teams.

13) Sichere Freigaben und Compliance

Prod Readiness Kriterien: SLO grün auf Schatten, keine Drift/Leckage, Modellkarte voll, Fairness-Slices normal.
Regulator: WORM-Archiv der Veröffentlichung (Gewichte, Kalibrierung, Schwellenwerte, Metriken, Testprotokolle), unveränderliche Exportberichte.
DSAR/RTBF: Verfahren zum Entfernen von Spuren eines bestimmten Benutzers aus Caches/Logs/Fich.

14) QS vor dem Ausrollen

Integrationstests: API-Vertrag, Schemata, „leere/extreme“ Fälle.
Last: p99, Verteilungsschwänze, Burst-Verkehr.
Äquivalenztest online/offline.
Chaos-Tests: Ausschalten des Fich-Cache/Base, Timeouts externer Dienste.

15) Beispiele für Konfigurationen

Ingress mit Kanarienführung (Idee):
yaml
- match: [headers: {x-exp: "canary"}]
route:
- destination: {host: ml-score-v1-8-3, weight: 20}
- destination: {host: ml-score-v1-7-9, weight: 80}
Modellgesundheit (Endpunkt):
python
@app. get("/healthz")
def health():
return {"ok": True, "model_version": "1. 8. 3", "registry_sig_ok": verify_signature()}

16) Prozesse und RACI

R (Responsible): MLOps (Serving/Orchestration/Observability), Data Eng (Fici/Caches/Contracts), Data Science (Modellkarten/Kalibrierung/Schwellenwerte).
A (Accountable): Head of Data / CDO.
C (konsultiert): Compliance/DPO (PII/RG/AML/DSAR), Security (KMS/Secrets/Audit), SRE (SLO/Incidents), Finance (ROI/Budgets).
I (Informed): Produkt/Marketing/Betrieb/Support.

17) Umsetzungsfahrplan

MVP (3-6 Wochen):

1. Modellregister und immutable Artefakte; FastAPI/gRPC-Service + K8s/Helm.

2. Shadow-Start mit p95/5xx/Drift-Überwachung, Fich-Äquivalenztest.

3. Canary 10% → 50% → 100% mit Rollback-Auto-Script und Alert.

4. Modellkarte, Kalibrierung, Expected-Cost Schwelle und Guardrails v1.

Phase 2 (6-12 Wochen):
  • Ficha Cash, Circuit Breakers, Runbooks/DR-Übungen.
  • Auto-Scaling auf RPS/Latenz, Kosten-Dashboards und Chargeback.
  • Slice-Monitoring fairness, WORM-Archiv der Veröffentlichungen.
Phase 3 (12-20 Wochen):
  • Serving-Graph (Kandidaten → Re-Rank), Slate-Logging-Propency.
  • Multi-Region, Wohnsitz (EWR/UK/BR) mit separaten Schlüsseln.
  • Auto-Roll/Überfärbung durch Drift, Autogen von Qualitäts-/Kalibrierungsberichten.

18) Prod Readiness Checkliste

  • Die Musterkarte ist ausgefüllt; Daten/Daten/Kalibrierung/Schwellenwerte sind versioniert.
  • Verträge fich und Äquivalenztest online/offline - grün.
  • SLO: p95, 5xx, Abdeckung - grün auf Schatten und 10% canary ≥ 24 Stunden.
  • Alerts und Dashboards (Latenz/Fehler/Drift/expected-cost) sind enthalten.
  • Guardrails RG/AML und Entscheidungsaudits sind aktiv; PII/Wohnsitz eingehalten.
  • One-Click Rollback und Runbook Incidents getestet.
  • Die Kosten sind im Haushaltsplan enthalten. HPA und Cache sind konfiguriert.

19) Anti-Muster und Risiken

Manuelle Ausrollen ohne Register und immutable Artefakte.
Inkonsistente Online-/Offline-Daten → Unstimmigkeiten in der Produktion.
Das Fehlen von Schatten/Kanaren → versteckte Regressionen.
Schwelle nicht durch erwartete Kosten, keine Kalibrierung.
Synchrone externe Lookups ohne Timeouts/Cache.
Kein DR/Rollback, kein WORM-Archiv der Veröffentlichung.

20) Das Ergebnis

Die ML-Produktion ist keine „Model Challenge“, sondern eine Engineering-Plattform: Registry und Versionen, sichere Rollouts (Shadow/Canary/Blue-Green), Fachdisziplin und Kalibrierung, Beobachtbarkeit und SLO, Guardrails für RG/AML und ein klarer Rollback-Plan. Wenn Sie diesem Playbook folgen, erhalten Sie eine schnelle, zuverlässige und konforme Inferenz, die durchweg Geschäftswert zu kontrollierten Kosten bringt.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Telegram
@Gamble_GC
Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.