Piplines AI et automatisation de la formation
1) Désignation et principes
Objectif : Transformer de manière fiable et reproductible les données → les fiches → les modèles → les solutions → la rétroaction, avec un minimum de temps-à-valeur et un contrôle des risques/coûts.
Principes :- Pipeline-as-Code : tout (DAG, configi, tests, politiques) - dans Git, via PR et revues.
- Determinisme : versions fixes de données/code/conteneurs/dépendances.
- Separation of Concerns: DataOps, FeatureOps, TrainOps, DeployOps, MonitorOps.
- Automation guidée : automatisons, mais avec des « gates » de qualité, de sécurité et de conformité.
- Privacy by Design : minimisation du PII, résidence, audit.
2) Couches et architecture de convoyeur
1. Ingest & Bronze : accueil fiable des événements/trampolines (CDC, pneus, retraits, DLQ).
2. Argent (normalisation/enrichissement) : SCD, devises/temps, nettoyage, déduplication.
3. Gold (vitrines) : tableaux de sujets et datacets pour la formation/rapports.
4. Feature Store : formule unique fich online/offline, versions et SLO.
5. Train & Validation : préparation des échantillons, formation, calibrage, évaluation/checkgate.
6. Registry & Promotion : registre des modèles, cartes de qualité, politique de promotion.
7. Serving : REST/gRPC/Batch, caches de fich, drapeaux de ficha, canary/shadow.
8. Monitor & Feedback : SLI/SLO, dérive/calibrage, labels en ligne, auto-retraite.
3) Orchestration : Modèles DAG
Daily CT (D + 1) : cycle de données nocturnes → fiches → formation → validation → candidat au registre.
Event-Driven Retrain : déclencheur par dérive PSI/ECE/expected-cost ou par sortie de schéma.
Rolling Windows : reformulation weekly/monthly avec une « fenêtre glissante » de données.
Blue/Green Artifacts : tous les artefacts sont immutables (hash), versions parallèles.
Dual-write v1/v2 : migration de schémas/fich par double écriture et comparaison d'équivalence.
python with DAG("ct_daily", schedule="@daily", start_date=..., catchup=False) as dag:
bronze = BashOperator(task_id="ingest_cdc", bash_command="ingest.sh")
silver = BashOperator(task_id="silver_norm", bash_command="dbt run --models silver")
gold = BashOperator(task_id="gold_marts", bash_command="dbt run --models gold")
feats = BashOperator(task_id="feature_store_publish", bash_command="features publish")
ds = BashOperator(task_id="build_dataset", bash_command="dataset build --asof {{ ds }}")
train = BashOperator(task_id="train", bash_command="trainer run --config conf.yaml")
eval = BashOperator(task_id="evaluate", bash_command="eval run --gate conf/gates.yaml")
reg = BashOperator(task_id="register", bash_command="registry add --stage Staging")
bronze >> silver >> gold >> feats >> ds >> train >> eval >> reg
4) Ensembles de données et échantillons
Point-in-time join et « pas d'avenir » pour les fiches/labels.
Stratification par marchés/tenants/temps, holdout et « gap » pour les fuites.
Versioning : 'data _ version', 'logic _ version', 'asof _ date' ; WORM-snapshots.
5) Feature Store et équivalence online/offline
Une seule spécification (nom, formule, propriétaire, SLO, tests).
En ligne = hors ligne : code de transformation générique ; test d'équivalence (MAE/MAPE).
TTL et cache : fenêtres 10m/1h/1d ; Timaoutes/Retrai ; folbacky "last_known_good".
yaml name: bets_sum_7d owner: ml-risk offline: {source: silver.fact_bets, window: "[-7d,0)"}
online: {compute: "streaming_window: 7d", ttl: "10m"}
tests:
- compare_online_offline_max_abs_diff: 0.5 slo: {latency_ms_p95: 20, availability: 0.999}
6) L'automatisation de l'apprentissage (CT) et les jeux de qualité
Le CT-cycle : la préparation → l'enseignement → le calibreur → l'estimation → l'enregistrement du candidat.
Gates (exemple) :- Hors ligne : PR-AUC ≥ repère − δ ; ECE ≤ 0. 05; expected-cost ≤ limite.
- Slice/Fairness : chute des métriques dans n'importe quelle diapositive ≤ Y %; l'impact dispersé est normal.
- Équivalence fich : o.
- Coût : temps/ressources ≤ budget.
yaml gates:
pr_auc_min: 0.42 ece_max: 0.05 expected_cost_delta_max: 0.0 slice_drop_max_pct: 10 features_equivalence_p95_abs_diff_max: 0.5
7) Registre des modèles et promotions
Carte modèle : données, fenêtres, fiches, métriques off/online, étalonnage, risques, propriétaire.
Stages: `Staging → Production → Archived`; promotion uniquement via des gates éprouvées.
Stratégie de retour en arrière : Stocker les ≥N des dernières versions ; one-click rollback.
8) CI/CD/CT : comment relier
CI (code/tests) : tests unitaires/intégratifs/contractuels, linters, scans de sécurité.
CD (serving) : Docker/K8s/Helm/ficha drapeaux, canary/shadow/blue-green.
CT (données/formation) : orchestrateur par horaire/événements ; les artefacts → le registre.
Promotion Gates : Auto-release dans les SLO en ligne verts (sur canary ≥ X heures).
9) Pluralité et résidence
Tenants/régions : Piplines isolées et clés de cryptage (EEE/UK/BR) ; interdiction des join's interrégionaux sans fondement.
Secrets : KMS/CMK, Gestionnaire Secret ; ID tokénisés dans les logs.
Politiques DSAR/RTBF : projections et édition sélectives dans les fiches et les logs ; Legal Hold pour les cas.
10) Suivi → rétroaction → retrain
SLI/SLO: latency p95/p99, 5xx, coverage, cost/request; dérive PSI/KL, ECE, expected-cost.
Labels en ligne : proxy (heure/jour) et détenus (D + 7/D + 30/D + 90).
Auto-action : recalibration/threshold update → shadow retrain → canary → promotion.
Runbooks : scénarios de dégradation (dérive, calibrage, fich cache, fournisseurs).
11) Sécurité, RG/AML et politique de solutions
Guardrails : pré/post-filtre, caps fréquences, cooldown, listes d'interdictions.
Politique Shielding : modèle → solution → filtre de stratégie → action.
Audit : 'model _ id/version', 'feature _ version', 'threshold',' policy _ id ', causes.
Archives WORM : versions, rapports de qualité, journaux de tests/promotions.
12) Coût et performance
Profil de la voie : fiches (30-60 %), infériorité (20-40 %), IO/réseau.
Cost-dashboards : cost/request, cost/feature, montre GPU/CPU, petits fichiers.
Optimisation : matérialisation hors ligne des fiches lourdes, cache des fenêtres chaudes, INT8/FP16, quotas de relais/backfill.
Chargeback : nous répartissons le budget par équipe/marchés, contrôlons les fiches « chères ».
13) Exemples (fragments)
Argo Workflow:yaml apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: {name: ct-daily}
spec:
entrypoint: pipeline templates:
- name: pipeline dag:
tasks:
- name: gold template: task arguments: {parameters: [{name: cmd, value: "dbt run --models gold"}]}
- name: features dependencies: [gold]
template: task arguments: {parameters: [{name: cmd, value: "features publish"}]}
- name: train dependencies: [features]
template: task arguments: {parameters: [{name: cmd, value: "trainer run --config conf.yaml"}]}
- name: eval dependencies: [train]
template: task arguments: {parameters: [{name: cmd, value: "eval run --gate conf/gates.yaml"}]}
- name: task inputs: {parameters: [{name: cmd}]}
container: {image: "ml/ct:latest", command: ["/bin/bash","-lc"], args: ["{{inputs.parameters.cmd}}"]}
Gate-script (pseudo-code) :
python ok = (pr_auc >= gate.pr_auc_min and ece <= gate.ece_max and expected_cost_delta <= gate.expected_cost_delta_max and slice_drop_pct <= gate.slice_drop_max_pct and features_equivalence_p95_abs_diff <= gate.features_equivalence_p95_abs_diff_max)
exit(0 if ok else 1)
Promotion politique (idée) :
yaml promotion:
require:
- offline_gates_passed
- canary_online_hours >= 24
- slo_green: [latency_p95, error_rate, coverage]
- drift_warn_rate <= 5%
14) Processus et RACI
R (Responsible):- Data Eng — Ingest/Silver/Gold, Feature Store, CDC/Backfill;
- Data Science - échantillons/formation/étalonnage/gates ;
- MLOps - оркестрация/реестр/сервинг/наблюдаемость.
- A (Accountable): Head of Data / CDO.
- C (Consulté) : Conformité/DPO (PII/RG/AML/DSAR), Sécurité (KMS/audit), SRE (SLO/coût), Finances (budgets/ROI), Produit.
- I (Informed) : Marketing/Opérations/Support.
15) Feuille de route pour la mise en œuvre
MVP (3-6 semaines) :1. DAG «daily CT»: Bronze→Silver→Gold→Feature Store→Train→Eval→Registry(Staging).
2. Feature Store v1 et test d'équivalence online/offline.
3. Gates de qualité (PR-AUC/ECE/expected-cost/slice).
4. Registre des modèles, carte et archives WORM des versions.
Phase 2 (6-12 semaines) :- Auto-recalibration/threshold update, canary-promotion sur SLO en ligne.
- Event-driven retrain par dérive ; dual-write v1/v2 pour les migrations.
- Cost-dashboards et quotas de backfill/replis ; isolation multi-tenant.
- Politiques fairness sur les diapositives et auto-reporting.
- Résidence multirégionale (EEE/UK/BR) avec clés séparées.
- Auto-rétroaction sur les horaires et les événements, auto-génération de la documentation des piplines.
16) Chèque-liste de préparation
- Pipeline-as-Code в Git; Tests CI (unit/intégration/contrats/sécurité).
- Bronze/Silver/Gold et Feature Store sont stables ; l'équivalence fich est verte.
- Les gates hors ligne sont passées ; la carte modèle est remplie ; Une archive WORM a été créée.
- Canary ≥ 24 h avec SLO vert ; le bouton rollback et le bouton kill-switch fonctionnent.
- Le suivi de la dérive/ECE/expected-cost et des labels en ligne est inclus.
- PII/résidence/DSAR/RTBF/Legal Hold respecté ; l'audit est configuré.
- Coût dans le budget ; cache/quotas/limites de fiches et de replis sont actifs.
17) Anti-modèles et risques
Pas manuel, « jetable » en dehors de l'orchestre ; pas d'histoire de Git.
Formation sans gates et sans cartes ; promotion « à la main ».
Les fiches en ligne/hors ligne incohérentes → les écarts sur la vente.
Ignorer la dérive/calibration/expected-cost ; seulement ROC-AUC « pour l'espèce ».
Manque de résidence/politique PII ; loger les identifiants « bruts ».
Backfill illimité/répliques → l'explosion du coût et l'impact sur la SLA.
18) Résultat
Les piplines AI sont un convoyeur de valeur, pas un ensemble d'ordinateurs portables. Formalisez les couches de données, Feature Store et CT/CI/CD, ajoutez des gages de qualité et de sécurité, automatisez la dérive, gardez l'équivalence en ligne/hors ligne et une économie transparente. Vous obtiendrez ainsi un cycle rapide, prévisible et cohérent de « données → modèle → effet », évolutif en fonction des marchés et du temps.