פריסת דגמי ML
1) תפקיד ומטרות
פריסה = הסקת מסקנות מהימנות למוצר ולפעולות בעת מפגש עם RG/AML/Legal ותקציבים.
מטרות: איחור נמוך, זמינות גבוהה, רבייה, בטיחות וחזרה מהירה.
2) משרת אדריכלים
2. 1 תבניות
מקוון (בזמן אמת): REST/gRPC, p95 50-150 mS עבור פרסונליזציה; סימון 2-5 S עבור התראות RG/AML.
קרוב בזמן אמת: מיקרו-גפרורים 1-5 דקות (OLAP-תצוגה).
תצוגות לילה זהב, יצוא תולעת לרגולטור.
ניקוד בתהליך: הטמעת מודל האור בשירות (Latency Latency).
התחלה קרה מאפיינים למשימות נדירות.
2. 2 טופולוגיות
שירות מודל יחיד * פשוט ומהיר.
Ensemble/Graph (router # preprocess # ac postprocess) = צינורות מורכבים.
Sidecar Feace Fatcher # מושך תכונות מקוונות ממטמונים (Redis/Syllla).
3) רישום דגמים וגרסאות
Registry: 'model _ id',' version ',' Staging ', Production, Archived', חפצים (משקלים, קדם מעבד, כיול), דרישות (CPU/GPU/Memory), כרטיס מודל (נתונים, מטריות, סיכונים, הגינות).
חפצים בלתי ניתנים לשינוי: תוכן-חשיש; העתקי תולעת של שחרורים.
מדיניות פלט: באמצעות רישום ומניפסטים הצהרתיים בלבד.
4) בלימה ואריזה
dokerfile: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 and Autoscaling
פריסה (שבר):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) אסטרטגיות גלגול החוצה
צל: המודל החדש מעבד עותקים של בקשות, תגובות מתעלמות; השוואה של מדדים/עלויות.
Canary: 1-10% מהתנועה * 25% -0.5% -100% עם SLOS ירוק; החזרה אוטומטית על השפלה.
כחול-ירוק: ערימות מקבילות; מתג ניתוב מיידי.
דגל תכונה הדרגתי: ניתוב שוק/דייר/התקן.
א/ב/ן: ניסויים מקוונים עם בדיקות רצופות.
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) תכונה מקוונת/לא מקוונת: שוויון
ספריית טרנספורמציה מאוחדת וחנות תכונה (מקוונת + לא מקוונת).
מבחן השוואה: MAE/MAPE בין מאפיינים מקוונים והתייחסות לא מקוונת על מדגם התייחסות.
תכונת המטמון: Redis/Sylla, TTL עבור תכונות החלון; פסקי זמן ונשורת.
8) יכולת תצפית, SLO והתראה
8. 1 ספסל SLI/SLO
Latency: p95 lood 150 ms (פרסונליזציה), p99 300 ms; RG/AML מתריע על 5 עם מקצה לקצה.
זמינות: 99. 9%.
הסקת שגיאה: סימון 0. 5% 5xx; כיסוי 99%.
סחיפה: PSI אופייני/קצב <סף, ECE (כיול) יציב.
”מס הכנסה”, הונאה שנחסכה, זמן להתערב.
8. 2 מטריצות (פרומתאוס)
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 'office' profice _ petch", "ניקוד", "postpropercess'," מעקה בטיחות ".
9) מעקות בטיחות של RG/AML ומדיניות אבטחה
Pre-/Post-filter: מסכות של פעולות אסורות (תדירות של רושם, התקררות, איסור על הצעות תוקפניות).
מיגון מדיניות: מהירות מעל סף RG = התערבות רכה/הפסקה.
ביקורת: רישום "מדיניות _ id'," נטייה "," מסכה "," החלטה "," סיבה ".
PII ותושבות: אסימונים במקום תעודת זהות, מפתחות הצפנה נפרדים ואשכול על EEA/UK/BR; איסור חציית אזור מצטרף ללא הצדקה.
סודות: KMS/CMK, מנהל סודי; אין מח "ש ברישומים/מסלולים.
10) כיול, סף ומדיניות החלטה
כיול (פלאט/איזוטוני) כחפץ.
סף לפי עלות צפויה; ניתן להגדרה בדגל הרישום/תכונה.
כיפות בטיחות: מגבלות פעולה עליונות/תחתונות, עקיפה ידנית לציות.
11) גלגיליות, השפלה וד "ר
גלגול בלחיצה אחת - מחליף את המסלול ל ”מודל _ גרסה” הקודם.
Runbook: תסריטים ”latnost laintnost',” 5xX directions', ”סחף/כיול נשבר”, ”הספק תכונה חיצוני לא זמין”.
בידוד פגמים: מפסק מעגל חשמלי, חזרה/גיבוי, מטמון הפתרון התקין האחרון.
ד "ר: גיבויים של חפצים/רישום, שכפול לאזור" חם ", תרגילים.
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback
12) עלות הנדסה וביצועים
פרופיל מסלול: תכונות (30-60%), מודל (20-40%), רשת/IO (10-30%).
הפחתת עלויות: צמצום תכונות חמות, מכסות שידור חוזר, דגמים קלים, INT8/FP16 (אם מתאים), עצלות-פוסטפורציה.
HPA על RPS/CPU/Latency, הגבלה בגודל מצב על תכונת זרם.
Chargback: עלות/בקשה, עלות/תכונה; תקציבים לשווקים/קבוצות.
13) שחרור מאובטח וציות
קריטריון מוכנות מוצר: SLO ירוק על צל, אין סחף/דליפה, כרטיס מודל הוא מלא, פרוסות הגינות הן נורמליות.
רגולטור: ארכיון התולעת של השחרור (משקולות, כיול, סף, מדדים, יומני בדיקה), דו "חות יצוא בלתי ניתנים לשינוי.
DSAR/RTBF: הליכים להסרת עקבות של משתמש מסוים ממטמונים/לוגים/תכונות.
14) QA לפני מתגלגל החוצה
מבחני אינטגרציה: חוזה API, דיאגרמות תכונה, מקרים ריקים/קיצוניים.
p99, זנבות הפצה, תנועה מתפוצצת.
מבחן מקוון/לא מקוון.
בדיקות כאוס: כיבוי מטמון התכונה/בסיס, פסקי זמן של שירותים חיצוניים.
15) דוגמאות הגדרות
כניסה עם ניתוב קנרי (רעיון):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 (אחראי): MLops (הגשה/תזמור/יכולת תצפית), Data Eng (תכונות/מטמונים/חוזים), Data Science (כרטיסי מודל/כיול/סף).
א '(אחראי): ראש הנתונים/CDO.
C (ייעוץ): ציות/DPO (PII/RG/AML/DSAR), אבטחה (KMS/סודות/ביקורת), SRE (SLO/תקריות), פיננסים (ROI/תקציבים).
אני (מושכל): מוצר/שיווק/מבצעים/תמיכה.
17) מימוש מפת דרכים
MVP (3-6 שבועות):1. רישום דגמים וחפצים בלתי ניתנים לשינוי; שירות FastAPI/gRPC + K8s/Helm.
2. שיגור צללים עם p95/5xx/סחיפה ניטור, מבחן שוויון תכונה.
3. Canary 10% = 50% = 100% עם אוטומטי-סקריפט rollback והתראות.
4. כרטיס מודל, כיול, סף עלות צפוי ומעקות בטיחות v1.
שלב 2 (שבועות 6-12):- מטמון תכונה, מפסקים, ספרי ריצה/תרגילי ד "ר.
- סריקה אוטומטית על RPS/Latency, עלות-לוח מחוונים ו-chargback.
- ניטור פרוסות הגינות, ארכיון שחרור תולעת.
- גרף של הגשה (מועמדים = דרגה מחדש), נטייה לכריתת לוח.
- ריבוי אזורים, תושבות (EEA/UK/BR) עם מפתחות בודדים.
- גלגול אוטומטי/הילוך יתר, דוחות איכות/כיול אוטוגן.
18) רשימת משלוחים
[ כרטיס מודל ] מלא; נתונים/תכונות/כיול/סף הם מבוססים.
[ תכונת החוזים ] ומבחן מקוון/לא מקוון הם ירוקים.
[ ] SLO: p95, 5xx, כיסוי - ירוק על צל ו -10% canary ID 24.
[ כלולים ] התראות ולוחות מחוונים (latency/images/drift/cost-cost).
[ ] מעקות בטיחות RG/AML וביקורות פתרונות פעילים; PII/תושבות נפגשו.
[ ] רולר-בוק קליק אחד ותקריות ריצה נבדקו.
[ ] העלות מתאימה לתקציב; HPA ומטמון מוגדרים.
19) אנטי דפוסים וסיכונים
צילומים ידניים ללא רישום וחפצים בלתי ניתנים לשינוי.
מאפיינים לא עקביים באינטרנט/לא מקוונים * אי התאמות במכירות.
אין צל/כנרית = = רגרסיה חבויה.
הסף לא צפוי לעלות, אין כיול.
תצפיות חיצוניות סינכרוניות ללא פסקי זמן/מטמון.
אין DR/rollback, אין ארכיון שחרור תולעת.
20) השורה התחתונה
ייצור ML אינו ”אתגר מודל”, אלא פלטפורמה הנדסית: רישום וגרסאות, רישום בטוח (צל/כנרית/כחול-ירוק), משמעת תכונה וכיול, יכולת תצפית ו-SLO, מעקות בטיחות עבור RG/AML, ותוכנית רולבק ברורה. על ידי מעקב אחר ספר המהלכים הזה, אתה מקבל הסקה מהירה, אמינה וצייתנית שמספקת באופן עקבי ערך עסקי במחיר מבוקר.