Logo GH

Wprowadzanie modeli ML

1) Rola i cele

Wdrożenie = niezawodne dostarczanie wniosków produktom i operacjom podczas realizacji RG/AML/Legalne i budżetowe.
Cele: niskie opóźnienia, wysoka dostępność, odtwarzalność, bezpieczeństwo i szybki zwrot.

2) Obsługa architektur

2. 1 Wzory

Online (w czasie rzeczywistym): REST/gRPC, p95 50-150 ms do personalizacji, ≤ 2 -5 s dla wpisów RG/AML.
Blisko-w czasie rzeczywistym: mikro-mecze 1-5 min (OLAP-showcases).
Partia/offline: Złote prezentacje nocne, eksport WORM dla regulatora.
W procesie punktacji: wbudowanie modelu światła do usługi (niskie opóźnienie).
Serverless: funkcje zimnego startu dla rzadkich zadań.

2. 2 Topologie

Usługa jednego modelu → prosta i szybka.
Zespół/wykres (router → preprocess → model → postprocess) → złożone rurociągi.
Sidecar Feature Fetcher → wyciąga funkcje online z buforów (Redis/Scylla).

3) Wzór rejestru i wersji

Rejestr: 'model _ id',' version ',' stage = {Staging, Production, Archiwizowane} ', artefakty (wagi, preprocesor, kalibracja), wymagania (CPU/GPU/memory), karta modelowa (dane, mierniki, zagrożenia, uczciwość).
Artefakty niezmienne: treść-hash; WORM kopie wersji.
Polityka produktowa: wyłącznie poprzez rejestry i deklaracje.

4) Konteneryzacja i pakowanie

Plik dokujący:
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"]
Serwer (FastAPI + gRPC, idea):
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 i Autoskalowanie

Rozmieszczenie (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 (według 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) Strategie wdrażania

Cień: nowy model przetwarza kopie żądań, odpowiedzi są ignorowane; porównanie mierników/opóźnień/kosztów.
Kanaryjski: 1-10% ruchu → 25% → 50% → 100% z zielonymi SLO; automatyczny zwrot przy degradacji.
Niebiesko-zielone: stosy równoległe; przełącznik natychmiastowego routingu.
Stopniowa flaga funkcji: Rynek/Najemca/Routing urządzenia.
A/B/n: eksperymenty online z testami sekwencyjnymi.

Routing (idea):
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) Funkcja online/offline: równoważność

Ujednolicona biblioteka transformacji i sklep funkcyjny (online + offline).
Test równoważności: MAE/MAPE między funkcjami online a odniesieniem offline na próbce referencyjnej.
Funkcja pamięci podręcznej: Redis/Scylla, TTL dla funkcji okna; Czasy i upadki.

8) Obserwowalność, SLO i ostrzeganie

8. 1 punkt odniesienia SLI/SLO

Opóźnienie: p95 ≤ 150 ms (personalizacja), p99 ≤ 300 ms; Wpisy RG/AML ≤ 5 z końcem do końca.
Dostępność: ≥ 99. 9%.
Błąd wnioskowania: ≤ 0. 5% 5xx; zasięg ≥ 99%.
Dryf: charakterystyka PSI/szybkość <próg, ECE (kalibracja) jest stabilna.
МиснЕZ: Uplift Net Revenue, oszustwa zaoszczędzone, time-to-intervene.

8. 2 Metryka (Prometeusz)

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
Wpisy (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”, „postprocess”, „guardrail”.

9) Bariery ochronne RG/AML i polityka bezpieczeństwa

Pre-/Post-filtr: maski zabronionych działań (częstotliwość wrażeń, chłodzenie, zakaz agresywnych ofert).
Ekran polityki: prędkość powyżej progu RG → miękka interwencja/pauza.
Audyt: rejestrowanie "policy _ id'," skłonność "," maska "," decyzja "," powód ".
PII i miejsce zamieszkania: żetony zamiast identyfikatora, oddzielne klucze szyfrujące i klastrowe na EOG/UK/BR; zakazanie przystępowania do różnych regionów bez uzasadnienia.
Tajemnice: KMS/CMK, Secret Manager; brak PII w logach/torach.

10) Kalibracja, progi i polityka decyzyjna

Kalibracja (Platt/Izotoniczna) jako artefakt.
próg według oczekiwanych kosztów; konfigurowalny w fladze rejestru/funkcji.
Zakrętki bezpieczeństwa: górne/dolne granice działania, ręczna regulacja zgodności.

11) Rolki, degradacja i DR

One-click rollback - Przełącza trasę do poprzedniej 'model _ version'.
Runbook: skrypty „latentnost”, „5xx”, „drift/calibration broke”, „zewnętrzny dostawca funkcji niedostępny”.
Izolacja usterek: wyłącznik, retry/backoff, pamięć podręczna ostatniego ważnego rozwiązania.
DR: kopie zapasowe artefaktów/rejestru, replikacja do „ciepłego” regionu, ćwiczenia.

Wyłącznik (pseudokoda):
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback

12) Inżynieria kosztowa i wydajność

