ML modellərinin yerləşdirilməsi
1) Rolu və məqsədləri
Yerləşdirmə = RG/AML/Legal və büdcələrə uyğun olaraq məhsula və əməliyyatlara etibarlı inferens çatdırılması.
Məqsədlər: aşağı gecikmə, yüksək mövcudluq, təkrarlanabilirlik, təhlükəsizlik və sürətli geri dönüş (rollback).
2) Servinq memarlığı
2. 1 Nümunələr
Online (real-time): REST/gRPC, p95 50-150 ms, RG/AML-alertlər üçün ≤ 2-5 ms.
Near-real-time: mikrobatçi 1-5 dəq (OLAP-vitrinlər).
Batch/offline: Gold gecə vitrinləri, tənzimləyici üçün WORM ixracı.
In-process scoring: Light modelinin xidmətə daxil edilməsi (aşağı gecikmə).
Serverless: nadir vəzifələr üçün soyuq başlanğıc funksiyaları.
2. 2 Topologiyalar
Single Model Service → asan və sürətli.
Ensemble/Graph (router → preprocess → model → postprocess) → mürəkkəb paylaynlar.
Sidecar Feature Fetcher → cache (Redis/Scylla) online ficks çıxarır.
3) Model reyestri və versiyası
Registry: 'model _ id', 'version', 'stage = {Staging, Production, Archived}', artefaktlar (çəkilər, presessor, kalibrləmə), tələblər (CPU/GPU/yaddaş), model kartı (məlumatlar, metriklər, risklər, fairness).
Immutable artefaktlar: content-hash; WORM buraxılışlarının surətləri.
Çıxış siyasəti: yalnız reyestr və deklarativ manifestlər vasitəsilə.
4) Konteynerləşdirmə və qablaşdırma
Dockerfile (eskiz):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, ideya):
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 və avtoskeylinq
Deployment (fraqment):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 (RPS/CPU ilə):
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) Geri qaytarma strategiyaları
Shadow (qaranlıq başlanğıc): yeni model sorğuların surətlərini emal edir, cavablara məhəl qoyulmur; metrik/gizli/dəyər müqayisə.
Canary: 1-10% trafik → 25% → 50% → 100% yaşıl SLO; deqradasiya zamanı avtomatik yuvarlanma.
Blue-Green: paralel yığınlar; ani marşrutlaşdırma switch.
Gradual Feature Flag: bazarlar/tenantlar/cihazlar üzrə marşrut.
A/B/n: sequential testing ilə online təcrübələr.
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) Online/offline: ekvivalentlik
Vahid transformasiya kitabxanası və Feature Store (online + offline).
Ekvivalentlik testi: Referans nümunəsində onlayn fich və oflayn etalon arasında MAE/MAPE.
Cache fich: Redis/Scylla, pəncərə əlamətləri üçün TTL; taymaut və fallbacks.
8) Müşahidə, SLO və alertinq
8. 1 SLI/SLO göstəriciləri
Gecikmə: p95 ≤ 150 ms (personalizasiya), p99 ≤ 300 ms; RG/AML alert ≤ 5 ilə end-to-end.
Mövcudluq: ≥ 99. 9%.
Sızma səhvi: ≤ 0. 5% 5xx; coverage ≥ 99%.
Drift: PSI fich/skor <eşik, ECE (kalibrləmə) sabitdir.
Бизнес: uplift Net Revenue, fraud saved, time-to-intervene.
8. 2 Metrika (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
Alertlər (fraqment):
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 mühafizə və təhlükəsizlik siyasəti
Pre-/Post-filter: maskalar qadağan hərəkətləri (tezliklər, cooldown, təcavüzkar offfers qadağan).
Policy Shielding: RG → yumşaq müdaxilə/fasilə həddindən yuxarı sürətli.
Audit: loging 'policy _ id', 'propensity', 'mask', 'decision', 'reason'.
PII və rezidentlik: ID əvəzinə tokenlər, EEA/UK/BR-də fərdi şifrələmə və klaster açarları; əsas olmadan cross-regional join 'oların qadağan edilməsi.
Secrets: KMS/CMK, Secret Manager; log/tracks heç bir PII.
10) Kalibrləmə, eşik və həll siyasəti
Kalibrləmə (Platt/Isotonic) artefakt kimi.
expected cost üçün eşik; reyestr/fiça bayrağında konfiqurasiya edilə bilər.
Safety caps: üst/alt hərəkət sərhədləri, uyğunluq üçün əl override.
11) Geri çəkilmə, deqradasiya və DR
One-click rollback: əvvəlki 'model _ version' marşrutu keçid.
Runbook: ssenarilər «gecikmə ↑», «səhvlər 5xx ↑», «drift/kalibrləmə qırıldı», «xarici fich provayder mövcud deyil».
Uğursuzluqların izolyasiyası: circuit breaker, retry/backoff, son etibarlı həll cache.
DR: artefaktların/reyestrin arxa planları, «isti» bölgəyə replikasiya, təlimlər.
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback
12) Cost mühəndisliyi və performans
Profil yolu: Fich (30-60%), model (20-40%), şəbəkə/IO (10-30%).
Qiymətin azaldılması: caching hot phic, replay kvotaları, lightweight modelləri, INT8/FP16 (uyğun olarsa), lazy-postprocess.
RPS/CPU/latency üçün HPA, stream-fich state-size limiti.
Chargeback: cost/request, cost/feature; bazarlar/komandalar üçün büdcələr.
13) Təhlükəsiz buraxılışlar və uyğunluq
Hazırlıq meyarları: SLO shadow-da yaşıl, sürüklənmə/sızma yoxdur, model kartı doludur, fairness slaydları normaldır.
Tənzimləyici: WORM-reliz arxivi (çəki, kalibrləmə, eşik, metrika, test qeydləri), dəyişməz ixrac hesabatları.
DSAR/RTBF: caches/log/fich xüsusi istifadəçi izlərini silmə prosedurları.
14) QA yuvarlanmadan əvvəl
İnteqrasiya testləri: API müqaviləsi, sxemlər, «boş/həddindən artıq» hallar.
Yükləmə: p99, paylama quyruqları, burst trafiki.
Online/offline ekvivalent testi.
Chaos testləri: Fich cache/bazanın söndürülməsi, xarici xidmətlərin vaxtları.
15) Konfiqurasiya nümunələri
Kanarya marşrutu ilə Ingress (ideya):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}
Model sağlamlığı (end-point):
python
@app. get("/healthz")
def health():
return {"ok": True, "model_version": "1. 8. 3", "registry_sig_ok": verify_signature()}
16) Proseslər və RACI
R (Responsible): MLOps (servinq/orkestr/müşahidə), Data Eng (fiçlər/keşlər/müqavilələr), Data Science (model kartları/kalibrləmə/eşiklər).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/DPO (PII/RG/AML/DSAR), Security (KMS/Secrets/Audit), SRE (SLO/Insidents), Finance (ROI/Büdcələr).
I (Informed): Məhsul/Marketinq/Əməliyyatlar/Dəstək.
17) Tətbiqi yol xəritəsi
MVP (3-6 həftə):1. Model reyestri və immutable artefaktlar; FastAPI/gRPC xidməti + K8s/Helm.
2. p95/5xx/drift monitorinqi ilə Shadow-start, fich ekvivalentlik testi.
3. Canary 10% → 50% → 100% autoscript geri və alert ilə.
4. Kart model, kalibrləmə, expected-cost eşik və Guardrails v1.
Faza 2 (6-12 həftə):- Ficha-cache, circuit breakers, runbooks/DR-təlimlər.
- RPS/latency, cost-dashboard və chargeback.
- Slays-monitorinq fairness, WORM-relizlər arxivi.
- Count serving (namizədlər → re-rank), slate-log propensiti.
- Multi-region, ayrı açarları ilə rezidentlik (EEA/UK/BR).
- Auto-perekat/drift, autogen keyfiyyət hesabatları/kalibrləmə.
18) Hazırlıq yoxlama siyahısı
- Model kartı doldurulur; data/fich/kalibrləmə/eşik versiyası.
- Fich müqavilələri və online/offline ekvivalent testi - yaşıl.
- SLO: p95, 5xx, coverage - gölgədə yaşıl və 10% canary ≥ 24 saat.
- Alerts və dashbords (gizli/səhvlər/drift/expected-cost) daxildir.
- Guardrails RG/AML və həll auditləri aktivdir; PII/rezidentlik qorunur.
- Bir-click rollback və runbook hadisələr test edilmişdir.
- Xərclər büdcəyə uyğundur; HPA və cache özelleştirilmiş.
19) Anti-nümunələr və risklər
Reyestr və immutable artefaktlar olmadan əl çıxarılması.
Razılaşdırılmamış online/offline ficies → məhsulda uyğunsuzluqlar.
No shadow/canary → gizli reqressiya.
Eşik expected cost deyil, heç bir kalibrasiya.
Vaxt/cache olmadan sinxron xarici lookups.
No DR/rollback, No WORM-reliz arxivi.
20) Yekun
ML istehsalı «model çağırışı» deyil, mühəndislik platformasıdır: reyestr və versiyalar, təhlükəsiz çıxışlar (shadow/canary/blue-green), fich və kalibrləmə intizamı, müşahidə və SLO, RG/AML üçün qoruyucular və aydın geri dönüş planı. Bu pleybuku izlədikdən sonra, davamlı olaraq nəzarət olunan dəyərlə biznes dəyəri gətirən sürətli, etibarlı və komplayent bir inferens əldə edəcəksiniz.