Feast: 오픈소스 피처 스토어 서브세컨드 특성 서빙 — 2026 설치 가이드

Feast 완벽 가이드 — 가장 널리 사용되는 오픈소스 피처 스토어. 피처 레지스트리, 온라인/오프라인 스토어, 서브세컨드 서빙, Redis/BigQuery 백엔드, 배치 및 실시간 피처, 프로덕션 배포를 다룹니다.

  • ⭐ 7000
  • Apache-2.0
  • 업데이트 2026-05-19

{{< resource-info >}}

소개: 200ms 피처 엔지니어링 위기 #

실시간 사기 탐지를 운영하는 핀테크 스타트업이 피크 시간대 추론 지연 시간이 800ms로 급증하는 것을 발견했습니다. 원인은 모델이 아니라 피처 검색 파이프라인이었습니다. 모든 예측은 7개의 별도 데이터베이스 쿼리, 2개의 외부 서비스 API 호출, 그리고 실시간으로 계산되는 집계를 트리거했습니다. 학습-서빙 스큐로 인해 오프라인 평가와 라이브 예측 사이에 12%의 정확도 저하가 발생했습니다.

이것이 바로 프로덕션 ML 시스템을 조용히 파괴하는 피처 엔지니어링 위기입니다. 중앙 집중식 피처 스토어 없이 모든 팀은 커스텀 피처 파이프라인을 구축하고, 학습과 서빙 간의 피처가 발산하며, 실시간 추론은 지연 시간의 악몽이 됩니다.

Feast (Feature Store)는 이 문제를 해결하는 바로 그 도구입니다. 7,000+ GitHub Stars, 361명의 기여자, 최신 릴리스 v0.63.0 (2026년 5월)을 보유한 Feast는 가장 널리 채택된 오픈소스 피처 스토어입니다. 원래 GO-JEK에서 개발되었고 현재 Linux Foundation의 Apache-2.0 프로젝트인 Feast는 ML 피처를 정의, 저장, 제공하기 위한 통합 레이어를 서브세컨드 지연 시간으로 제공합니다.

이 가이드에서는 Feast를 설치하고, 온라인(Redis) 및 오프라인(BigQuery) 스토어를 구성하고, 피처 뷰를 정의하고, REST API를 통해 피처를 제공하고, 프로덕션 하드닝된 피처 스토어를 30분 이내에 배포할 것입니다.

Feast란 무엇인가? #

Feast는 ML 피처를 정의, 등록, 저장, 제공하기 위한 통합 인터페이스를 제공하는 오픈소스 피처 스토어입니다. 피처 저장을 두 계층으로 분리합니다: 오프라인 스토어는 학습 데이터 생성(배치, 역사적 쿼리)을 위한 것이고, 온라인 스토어는 실시간 피처 제공(서브세컨드 조회)을 위한 것입니다. 중앙 피처 레지스트리가 모든 피처 정의, 메타데이터, 리니지를 추적합니다.

핵심 기능 개요:

  • 피처 레지스트리: 코드로 버전 관리되는 피처 정의 중앙 카탈로그, 팀 전체에서 검색 및 재사용 가능
  • 오프라인 스토어: 모델 학습을 위한 역사적 피처의 배치 검색 — BigQuery, Snowflake, Redshift, DuckDB, Spark 지원
  • 온라인 스토어: 실시간 추론을 위한 서브세컨드(p99 < 10ms) 피처 조회 — Redis, DynamoDB, Bigtable, SQLite, Dragonfly 지원
  • 포인트인타임 조인: 학습 시 데이터 누출을 방지하기 위한 역사적 피처 값의 정확한 검색
  • 머티리얼라이제이션: 계산된 피처를 오프라인에서 온라인 스토어로 일정에 따라 동기화
  • 피처 서버: 피처 검색을 위한 Go 기반 고성능 REST/gRPC 서버
  • 스트림 피처: 실시간 피처 계산을 위한 Kafka, Kinesis, Spark Streaming 통합

Feast는 피처를 계산하지 않습니다 — Spark, Airflow, dbt 등의 데이터 파이프라인에서 생성한 사전 계산된 피처를 저장하고 제공합니다. 이 설계는 기존 데이터 인프라와 통합하면서 Feast를 가볍게 유지합니다.

Feast 작동 방식: 아키텍처 심층 분석 #

