Logo GH

部署ML模型

1)角色和目標

部署=在遵守RG/AML/Legal和預算的情況下可靠地將地獄交付給產品和操作。
目標:低潛伏性、高可用性、可重復性、安全性和快速可逆性(滾回)。

2)伺服架構

2.1種模式

在線(實時):REST/gRPC,p95 50-150毫秒用於個性化;RG/AML alert的≤2 -5秒。
近實時:1-5分鐘微庫(OLAP店面)。
Batch/offline:黃金夜店面,WORM出口給監管機構。
流程評分:將輕型模型嵌入到服務中(低延遲)。
Serverless:用於罕見任務的冷啟動功能。

2.2個拓撲

單個模型服務→簡單快捷。
Ensemble/Graph(router → precess → model → postprocess)→復雜的管道。
Sidecar Feature Fetcher →從緩存(Redis/Scylla)中提取在線仙女。

3)模型註冊表和版本

Registry:「model_id」,「version」,「stage={Staging,Production,Archived},」文物(重量,預處理器,校準),要求(CPU/GPU/內存),模型卡(數據,度量,風險,公平性)。
不可移動的文物:內容混合;版本的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和自動滑行

部署(片段):
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;降解時自動回滾。
藍綠色:平行堆棧;即時路由卷軸。
Gradual Feature Flag:跨市場/隱患/設備的路由。
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) Fichi online/offline: 對等

統一轉換庫和功能商店(online+offline)。
等效性測試:在線模擬和參考樣本上的離線基準之間的MAE/MAPE。
Cash Fitch:Redis/Scylla,TTL用於窗口功能;taymauts和fallbacks。

8)可觀察性,SLO和異位

8.1 SLI/SLO地標

潛伏性:p95 ≤ 150毫秒(個性化),p99 ≤ 300毫秒;RG/AML Alerta ≤ 5具有端到端。

可用性: ≥ 99。9%.

地獄錯誤: ≤ 0。5% 5xx;coverage ≥ 99%.

漂移:PSI fich/scora<閾值,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
Alerta(片段):
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:禁止活動的面具(放映頻率,冷落,禁止侵略性離場)。
Policy Shielding:高於RG閾值→軟幹預/暫停。
審計:編寫「policy_id」,「propensity」,「mask」,「decision」,「reason」。
PII和居住權:代幣而不是ID,EEA/UK/BR上的單獨加密密鑰和集群;禁止無根據的跨區域合作。
秘密:KMS/CMK,秘密經理;博客/預告片中沒有PII。

10)校準、閾值和決策策略

校準(Platt/Isotonic)作為人工制品。
開銷閾值;可在註冊表/幻燈片中配置。

安全帽: 上面/下面的動作邊框,手動覆蓋,以配合.

11)回滾,降解和DR

單擊滾動:將路由切換到以前的「模型_版本」。
Runbook:腳本「latentnost↑」,「5xx↑錯誤」,「漂移/校準破裂」,「無法使用外部財務提供商」。
故障隔離:電路斷路器,retry/backoff,最後一個有效解決方案的緩存。
DR:文物/註冊表備份,復制到「溫暖」區域,演習。

電路斷路器(偽代碼):
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback

12)成本工程和性能

路徑分析:fichi(30-60%),模型(20-40%),網絡/IO(10-30%)。
降低成本:熱點緩存,中繼配額,輕量級模型,INT8/FP16(如果適用),lazy-postprocess。
RPS/CPU/latency上的HPA,流媒體上的狀態大小限制。
Chargeback: cost/request, cost/feature;市場/團隊預算。

13)安全發布和合規性

準備就緒標準:陰影上的SLO綠色,沒有漂移/泄漏,模特卡滿,幻燈片正常。
調節:WORM發布存檔(重量、校準、閾值、度量、測試日誌)、不可更改的出口報告。
DSAR/RTBF:從腰包/登錄/照片中刪除特定用戶痕跡的過程。

14) QA推出前

集成測試:API合同,幻想方案,「空/極端」案例。
負載:p99,分布尾巴,爆破流量。
在線/離線等效性測試。
混沌測試:關閉遠程緩存/基地,外部服務時間表。

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(響應):MLOps(旋轉/編排/可觀察性),Data Eng(fici/緩存/合同),數據科學(模型卡/校準/閾值)。

A (Accountable): Head of Data / CDO.

C(咨詢):合規性/DPO(PII/RG/AML/DSAR),安全(KMS/秘密/審計),SRE(SLO/事件),財務(ROI/預算)。
I (Informed):產品/營銷/運營/支持。

17)實施路線圖

MVP(3-6周):

1.模型註冊表和固定文物;FastAPI/gRPC服務+K8s/Helm。

2.帶有p95/5xx/漂移監視的影子發射,相等測試。

3.金絲雀10% → 50% → 100%帶有自動回滾和警報。

4.模型卡,校準,開銷閾值和Guardrails v1。

第二階段(6至12周):
  • Ficha-cache, circuit breakers, runbooks/DR練習。
  • RPS/latency上的自動滑行,成本降壓板和chargeback。
  • 幻燈片監視fairness,WORM發行檔案。
第三階段(12至20周):
  • Serving圖形(候選者→重新排名),板條紋拼寫。
  • 多區域,居住地(EEA/UK/BR)具有單獨的密鑰。
  • 自動傾斜/漂移,質量報告/校準自動生成。

18)準備就緒支票清單

  • 模型卡已滿;數據/fici/校準/閾值已轉換。
  • 在線/離線等價合同和測試為綠色。
  • SLO: p95, 5xx, coverage-陰影上的綠色和10%的金絲雀≥ 24小時。
  • Alerta和dashbords (潛在/錯誤/漂移/expected-cost)包括在內。
  • Guardrails RG/AML和決策審核處於活動狀態;PII/居住權。
  • 單擊滾動和事件運行手冊進行了測試。
  • 成本適用於預算;HPA和緩存已配置。

19)反模式和風險

沒有註冊表和固定人工制品的手工拔出。
未協調的在線/離線照片→銷售差異。
沒有影子/金絲雀→隱藏回歸。
閾值不是通過開銷,沒有校準。
同步外部lookups不帶計時/緩存。
沒有DR/rollback,沒有WORM發行檔案。

20)結果

ML生產不是「模型調用」,而是工程平臺:註冊表和版本,安全外賣(shadow/canary/blue-green),健身和校準學科,可觀察性和SLO,RG/AML的護欄以及明確的回滾計劃。跟隨這個花花公子,您將獲得快速,可靠和合規的地獄,以可控制的成本穩定地帶來業務價值。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

Telegram
@Gamble_GC
開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。