# Слои и потоки данных

← [Раздел](README.md) · [Главная](../README.md)

## Цель

Проследить **путь данных** от сырого источника до предсказания в production и обратной связи для retrain.

## Предварительно

- [Обзор архитектуры MLflow](obzor-arhitektury-mlflow.md)

## Время

**2–3 часа**

---

## Поток обучения (training path)

1. **Ingestion** — данные попадают в lake/warehouse (CSV, Parquet, streams)
2. **Validation** — схема, пропуски, outliers (Great Expectations, dbt tests)
3. **Feature engineering** — агрегаты, encoding (notebook → pipeline code)
4. **Split** — train/val/test с фиксированным seed и версией данных
5. **Train** — MLflow run логирует всё
6. **Evaluate** — offline metrics, fairness checks
7. **Register** — лучший run → Model Registry

## Поток inference (serving path)

1. Запрос пользователя → API
2. **Feature retrieval** — те же признаки, что при обучении (критично!)
3. **Model load** — `models:/MyModel/Production`
4. **Predict** → ответ
5. **Log** — input/output (с учётом GDPR), latency

```mermaid
sequenceDiagram
  participant U as User
  participant API as Serving API
  participant FS as Feature Store
  participant M as Model
  U->>API: request
  API->>FS: get features
  FS-->>API: feature vector
  API->>M: predict
  M-->>API: score
  API-->>U: response
```

## Обратная связь (feedback loop)

- Собираете **фактический исход** (клик, покупка, дефолт по кредиту)
- Сравниваете с предсказанием → **ground truth dataset**
- Мониторинг **data drift** и **concept drift**
- Триггер **retrain** по расписанию или по порогу деградации

## Data contracts

Между командами фиксируют:
- имена и типы колонок
- SLA свежести данных
- политику PII

Нарушение контракта — пайплайн падает **до** обучения, а не в production.

## Lineage в MLflow

Используйте **tags**:
- `data_version: v2024-06-01`
- `git_commit: abc123`
- `pipeline_run_id: airflow-456`

Так run связан с кодом и данными без хранения всего датасета в MLflow.

## Холодный vs горячий путь

| | Training (cold) | Serving (hot) |
|---|-----------------|---------------|
| Объём | Весь датасет | Один запрос |
| Время | Часы | Миллисекунды |
| Хранилище | Data lake | Feature store / cache |

---

## Самопроверка

1. Перечислите 7 шагов training path.
2. Что такое training-serving skew?
3. Зачем логировать `git_commit` в MLflow tags?

---

## Дальше

→ [03 — Компоненты MLflow](../03-komponenty-mlflow/README.md)
