نشر نماذج ML
1) الدور والأهداف
النشر = تقديم استنتاج موثوق به للمنتجات والعمليات مع تلبية النمو الحقيقي/مكافحة غسل الأموال/الشؤون القانونية والميزانيات.
الأهداف: انخفاض زمن الوصول، وارتفاع التوافر، وقابلية التكاثر، والسلامة، والتراجع السريع.
2) خدمة البنى
2. 1 أنماط
عبر الإنترنت (في الوقت الفعلي): REST/gRPC، p95 50-150 ms للتخصيص ؛ ≤2 -5 s لتنبيهات RG/AML.
في الوقت الفعلي تقريبًا: مباريات صغيرة 1-5 دقائق (OLAP-showcases).
الدفعة/غير متصلة بالإنترنت: معارض ذهبية ليلية، صادرات WORM للجهة التنظيمية.
التسجيل أثناء العملية: تضمين نموذج الضوء في الخدمة (زمن انتقال منخفض).
بدون خادم: ميزات البداية الباردة للمهام النادرة.
2. 2 طوبولوجيا
خدمة نموذج واحد → بسيطة وسريعة.
مجموعة/رسم بياني (جهاز توجيه → قبل المعالجة → نموذج → بعد المعالجة) → خطوط أنابيب معقدة.
يسحب Sidecar Feature Fetcher → الميزات عبر الإنترنت من المخابئ (Redis/Scylla).
3) السجل النموذجي والنسخ
Registry: 'model _ id', 'version', 'staging = {Staging, Production, Archived}', 'articles (weights, preprocessor, calibration), contributions (CPU/GPU U U P/reMemory), Mare, Mart.
القطع الأثرية الثابتة: تجزئة المحتوى ؛ نسخ 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 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) استراتيجيات التعميم
الظل: النموذج الجديد يعالج نسخا من الطلبات، ويتم تجاهل الردود ؛ مقارنة المقاييس/زمن الانتهاء/التكلفة.
الكناري: 1-10٪ من حركة المرور → 25٪ → 50٪ → 100٪ مع SLOs الخضراء ؛ التراجع التلقائي عن التحلل.
الأزرق الأخضر: أكوام متوازية ؛ مفتاح التوجيه الفوري.
علم الميزة التدريجي: توجيه السوق/المستأجر/الجهاز.
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 _ girtch', 'score', 'postprocess',' guardrail'.
9) حواجز حماية RG/AML والسياسة الأمنية
Pre-/Post-filter: أقنعة الأفعال المحظورة (تواتر الانطباعات، والتهدئة، وحظر العروض العدوانية).
درع السياسة: السرعة فوق عتبة النمو الحقيقي → التدخل الناعم/التوقف المؤقت.
مراجعة الحسابات: تسجيل 'سياسة _ معرف'، 'ميل'، 'قناع'، 'قرار'، 'سبب'.
PII والإقامة: رموز بدلاً من بطاقة الهوية، وتشفير منفصل ومفاتيح عنقودية على EEA/UK/BR ؛ حظر الانضمام عبر المناطق دون مبرر.
الأسرار: KMS/CMK، مدير سري ؛ لا يوجد PII في السجلات/المسارات.
10) سياسة المعايرة والعتبات والقرار
المعايرة (بلات/إيزوتونيك) كقطعة أثرية.
العتبة حسب التكلفة المتوقعة ؛ قابلة للتكوين في السجل/علم الميزة.
الحدود القصوى للسلامة: الحدود القصوى/الدنيا للإجراءات، والتجاوز اليدوي للامتثال.
11) التراجع والتدهور و DR
رجوع بنقرة واحدة - يحول المسار إلى «الطراز _ الإصدار» السابق.
كتاب التشغيل: نصوص «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 (إذا كان ذلك مناسبًا)، والبريد البريدي.
HPA على RPS/CPU/latency، تقييد حجم الدولة على ميزة التيار.
رد التكاليف: التكلفة/الطلب، التكلفة/الخاصية ؛ ميزانيات الأسواق/الأفرقة.
13) الإطلاقات الآمنة والامتثال
معايير الاستعداد للمنتج: SLO الأخضر في الظل، بدون انجراف/تسرب، بطاقة الطراز ممتلئة، شرائح الإنصاف طبيعية.
المنظم: أرشيف WORM للإصدار (الأوزان، المعايرة، العتبات، المقاييس، سجلات الاختبار)، تقارير التصدير غير القابلة للتغيير.
DSAR/RTBF: إجراءات لإزالة آثار مستخدم معين من المخابئ/السجلات/الميزات.
14) QA قبل طرحها
اختبارات التكامل: عقد واجهة برمجة التطبيقات، مخططات مميزة، حالات فارغة/متطرفة.
الحمل: 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 (بطاقات نموذجية/معايرة/عتبات).
ألف (مسؤول): رئيس قسم البيانات/المدير التنفيذي.
جيم (استشاري): الامتثال/إدارة شؤون الإعلام (PII/RG/AML/DSAR)، الأمن (KMS/الأسرار/التدقيق)، SRE (SLO/الحوادث)، المالية (ROI/الميزانيات).
I (معلومات): المنتج/التسويق/العمليات/الدعم.
17) خارطة طريق التنفيذ
أفضل لاعب (3-6 أسابيع):1. السجل النموذجي والتحف غير القابلة للتغيير ؛ خدمة FastAPI/gRPC + K8s/Helm.
2. إطلاق الظل مع مراقبة p95/5xx/الانجراف، اختبار تكافؤ الميزات.
3. كناري 10٪ → 50٪ → 100٪ مع تراجع النص التلقائي والتنبيهات.
4. بطاقة الطراز والمعايرة وعتبة التكلفة المتوقعة و Guardrails v1.
المرحلة 2 (6-12 أسبوعاً):- ميزة ذاكرة التخزين المؤقت، قواطع الدوائر، كتيبات التشغيل/تمارين DR.
- القياس التلقائي على RPS/زمن الوصول ولوحة القيادة ذات التكلفة ورد التكاليف.
- مراقبة شريحة الإنصاف، أرشيف إصدار WORM.
- رسم بياني للخدمة (المرشحون → إعادة الترتيب)، ميول تسجيل الأرقام.
- إقامة متعددة المناطق (EEA/UK/BR) بمفاتيح فردية.
- تقارير جودة/معايرة autogene.
18) قائمة التسليم المرجعية
- البطاقة النموذجية ممتلئة ؛ وتحرر البيانات/الخصائص/المعايرة/العتبات.
- ميزة العقود واختبار المعادلة عبر الإنترنت/غير متصل بالإنترنت خضراء.
- SLO: p95، 5xx، تغطية - أخضر على الظل و 10٪ كناري ≥ 24 ساعة.
- يتم تضمين التنبيهات ولوحات القيادة (وقت الانتهاء/الأخطاء/الانجراف/التكلفة المتوقعة).
- تعمل عمليات تدقيق RG/AML والحلول ؛ اجتمعت PII/الإقامة.
- اختبار حوادث التراجع والكتيب بنقرة واحدة.
- تتناسب التكلفة مع الميزانية ؛ تم تكوين HPA و cache.
19) الأنماط والمخاطر المضادة
طرح يدوي بدون تسجيل وقطع أثرية غير قابلة للتغيير.
ميزات غير متسقة عبر الإنترنت/غير متصلة بالإنترنت → التناقضات في المبيعات.
لا ظل/كناري → تراجعات خفية.
العتبة ليست التكلفة المتوقعة، ولا توجد معايرة.
مراقبون خارجيون متزامنون بدون مهلات/مخبأ.
لا DR/التراجع، لا أرشيف إصدار WORM.
20) خلاصة القول
إنتاج ML ليس «تحديًا نموذجيًا»، ولكنه منصة هندسية: التسجيل والإصدارات، والطرح الآمن (الظل/الكناري/الأزرق الأخضر)، وانضباط الميزة والمعايرة، وقابلية الملاحظة و SLO، وحواجز الحماية لـ RG/AML، و خطة التراجع الواضحة. من خلال اتباع دليل اللعبة هذا، تحصل على استنتاج سريع وموثوق ومتوافق يوفر باستمرار قيمة العمل بتكلفة خاضعة للرقابة.