Logo GH

Déploiement de modèles ML

1) Rôle et objectifs

Déploiement = livraison fiable de l'inference au produit et aux opérations tout en respectant RG/AML/Legal et les budgets.
Objectifs : faible latence, haute disponibilité, reproductibilité, sécurité et réversibilité rapide (rollback).

2) Architectures de Serving

2. 1 Modèles

En ligne (temps réel) : REST/gRPC, p95 50-150 ms pour la personnalisation ; ≤2 -5 s pour les alertes RG/AML.
Temps proche : microbatches 1-5 min (vitrines OLAP).
Batch/offline : vitrines de nuit Gold, exportations WORM pour régulateur.
In-process scoring : intégration d'un modèle light dans le service (faible latence).
Serverless : fonctions avec démarrage à froid pour les tâches rares.

2. 2 Topologies

Le service de modèle unique est → simple et rapide.
Ensemble/Graph (router → preprocess → model → postprocess) → piplines complexes.
Sidecar Feature Fetcher → tire les fiches en ligne des caches (Redis/Scylla).

3) Registre de modèle et versions

Registry : 'model _ id',' version ',' stage = {Staging, Production, Archived} ', artefacts (poids, préprocesseur, étalonnage), exigences (CPU/GPU/mémoire), carte modèle (données, métriques, risques, fairness).
Artefacts immuables : content-hash ; Copies WORM des versions.
Politique de retrait : uniquement via le registre et les manifestes déclaratifs.

4) Conteneurisation et emballage

Dockerfile (croquis) :
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"]
Serveur (FastAPI + gRPC, idée) :
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 et auto-skating

Deployment (fragment) :
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 (par 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) Stratégies jetées

Shadow (démarrage sombre) : le nouveau modèle traite les copies des requêtes, les réponses sont ignorées ; comparaison métrique/latence/coût.
Canary : 1-10 % du trafic → 25 % → 50 % → 100 % avec SLO vert ; retour automatique en cas de dégradation.
Bleu-Vert : piles parallèles ; pull de routage instantané.
Fonctionnalité Gradual Flag : routage par marchés/tenants/appareils.
A/B/n : Expérimentations en ligne avec des essais séquentiels.

Routage (idée) :
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 : équivalence

Une bibliothèque de transformation unique et Feature Store (online + offline).
Test d'équivalence : MAE/MAPE entre les fiches en ligne et la référence hors ligne sur l'échantillon de référence.
Cache de fiche : Redis/Scylla, TTL pour les traits de fenêtre ; Timaouts et fallbacks.

8) Observabilité, SLO et alerting

8. 1 repères SLI/SLO

Latence : p95 ≤ 150 ms (personnalisation), p99 ≤ 300 ms ; RG/AML alerte ≤ 5 avec end-to-end.
Disponibilité : ≥ 99. 9%.
Erreur d'infériorité : ≤ 0. 5% 5xx; coverage ≥ 99%.
Dérive : PSI fich/skora <seuil, ECE (étalonnage) stable.
Бизнес: uplift Net Revenue, fraud saved, time-to-intervene.

8. 2 Métriques (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
Alert (fragment) :
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 et politique de sécurité

Pré-/Post-filter : masques d'activités interdites (fréquences d'affichage, cooldown, interdiction des offers agressifs).
Politique Shielding : La pente est au-dessus du seuil RG → intervention douce/pause.
Audit : loging 'policy _ id', 'propensity', 'mask', 'decision', 'reason'.
PII et résidence : jetons au lieu d'ID, clés de cryptage séparées et clusters sur l'EEE/UK/BR ; interdiction des join's cross-régionaux sans fondement.
Secrets : KMS/CMK, Gestionnaire Secret ; pas de PII dans les loges/remorques.

10) Étalonnage, seuils et politique des solutions

Étalonnage (Platt/Isotonic) en tant qu'artefact.
Un seuil par cost expected ; configurable dans le registre/drapeau ficha.
Caps de sécurité : limites supérieures/inférieures de l'action, override manuelle pour la complication.

11) Retours, dégradations et DR

One-click rollback : bascule la route à la précédente 'model _ version'.
Runbook : scripts « latentnost↑ », « erreurs de 5xx↑ », « dérive/calibrage cassé », « fournisseur de fich externe indisponible ».
Isolation des pannes : circuit breaker, retry/backoff, cache de la dernière solution validée.
DR : backaps d'artefacts/registres, réplication dans une région « chaude », exercices.

