ML მოდელების განლაგება
1) როლი და მიზნები
განლაგება = პროდუქტისა და ოპერაციების საიმედო მიწოდება RG/AML/Legal და ბიუჯეტების შესაბამისად.
მიზნები: დაბალი ლატენტობა, მაღალი წვდომა, რეპროდუქცია, უსაფრთხოება და სწრაფი შექცევადობა (rollback).
2) Serving არქიტექტურა
2. 1 შაბლონები
ონლაინ (რეალური დრო): REST/gRPC, p95 50-150 ms პერსონალიზაციისთვის; 2-5 წმ RG/AML ალერტებისთვის.
Near real time: მიკრობატები 1-5 წთ (OLAP ფანჯრები).
Batch/offline: Gold ღამის ფანჯრები, WORM ექსპორტები რეგულატორისთვის.
In-process scoring: მსუბუქი მოდელის დაყენება მომსახურებაში (დაბალი შეფერხება).
Serverless: ცივი დაწყების ფუნქციები იშვიათი დავალებებისთვის.
2. 2 ტოპოლოგია
სინგლის მოდელის სერვისი მარტივი და სწრაფი იყო.
Ensemble/Graph (router - preprocess - model - postprocess) - რთული პლაკატები.
Sidecar Feature Fetcher- მა ონლაინ ფიჩები ამოიღო ქეში (Redis/Scylla).
3) სამოდელო რეესტრი და ვერსიები
რეგისტრი: 'მოდელის _ id', 'version', 'stage = {Staging, Production, Archived} ", ნივთები (წონა, პროცესორი, კალიბრაცია), მოთხოვნები (CPU/GPU/მეხსიერება), მოდელის ბარათი (მონაცემები, მეტრიკა, რისკები, fairness).
Imputable ნიმუშები: შინაარსი-hash; გამოცემების WORM ასლები.
დასკვნის პოლიტიკა: მხოლოდ რეესტრისა და დეკლარაციული მანიფესტების საშუალებით.
4) კონტეინერი და შეფუთვა
Dockerfile (ესკიზი):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"]
სერვერი (FastAPI + gRPC, იდეა):
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 და skaling
Eployment (ფრაგმენტი):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- ს მიხედვით):
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) გაშვების სტრატეგია
Shadow (ბნელი გაშვება): ახალი მოდელი ამუშავებს მოთხოვნის ასლებს, პასუხები უგულებელყოფილია; მეტრიკის/ლატენტობის/ღირებულების შედარება.
Canary: 1-10% ტრაფიკი 25% -დან 50% -დან 100% -მდე მწვანე SLO- ზე; ავტომატური გამოტოვება დეგრადაციის დროს.
Blue-Green: პარალელური მინები; მყისიერი მარშრუტიზაციის სვიტრი.
Gradual Feature Flag: მარშრუტი ბაზრებზე/ტენანტებში/მოწყობილობებზე.
A/B/n: ონლაინ ექსპერიმენტები sequential ტესტირებით.
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) Fichi online/offline: ეკვივალენტი
ტრანსფორმაციების ერთიანი ბიბლიოთეკა და Feature Store (ონლაინ + ოფლაინ).
ეკვივალენტობის ტესტი: MAE/MAPE ონლაინ ფინიკებსა და ოფლაინ სტანდარტს შორის მითითების ნიმუშზე.
კაში ფიჩი: Redis/Scylla, TTL ფანჯრის ნიშნებისთვის; ტაიმაუტები და fallbacks.
8) დაკვირვება, SLO და ალერტინგი
8. 1 SLI/SLO სახელმძღვანელო
ლატენტობა: p95-150 ms (პერსონალიზაცია), p99-300 ms; RG/AML ალერტები - 5 end-end.
წვდომა: 99 ევრო. 9%.
ინვესტიციის შეცდომა: 0. 5% 5xx; coverage ≥ 99%.
დრიფტი: PSI fich/score <ბარიერი, ECE (კალიბრაცია) სტაბილურია.
Бизнес: uplift Net Revenue, fraud saved, time-to-intervene.
8. 2 მეტრიკა (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
ალერტა (ფრაგმენტი):
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 და უსაფრთხოების პოლიტიკა
Pre-/Post-filter: აკრძალული მოქმედებების ნიღბები (შოუს სიხშირეები, cooldown, აგრესიული ოფისის აკრძალვა).
Policy Shielding: RG- ის ზღურბლზე მაღლა მოქცევა - რბილი ჩარევა/პაუზა.
აუდიტი: 'policy _ id', 'propensity', 'mask', 'decision', 'reason'.
PII და რეზიდენტობა: ნიშნები ID- ის ნაცვლად, დაშიფვრის და კლასტერის ცალკეული გასაღებები EEA/UK/BR; ჯვრის რეგიონალური join აკრძალვის გარეშე.
საიდუმლოებები: KMS/CMK, საიდუმლო მენეჯერი; არ არის PII ლოგოებში/ტრეისებში.
10) კალიბრაცია, ბარიერები და გადაწყვეტილებების პოლიტიკა
კალიბრაცია (Platt/Isotonic), როგორც არტეფაქტი.
ექსპექტირებული ბარიერი; კონფიგურაცია რეესტრში/ფიგურის დროშაში.
Safety caps: მოქმედების ზედა/ქვედა საზღვრები, სახელმძღვანელო override კომპოზიციისთვის.
11) გამოტოვება, დეგრადაცია და DR
One-click rollback: მარშრუტის შეცვლა წინა 'მოდელზე _ ვერსიაზე ".
Runbook: სკრიპტები „ლატენტობა“, „5xx შეცდომები“, „დრიფტი/კალიბრაცია გატეხილია“, „გარეგანი მიმწოდებელი არ არის ხელმისაწვდომი“.
გაუმართაობის იზოლაცია: circuit breaker, retry/backoff, ბოლო რეალური გადაწყვეტის ქეში.
DR: არტეფაქტების/რეესტრის ზურგჩანთები, რეპლიკაცია „თბილ“ რეგიონში, წვრთნები.
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback
12) Cost ინჟინერია და პროდუქტიულობა
ბილიკის პროფილირება: ფიჩები (30-60%), მოდელი (20-40%), ქსელი/IO (10-30%).
ღირებულების შემცირება: ცხელი ფიჩის ქეშირება, კვოტები, lightweight მოდელები, INT8/FP16 (შესაფერისი), lazy-postprocess.
HPA RPS/CPU/latence, სახელმწიფო შეზღუდვა stream fich- ზე.
Chargeback: cost/request, cost/feature; ბიუჯეტები ბაზრებზე/გუნდებისთვის.
13) უსაფრთხო გამოშვებები და შესაბამისობა
პროდუქტების მზადყოფნის კრიტერიუმები: SLO მწვანეა shadow, არ არსებობს დრიფტი/გაჟონვა, მოდელის ბარათი ივსება, ჩვეულებრივ fairness სლაისები.
მარეგულირებელი: გამოშვების WORM არქივი (წონა, კალიბრაცია, ბარიერები, მეტრიკა, ტესტის ლოგოები), უცვლელი საექსპორტო მოხსენებები.
DSAR/RTBF: კონკრეტული მომხმარებლის კვალი ამოიღეთ ქეშიდან/ლოგოდან/fich.
14) QA გასვლამდე
ინტეგრაციის ტესტები: API კონტრაქტი, fick სქემები, „ცარიელი/ექსტრემალური“ შემთხვევები.
დატვირთვა: p99, განაწილების კუდები, ბურსტის ტრაფიკი.
ონლაინ/offline ეკვივალენტობის ტესტი.
Chaos ტესტები: წინა ქეშის/ბაზის გამორთვა, გარე სერვისების ტაიმაუტები.
15) კონფიგურაციის მაგალითები
Ingress კანარის მარშრუტიზაციით (იდეა):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}
მოდელის ჯანმრთელობა (ენდოინტი):
python
@app. get("/healthz")
def health():
return {"ok": True, "model_version": "1. 8. 3", "registry_sig_ok": verify_signature()}
16) პროცესები და RACI
R (Responsible): MLOps (სერვინგი/ორკესტრი/დაკვირვება), Data Eng (ფიჩები/ქეში/კონტრაქტები), Data Science (მოდელების ბარათები/კალიბრაცია/ბარიერები).
A (Accountable): Head of Data / CDO.
C (კონსოლიდირებული): კომპლექტი/DPO (PII/RG/AML/DSAR), უსაფრთხოება (KMS/საიდუმლოებები/აუდიტი), SRE (SLO/ინციდენტები), Finance (ROI/ბიუჯეტები).
I (ინფორმირებული): პროდუქტი/მარკეტინგი/ოპერაციები/მხარდაჭერა.
17) საგზაო რუკა
MVP (3-6 კვირა):1. სამოდელო რეესტრი და იმუნური ნივთები; FastAPI/gRPC სერვისი + K8s/Helm.
2. Shadow გაშვება p95/5xx/draif მონიტორინგით, fich ექვივალენტურობის ტესტი.
3. Canary 10% - 50% - 100% გამოტოვება და ალერტები.
4. მოდელის ბარათი, კალიბრაცია, ექსპექტირებული ბარიერი და Guardrails v1.
ეტაპი 2 (6-12 კვირა):- Fich ქეში, circuit breakers, runbooks/DR სწავლებები.
- ავტო სკეილინგი RPS/latency, cost dashboard და chargeback.
- Fairness Slys მონიტორინგი, WORM გამოშვების არქივი.
- Earl of Serving (re-rank- ის კანდიდატები), slate-logation propensity.
- მულტფილმის რეგიონი, რეზიდენცია (EEA/UK/BR) ცალკეული კლავიშებით.
- ავტომატური გადაკვეთა/გადატვირთვა დრიფტის მიხედვით, ხარისხის/კალიბრაციის ანგარიშების ავტოგენი.
18) Prod List მზადყოფნა
- მოდელის ბარათი სავსეა; მონაცემები/ფიჩები/კალიბრაცია/ბარიერები განახლებულია.
- კონტრაქტები fich და ეკვივალენტობის ტესტი ონლაინ/offline - მწვანე.
- SLO: p95, 5xx, coverage - მწვანე shadow და 10% canary - 24:
- ალერტები და დაშბორდები (ლატენტობა/შეცდომები/დრიფტი/ექსპექტირებული-საყრდენი) შედის.
- Guardrails RG/AML და გადაწყვეტილებების აუდიტი აქტიურია; PII/რეზიდენტობა დაცულია.
- ერთი კლიკის როლბაკი და runbook ინციდენტები ტესტირებულია.
- ღირებულება ჯდება ბიუჯეტში; HPA და ქეში.
19) ანტი შაბლონები და რისკები
ხელით გადაყლაპვა რეესტრის გარეშე და იმუნური არტეფაქტები.
არაკოორდინირებული ონლაინ/offline ფიჩები - გაყიდვების შეუსაბამობები.
Shadow/canary- ის არარსებობა - ფარული რეგრესიები.
ბარიერი არ არის გაფართოებული საფარით, არ არის კალიბრაცია.
სინქრონული გარე lookups ტაიმაუტის/ქეშის გარეშე.
არა DR/rollback, არ არსებობს WORM გამოშვების არქივი.
20) შედეგი
ML წარმოება არ არის „მოდელის გამოწვევა“, არამედ საინჟინრო პლატფორმა: რეესტრი და ვერსიები, უსაფრთხო გამოსხივება (shadow/canary/blue-green), წინა და კალიბრაციის დისციპლინა, დაკვირვება და SLO, guardrails RG/AML - სთვის და მკაფიქსი. ამ ფლეიბუკის შემდეგ, თქვენ მიიღებთ სწრაფ, საიმედო და კომპოზიციურ ინვესტიციას, რომელიც სტაბილურად მოაქვს ბიზნესის ღირებულებას კონტროლირებადი ღირებულებით.