AI-пайплайни та автоматизація навчання
1) Призначення та принципи
Мета: надійно і відтворювано перетворювати дані → фічі → моделі → рішення → зворотний зв'язок, з мінімальним time-to-value і контролем ризику/вартості.
Принципи:- Pipeline-as-Code: всі (DAG, конфіги, тести, політики) - в Git, через PR і рев'ю.
- Determinism: фіксовані версії даних/коду/контейнерів/залежностей.
- Separation of Concerns: DataOps, FeatureOps, TrainOps, DeployOps, MonitorOps.
- Guarded Automation: автоматизуємо, але з «гейтами» якості, безпеки та комплаєнсу.
- Privacy by Design: мінімізація PII, резидентність, аудит.
2) Шари і архітектура конвеєра
1. Ingest & Bronze: надійний прийом подій/батчів (CDC, шини, ретраї, DLQ).
2. Silver (нормалізація/збагачення): SCD, валюти/час, очищення, дедуп.
3. Gold (вітрини): предметні таблиці та датасети для навчання/звітності.
4. Feature Store: єдині формули фіч online/offline, версії і SLO.
5. Train & Validate: підготовка вибірок, навчання, калібрування, оцінка/чек-гейти.
6. Registry & Promotion: реєстр моделей, картки якості, політика промоушена.
7. Serving: REST/gRPC/Batch, фіч-кеші, фіча-прапори, canary/shadow.
8. Monitor & Feedback: SLI/SLO, дрейф/калібрування, онлайн-лейбли, auto-retrain.
3) Оркестрація: патерни DAG
Daily CT (D+1): нічний цикл даних → фічі → навчання → валідація → кандидат до реєстру.
Event-Driven Retrain: тригер по дрейфу PSI/ECE/expected-cost або по релізу схем.
Rolling Windows: weekly/monthly перенавчання з «ковзним вікном» даних.
Blue/Green Artifacts: всі артефакти іммутабельні (hash), паралельні версії.
Dual-write v1/v2: міграції схем/фіч через подвійний запис і порівняння еквівалентності.
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) Набори даних і вибірки
Point-in-time join і «без майбутнього» для фіч/лейблів.
Стратифікація по ринках/тенантам/часу, holdout і «gap» для витоків.
Версіонування: `data_version`, `logic_version`, `asof_date`; WORM-снапшоти.
5) Feature Store і еквівалентність online/offline
Єдина специфікація фіч (ім'я, формула, власник, SLO, тести).
Онлайн = офлайн: загальний код трансформацій; тест еквівалентності (MAE/MAPE).
TTL і кеш: вікна 10м/1ч/1д; таймаути/ретраї; фолбеки "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) Автоматизація навчання (CT) і гейти якості
CT-цикл: підготовка → навчання → калібрування → оцінка → реєстрація кандидата.
Гейти (приклад):- Off-line: PR-AUC ≥ бенчмарка − δ; ECE ≤ 0. 05; expected-cost ≤ ліміту.
- Slice/Fairness: падіння метрик в будь-якому слайсі ≤ Y%; disparate impact в нормі.
- Еквівалентність фіч: бл.
- Вартість: час/ресурси ≤ бюджету.
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) Регістр моделей і промоушен
Картка моделі: дані, вікна, фічі, метрики off/online, калібрування, ризики, власник.
Stages: `Staging → Production → Archived`; промоушен тільки через перевірені гейти.
Політика відкату: зберігати ≥N останніх прод-версій; one-click rollback.
8) CI/CD/CT: Як з'єднати
CI (код/тести): юніт/інтеграційні/контрактні тести, лінтери, security-скани.
CD (сервінг): Docker/K8s/Helm/фіча-прапори, canary/shadow/blue-green.
CT (дані/навчання): оркестратор за розкладом/подіями; артефакти → реєстр.
Promotion Gates: авто-реліз в прод при зелених онлайн-SLO (на canary ≥ X годин).
9) Багатоарендність і резидентність
Тенанти/регіони: ізольовані пайплайни та ключі шифрування (EEA/UK/BR); заборона міжрегіональних join'ів без підстави.
Секрети: KMS/CMK, Secret Manager; токенізовані ID в логах.
Політики DSAR/RTBF: обчислювані проекції та селективні редагування у фічах і логах; Legal Hold для кейсів.
10) Моніторинг → зворотний зв'язок → retrain
SLI/SLO: latency p95/p99, 5xx, coverage, cost/request; дрейф PSI/KL, ECE, expected-cost.
Онлайн-лейбли: проксі (година/день) і затримані (D + 7/D + 30/D + 90).
Авто-дії: recalibration/threshold update → shadow retrain → canary → promotion.
Runbooks: сценарії деградацій (дрейф, калібрування, фіч-кеш, провайдери).
11) Безпека, RG/AML і політика рішень
Guardrails: pre/post-filter, caps частоти, cooldown, списки заборон.
Policy Shielding: модель → рішення → фільтр політики → дію.
Аудит: `model_id/version`, `feature_version`, `threshold`, `policy_id`, причины.
WORM-архів: релізи, звіти якості, журнали тестів/промоушену.
12) Вартість і продуктивність
Профілювання шляху: фічі (30-60%), інференс (20-40%), IO/мережа.
Cost-дашборди: cost/request, cost/feature, GPU/CPU-часы, small-files.
Оптимізація: матеріалізація важких фіч офлайн, кеш гарячих вікон, INT8/FP16, квоти на реплеї/backfill.
Chargeback: розподіляємо бюджет по командах/ринках, контролюємо «дорогі» фічі.
13) Приклади (фрагменти)
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-скрипт (псевдокод):
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)
Промоушен політика (ідея):
yaml promotion:
require:
- offline_gates_passed
- canary_online_hours >= 24
- slo_green: [latency_p95, error_rate, coverage]
- drift_warn_rate <= 5%
14) Процеси і RACI
R (Responsible):- Data Eng — Ingest/Silver/Gold, Feature Store, CDC/Backfill;
- Data Science - вибірки/навчання/калібрування/гейти;
- MLOps - оркестрація/реєстр/сервінг/спостережуваність.
- A (Accountable): Head of Data / CDO.
- C (Consulted): Compliance/DPO (PII/RG/AML/DSAR), Security (KMS/аудит), SRE (SLO/вартість), Finance (бюджети/ROI), Product.
- I (Informed): Маркетинг/Операції/Підтримка.
15) Дорожня карта впровадження
MVP (3-6 тижнів):1. DAG «daily CT»: Bronze→Silver→Gold→Feature Store→Train→Eval→Registry(Staging).
2. Feature Store v1 і тест еквівалентності online/offline.
3. Гейти якості (PR-AUC/ECE/expected-cost/slice).
4. Регістр моделей, картка і WORM-архів релізів.
Фаза 2 (6-12 тижнів):- Авто-recalibration/threshold update, canary-promotion по онлайн-SLO.
- Event-driven retrain по дрейфу; dual-write v1/v2 для міграцій.
- Cost-дашборди і квоти на backfill/реплеї; multi-tenant ізоляція.
- Політики fairness по слайсах і авто-репортинг.
- Мульти-регіональна резидентність (EEA/UK/BR) з окремими ключами.
- Авто-ретрейн за розкладом і подіями, автоген документації пайплайнів.
16) Чек-лист прод-готовності
- Pipeline-as-Code в Git; CI тести (юніт/інтеграція/контракти/безпека).
- Bronze/Silver/Gold і Feature Store стабільні; еквівалентність фіч зелена.
- Гейти офлайну пройдені; картка моделі заповнена; WORM-архів створено.
- Canary ≥ 24 год з зеленими SLO; кнопка rollback і kill-switch працюють.
- Моніторинг дрейфу/ECE/expected-cost і online-лейблів включений.
- ПII/резидентність/DSAR/RTBF/Legal Hold дотримані; аудит налаштований.
- Вартість в бюджеті; кеш/квоти/ліміти на фічі і реплеї активні.
17) Анти-патерни і ризики
Ручні, «одноразові» кроки поза оркестратором; немає Git-історії.
Навчання без гейтів і карток; промоушен «вручну».
Неузгоджені online/offline фічі → розбіжності на проді.
Ігнор дрейфу/калібрування/expected-cost; тільки ROC-AUC «для виду».
Відсутність резидентності/PII-політик; логування «сирих» ID.
Необмежені backfill/реплеї → вибух вартості і вплив на SLA.
18) Підсумок
AI-пайплайни - це конвеєр цінності, а не набір ноутбуків. Формалізуйте шари даних, Feature Store і CT/CI/CD, додайте гейти якості і безпеки, автоматизуйте retrain по дрейфу, тримайте еквівалентність online/offline і прозору економіку. Так ви отримаєте швидкий, передбачуваний і комплаєнтний цикл «дані → модель → ефект», масштабований по ринках і часу.