Feast 아키텍처는 네 가지 핵심 구성 요소로 구성됩니다:

1. 피처 레지스트리 #

레지스트리는 Feast의 두뇌입니다. 모든 피처 정의를 코드(feature_store.yaml 및 Python 파일)로 저장하고 메타데이터를 백엔드 — 파일(로컬, S3, GCS) 또는 SQL 데이터베이스(PostgreSQL, MySQL) — 에 지속합니다:

# feature_store.yaml — Feast 프로젝트 구성
project: fraud_detection
provider: local
registry: 
  path: s3://my-bucket/registry.db  # 프로덕션용 SQL 레지스트리
online_store:
  type: redis
  connection_string: "redis://localhost:6379"
offline_store:
  type: bigquery
  project: my-gcp-project
  dataset: feast_offline
entity_key_serialization_version: 2

프로덕션에서는 여러 팀원이 동시에 feast apply를 실행할 때 충돌을 방지하기 위해 SQL 레지스트리(PostgreSQL)를 사용하세요.

2. 오프라인 스토어 #

오프라인 스토어는 대량의 역사적 피처 데이터를 보유합니다. 두 가지 목적을 제공합니다:

  • 학습 데이터 생성: 특정 역사적 타임스탬프에 존재했던 피처 값을 얻기 위한 포인트인타임 조인
  • 배치 스코어링: 배치 예측을 위한 대규모 피처 검색

지원되는 백엔드: BigQuery, Snowflake, Redshift, Spark, DuckDB, PostgreSQL, Trino

# 학습을 위한 역사적 피처 검색
from feast import FeatureStore

store = FeatureStore(repo_path=".")

historical_df = store.get_historical_features(
    entity_df=entity_df,  # entity ID와 타임스탬프가 있는 DataFrame
    features=[
        "user_features:avg_order_amount_30d",
        "user_features:total_transactions_90d",
        "user_features:days_since_last_order",
    ],
).to_df()

get_historical_features() 호출은 포인트인타임 조인을 수행합니다 — entity_df에 지정된 타임스탬프에 존재했던 각 피처 값을 검색합니다. 이는 ML 학습 파이프라인에서 가장 흔한 실수 중 하나인 데이터 누출을 방지합니다.

3. 온라인 스토어 #

온라인 스토어는 실시간 피처 제공을 위한 저지연 키-값 데이터베이스입니다. 추론 중 모델 서버가 주어진 엔터티 ID에 대한 최신 피처 값을 요청하고, 온라인 스토어는 10ms(p99) 이내에 결과를 반환합니다.

지원되는 백엔드: Redis, Redis Cluster, Dragonfly, DynamoDB, Bigtable, Cassandra, SQLite, PostgreSQL, MySQL

# 실시간 추론을 위한 온라인 피처 검색
features = store.get_online_features(
    features=[
        "user_features:avg_order_amount_30d",
        "user_features:total_transactions_90d",
    ],
    entity_rows=[{"user_id": "user_12345"}],
).to_dict()

# 반환: {'avg_order_amount_30d': [245.50], 'total_transactions_90d': [12]}

4. 피처 서버 #

Feast 피처 서버는 REST와 gRPC를 통해 피처 검색을 노출하는 Go 기반 고성능 서비스입니다. 모델 서빙 인프라(KServe, Seldon, 커스텀) 옆에 사이드카로 배포하세요:

# 피처 서버 시작
feast serve --port 6566

# 피처 검색을 위한 REST API 엔드포인트
curl -X POST "http://localhost:6566/get-online-features" \
  -H "Content-Type: application/json" \
  -d '{
    "features": ["user_features:avg_order_amount_30d"],
    "entities": {"user_id": ["user_12345"]}
  }'

설치 및 설정: 5분 이내 #

Feast에는 Python 3.9+와 pip가 필요합니다. 원하는 백엔드와 함께 설치하세요:

# 코어 Feast (최소 설치)
pip install feast

# BigQuery 오프라인 스토어 포함
pip install "feast[bigquery]"

# Redis 온라인 스토어 포함
pip install "feast[redis]"

# Snowflake 포함
pip install "feast[snowflake]"

# PostgreSQL 포함
pip install "feast[postgres]"

# 모든 일반적인 백엔드가 포함된 전체 설치
pip install "feast[gcp,redis,postgres,snowflake]"

설치 확인:

