System Design Space
Граф знанийНастройки

Обновлено: 2 июня 2026 г. в 19:30

Хранилище признаков и сервинг моделей

сложный

Кейс про хранилище признаков и сервинг моделей: как сохранить один смысл признаков между обучением и рабочим контуром, выдержать корректность по моменту наблюдения и контролировать расхождение между офлайном и онлайном.

Хранилище признаков и сервинг моделей становятся сложными там, где одна и та же логика признаков должна одинаково работать в обучении и в живом пользовательском запросе.

Глава помогает связать корректность по моменту наблюдения, онлайновое получение признаков, материализацию, свежесть данных и план деградации в одну рабочую платформенную схему.

В интервью и архитектурных обсуждениях этот кейс быстро показывает, понимаете ли вы цену расхождения между обучением и рабочим контуром, а также последствия каждой лишней сетевой зависимости на пути предсказания.

Паритет обучения и сервинга

Контролируйте консистентность признаков и схему данных между обучением и рабочим контуром.

Безопасность запуска

Поэтапный запуск, теневой режим, откат и оповещение о дрейфе должны быть частью базовой архитектуры.

Качество данных

Нужны защитные ограничения для свежести, происхождения данных и предотвращения расхождения между обучением и сервингом.

Эффективность платформы

Оптимизируйте стоимость конвейеров, хранения признаков и задержку вывода модели.

Контекст

Machine Learning System Design

Базовый обзор архитектуры ML-систем: после него проще аргументировать решения по слою признаков на интервью.

Открыть главу

Спроектировать хранилище признаков - это классический кейс по ML System Design про то, как удерживает один и тот же смысл данных между обучением и рабочим . На интервью важно показать, как вы обеспечиваете , защищаете обучение от , контролируете и понимаете, что произойдёт, если путь признаков для начнёт деградировать.

Границы разбора

Покрываем в этой главе

  • Контракты на признаки: реестр, офлайновое и онлайновое хранение, материализация и API получения признаков.
  • Контроль согласованности между обучением и рабочим контуром, корректности по моменту наблюдения и свежести данных.
  • Надёжность пути признаков в рабочем выводе: SLO по задержке, резервные сценарии и правила деградации.

Что не покрываем

  • Оркестрация обучения, выбор модели и управление жизненным циклом экспериментов.
  • Контур выпуска на уровне реестра моделей: правила согласования, теневой режим, канареечный запуск и решения об откате.
  • Сквозной контур переобучения, темп релизов из-за дрейфа и ответственность за всю цепочку ML-доставки.

Сквозной ML-систем и контур выпуска разобраны в ML Ops Pipeline.

Проблема и контекст

Продукт запускает несколько ML-сценариев, например персонализацию, антифрод и риск-скоринг, но команды считают признаки в разных пайплайнах и получают несогласованные данные между обучением и рабочим контуром. Цель этой главы - спроектировать слой признаков как платформенный сервис с едиными контрактами и понятными SLA.

Функциональные требования

  • Единый каталог признаков: владелец, схема, ключи сущностей, источник истины и версия преобразования.
  • Офлайновое получение признаков для обучения и проверки с корректностью по моменту наблюдения.
  • Онлайновое получение признаков для рабочего вывода с низкой задержкой и стабильным API-контрактом.
  • Доставка рассчитанных признаков из пакетных и потоковых пайплайнов в онлайновое хранилище с контролем свежести.
  • Переигрывание истории и пересборка обучающих наборов при изменении логики признаков без ручных временных скриптов.

Нефункциональные требования

  • Задержка чтения в онлайновом контуре: p95 < 30 мс. Иначе хранилище признаков начинает ограничивать пользовательский путь предсказания.
  • Доступность: 99.95%+. Недоступность онлайнового хранилища напрямую блокирует модели в критичных продуктовых сценариях.
  • SLA по свежести: <= 5 минут для горячих признаков. Устаревшие признаки быстро ухудшают качество ранжирования, персонализации и антифрода.
  • Контроль расхождения: 0 критичных расхождений без алерта. Расхождение между обучением и рабочим контуром должно выявляться до пользовательской деградации.

Нагрузка и масштаб

Трафик вывода

40k-120k RPS

Пиковая нагрузка на онлайновое хранилище в сценариях рекомендаций и антифрода.

Размер вектора признаков

50-300 признаков на запрос

Нужны пакетное чтение по ключу сущности и эффективная сериализация ответа.

Кардинальность сущностей

100M+ пользователей / устройств / объектов

Высокая кардинальность влияет на стратегию шардирования и размер онлайнового индекса.

Поток входящих событий

1M-3M events/s

Нужны защита от обратного давления и идемпотентная логика материализации.

Суточные офлайновые снимки

2-8 ТБ/день

Переигрывание истории и соединения с учётом времени события требуют продуманной политики разбиения и хранения.

Связанная глава

ETL/ELT Architecture

Слой признаков опирается на зрелые пакетные и потоковые пайплайны, а также на устойчивую оркестрацию.

Открыть главу

Архитектура

В этой архитектуре важно явно разделить приём данных, офлайновый слой для обучения и онлайновый путь получения признаков. Тогда проще управлять , локализовать ошибки в , сохранять обучающих срезов, удерживать и не выходить за бюджет по .

Архитектура хранилища признаков

Подсветите участок контура: приём данных, офлайновый слой, онлайновый слой или наблюдаемость

Источники событий

Продуктовые события, CRM, биллинг, клики и логи

Пакетные ETL/ELT-процессы

Ежедневные и почасовые пайплайны, а также переигрывание истории

Потоковая обработка

Почти мгновенные преобразования с учётом водяных знаков

Офлайновое хранилище

