# Дэвид Херши: «Магазин признаков — это единственный способ победить Training-Serving Skew»

Источник: https://www.youtube.com/watch?v=uGeQDnhcemo
Канал: The TWIML AI Podcast
Опубликовано: 06.09.2022

---

В современных ML-системах путь от разработки модели до её внедрения в продакшен часто преграждают архитектурные сложности, связанные с подготовкой данных. Дэвид Херши из компании Tecton в рамках воркшопа на TWIML AI Podcast продемонстрировал, как использование магазинов признаков (feature stores) позволяет в реальном времени развёртывать модели детектирования мошенничества, решая проблему несоответствия данных при обучении и инференсе.

## 🏗️ Архитектура и роль Feature Store в ML-системах
[[JUMP:01:06]]

Главная цель использования магазина признаков — упростить процесс вывода моделей в продакшен, особенно в таких критичных областях, как антифрод. По словам Дэвида Херши, обнаружение мошенничества требует очень быстрых предсказаний в реальном времени и сложных агрегаций по потоковым данным [01:31].

Магазин признаков Tecton представляет собой облачный сервис, который подключается к источникам данных пользователя (Batch-источники вроде Hive, S3, Snowflake или потоковые вроде Kafka, Kinesis) [07:17]. Архитектура системы состоит из двух ключевых компонентов:

*   **Online Feature Store:** Хранилище с низкой задержкой (используется DynamoDB или Redis), предназначенное для быстрого извлечения признаков в момент инференса модели [08:38].
*   **Offline Feature Store:** Хранилище исторических данных (на базе Delta Lake в S3), которое используется для исследования данных и генерации обучающих выборок [08:51].

Херши подчеркивает, что все определения признаков в Tecton хранятся в коде (Git-репозитории). Это позволяет использовать декларативный подход: пользователь описывает, что должно быть в магазине признаков, а Tecton берет на себя управление конвейерами обработки данных (spark-заданиями) [10:08].

## 🛠️ Разработка признаков (Feature Engineering)
[[JUMP:11:00]]

Процесс начинается с анализа сырых данных. В примере рассматриваются синтетические транзакции (проект PaySim), данные о регистрациях пользователей и их кредитные рейтинги [11:50].

Дэвид Херши выделяет преимущество повторного использования признаков: если один член команды уже создал признак «кредитный рейтинг», другой может просто подключить его к своей модели через UI или SDK, не переписывая SQL-запросы [15:10].

### Типы трансформаций в коде
Для создания новых признаков разработчики используют:

1.  **Spark SQL или PySpark:** Универсальные инструменты для обработки данных. Например, признак «количество дней с последней транзакции» вычисляется через разницу между текущим временем и временной меткой последнего события [22:39].
2.  **Программная генерация времени:** Вместо функции `current_date()` в SQL используется переменная, передаваемая Tecton. Это критически важно для корректного «путешествия во времени» (time travel) при генерации исторических обучающих данных без утечек [31:03].

### Масштабируемые агрегации
Особое внимание Херши уделяет скользящим окнам и агрегациям. Tecton позволяет одной декларацией создать целое семейство признаков: например, сумму транзакций и средний чек за 1 час, 12 часов, сутки, 3 и 7 дней [39:13]. Система оптимизирует эти вычисления, объединяя потоковые и исторические данные, что избавляет разработчика от ручного управления состоянием оконных функций.

## 📉 Обучение и предотвращение перекоса данных (Training-Serving Skew)
[[JUMP:51:15]]

Одной из самых сложных проблем в ML является несоответствие данных (skew): когда признаки во время обучения выглядят иначе, чем во время работы в продакшене. По мнению Херши, магазин признаков устраняет эту проблему по определению [1:49:05].

Процесс создания обучающей выборки выглядит так:

*   Разработчик берет лог идентификаторов событий (User ID) и меток времени [54:24].
*   Tecton автоматически «подклеивает» к этим событиям значения признаков именно на тот момент времени, когда произошло событие [55:03].
*   Важно, что если признак (например, возраст) обновляется раз в 30 дней в онлайн-сторе, то и в обучающую выборку попадет то значение, которое было бы доступно модели в реальности, а не «идеально точное» значение из будущего [1:50:10].

Для тренировки модели Херши использует XGBoost и MLflow для управления артефактами [1:01:52]. Обученная модель развёртывается как эндпоинт в AWS SageMaker [1:03:01].

## 🚀 Продакшен: инференс и эксплуатация
[[JUMP:1:05:11]]

В работающем приложении процесс предсказания сводится к двум API-запросам:

1.  **К магазину признаков:** Приложение передает идентификатор пользователя (User ID). Tecton за миллисекунды возвращает вектор признаков, собранный из разных источников (Batch и Streaming) [1:06:26].
2.  **К модели:** Полученный вектор напрямую передается в эндпоинт SageMaker для получения скора мошенничества [1:11:35].

Разработчик отмечает, что в случае отсутствия данных о пользователе система возвращает `null`, и это сигнал для бизнес-логики — возможно, модель не стоит вызывать на неполных данных [1:13:20].

## 🕒 Будущее технологий и ответы на вопросы
[[JUMP:1:13:41]]

В ходе сессии вопросов и ответов Дэвид Херши раскрыл планы развития платформы:

*   **Поддержка облаков:** На момент записи Tecton работает на AWS, но поддержка GCP и Azure ожидается во второй половине года [1:18:44, 1:31:28].
*   **Хранилища:** Помимо DynamoDB, ведется работа над интеграцией Redis для еще более низких задержек [1:17:25].
*   **Контроль стоимости:** Обсуждается внедрение инструментов для прозрачного мониторинга стоимости каждого конкретного признака, чтобы пользователи могли оценивать целесообразность частых обновлений [1:19:28].
*   **Неструктурированные данные:** Сейчас система сфокусирована на табличных данных. По мнению Херши, работа с текстом и эмбеддингами — интересное направление, которое рассматривается командой [1:34:52].

Херши подытоживает, что Feature Store — это не просто кэш, а «источник истины» для трансформаций, который обеспечивает консистентность всей ML-инфраструктуры компании [58:37].