В современных ML-системах путь от разработки модели до её внедрения в продакшен часто преграждают архитектурные сложности, связанные с подготовкой данных. Дэвид Херши из компании Tecton в рамках воркшопа на TWIML AI Podcast продемонстрировал, как использование магазинов признаков (feature stores) позволяет в реальном времени развёртывать модели детектирования мошенничества, решая проблему несоответствия данных при обучении и инференсе.
🏗️ Архитектура и роль Feature Store в ML-системах 1:06
Главная цель использования магазина признаков — упростить процесс вывода моделей в продакшен, особенно в таких критичных областях, как антифрод. По словам Дэвида Херши, обнаружение мошенничества требует очень быстрых предсказаний в реальном времени и сложных агрегаций по потоковым данным .
Магазин признаков Tecton представляет собой облачный сервис, который подключается к источникам данных пользователя (Batch-источники вроде Hive, S3, Snowflake или потоковые вроде Kafka, Kinesis) . Архитектура системы состоит из двух ключевых компонентов:
- Online Feature Store: Хранилище с низкой задержкой (используется DynamoDB или Redis), предназначенное для быстрого извлечения признаков в момент инференса модели .
- Offline Feature Store: Хранилище исторических данных (на базе Delta Lake в S3), которое используется для исследования данных и генерации обучающих выборок .
Херши подчеркивает, что все определения признаков в Tecton хранятся в коде (Git-репозитории). Это позволяет использовать декларативный подход: пользователь описывает, что должно быть в магазине признаков, а Tecton берет на себя управление конвейерами обработки данных (spark-заданиями) .
🛠️ Разработка признаков (Feature Engineering) 11:00
Процесс начинается с анализа сырых данных. В примере рассматриваются синтетические транзакции (проект PaySim), данные о регистрациях пользователей и их кредитные рейтинги .
Дэвид Херши выделяет преимущество повторного использования признаков: если один член команды уже создал признак «кредитный рейтинг», другой может просто подключить его к своей модели через UI или SDK, не переписывая SQL-запросы .
Типы трансформаций в коде
Для создания новых признаков разработчики используют:
- Spark SQL или PySpark: Универсальные инструменты для обработки данных. Например, признак «количество дней с последней транзакции» вычисляется через разницу между текущим временем и временной меткой последнего события .
- Программная генерация времени: Вместо функции
current_date()в SQL используется переменная, передаваемая Tecton. Это критически важно для корректного «путешествия во времени» (time travel) при генерации исторических обучающих данных без утечек .
Масштабируемые агрегации
Особое внимание Херши уделяет скользящим окнам и агрегациям. Tecton позволяет одной декларацией создать целое семейство признаков: например, сумму транзакций и средний чек за 1 час, 12 часов, сутки, 3 и 7 дней . Система оптимизирует эти вычисления, объединяя потоковые и исторические данные, что избавляет разработчика от ручного управления состоянием оконных функций.
📉 Обучение и предотвращение перекоса данных (Training-Serving Skew) 51:15
Одной из самых сложных проблем в ML является несоответствие данных (skew): когда признаки во время обучения выглядят иначе, чем во время работы в продакшене. По мнению Херши, магазин признаков устраняет эту проблему по определению .
Процесс создания обучающей выборки выглядит так:
- Разработчик берет лог идентификаторов событий (User ID) и меток времени .
- Tecton автоматически «подклеивает» к этим событиям значения признаков именно на тот момент времени, когда произошло событие .
- Важно, что если признак (например, возраст) обновляется раз в 30 дней в онлайн-сторе, то и в обучающую выборку попадет то значение, которое было бы доступно модели в реальности, а не «идеально точное» значение из будущего .
Для тренировки модели Херши использует XGBoost и MLflow для управления артефактами . Обученная модель развёртывается как эндпоинт в AWS SageMaker .
🚀 Продакшен: инференс и эксплуатация 1:05:11
В работающем приложении процесс предсказания сводится к двум API-запросам:
- К магазину признаков: Приложение передает идентификатор пользователя (User ID). Tecton за миллисекунды возвращает вектор признаков, собранный из разных источников (Batch и Streaming) .
- К модели: Полученный вектор напрямую передается в эндпоинт SageMaker для получения скора мошенничества .
Разработчик отмечает, что в случае отсутствия данных о пользователе система возвращает null, и это сигнал для бизнес-логики — возможно, модель не стоит вызывать на неполных данных .
🕒 Будущее технологий и ответы на вопросы 1:13:41
В ходе сессии вопросов и ответов Дэвид Херши раскрыл планы развития платформы:
- Поддержка облаков: На момент записи Tecton работает на AWS, но поддержка GCP и Azure ожидается во второй половине года [1:18:44, 1:31:28].
- Хранилища: Помимо DynamoDB, ведется работа над интеграцией Redis для еще более низких задержек .
- Контроль стоимости: Обсуждается внедрение инструментов для прозрачного мониторинга стоимости каждого конкретного признака, чтобы пользователи могли оценивать целесообразность частых обновлений .
- Неструктурированные данные: Сейчас система сфокусирована на табличных данных. По мнению Херши, работа с текстом и эмбеддингами — интересное направление, которое рассматривается командой .
Херши подытоживает, что Feature Store — это не просто кэш, а «источник истины» для трансформаций, который обеспечивает консистентность всей ML-инфраструктуры компании .