Circuit breaker (pseudo-code) :
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback

12) Cost-engineering et performance

Profilage de la voie : fiches (30-60 %), modèle (20-40 %), réseau/IO (10-30 %).
Réduction des coûts : mise en cache des fiches chaudes, quotas de relais, modèles lightweight, INT8/FP16 (le cas échéant), lazy-postprocess.
HPA sur RPS/CPU/latency, limitation de la taille de l'état chez le stream fich.
Chargeback: cost/request, cost/feature; budgets pour les marchés/équipes.

13) Communiqués sécurisés et conformité

Critères de disponibilité : SLO vert sur shadow, pas de dérive/fuite, carte modèle pleine, diapositives fairness normal.
Réglementation : Archives WORM de sortie (poids, étalonnage, seuils, métriques, logs de test), rapports d'exportation inchangés.
DSAR/RTBF : procédures pour supprimer les traces d'un utilisateur particulier des cases/logs/fiches.

14) QA avant de rouler

Tests d'intégration : contrat API, schémas fich, cas « vides/extrêmes ».
Charge : p99, queues de distribution, trafic burst.
Test d'équivalence en ligne/hors ligne.
Tests de chaos : désactivation du cache fich/base, temporisation des services externes.

15) Exemples de configurations

Ingress avec routage canarien (idée) :
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}
Santé du modèle (endpoint) :
python
@app. get("/healthz")
def health():
return {"ok": True, "model_version": "1. 8. 3", "registry_sig_ok": verify_signature()}

16) Processus et RACI

R (Responsible) : MLOps (serving/orchestration/observabilité), Data Eng (fiches/caches/contrats), Data Science (cartes modèles/étalonnage/seuils).
A (Accountable): Head of Data / CDO.
C (Consulté) : Conformité/DPO (PII/RG/AML/DSAR), Sécurité (KMS/secrets/audit), SRE (SLO/incidents), Finances (ROI/budgets).
I (Informed) : Produit/Marketing/Opérations/Support.

17) Feuille de route pour la mise en œuvre

MVP (3-6 semaines) :

1. Registre des modèles et artefacts immutables ; Service FastAPI/gRPC + K8s/Helm.

2. Shadow-start avec surveillance p95/5xx/dérive, test d'équivalence fich.

3. Canary 10 % → 50 % → 100 % avec auto-script et alertes.

4. Carte modèle, étalonnage, seuil expected-cost et Guardrails v1.

Phase 2 (6-12 semaines) :
  • Ficha cash, circuit breakers, runbooks/DR exercice.
  • Auto-skating sur RPS/latency, cost-dashboard et chargeback.
  • Slice monitoring fairness, WORM archive des versions.
Phase 3 (12-20 semaines) :
  • Graphe de serving (candidats → re-rank), slate-loging propensity.
  • Multi-région, résidence (EEE/UK/BR) avec clés séparées.
  • Auto-recto/glisser sur la dérive, auto-génération de rapports de qualité/étalonnage.

18) Chèque-liste de préparation

  • Carte modèle remplie ; les données/fiches/étalonnage/seuils sont versionnés.
  • Les contrats fich et le test d'équivalence online/offline sont verts.
  • SLO : p95, 5xx, coverage - vert sur shadow et 10 % canary ≥ 24 h.
  • Alerties et dashboards (latence/erreurs/dérive/expected-cost) inclus.
  • Les Guardrails RG/AML et les audits de solutions sont actifs ; PII/résidence respectée.
  • One-click rollback et runbook incidents testés.
  • Le coût correspond au budget ; HPA et cache sont configurés.

19) Anti-schémas et risques

Les mains jetées sans registre et les artefacts immutables.
Les fiches en ligne/offline incohérentes → les écarts de vente.
L'absence de shadow/canary → les régressions cachées.
Le seuil n'est pas par le cost expected, il n'y a pas d'étalonnage.
Lookups externe synchrone sans temporisation/cache.
Pas de DR/rollback, pas d'archive WORM de sortie.

20) Résultat

La production ML n'est pas un « challenge du modèle » mais une plateforme d'ingénierie : registre et versions, shadow/canary/blue-green, discipline des fiches et étalonnages, observabilité et SLO, guardrails pour RG/AML et plan de recul clair. En suivant ce pleybuk, vous obtiendrez un inference rapide, fiable et conforme qui apporte une valeur commerciale stable à un coût contrôlé.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Telegram
@Gamble_GC
Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.