Feature store - це централізована система для зберігання, управління та обслуговування ML фіч. Вона вирішує проблему консистентності фіч між навчанням та serving, дозволяє sharing фіч між командами та надає єдине джерело правди для визначень фіч.
Де використовується
Feature stores забезпечують ML платформи в різних галузях:
- E-commerce: Real-time персоналізація, фічі рекомендацій
- Фінанси: Фічі fraud detection, сигнали кредитного скорингу
- Ride-sharing: Фічі водіїв/пасажирів, inputs для ETA prediction
- Ad tech: Профілі користувачів, фічі релевантності реклами
- Gaming: Фічі поведінки гравців, сигнали churn
Компанії з feature stores: Uber (Michelangelo), Airbnb (Zipline), Netflix, Spotify, LinkedIn.
Типова архітектура
┌─────────────────────────────────────────────────────────────┐
│ Feature Store │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Offline Store │ │ Online Store │ │
│ │ (Historical) │ │ (Low-latency) │ │
│ │ - Parquet/S3 │ │ - Redis │ │
│ │ - BigQuery │ │ - DynamoDB │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Feature Registry/Catalog │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │
▼ ▼
Training Inference
(batch) (real-time)
| Компонент | Призначення | Типова технологія |
|---|---|---|
| Offline store | Історичні фічі для навчання | S3/Parquet, BigQuery |
| Online store | Low-latency serving | Redis, DynamoDB |
| Feature registry | Визначення, метадані | Custom, Feast registry |
Що робимо на практиці
- Визначити вимоги до фіч - Які фічі, яка свіжість, яка латентність?
- Спроєктувати схему фіч - Entity, features, timestamps
- Побудувати transformation pipelines - Raw data → features
- Зареєструвати фічі - Визначення, власники, документація
- Матеріалізувати в stores - Offline та online за потреби
- Валідувати консистентність - Training/serving skew checks
- Обслуговувати фічі - API для online, point-in-time для offline
- Моніторити використання та якість - Tracking, alerting
- Версіонувати та еволюціонувати - Обробка schema changes
- Sharing між командами - Discovery, reuse
Baseline з Feast
from feast import FeatureStore, Entity, Feature, ValueType
from feast import FileSource, FeatureView
from datetime import timedelta
# Визначити entity
customer = Entity(name="customer_id", value_type=ValueType.INT64)
# Визначити feature view
customer_features = FeatureView(
name="customer_features",
entities=["customer_id"],
ttl=timedelta(days=1),
features=[
Feature(name="total_purchases", dtype=ValueType.INT64),
Feature(name="avg_order_value", dtype=ValueType.FLOAT),
],
source=customer_source,
)
# Використання feature store
store = FeatureStore(repo_path=".")
# Training: отримати historical features
training_df = store.get_historical_features(
entity_df=entity_df,
features=["customer_features:total_purchases"]
).to_df()
# Serving: отримати online features
online_features = store.get_online_features(
features=["customer_features:total_purchases"],
entity_rows=[{"customer_id": 1001}]
).to_dict()
Опції Feature Store
| Опція | Тип | Найкраще для |
|---|---|---|
| Feast | Open source | Початок, гнучкість |
| Tecton | Managed | Enterprise, real-time |
| Databricks Feature Store | Integrated | Databricks користувачі |
| Vertex AI Feature Store | Managed | GCP користувачі |
| SageMaker Feature Store | Managed | AWS користувачі |
Ключові концепції
Point-in-time correctness: Фічі повинні обчислюватися станом на час prediction, не поточний час.
Training/serving skew: Різниці між фічами, обчисленими для навчання vs serving, спричиняють деградацію моделі.
Feature freshness: - Batch фічі: Оновлюються hourly/daily - Streaming фічі: Оновлюються в real-time - On-demand фічі: Обчислюються в момент запиту
Моніторинг та метрики
| Метрика | Опис | Ціль |
|---|---|---|
| Serving latency | P50/P99 час отримання фіч | < 10ms P99 |
| Feature freshness | Час з останнього оновлення | Залежить від SLA |
| Training/serving skew | Різниця розподілів | < threshold |
| Feature coverage | % запитів з усіма фічами | > 99% |
Типові проблеми
- [ ] Training/serving skew: Різні transformations
- [ ] Data leakage: Фічі обчислені з майбутньою інформацією
- [ ] Stale features: Materialization pipeline failed
- [ ] Missing features: Entity не в feature store
- [ ] Schema mismatch: Визначення фічі змінилося
- [ ] Latency spikes: Online store перевантажений
Чекліст продакшену
Перед деплоєм: - [ ] Визначення фіч задокументовані - [ ] Transformations протестовані та валідовані - [ ] Point-in-time correctness верифіковано - [ ] Online/offline консистентність перевірена - [ ] Латентність вимогам відповідає
Після деплою: - [ ] Feature freshness моніториться - [ ] Distribution drift відстежується - [ ] Serving latency моніториться - [ ] Pipeline health alerting - [ ] Cost моніторинг
Інструменти
| Категорія | Інструменти |
|---|---|
| Feature stores | Feast, Tecton, Hopsworks |
| Offline storage | S3/Parquet, BigQuery, Snowflake |
| Online storage | Redis, DynamoDB, Cassandra |
| Transformation | Spark, Flink, dbt |
| Orchestration | Airflow, Prefect, Dagster |
Пов'язані сторінки
- Індекс: ML Field Guide
- MLOps основи
- Feature Engineering основи
- Model Monitoring
Додаткове читання
Спробуйте наживо
Дослідіть пов'язану модель на практиці: відкрийте Feature Store Skew Detector і змінюйте параметри під час роботи. Усе лишається у вашому браузері.
▶ Відкрити симуляцію Feature Store Skew Detector