Profilowanie ścieżek: funkcje (30-60%), model (20-40%), sieć/IO (10-30%).
Redukcja kosztów: buforowanie gorących funkcji, odtwarzanie kwot, lekkie modele, INT8/FP16 (w stosownych przypadkach), leniwe-postprocess.
HPA na RPS/CPU/latency, ograniczenie wielkości stanu na funkcji strumienia.
Obciążenie zwrotne: koszt/żądanie, koszt/funkcja; budżety dla rynków/zespołów.

13) Bezpieczne zwolnienia i zgodność

Kryteria gotowości produktu: SLO zielony na cieniu, brak dryfu/przecieku, karta modelowa jest pełna, plasterki są normalne.
Regulator: WORM-archiwum uwalniania (wagi, kalibracja, progi, mierniki, dzienniki testowe), niezmienne raporty eksportowe.
DSAR/RTBF: procedury usuwania śladów konkretnego użytkownika z buforów/logów/funkcji.

14) QA przed uruchomieniem

Testy integracyjne: kontrakt API, schematy funkcji, puste/ekstremalne przypadki.
Ładunek: p99, ogony dystrybucyjne, ruch.
Test równoważności online/offline.
Testy chaosu: wyłączenie pamięci podręcznej/podstawy funkcji, terminy świadczenia usług zewnętrznych.

15) Przykłady konfiguracji

Ingress z kanaryjskim routingu (idea):
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}
Wzór zdrowia (punkt końcowy):
python
@app. get("/healthz")
def health():
return {"ok": True, "model_version": "1. 8. 3", "registry_sig_ok": verify_signature()}

16) Procesy i RACI

R (odpowiedzialny): MLOp (służba/orkiestra/obserwowalność), Data Eng (cechy/caches/contracts), Data Science (karty modelowe/kalibracja/progi).
A (Odpowiedzialność): szef danych/CDO.
C (skonsultowano się): Zgodność/DPO (PII/RG/AML/DSAR), Bezpieczeństwo (KMS/Secrets/Audit), SRE (SLO/Incydenty), Finanse (ROI/Budgets).
I (Poinformowany): Produkt/Marketing/Operacje/Wsparcie.

17) Plan działania w zakresie wdrażania

MVP (3-6 tygodni):

1. wzór rejestru i artefakty niezmienne; Usługa FastAPI/gRPC + K8s/Helm.

2. Start cieni z monitorowaniem p95/5xx/dryfem, test równoważności funkcji.

3. Kanaryjski 10% → 50% → 100% z auto-script rollback i wpisy.

4. Karta modelowa, kalibracja, oczekiwany próg kosztów i poręcze v1.

Faza 2 (6-12 tygodni):
  • Funkcja pamięci podręcznej, wyłączniki, runbooks/DR ćwiczenia.
  • Autoskalowanie na RPS/opóźnienie, deska rozdzielcza i obciążenie zwrotne.
  • Monitoring kawałków sprawiedliwości, archiwum uwolnienia WORM.
Faza 3 (12-20 tygodni):
  • Wykres porcji (kandydaci → re-rank), skłonność do rejestrowania łupków.
  • Multi-region, rezydencja (EEA/UK/BR) z pojedynczymi kluczykami.
  • Auto-roll/overdrive, raporty o jakości autogenu/kalibracji.

18) Lista kontrolna dostawy

  • Karta modelowa jest pełna; dane/cechy/kalibracja/progi są wersjonowane.
  • Funkcja umów i test równoważności online/offline są zielone.
  • SLO: p95, 5xx, pokrycie - zielony na cieniu i 10% kanaryjski ≥ 24 h.
  • Uwzględniono wpisy i deski rozdzielcze (opóźnienia/błędy/dryfowanie/przewidywany koszt).
  • Aktywne są poręcze RG/AML oraz audyty rozwiązań; PII/miejsce zamieszkania.
  • Testowane zdarzenia w książce startowej i odwróceniu jednego kliknięcia.
  • Koszt wpisuje się w budżet; HPA i pamięć podręczna są skonfigurowane.

19) Przeciwdziałanie modelom i ryzyku

Ręczne rollouts bez rejestru i niezmiennych artefaktów.
Niespójne funkcje online/offline → rozbieżności w sprzedaży.
Nie cień/kanarka → ukryte regresje.
Próg nie jest oczekiwany koszt, nie ma kalibracji.
Synchroniczne wyszukiwanie zewnętrzne bez czasu/pamięci podręcznej.
Brak DR/rollback, brak archiwum wydawania WORM.

20) Sedno sprawy

Produkcja ML nie jest „wyzwaniem modelowym”, ale platformą inżynieryjną: rejestr i wersje, bezpieczne rollouts (cień/kanaryjski/niebiesko-zielony), dyscyplina funkcji i kalibracji, obserwowalność i SLO, szyny ochronne dla RG/AML i jasny plan rollback. Podążając za tym playbookiem, otrzymasz szybki, niezawodny i zgodny wniosek, który konsekwentnie zapewnia wartość biznesową po kontrolowanych kosztach.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.