Feature Store

Егор Горбань — Data Engineer

Что такое FeatureStore

https://www.featurestore.org/

Hopsworks:

A feature store is a data platform that supports the development and operation of ML systems by managing the storage and efficient querying of feature data. Feature store (…) supports a multitude of write and read workloads, including batch and streaming writes (…).

Feast:

Customizable operational data system that re-uses existing infrastructure to manage and serve ML features to realtime models

Amazon SageMaker:

Storage and data management layer (…) serves as the single source of truth to store, retrieve, remove, track, share, discover, and control access to features.

Data Flow: before

raw data
raw data
Processing Data
Processing Data
DB 1
DB 1
DB 2
DB 2
Training pipeline
Training pipe...
ML model
ML model
Historical Data Sources
Historical Da...
Processing Data
Processing Data
Training
Training
Inference
Inference
Inference pipeline
Inference pip...
historical
personalized
data
historical...
ML model
ML model
Processing Data
Processing Data
Processing Data
Processing Data
live raw data
live raw data
ML Service
ML Service
Text is not SVG - cannot display

Решение: централизованная обработка features.

hopsworks:

Возможности

  1. Позволяет итеративно заполнять store историческими данными и обрабатывать их тем же способом, каким обработаны имеющиеся данные.
  2. Предоставлять историю и контекст для real-time запросов в ML-сервис.
  3. Помогает выбрать необходимый набор фичей для модели (feature selection).
  4. Помогает использовать данные разными моделями (feature reuse).

Дополнительные возможности

(больше зависят от вендора)

  1. Валидация и мониторинг фичей.
  2. Обработка данных батчами
  3. Поддержка стриминга данных
  4. Поддержка time series формата данных: можно указать момент времени, и получить для него валидные на тот момент данные.
  5. Определение наиболее похожего элемента (approximate nearest neighbour)

Что внутри

Feature Store Architecture (can be):

  1. Offline store: DataLake / Data Warehouse (холодное хранилище)
    1. Колоночная база данных
    2. С индексированием файлов и партициями по файлам
    3. Поддерживает хранение исторических данных для исследования данных, обучения модели.
    4. Часто хранит разные версии данных.
  2. Online Store: Low latency, high availability (горячее хранилище)
    1. Строковая база данных
    2. С индексированием строк по ключу
    3. Поддерживает хранение новых данных
    4. Хранится только актуальная версия данных.
  3. [Opt] Model registry: хранение моделей и артефактов.

Предостережение

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

  1. С поддержкой бэкапов и репликации
  2. С ограниченным доступом на запись

Дополнительные концепты

Feature group

Концепт семантического объединения данных.

  • Подмножество фичей, связанных общей семантикой (и возможно временем)
  • Feature Group vs Set of Features
  • Например
    • (a1, a2, a3), (b1, b2), (c1, c2, c3, c4) - 3 feature groups
    • {a1, a2, c1, c3, c4} - set of features
  • Первичный ключ
    • для новых данных – entity_id
    • для исторических – (entity_id, timestamp)

Data transformations

Функции преобразования данных.

  1. model-independent transformations: Feature Pipeline, Inference Pipeline
  2. model-dependent transformations: Training Pipeline, Inference Pipeline
  3. on-demand transformations: Inference Pipeline

Feature reuse

Концепт переиспользования данных.

Основная идея: не делать model transformations в feature pipeline

Problem of online-offline skew

Искажение между обработкой (форматом) реальных данных, приходящих с запросом и обработкой (форматом) исторических данных.

Feature freshness

Концепт актуальности/свежести данных.

  • Training pipeline
    • Проблема: данные используемые для train не самые актуальные
    • Возможные решения
      • Для обучения модели используется только последняя версия данных, лежащих в online store.
      • В глобальном смысле: переобучать модели спустя какое-то время.
  • Inference pipeline
    • Проблема: в feature store могут лежать неактуальные значения: feature pipeline ещё не успел отработать на новых данных
    • Возможные решения:
      • Выставить лаг и обрабатывать батчами, когда данные в Feature Store точно обновятся
      • Inference на неполных данных
      • Смириться.

Заключение

Feature Store - полезный элемент ML инфраструктуры, который поможет быстро и централизованно обрабатывать сырые данные и упростит работу ML-команды.