피처 스토어(Feature Store)는 ML 모델 학습과 서빙에 필요한 특징(Feature)을 중앙집중식으로 저장, 관리, 공유하는 데이터 인프라다. 동일한 피처를 여러 팀이 재사용하고 학습-서빙 간 일관성을 보장한다.
핵심 문제 해결
문제 1: 학습-서빙 불일치
학습: 배치로 계산된 피처 사용
서빙: 실시간 재계산 → 결과 다를 수 있음
해결: 피처 스토어에서 동일한 피처 제공
문제 2: 피처 재개발
팀 A가 만든 "사용자 최근 30일 구매 횟수"
팀 B가 동일 피처 재구현 → 낭비
해결: 중앙 저장소에서 공유
문제 3: 시점 오염 (Point-in-Time Contamination)
미래 데이터를 과거 학습에 사용하는 실수
해결: 시점 기반 피처 조회 (as-of join)
Feast 사용 예시
python
from feast import FeatureStore
import pandas as pd
store = FeatureStore(repo_path=".")
# 학습용 히스토리 피처 조회 (시점 올바른 join)
entity_df = pd.DataFrame({
"user_id": [1001, 1002, 1003],
"event_timestamp": pd.to_datetime(["2024-01-01", "2024-01-15", "2024-02-01"])
})
training_df = store.get_historical_features(
entity_df=entity_df,
features=["user_stats:purchase_count_30d", "user_stats:avg_order_value"]
).to_df()
# 실시간 서빙용 최신 피처 조회
online_features = store.get_online_features(
features=["user_stats:purchase_count_30d"],
entity_rows=[{"user_id": 1001}]
).to_dict()
아키텍처
| 레이어 | 오프라인 스토어 | 온라인 스토어 |
|---|
| 저장소 | S3, GCS, BigQuery | Redis, DynamoDB |
| 지연 시간 | 수초~분 | 수ms |
| 용도 | 학습 데이터 생성 | 실시간 서빙 |
| 갱신 주기 | 배치 (시간, 일) | 실시간 or 주기적 |
주요 피처 스토어 솔루션
관련 개념