Rurociągi AI i automatyka treningowa
1) Cel i zasady
Cel: jest wiarygodny i powielany, aby włączyć dane → funkcje → modele → decyzje → opinie, z minimalnym czasem do wartości i kontroli ryzyka/kosztów.
Zasady:- Pipeline-as-Code: wszystko (DAG, konfiguracje, testy, politycy) - w Git, poprzez PR i przegląd.
- Determinizm: stałe wersje danych/kodu/kontenerów/zależności.
- Rozdzielenie obaw: Funkcje operacyjne, Operacje, TrainOps, Programy wdrożeniowe, MonitOps.
- Automatyzacja strzeżona: automatyzujemy, ale za pomocą "bram' jakości, bezpieczeństwa i zgodności.
- Prywatność przez Design: minimalizacja PII, pobyt, audyt.
2) Warstwy przenośnika i architektura
1. Ingest & Bronze: niezawodny odbiór zdarzeń/partii (CDC, opony, przekładki, DLQ).
2. Srebro (normalizacja/wzbogacanie): SCD, waluty/czas, rozliczenie, dedup.
3. Złoto (sklepy): tabele tematyczne i zbiory danych na potrzeby szkolenia/sprawozdawczości.
4. Sklep funkcyjny: jednolite formuły funkcji online/offline, wersje i SLO.
5. Pociąg i walidacja: przygotowanie próbek, szkolenie, kalibracja, bramki ewaluacyjne/kontrolne.
6. Rejestracja i promocja: rejestr modeli, karty jakości, polityka promocji.
7. Obsługa: REST/gRPC/Batch, bufory funkcyjne, flagi funkcyjne, kanaryjski/cień.
8. Monitor i informacje zwrotne: SLI/SLO, dryf/kalibracja, etykiety online, auto-retrain.
3) Orkiestra: wzory DAG
Codzienny CT (D + 1): nocny cykl danych → funkcje → szkolenie → walidacja → kandydat do rejestru.
Event-Driven Retrain: wyzwalacz dla PSI/ECE/oczekiwany koszt dryfu lub zwolnienia obwodu.
Rolling Windows: tygodniowe/miesięczne przekwalifikowanie z „oknem przesuwnym” danych.
Niebieskie/zielone artefakty: wszystkie artefakty są niezmienne (hash), równoległe wersje.
Dual-write v1/v2: schemat/funkcja migracji poprzez podwójne pisanie i porównanie równoważności.
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) Zbiory danych i próbki
Dołączyć punkt w czasie i „nie ma przyszłości” dla funkcji/etykiet.
Stratyfikowany przez rynki/najemców/czas, holdout i „luka” dla przecieków.
Wersioning: 'data _ version', 'logic _ version', 'asof _ date'; Migawki WORM.
5) Funkcja Sklep i równoważność online/offline
Ujednolicona specyfikacja funkcji (nazwa, formuła, właściciel, SLO, testy).
Online = offline: wspólny kod transformacji; badanie równoważności (MAE/MAPE).
TTL i pamięć podręczna: okna 10m/1h/1d; czasowe/rekolekcje; Folbacks „last_known_good.”
Speca fici (YAML):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) Automatyka treningowa (CT) i bramy jakości
Cykl CT: przygotowanie → szkolenie → kalibracja → ocena → rejestracja kandydata.
Bramy (przykład):- Off-line: Wartość odniesienia PR-AUC ≥ − α; EKG ≤ 0. 05; limit kosztów oczekiwanych ≤.
- Kawałek/sprawiedliwość: kropla mierników w dowolnym plasterku ≤ Y%; różny wpływ jest normalny.
- Funkcja równoważności: ok.
- Koszt: czas/zasoby ≤ budżet.
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) Wzór rejestru i promocji
Karta modelowa: dane, okna, funkcje, mierniki off/online, kalibracja, ryzyko, właściciel.
Etapy: „Staging → Produkcja → Archiwalna”; awans tylko przez sprawdzone bramki.
Polityka rollback: zachować ≥ N najnowszych wersji produkcji; jedno kliknięcie wsteczne.
8) CI/CD/CT: jak podłączyć
CI (kod/testy): testy jednostkowe/integracyjne/kontraktowe, lintery, skany bezpieczeństwa.
CD (porcja): Docker/K8s/Helm/feature flagi, kanarka/cień/niebiesko-zielony.
TK (dane/szkolenia): rozkład jazdy/orkiestra imprez; artefakty → rejestr.
Bramy promocyjne: auto-release w produkcji z zielonym SLO online (na kanarka ≥ X godzin).
9) Wielozatrudnienie i rezydencja
Najemcy/regiony: izolowane rurociągi i klucze szyfrujące (EOG/UK/BR); zakazanie przyłączeń międzyregionalnych bez powodu.
Tajemnice: KMS/CMK, Secret Manager; tokenizowane identyfikatory w dziennikach.
Zasady DSAR/RTBF: obliczeniowe projekcje i selektywne edycje w funkcjach i dziennikach; Legalne wstrzymanie spraw.
10) Monitorowanie → informacje zwrotne → przekwalifikowanie
SLI/SLO: latency p95/p99, 5xx, pokrycie, koszt/żądanie; drift PSI/KL, ECE, oczekiwany koszt.
Etykiety online: proxy (godzina/dzień) i opóźnione (D + 7/D + 30/D + 90).
Automatyczne działania: aktualizacja rekalibracji/progu → przekwalifikowanie cienia → kanarka → promocja.
Runbooks: scenariusze degradacji (dryf, kalibracja, pamięć podręczna, dostawcy).
11) Polityka bezpieczeństwa, RG/AML i rozwiązań
Poręcze: pre/post-filtr, czapki częstotliwości, cooldown, listy zakazów.
Ekran polityki - Model → Rozwiązanie → Filtr polityki → Działanie.
Audyt: 'model _ id/version', 'feature _ version', 'threshold', 'policy _ id', powody.
Archiwum WORM: wydania, raporty jakości, dzienniki testów/promocji.
12) Koszt i wydajność
Profilowanie ścieżek: funkcje (30-60%), wnioskowanie (20-40%), IO/sieć.
Deski rozdzielcze: koszt/żądanie, koszt/funkcja, GPU/CPU-zegar, małe pliki.
Optymalizacja: materializacja ciężkich funkcji offline, pamięci podręcznej, INT8/FP16, powtórki/zasypki.
Obciążenie zwrotne: rozprowadzamy budżet według zespołu/rynku, kontrolujemy „drogie” funkcje.
13) Przykłady (fragmenty)
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}}"]}
Skrypt bramy (pseudokoda):
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)
Polityka promocji (pomysł):
yaml promotion:
require:
- offline_gates_passed
- canary_online_hours >= 24
- slo_green: [latency_p95, error_rate, coverage]
- drift_warn_rate <= 5%
14) Procesy i RACI
R (odpowiedzialny):- Data Eng - Ingest/Silver/Gold, Sklep funkcyjny, CDC/Backfill;
- Data Science - próbki/szkolenia/kalibracja/bramy;
- MLOps - orkiestra/reestr/serving/nablyudayemost.
- A (Odpowiedzialność): szef danych/CDO.
- C (skonsultowano się): Zgodność/DPO (PII/RG/AML/DSAR), Bezpieczeństwo (KMS/Audit), SRE (SLO/Value), Finance (Budgets/ROI), Produkt.
- I (Poinformowany): Marketing/Operacje/Wsparcie.
15) Plan działania w zakresie wdrażania
MVP (3-6 tygodni):1. DAG „codzienna TK”: Brąz → Srebro → Złoto → Sklep Funkcyjny → Pociąg → Eval → Rejestracja (Posting).
2. Funkcja Sklep v1 i test równoważności online/offline.
3. Bramy jakości (PR-AUC/ECE/oczekiwany koszt/kawałek).
4. Rejestr modelu, karta i archiwum wydania WORM.
Faza 2 (6-12 tygodni):- Automatyczna rekalibracja/aktualizacja progów, promocja kanaryjska za pośrednictwem SLO online.
- Przekrój napędzany zdarzeniami przez dryfowanie; dual-write v1/v2 dla migracji.
- tablice rozdzielcze i kwoty zasypki/powtórki; izolacja wielu najemców.
- Zasady uczciwości dotyczące plasterków i automatycznego raportowania.
- Wieloregionalna rezydencja (EOG/UK/BR) z indywidualnymi kluczami.
- Automatyczne przekwalifikowanie według harmonogramu i zdarzeń, dokumentacja autogenu rurociągów.
16) Lista kontrolna dostawy
- Rurociąg-as-Code - Git; testy CI (jednostka/integracja/umowy/bezpieczeństwo).
- Brąz/srebro/złoto i sklep funkcyjny są stabilne; funkcja równoważności zielony.
- Minęły bramy offline; karta modelowa jest pełna; Stworzone archiwum WORM.
- Kanaryjskie ≥ 24 h z zielonymi SLO; przycisk Rollback i funkcja kill-switch.
- Umożliwia się monitorowanie dryfu/EKG/oczekiwanych kosztów i etykiet online.
- PII/rezydencja/DSAR/RTBF/Legal Hold Met; skonfigurowany audyt.
- Koszt w budżecie; cache/quota/feature i limity powtórzeń są aktywne.
17) Przeciwdziałanie modelom i ryzyku
Ręczne, „jednorazowe” kroki poza orkiestrą; Nie ma historii Gita.
Szkolenia bez bram i kart; promocja „ręcznie”.
Niespójne funkcje online/offline → rozbieżności w sprzedaży.
Ignorowanie dryfu/kalibracji/oczekiwanego kosztu; ROC-AUC tylko dla każdego gatunku.
Brak polityki w zakresie rezydencji/PII; rejestrowanie „surowych” identyfikatorów.
Nieograniczone zasypki/powtórki → eksplozja kosztów i wpływ na SLA.
18) Najważniejsze
Rurociągi AI to rurociąg o wartości, a nie zestaw laptopów. Formalizuj warstwy danych, Funkcja Store i CT/CI/CD, dodaj bramki jakości i bezpieczeństwa, zautomatyzuj przekwalifikowanie dryfem, zachowaj równoważność online/offline i przejrzystą gospodarkę. Daje to szybki, przewidywalny i zgodny z danymi → model → cykl efektów, który skaluje się na rynkach i czasie.