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 и прозрачную экономику. Так вы получите быстрый, предсказуемый и комплаентный цикл «данные → модель → эффект», масштабируемый по рынкам и времени.