Исторические снимки для обучения и проверки

Реестр признаков

Схемы, владельцы, версии, SLA и происхождение данных

Сервис материализации

Доставка в онлайновое хранилище, дедупликация и правила разрешения конфликтов

Онлайновое хранилище

Низколатентное чтение по ключу для рабочего вывода

SDK / шлюз доступа

Стабильный API-контракт для сервисов и моделей

Проверки расхождения
SLA по свежести
Алерты по доле пропусков

SLA

Бюджет задержки: p95 < 30msБюджет свежести: <= 5m (hot features)Окно переигрывания: 30-90 days

Роли слоёв

Реестр признаков

Каталог признаков с описанием схемы, владельца, SLA, источников и статуса готовности к рабочему использованию.

Приём и преобразования данных

Пакетные ETL/ELT-процессы и потоковая обработка. Логика расчёта признаков оформлена как переиспользуемые контракты преобразований.

Офлайновое хранилище

Исторические значения признаков для обучения, повторных прогонов и воспроизводимой сборки обучающих наборов.

Онлайновое хранилище

Низколатентное чтение по ключу для рабочего вывода. Поддерживает TTL, частичную инвалидацию и защиту от горячих ключей.

Сервис материализации

Доставляет рассчитанные признаки в онлайновое хранилище, контролирует водяные знаки, поздние события и правила разрешения конфликтов.

SDK / шлюз доступа к признакам

Единый API для чтения признаков, который фиксирует схему запроса и защищает клиентов от внутренних изменений хранения.

Качество и наблюдаемость

Метрики свежести, доступности, расхождения, доли пропусков и задержки, а также алерты и дашборды по критичным признакам.

Стратегия контрактов на признаки

Фиксируйте в контракте ключ сущности, версию преобразования, TTL, требования к свежести и . Это снижает риск скрытого расхождения при обновлениях и помогает быстрее перейти в , вернуться к или выполнить связанной модели.

Ключевые разборы

Корректность по моменту наблюдения

Обучающий набор должен включать только те значения признаков, которые реально были доступны на момент события. Для этого нужны соединения по времени события и жёсткие правила работы с историческими данными.

Согласованность материализации

Пакетный и потоковый контуры часто пересекаются. Нужны идемпотентные операции обновления, дедупликация и детерминированная политика разрешения конфликтов по версии или времени.

Контроль расхождения между обучением и рабочим контуром

Сравнивайте распределения признаков между офлайновыми срезами и реальным трафиком, фиксируйте допустимый бюджет расхождения и останавливайте выпуск, если он превышен.

План деградации онлайн-контура

При сбое хранилища признаков сервис вывода должен уметь перейти на кешированные признаки, сокращённый набор признаков или правило-ориентированное базовое решение.

Компромиссы

Жёсткая нормализация описаний признаков уменьшает дублирование, но снижает скорость локальных экспериментов.

Ставка на потоковую обработку улучшает свежесть, но заметно повышает операционную сложность и стоимость дежурств.

Единое глобальное хранилище признаков упрощает контроль и управление, но увеличивает радиус поражения при сбоях материализации.

Жёсткий TTL снижает риск устаревших значений, но повышает частоту пересчёта и давление на кэш.

Рекомендации

  • Начинайте с ограниченного набора действительно важных признаков и явной ответственности за каждый из них.
  • Версионируйте преобразования как код и делайте проверки схемы и расхождения обязательной частью CI/CD.
  • Разложите SLA по этапам: приём данных, материализация и чтение в онлайновом контуре.
  • Продумайте резервный путь до выхода в production, а не после первого инцидента.

Частые ошибки

  • Логика расчёта признаков дублируется в ноутбуках и рабочем коде без общего реестра и версионирования.
  • Обучающие срезы собираются без правил по моменту наблюдения и дают скрытую утечку данных.
  • Онлайновое хранилище обновляется без мониторинга свежести и расхождения, поэтому деградация становится заметной только по бизнес-метрикам.
  • Команда выпускает модель без заранее определённой стратегии безопасного поведения на случай недоступности хранилища признаков.

Источники

  • Feast documentation - Открытая документация по реестру признаков, офлайновому и онлайновому хранению, а также заданиям материализации.
  • Hopsworks Feature Store docs - Подход к группам признаков, обучающим наборам и онлайновому доступу к признакам в одной платформе.
  • Tecton docs - Практики проектирования признаков, потоковых преобразований и рабочего доступа к признакам.
  • Google Cloud MLOps architecture guide - Системный взгляд на MLOps-пайплайны, выпуск и эксплуатационные контуры.

Связанные главы

  • Как устроен раздел задач по System Design - Вводная карта раздела кейсов и общий фреймворк, в который встраивается этот разбор.
  • Machine Learning System Design (short summary) - Системный обзор ML-архитектуры, где слой признаков связывает данные, обучение и рабочий вывод.
  • AI Engineering (short summary) - Практики оценки, развёртывания и операционной зрелости AI-продуктов в рабочих системах.
  • ETL/ELT Architecture - Фундамент пакетных и потоковых пайплайнов, переигрывания истории и оркестрации расчёта признаков.
  • Designing Event-Driven Systems (short summary) - Паттерны потокового приёма данных и гарантий доставки для почти мгновенного обновления признаков.
  • Data Governance & Compliance - Контроль персональных данных, происхождения наборов и требований аудита для чувствительных контуров признаков.
  • Observability & Monitoring Design - Как проектировать метрики свежести, расхождения и задержки как часть общего контракта надёжности.
  • ML-платформа в Т-Банке - Практический платформенный контекст для ML-процессов в большой организации.

Чтобы отмечать прохождение, включи трекинг в Настройки