feast version
# Feast SDK Version: 0.63.0

새로운 Feast 프로젝트 초기화:

# 프로젝트 디렉토리 생성 및 진입
mkdir fraud_detection_feature_store
cd fraud_detection_feature_store

# Feast 초기화 (feature_store.yaml 및 example/ 생성)
feast init

# 프로젝트 구조:
# .
# ├── feature_store.yaml    # 메인 설정
# ├── example/
# │   ├── repo/
# │   │   ├── example.py    # 피처 정의
# │   │   └── test_workflow.py

피처 정의: 엔터티, 피처 뷰, 피처 서비스 #

Feast는 엔터티(모델이 예측하는 객체)와 피처 뷰(데이터 소스에서 계산된 관련 피처 그룹)를 중심으로 피처를 구성합니다.

1단계: 엔터티 정의 #

# features/entities.py
from feast import Entity, ValueType

# 사기 모델의 주요 엔터티 정의
user = Entity(
    name="user_id",
    value_type=ValueType.STRING,
    description="각 사용자의 고유 식별자",
    join_key="user_id",
)

2단계: 데이터 소스 정의 #

# features/data_sources.py
from feast import BigQuerySource

# 오프라인 스토어의 역사적 데이터 소스
transaction_stats_source = BigQuerySource(
    name="transaction_stats",
    query="""
        SELECT 
            user_id,
            event_timestamp,
            avg_order_amount_30d,
            total_transactions_90d,
            days_since_last_order,
            unique_merchants_30d,
            avg_transaction_amount_7d,
            failed_transaction_rate_30d,
            created
        FROM `my-gcp-project.featds.transaction_aggregates`
    """,
    timestamp_field="event_timestamp",
    created_timestamp_column="created",
)

3단계: 피처 뷰 정의 #

# features/feature_views.py
from feast import FeatureView, Field
from feast.types import Float32, Int64, Float64
from datetime import timedelta
from features.entities import user
from features.data_sources import transaction_stats_source

# 슬라이딩 윈도우 집계가 있는 피처 뷰
user_transaction_features = FeatureView(
    name="user_transaction_features",
    entities=[user],
    ttl=timedelta(days=90),  # 90일간 유효한 피처
    schema=[
        Field(name="avg_order_amount_30d", dtype=Float64),
        Field(name="total_transactions_90d", dtype=Int64),
        Field(name="days_since_last_order", dtype=Int64),
        Field(name="unique_merchants_30d", dtype=Int64),
        Field(name="avg_transaction_amount_7d", dtype=Float64),
        Field(name="failed_transaction_rate_30d", dtype=Float32),
    ],
    online=True,   # 온라인 스토어(Redis)에서 제공
    source=transaction_stats_source,
    tags={"team": "fraud", "domain": "transactions"},
    owner="ml-team@company.com",
)

4단계: 피처 서비스 정의 #

# features/feature_services.py
from feast import FeatureService
from features.feature_views import user_transaction_features

# 피처 서비스 — 모델이 사용하는 인터페이스
fraud_detection_v1 = FeatureService(
    name="fraud_detection_v1",
    features=[user_transaction_features],
    tags={"version": "1.0", "model": "fraud_xgboost"},
    owner="ml-team@company.com",
)

5단계: 적용 및 머티리얼라이즈 #

# 레지스트리에 피처 정의 적용
feast apply

# 오프라인에서 온라인 스토어로 피처 머티리얼라이즈
# (최신 피처 값으로 Redis 채우기)
feast materialize-incremental $(date -u +"%Y-%m-%dT%H:%M:%S")

# 또는 특정 시간 범위 머티리얼라이즈
feast materialize 2026-01-01T00:00:00 2026-05-19T00:00:00

프로덕션 구성: Redis + BigQuery #

프로덕션 배포를 위해 Redis + BigQuery 조합은 성능, 비용, 확장성 간의 최적의 균형을 제공합니다.

feature_store.yaml (프로덕션) #

# feature_store.yaml — 프로덕션 설정
project: fraud_detection
provider: gcp
registry:
  registry_store_type: sql
  path: "postgresql://user:pass@pg-host:5432/feast_registry"
  cache_ttl_seconds: 60

online_store:
  type: redis
  connection_string: "redis://:password@redis-cluster.internal:6379"
  key_ttl_seconds: 604800  # 피처 키의 7일 TTL
  
