Sobes.tech
Back to questions
Middle — Senior
15

Какие практики при синхронизации training-serving features?

Companies where asked
SberDevices

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Важно показать, что синхронизация training и serving features — это не разовая задача, а часть процесса управления данными и признаками. Нужно говорить про единый источник истины, одинаковую логику расчёта и контроль дрейфа между оффлайн- и онлайн-контуром. Хороший ответ также включает практики валидации, версионирования и мониторинга качества фичей.

Определение:

Синхронизация training-serving features — это набор практик, которые обеспечивают одинаковое поведение признаков при обучении модели и при её использовании в продакшене. Цель в том, чтобы модель видела в оффлайне и онлайне одни и те же признаки, рассчитанные по одинаковым правилам, на одинаковых данных и без утечки будущей информации.

Пример использования:

Например, для модели антифрода признак transactions_last_24h должен вычисляться и в training, и в serving через одну и ту же логику: по одному и тому же окну, с одинаковым timezone и одинаковыми фильтрами по статусам транзакций.

def compute_transactions_last_24h(events, now):
    start = now - timedelta(hours=24)
    return sum(
        1 for e in events
        if start <= e["ts"] < now and e["status"] == "approved"
    )

В оффлайне этот код применяется к историческим событиям на момент среза. В онлайне — к свежим событиям при запросе на предсказание. Если в одном месте забыть фильтр approved или взять другое окно, появится feature skew.

Пояснение кода:

Код показывает простую функцию расчёта признака за последние 24 часа.
Сначала задаётся граница окна start, затем считаются только события внутри этого окна.
Дополнительный фильтр по status == "approved" делает логику явной и одинаковой для всех контуров.

Ключевые моменты:

  • Использовать единый source of truth для расчёта признаков: feature store, общие библиотеки или общий пайплайн.
  • Исключать training-serving skew: одинаковая формула, одинаковые фильтры, одинаковые преобразования и одинаковое окно времени.
  • Обеспечивать point-in-time correctness, чтобы в обучении не было утечки будущих данных.
  • Версионировать фичи, схемы и код расчёта, чтобы можно было воспроизвести поведение модели.
  • Проверять качество через data validation, reconciliation между offline и online, а также мониторинг распределений и пропусков.
  • Для критичных фичей иметь тесты на идентичность расчёта в training и serving, особенно для агрегаций и временных окон.