Системный дизайн ML-сервисов

Online and Offline Features

Онлайн- и офлайн-признаки

актуальноТекущий рабочий стандарт

Часть признаков считается заранее, часть — в момент запроса. Расхождение между ними — главный источник инцидентов.

Ключевые тезисы

  • Тяжёлые агрегаты считают батчем и кладут в быстрое хранилище (Redis, Aerospike).
  • Признаки запроса (текущая корзина, устройство) считаются онлайн.
  • Определение признака должно быть одно на оба пути — иначе training/serving skew неизбежен.
Тема также относится к главам:MLOpsПризнакиИнженерия данныхДвижение данных

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Что считать заранее, а что на лету

Разделение по стоимости и свежести.

Тип признакаГде считаетсяПример
Долгие агрегатыбатч, кладём в KV-хранилищесредний чек за 90 дней
Свежие агрегатыстримингчисло операций за последний час
Контекст запросаонлайнустройство, время суток, корзина
Статические атрибутыбатчсегмент, тариф
2

Как не допустить skew

Одно определение признака на оба пути.

  1. Опишите признак один раз в общей библиотеке или в feature store.
  2. Логируйте признаки, использованные при онлайн-предсказании.
  3. Регулярно сверяйте офлайн-пересчёт с залогированными значениями — расхождение больше допуска считается инцидентом.
На практике

Логирование признаков в момент запроса решает сразу две задачи: контроль skew и обучающая выборка, полностью соответствующая проду.

Связанные темы

Признаки в реальном времени