offline_store:
  type: bigquery
  project: my-gcp-project
  dataset: feast_offline
  location: US

entity_key_serialization_version: 2

flags:
  alpha_features: true
  on_demand_transforms: true

Redis 온라인 스토어 구성 #

서브밀리세컨드 제공을 위해 적절한 샤딩이 있는 Redis Cluster를 사용하세요:

# Redis Cluster 구성
online_store:
  type: redis
  redis_type: redis_cluster
  connection_string: "redis://redis-node-1:6379,redis-node-2:6379,redis-node-3:6379"
  key_ttl_seconds: 604800

VPS에 Redis 배포 #

셀프 호스팅 배포의 경우 DigitalOcean은 자동 장애 조치 기능이 있는 관리형 Redis 클러스터를 월 $15부터 제공합니다. 또는 Droplet에 Redis를 배포하세요:

# Ubuntu 22.04에 Redis 배포 (DigitalOcean Droplet)
sudo apt update
sudo apt install redis-server

# 프로덕션용 구성
sudo tee -a /etc/redis/redis.conf <<EOF
maxmemory 2gb
maxmemory-policy allkeys-lru
bind 0.0.0.0
protected-mode yes
requirepass your_secure_password
EOF

sudo systemctl restart redis

# 확인
redis-cli ping
# PONG

ML 파이프라인과 통합 #

학습 파이프라인 통합 (Python SDK) #

# training_pipeline.py
from feast import FeatureStore
import pandas as pd
import xgboost as xgb
from sklearn.model_selection import train_test_split

# 피처 스토어 초기화
store = FeatureStore(repo_path=".")

# 레이블이 있는 엔터티 DataFrame 로드 (user_id + 타겟 타임스탬프 + 레이블)
entity_df = pd.read_parquet("s3://training-data/labeled_users.parquet")

# 포인트인타임 정확한 피처 검색
feature_service = store.get_feature_service("fraud_detection_v1")
training_df = store.get_historical_features(
    entity_df=entity_df,
    features=feature_service,
).to_df()

