Feature store 에 대해서

2025. 5. 22. 12:39Computer

 

MLOps에서의 Feature와 Feature Store 이해하기

Feature란 무엇인가?

Feature는 머신러닝 모델의 입력값으로 사용되는 데이터의 속성(특징)이다. 단순히 컬럼 이름이 아니라, 의미 있는 통계적 또는 파생된 값이다.

예를 들어, 쇼핑몰 사용자에게 상품을 추천하는 모델에서는 다음과 같은 Feature가 사용될 수 있다:

Feature 이름 설명
click_count_7d 최근 7일간 클릭 수
avg_session_time 30일 평균 세션 시간
last_category_viewed 최근 본 카테고리
purchase_count_14d 최근 14일간 구매 횟수
days_since_last_login 마지막 로그인 이후 경과일

Feature Store란?

Feature Store는 이러한 Feature들을 중앙에서 정의하고 저장하고 제공하는 시스템이다.

저장 구조

구성 요소 예시
Feature 정의 click_count_7d: Int32, entity: user_id
Feature 값 user_id: u123, click_count_7d: 42

Feature Store에 저장하고 사용하는 흐름

1. 원시 로그 수집

user_id, action, timestamp
u123, click, 2024-05-01 10:00

2. Feature Engineering (ETL)

user_click_counts = {
    "u123": 42,
    "u456": 17,
}

3. Feature Store에 저장

from feast import FeatureStore

store = FeatureStore(repo_path=".")

store.push(
    "user_click_features",
    entity_id="u123",
    values={"click_count_7d": 42}
)

4. 모델 학습용 데이터 로딩 (Offline)

training_df = store.get_historical_features(
    entity_df=pd.DataFrame({
        "user_id": ["u123"],
        "event_timestamp": ["2024-05-01"]
    }),
    features=["user_click_features:click_count_7d"]
).to_df()

5. 실시간 추론 시 Feature 조회 (Online)

features = store.get_online_features(
    features=["user_click_features:click_count_7d"],
    entity_rows=[{"user_id": "u123"}]
).to_dict()

전체 흐름 요약

[Raw Data] → [ETL → Feature 생성] → [Feature Store 저장] → 모델 학습 시 Offline 조회 → 실시간 추론 시 Online 조회 → 모델 입력 → 예측값 출력

Feature는 단순한 컬럼 이름이 아니다

Feature는 단순한 row의 필드가 아니라, 의미 있는 통계적 또는 요약된 데이터이다. 이는 모델의 성능에 직접적인 영향을 준다.

단순 데이터 Feature
클릭 로그 최근 7일간 클릭 수
세션 로그 평균 방문 시간
구매 기록 최근 구매 빈도

Feast를 통한 Feature 정의 예시

user_click_view = FeatureView(
    name="user_click_features",
    entities=["user_id"],
    ttl=Duration(seconds=86400 * 30),
    schema=[
        Field(name="click_count_7d", dtype=Int32),
        Field(name="avg_session_time", dtype=Float32),
    ],
    online=True,
    source=batch_source,
)

요약

항목 설명
Feature 모델 입력으로 사용되는 파생/요약 데이터
Feature Store Feature 정의와 값을 저장하고 제공하는 시스템
Offline 사용 모델 학습용 데이터 제공
Online 사용 실시간 예측 시 Feature 조회
중요한 점 Feature는 통계적 의미를 담은 데이터이며, 단순한 raw column이 아님

Feature Store의 Online과 Offline 저장소 차이

구분 Offline Feature Store Online Feature Store
목적 모델 학습용 데이터 저장 실시간 추론용 데이터 저장
저장 위치 S3, BigQuery, Snowflake 등 Redis, DynamoDB, Cassandra 등
응답 속도 느려도 무방 (초~분 단위) 매우 빠름 (ms 단위)
업데이트 빈도 주기적 배치 거의 실시간 또는 스트리밍
사용 시점 모델 학습 시 서비스 API 호출 시
데이터 용량 대용량 저장 적합 빠른 조회를 위한 최적화

Offline과 Online 저장소는 역할이 다르지만, 일관된 Feature 정의와 데이터를 공유함으로써 학습과 추론 간의 정합성을 유지하는 것이 중요하다.

반응형