部署ML模型
(部分: 技術和基礎設施)
簡短摘要
可靠的ML生產部署是以下內容的集合:可重復工件(模型/代幣/配料),標準化伺服器(Triton/KServe/vLLM),安全發布過程(金絲雀/藍綠色/陰影),可觀察性(潛伏性,質量,漂移)和事件運行手冊。對於iGaming來說,關鍵是低延遲(反親和力/個性化),嚴格的SLO,PII/合規性和成本控制。
1)部署模式
Batch(離線):夜間/每小時作業(評分回顧、片段更新)。便宜,可預見。
在線(同步API):防凍,個性化,推薦,LLM提示。需要p95 SLA(例如≤ 100-300毫秒)。
Stream(近實時):用於CRM信號和觸發器的窗口1-60秒(Flink/Spark/Kafka Streams)。
混合動力:在線快速粗糙速率+離線重新計算/校準。
2)文物和包裝
模型工件:重量,標記器,預處理/後處理預針,dataset/代碼版本。
格式:PyTorch/TF SavedModel,用於兼容性的ONNX,用於加速的TensorRT引擎,用於LLM量化的GGUF/awq/gptq。
容器:帶有針刺依賴性的Docker OCI圖像;多平臺標簽(CPU/GPU)。
Immutable發行版: 標記'model: fraud-v3.2.1`, `image: fraud:3.2.1`.
3)伺服平臺
Triton Inference Server:多模式,動態戰鬥,合奏管道。
KServe(K8s本地):自動滑行(HPA/KPA),金絲雀/shadow,自己的運行時間。
vLLM/TGI(LLM):連續擊球,KV緩存,投機解碼。
Fichestor: online (ms-SLA)+offline for feature parity一致性。
yaml apiVersion: serving. kserve. io/v1beta1 kind: InferenceService metadata: { name: fraud }
spec:
predictor:
canaryTrafficPercent: 15 model:
modelFormat: { name: triton }
storageUri: s3://models/fraud/v3. 2. 1/
resources: { limits: { nvidia. com/gpu: "1" } }
4)發布策略
Blue-Green:兩個相同的堆棧、即時流量切換、簡單的回滾。
金絲雀:SLO/質量遊戲的流量逐漸增加(1% → 5% → 25% → 100%)。
影子:新模型獲得通信的副本,答案不影響-安全評估。
A/B測試:測量業務指標(轉換,保留),統計意義。
map $request_id $route {
default old;
"~ canary" new; # 5-15% by flag/cook/feature-toggle
}
5)SLO和工作預算
在線反性/個性化:p95 ≤ 100-150毫秒,p99 ≤ 250-400毫秒。
LLM提示(128-512令牌):p95 ≤ 300-800毫秒生成第一個令牌,tokens/s ≥目標。
可用性:≥ 99。9%用於關鍵路徑。
質量:AUC/PR-AUC/Top-K@N ≥閾值;有毒/不正確答案的百分比≤ X。
費用:$/1k查詢或$/1k代幣-在預算範圍內。
6)型號的CI/CD
輸送機:1.火車/finetune →註冊表中的模型(元數據:數據/代碼/度量/許可證)。
2.Pack&Validate: unit prots./prots., API兼容性,負載測試(latency/tokens/s)。
3.金絲雀倉庫:交通量的1-5%;可觀察性(SLO/質量/成本)。
4.Promote/Rollback按標準遊戲。
GitHub Actions片段的示例(想法):yaml jobs:
build-serve:
steps:
- run: make export_onnx && make docker_build
- run: pytest tests/serve --maxfail=1
- run: python perf_check. py --p95 120 --fail-on-regress
- run: kubectl apply -f kserve-canary. yaml
7)優化延遲和吞吐量
Batching/microbatching (Triton/vLLM),查詢並行性,CPU前/後處理。
校準量化(INT8/FP8/INT4);TensorRT/ONNX運行時匯編。
緩存:fich(online fichestor/Redis),結果和LLM的KV緩存。
Warmup:變質時加熱/緩存;汽車牌的「溫暖」墊。
超時預算:提前停止,令牌/節拍限制,溫度適應。
8)可觀察性: 遙測,漂移,質量
SRE指標:RPS,p50/p95/p99,錯誤(5xx/4xx),GPU/CPU util,內存,隊列,batch-fill。
ML度量標準:AUC/PR-AUC, calibration error, coverage, tokens/s,響應長度,緩存命中。
漂移:PSI/JS在輸入/分配上的差異,分布移位監測;Alertes。
在線質量:對照金色示例,響應采樣,LLM的自動RAG得分/毒性。
日誌:prompt/響應(匿名),trace_id,模型版本。
inference_latency_ms_bucket{model="fraud-v3. 2. 1",le="100"} 12345 inference_qps{model="fraud-v3. 2. 1"} 450 tokens_per_second{model="llm-help-v1"} 210
9)基金管理和一致性
功能親和力:向離線/在線的相同轉換;將fici轉換為代碼。
在線fichestor:ms-SLA,TTL,upsert,idempotency;快取更接近伺服器。
Backfill/refresh:確保在線評分與離線度量標準不沖突的計劃。
10)安全,PII和許可證
PII:令牌/掩蔽,按區域劃分(EU/TR/LATAM),靜止/過境加密。
秘密/密鑰:KMS/Secrets Manager,圖像中沒有秘密。
LLM策略:內容過濾器,安全塞子,紅色團隊。
許可證: 檢查datasets/重量的條件,禁止重新分區/商業.
隔離:namespace-RBAC,配額,GPU池的taints/tolerations。
11) Autoscale和QoS
Autoscaling:通過RPS/隊列/latency/GPU-util;熱線的min-ready-pods。
QoS類:關鍵的在線(anti-fraud)> LLM聊天>實驗。提前支持關鍵。
多區域:基於latency的路由,變暖的重量緩存,幻想復制。
12) Runbooks和事件
P99的增長:檢查batch-fill,隊列,GPU-util,緩存小姐;啟用激進的戰鬥/降級beam/令牌。
質量下降:回滾到以前的版本,包括陰影,固定漂移源。
成本不斷增長:啟用量化/TensorRT,提高對接,優化對接/緩存,通過RAG/結果緩存降低 LLM生成頻率。
PII事件:立即停止,召回文物,訪問審計,向監管機構報告程序。
13)模式示例
Triton-動態擊球(片段):text dynamic_batching { preferred_batch_size: [4, 8, 16, 32]
max_queue_delay_microseconds: 2000 }
instance_group { kind: KIND_GPU count: 2 }
vLLM啟動(想法):
--tensor-parallel-size 2
--max-num-seqs 512
--gpu-memory-utilization 0. 9
API兼容性檢查(偽代碼):
python resp = client. score({"features": f}) # v3. 2. 1 assert set(resp. keys()) >= {"score","version","latency_ms"}
14)實施支票
1.定義SLO/SLA (latency/availability/quality/cost)。
2.標準化工件和模型註冊表(版本、元數據)。
3.選擇伺服堆棧(Triton/KServe/vLLM)和fichestor。
4.調整金絲雀/藍綠色/影子和自動門。
5.構建CI/CD:兼容性測試,perf回歸,安全升級。
6.啟用可觀察性(SRE+ML度量)、漂移監視和異常值。
7.提供PII/安全/許可證和審核。
8.配置自動軌道/QoS和多區域政策。
9.準備一份運行手冊並度過遊戲日。
10.輸入成本管理:戰鬥、量化、緩存、RAG。
15)反模式
Deploy「原樣」沒有金絲雀/可觀察性→意外事件。
離線/在線不一致的fici →度量差異。
沒有Perf測試和限制→ p99「浮動」。
在不匿名的情況下編寫計劃/響應→ PII風險。
一個普通的GPU池適用於沒有QoS的所有人→關鍵的在線問題。
文物沒有回滾,沒有狙擊→停機時間很長。
結果
ML模型的成功部署包括容器化工件,標準化伺服器,安全釋放過程(金絲雀/藍綠色/陰影),剛性SLO和質量/漂移/成本觀察。添加fichestor、CI/CD和perf gates、PII衛生、autoscale和QoS-您的防凍劑/個性化/LLM服務將始終保持iGaming的峰值負載,同時保持p99和預算的可預測性。