استقرار مدل های ML
1) نقش و اهداف
استقرار = ارائه استنتاج قابل اعتماد به محصول و عملیات در حالی که جلسه RG/AML/حقوقی و بودجه.
اهداف: تاخیر کم، در دسترس بودن بالا، تکرارپذیری، ایمنی و بازگشت سریع.
2) خدمت معماری
2. الگوهای 1
آنلاین (زمان واقعی): REST/gRPC، p95 50-150 ms برای شخصی سازی ؛ ≤2 -5 برای هشدارهای RG/AML.
نزدیک به زمان واقعی: میکرو مسابقات 1-5 دقیقه (OLAP-ویترین).
دسته ای/آفلاین: ویترین شب طلا، صادرات WORM برای تنظیم کننده.
در فرایند به ثمر رساند: جاسازی مدل نور به سرویس (تاخیر کم).
Serverless: ویژگی های شروع سرد برای کارهای نادر.
2. 2 توپولوژی ها
خدمات تک مدل ساده و سریع است.
Ensemble/Graph (router → preprocess → model → postprocess) → خطوط لوله پیچیده.
Sidecar Feature Fetcher → ویژگی های آنلاین را از کش ها (Redis/Scylla) می کشد.
3) مدل ثبت نام و نسخه ها
رجیستری: 'model _ id'، 'version'، 'stage = {Staging، Production، Archived}'، مصنوعات (وزن، پیش پردازنده، کالیبراسیون)، الزامات (CPU/GPU/حافظه)، کارت مدل (داده ها، معیارها، خطرات، انصاف).
مصنوعات غیر قابل تغییر: محتوا هش ؛ نسخه های WORM از انتشارات.
سیاست خروجی: فقط از طریق رجیستری و اعلامیه ها.
4) کانتینری و بسته بندی
پروندۀ اسناد: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/هلم و 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) استراتژی های رول کردن
سایه: مدل جدید کپی درخواست ها را پردازش می کند، پاسخ ها نادیده گرفته می شوند ؛ مقایسه معیارها/تاخیر/هزینه.
قناری: 1-10٪ از ترافیک → 25٪ → 50٪ → 100٪ با SLO های سبز ؛ چرخش خودکار در تخریب.
آبی سبز: پشته موازی ؛ سوئیچ مسیریابی فوری.
پرچم ویژگی تدریجی: مسیریابی بازار/مستاجر/دستگاه.
A/B/n: آزمایش های آنلاین با آزمایش متوالی
مسیریابی (ایده):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/Scylla، TTL برای ویژگی های پنجره ؛ زمان و عقب نشینی
8) قابلیت مشاهده، SLO و هشدار
8. 1 معیار SLI/SLO
تاخیر: p95 ≤ 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'ы 'feature _ fetch', 'score', 'postprocess', 'guardrail'.
9) گارد محافظ RG/AML و سیاست امنیتی
قبل/بعد از فیلتر: ماسک اقدامات ممنوع (فرکانس برداشت، خنک کردن، ممنوعیت پیشنهادات تهاجمی).
سیاست حفاظت: سرعت بالاتر از آستانه RG → مداخله نرم/مکث.
حسابرسی: ورود به سیستم «سیاست _ id»، «گرایش»، «ماسک»، «تصمیم»، «دلیل».
PII و اقامت: توکن ها به جای شناسه، رمزگذاری جداگانه و کلیدهای خوشه ای در EEA/UK/BR ؛ ممنوعیت پیوستن متقابل منطقه بدون توجیه.
اسرار: KMS/CMK، مدیر مخفی ؛ بدون PII در سیاهههای مربوط/آهنگ.
10) کالیبراسیون، آستانه و سیاست تصمیم گیری
کالیبراسیون (Platt/Isotonic) به عنوان یک مصنوع.
آستانه با هزینه مورد انتظار ؛ قابل تنظیم در پرچم رجیستری/ویژگی.
کلاه ایمنی: محدودیت عمل بالا/پایین، لغو دستی برای انطباق.
11) عقب نشینی، تخریب و DR
یک کلیک برگشت - مسیر را به «model _ version» قبلی تغییر می دهد.
Runbook: اسکریپت «latentnost↑», «خطاهای 5xx↑», «رانش/کالیبراسیون شکست», «ارائه دهنده ویژگی های خارجی در دسترس نیست».
جداسازی گسل: قطع کننده مدار، سعی مجدد/عقب نشینی، حافظه پنهان آخرین راه حل معتبر.
DR: پشتیبان گیری از مصنوعات/رجیستری، تکرار به یک منطقه «گرم»، تمرینات.
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 (در صورت لزوم)، lazy-postprocess.
HPA در RPS/CPU/تاخیر، محدودیت اندازه دولت در ویژگی جریان.
بازپرداخت: هزینه/درخواست، هزینه/ویژگی ؛ بودجه برای بازارها/تیم ها
13) انتشار امن و انطباق
معیارهای آمادگی محصول: SLO سبز بر روی سایه، بدون رانش/نشت، کارت مدل کامل است، برش عدالت طبیعی است.
تنظیم کننده: بایگانی WORM از انتشار (وزن، کالیبراسیون، آستانه، معیارها، سیاهههای مربوط به آزمون)، گزارش صادرات غیر قابل تغییر.
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 (ویژگی ها/انبارها/قراردادها)، علوم داده (کارت های مدل/کالیبراسیون/آستانه).
A (پاسخگو): رئیس داده/CDO.
C (مشورت): انطباق/DPO (PII/RG/AML/DSAR)، امنیت (KMS/اسرار/حسابرسی)، SRE (SLO/حوادث)، امور مالی (ROI/بودجه).
I (مطلع): محصول/بازاریابی/عملیات/پشتیبانی.
17) نقشه راه پیاده سازی
MVP (3-6 هفته):1. رجیستری مدل و مصنوعات غیر قابل تغییر ؛ سرویس FastAPI/gRPC + K8s/Helm.
2. راه اندازی سایه با نظارت p95/5xx/رانش، آزمون هم ارزی ویژگی.
3. Canary 10% → 50% → 100% با بازگشت خودکار اسکریپت و هشدار.
4. کارت مدل، کالیبراسیون، آستانه هزینه مورد انتظار و Guardrails v1.
مرحله 2 (6-12 هفته):- حافظه پنهان، قطع کننده مدار، کتابهای اجرا/تمرینات DR.
- خودکار بر روی RPS/latency، هزینه داشبورد و بازپرداخت.
- نظارت بر عدالت، آرشیو انتشار WORM.
- نمودار خدمت (نامزدها → دوباره رتبه)، تمایل تخته سنگ ورود به سیستم.
- چند منطقه ای، اقامت (EEA/UK/BR) با کلید های فردی.
- خودکار رول/overdrive، گزارش کیفیت/کالیبراسیون autogene.
18) چک لیست تحویل
- کارت مدل کامل است ؛ داده ها/ویژگی ها/کالیبراسیون/آستانه ها نسخه بندی می شوند.
- ویژگی های قرارداد و آزمون معادل آنلاین/آفلاین سبز است.
- SLO: p95، 5xx، پوشش - سبز بر روی سایه و 10٪ قناری ≥ 24 ساعت.
- هشدارها و داشبورد (تاخیر/خطا/رانش/هزینه مورد انتظار) گنجانده شده است.
- Guardrails RG/AML و ممیزی راه حل فعال هستند ؛ PII/اقامت ملاقات کرد.
- یک کلیک برگشت و حوادث runbook تست شده است.
- هزینه متناسب با بودجه ؛ HPA و حافظه پنهان پیکربندی شده اند.
19) ضد الگوهای و خطرات
اجرای دستی بدون رجیستری و مصنوعات غیر قابل تغییر.
ویژگی های ناسازگار آنلاین/آفلاین → اختلاف در فروش.
بدون سایه/قناری → رگرسیون پنهان.
آستانه هزینه مورد انتظار نیست، کالیبراسیون وجود ندارد.
جستجوی خارجی همزمان بدون وقفه/کش.
بدون DR/rollback، هیچ آرشیو انتشار WORM.
20) خط پایین
تولید ML یک «چالش مدل» نیست، بلکه یک پلت فرم مهندسی است: رجیستری و نسخه ها، رول های ایمن (سایه/قناری/آبی-سبز)، رشته ویژگی و کالیبراسیون، قابلیت مشاهده و SLO، گارد محافظ برای RG/AML، و یک طرح بازپرداخت روشن. با پیروی از این راهکار، شما یک نتیجه گیری سریع، قابل اعتماد و سازگار دریافت می کنید که به طور مداوم ارزش کسب و کار را با هزینه ای کنترل می کند.