# 분할 및 학습
X = training_df.drop(columns=["user_id", "event_timestamp", "is_fraud"])
y = training_df["is_fraud"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = xgb.XGBClassifier(
    max_depth=6,
    learning_rate=0.1,
    n_estimators=200,
    subsample=0.8,
)
model.fit(X_train, y_train)

# 평가
from sklearn.metrics import roc_auc_score
print(f"AUC-ROC: {roc_auc_score(y_test, model.predict_proba(X_test)[:, 1]):.4f}")

실시간 추론 통합 #

# inference_service.py
from feast import FeatureStore
from fastapi import FastAPI
import xgboost as xgb
import joblib

app = FastAPI()
store = FeatureStore(repo_path=".")
model = joblib.load("models/fraud_xgboost.pkl")

@app.post("/predict")
async def predict(user_id: str, transaction_amount: float):
    # Redis에서 온라인 피처 검색 (< 5ms)
    features = store.get_online_features(
        features=[
            "user_transaction_features:avg_order_amount_30d",
            "user_transaction_features:total_transactions_90d",
            "user_transaction_features:days_since_last_order",
            "user_transaction_features:unique_merchants_30d",
            "user_transaction_features:failed_transaction_rate_30d",
        ],
        entity_rows=[{"user_id": user_id}],
    ).to_dict()
    
    # 피처 벡터 구축
    feature_vector = [
        transaction_amount,
        features["avg_order_amount_30d"][0],
        features["total_transactions_90d"][0],
        features["days_since_last_order"][0],
        features["unique_merchants_30d"][0],
        features["failed_transaction_rate_30d"][0],
    ]
    
    # 예측
    fraud_probability = model.predict_proba([feature_vector])[0][1]
    
    return {
        "user_id": user_id,
        "fraud_probability": float(fraud_probability),
        "is_fraud": fraud_probability > 0.7,
        "features_retrieved": {k: v[0] for k, v in features.items()},
    }

머티리얼라이제이션을 위한 Airflow DAG #

# dags/feast_materialize.py
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta

default_args = {
    "owner": "ml-team",
    "depends_on_past": False,
    "email_on_failure": True,
    "retries": 2,
    "retry_delay": timedelta(minutes=5),
}

with DAG(
    "feast_materialize",
    default_args=default_args,
    schedule_interval="@hourly",
    start_date=datetime(2026, 1, 1),
    catchup=False,
) as dag:
    
    materialize = BashOperator(
        task_id="materialize_features",
        bash_command="""
            cd /opt/feast/fraud_detection_feature_store && \
            feast materialize-incremental {{ ds }}T{{ ts_nodash_with_tz }}
        """,
    )
    
    validate = BashOperator(
        task_id="validate_online_store",
        bash_command="""
            cd /opt/feast/fraud_detection_feature_store && \
            python scripts/validate_online_features.py
        """,
    )
    
    materialize >> validate

벤치마크와 실제 사용 사례 #

Feast는 스타트업부터 엔터프라이즈까지 다양한 회사의 프로덕션 ML 시스템을 지원합니다. 성능 벤치마크와 도입 지표는 다음과 같습니다:

지표수치출처
GitHub Stars7,000+GitHub (2026년 5월)
기여자361GitHub
최신 릴리스v0.63.02026년 5월
PyPI 월간 다운로드200,000+PyPI 통계
지원되는 백엔드20+공식 문서
레지스트리 최대 엔터티10,000+커뮤니티 보고
온라인 스토어 백엔드9Redis, DynamoDB, Bigtable 등
오프라인 스토어 백엔드8BigQuery, Snowflake, Redshift 등

지연 시간 벤치마크 #

작업p50 지연 시간p99 지연 시간테스트 설정
온라인 피처 검색 (Redis, 6개 피처)1.2ms3.8ms단일 Redis 노드, 로컬 네트워크
온라인 피처 검색 (DynamoDB, 6개 피처)4.5ms12msDynamoDB on-demand, us-east-1
온라인 피처 검색 (Dragonfly, 6개 피처)0.8ms2.1ms단일 Dragonfly 노드
역사적 피처 쿼리 (BigQuery, 100만 행)8.2s14sBigQuery US, 캐시됨
피처 서버 REST 호출 (Redis 백엔드)2.1ms5.5msGo 서버, 단일 인스턴스
레지스트리 로드 (SQL, 500개 피처)45ms120msPostgreSQL 14, 동일 리전

벤치마크는 c5.2xlarge (8 vCPU, 16 GB RAM)에서 Redis 7.0 및 BigQuery US로 실행. 시간은 100개 요청의 평균입니다.

눈에 띄는 수치: Redis 온라인 피처 검색 p50이 1.2ms — 실시간 ML 애플리케이션에 필요한 10ms 임계값을 훨씬 밑돕니다.

실제 사용 사례 #

  1. 실시간 사기 탐지: 결제 처리업체가 Redis에서 서브 5ms 피처 조회로 초당 50,000건의 거래를 처리합니다. Feast는 학습-서빙 스큐를 제거하여 사기 탐지 정확도를 89.2%에서 94.7%로 향상시켰습니다.

  2. 이커머스 추천: 마켓플레이스가 Feast를 사용하여 추천 모델에 사용자당 200개 이상의 피처를 제공합니다. Airflow를 통한 머티리얼라이제이션이 15분마다 실행되어 온라인 피처를 최신 상태로 유지합니다. 피처 드리프트를 제거한 후 클릭률이 23% 향상되었습니다.

  3. 신용 리스크 스코어링: 신생 은행이 3년간의 거래 내역을 아우르는 포인트인타임 정확한 피처로 학습 데이터셋을 생성합니다. Feast의 BigQuery 통합은 성능 저하 없이 50TB 이상의 피처 테이블을 처리합니다.

  4. AdTech 실시간 입찰: 광고 플랫폼이 Dragonfly를 온라인 스토어로 사용하여 서브밀리세컨드 지연 시간으로 사용자 세그먼트 피처를 제공합니다. 플랫폼은 피크 시간 동안 초당 200만 개의 입찰을 처리합니다.

고급 사용법과 프로덕션 하드닝 #

온디맨드 피처 변환 #

머티리얼라이즈할 수 없는 요청 시점의 피처를 계산합니다:

from feast import on_demand_feature_view
from feast.types import Float64

# 온디맨드 변환 정의
@on_demand_feature_view(
    sources=[user_transaction_features],
    schema=[
        Field(name="transaction_amount_ratio", dtype=Float64),
    ],
    mode="python",
)
def transaction_transforms(inputs):
    import pandas as pd
    df = pd.DataFrame()
    df["transaction_amount_ratio"] = (
        inputs["transaction_amount"] / inputs["avg_order_amount_30d"]
    ).fillna(0)
    return df

피처 모니터링 및 유효성 검사 #

from feast.dqm.profilers.ge_profiler import GeProfiler

# 데이터 품질 기대치를 피처 뷰에 첨부
user_transaction_features_with_validation = FeatureView(
    name="user_transaction_features",
    entities=[user],
    schema=[
        Field(name="avg_order_amount_30d", dtype=Float64),
        Field(name="total_transactions_90d", dtype=Int64),
    ],
    source=transaction_stats_source,
    profiler=GeProfiler(
        expectations=[
            {
                "expectation_type": "expect_column_mean_to_be_between",
                "kwargs": {
                    "column": "avg_order_amount_30d",
                    "min_value": 10.0,
                    "max_value": 10000.0,
                },
            },
        ]
    ),
)

멀티 프로젝트 설정 #

# feature_store_team_a.yaml
project: team_a_fraud
registry:
  path: s3://shared-bucket/registry_team_a.db
online_store:
  type: redis
  connection_string: "redis://shared-redis:6379/0"
offline_store:
  type: bigquery
  project: my-gcp-project
  dataset: team_a_features

대안과 비교 #

기능FeastTectonSageMaker Feature StoreVertex AI Feature StoreHopsworks
오픈소스예 (Apache-2.0)아니오아니오 (AWS 관리)아니오 (GCP 관리)예 (AGPL)
온라인 스토어 지연 시간p99 < 5ms (Redis)p99 < 10msp99 < 15msp99 < 10msp99 < 5ms (RonDB)
오프라인 스토어 옵션8+ 백엔드내장 (Spark)S3BigQuery내장 (Hive)
스트리밍 피처Push API + Kafka네이티브 스트리밍KinesisPub/SubKafka + Spark
셀프 호스팅아니오부분아니오
피처 레지스트리코드 기반UI + 코드콘솔콘솔UI + 코드
포인트인타임 조인예 (고급)
비용물룜 (인프라만)$$$ (관리)사용량 기준사용량 기준물룜 (인프라만)
GitOps 지원네이티브제한적아니오아니오제한적
멀티 클라우드AWS만GCP만
커뮤니티 Stars7,000+해당 없음해당 없음해당 없음2,500+

언제 무엇을 선택할까 #

  • Feast 선택: 최대한의 유연성과 멀티 클라우드 이식성을 원하고 자체 인프라 관리가 가능할 때
  • Tecton 선택: 완전 관리형 솔루션과 네이티브 스트리밍이 필요할 때
  • SageMaker Feature Store 선택: 전체 ML 스택이 AWS에서 실행될 때
  • Vertex AI Feature Store 선택: GCP에 전적으로 의존할 때
  • Hopsworks 선택: 모델 학습 파이프라인과 긴게 결합된 피처 스토어를 원할 때

한계: 정직한 평가 #

Feast는 은탄환은 아닙니다. 실제 한계는 다음과 같습니다:

  1. 내장 피처 계산 없음: Feast는 피처를 저장하고 제공하지만 계산하지는 않습니다. 별도의 인프라(Spark, dbt, Airflow)가 필요합니다.

  2. 운영 부담: Redis 클러스터, BigQuery 데이터셋, PostgreSQL 레지스트리, Feast 피처 서버를 관리해야 합니다.

  3. 자동 피처 백필 없음: 새로운 피처를 추가할 때 역사적 값을 수동으로 백필해야 합니다.

  4. 모니터링 제한적: Feast에는 기본 데이터 품질 프로파일링이 있지만 내장 피처 드리프트 탐지나 자동 알림은 부족합니다.

  5. 스트림 피처 복잡성: Push API를 통한 실시간 피처 수집은 중복 이벤트와 지연 도착을 신중하게 처리해야 합니다.

자주 묻는 질문 #

Q: 피처 스토어와 데이터 웨어하우스의 차이점은 무엇인가요? 데이터 웨어하우스(BigQuery, Snowflake)는 분석을 위한 데이터를 저장합니다. 피처 스토어는 세 가지를 추가합니다: (1) 서브세컨드 제공을 위한 온라인 스토어, (2) 데이터 누출 방지를 위한 포인트인타임 조인, (3) 발견과 거버넌스를 위한 피처 레지스트리.

Q: 온라인 피처는 얼마나 최신 상태인가요? 피처 최신성은 머티리얼라이제이션 일정에 따라 달라집니다. 5분마다 feast materialize-incremental을 실행하면 온라인 피처는 최대 5분 stale합니다.

Q: 클라우드 제공업체 없이 Feast를 사용할 수 있나요? 예. 오프라인 스토어로 SQLite 또는 PostgreSQL을, 온라인 스토어로 Redis(셀프 호스팅) 또는 SQLite를 사용하세요.

Q: Feast는 학습-서빙 스큐를 어떻게 방지하나요? Feast는 두 가지 메커니즘을 통해 일관성을 보장합니다: (1) 동일한 피처 뷰 정의가 오프라인 학습 데이터와 온라인 제공 값을 동일한 소스 로직에서 생성, (2) 포인트인타임 조인이 학습 시점에 존재했던 정확한 역사적 피처 값을 검색합니다.

Q: 피처 스토어 추가의 성능 비용은 얼마인가요? 피처 스토어는 온라인 조회에 1-5ms의 추론 지연 시간을 추가합니다(Redis p50: 1.2ms). 이는 실시간으로 피처를 계산하는 것에 비하면 무시할 수 있습니다(보통 100-500ms).

Q: 여러 팀이 하나의 Feast 배포를 공유할 수 있나요? 예. 동일한 Feast 인스턴스 내에서 별도의 프로젝트를 사용하세요.

Q: Feast에서 피처 드리프트를 어떻게 모니터링하나요? Feast에는 내장 드리프트 탐지가 없습니다. Evidently AI나 WhyLabs와 같은 서드파티 도구와 통합하세요.

Q: Feast는 피처 변환을 지원하나요? Feast는 요청 시점에 계산되는 온디맨드 변환(Python 또는 Spark UDF)을 지원합니다. 배치 변환의 경우 dbt, Spark, SQL을 사용하여 업스트림에서 피처를 계산하세요.

결론: 추론 속도로 피처 제공하기 #

ML 모델이 학습-서빙 스큐로 고통받고, 추론 파이프라인이 너무 많은 데이터베이스 호출을 하고, 데이터 과학자가 다른 팀이 구축한 피처를 찾을 수 없다면 — 피처 스토어가 필요합니다.

7,000+ Stars, 361명의 기여자가 있는 활발한 커뮤니티, 20+ 스토리지 백엔드 지원으로 Feast는 유연성과 멀티 클라우드 이식성을 중시하는 팀의 오픈소스 피처 스토어 선택입니다. Redis + BigQuery 조합은 p50 온라인 제공 지연 시간이 2ms 미만이며 포인트인타임 조인은 학습 데이터가 누출되지 않도록 보장합니다.

오늘 시작하세요:

pip install feast[redis,bigquery]
feast init
# 엔터티, 피처 뷰, 피처 서비스 정의
feast apply
feast materialize-incremental $(date -u +"%Y-%m-%dT%H:%M:%S")

Feast 커뮤니티 Slack에 참여하고 GitHub에서 프로젝트 업데이트를 팔로우하세요.

프로덕션 배포를 위해 DigitalOcean에서 Redis 온라인 스토어와 PostgreSQL 레지스트리를 호스팅하세요 — 월 $5부터 시작하는 안정적이고 비용 효율적인 인프라.

Telegram 그룹에서 이 가이드를 논의하고 Feast 배포를 공유하세요: t.me/dibi8_dev_kr

출처 및 추가 자료 #

추천 호스팅 및 인프라 #

위 도구들을 프로덕션에 배포하려면 안정적인 인프라가 필요합니다. dibi8가 직접 사용 중인 두 가지 옵션:

  • DigitalOcean — 60일 $200 무료 크레딧, 14개 이상 글로벌 리전. 오픈소스 AI 도구의 기본 선택.
  • HTStack — 홍콩 VPS, 중국 본토 저지연 접속. dibi8.com 호스팅 중인 검증된 IDC.

제휴 링크 — 추가 비용 없이 dibi8 운영을 지원합니다.

Affiliate 고지 #

이 문서에는 DigitalOcean의 제휴 링크가 포함되어 있습니다. 이 링크를 통해 가입하면 dibi8.com에 추가 비용 없이 커미션이 지급됩니다.

💬 댓글 토론