build-feature-store
정보
이 스킬은 일관된 ML 피처 관리를 위해 Feast를 사용하여 중앙 집중식 피처 스토어를 구축합니다. 오프라인/온라인 스토어 설정, 변환 기능이 포함된 피처 뷰 정의, ML 파이프라인을 위한 시점 정확 조인(point-in-time correct join)을 처리합니다. 여러 모델 간 피처를 관리하거나, 훈련-서빙 일관성을 보장하거나, 실시간 추론을 위한 저지연 피처를 제공하거나, 프로젝트 간 피처 정의를 재사용할 때 활용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/build-feature-storeClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
特徴量ストアの構築
完全な設定ファイルとテンプレートについては拡張例を参照。
学習と推論にわたる一貫した特徴量サービングのために、Feastで集中型特徴量管理を実装する。
使用タイミング
- チーム横断で複数のMLモデルの特徴量を管理する時
- 特徴量の学習-サービング一貫性を確保する時
- ポイントインタイム正確な履歴特徴量を実装する時
- リアルタイム推論用の低レイテンシ特徴量を提供する時
- プロジェクト間で特徴量定義を再利用する時
- 特徴量変換のバージョニングを行う時
- 検出とガバナンスのための特徴量カタログを構築する時
- 学習パイプラインでの特徴量リーケージを防止する時
入力
- 必須: 生データソース(データベース、データレイク、データウェアハウス)
- 必須: Feastがインストールされたpython環境
- 必須: オフラインストアバックエンド(BigQuery、Snowflake、Redshift、またはParquetファイル)
- 必須: オンラインストアバックエンド(Redis、DynamoDB、Cassandra、または開発用SQLite)
- 任意: 特徴量変換ロジック(Python、SQL、Spark)
- 任意: エンティティキー定義(user_id、product_idなど)
- 任意: Feastサーバーデプロイ用のKubernetesクラスター
手順
ステップ1: Feast特徴量リポジトリの初期化
Feastプロジェクト構造をセットアップし、ストレージバックエンドを設定する。
# Install Feast with required extras
pip install 'feast[redis,postgres]' # Add backends as needed
# Initialize new feature repository
feast init my_feature_repo
cd my_feature_repo
# Directory structure created:
# my_feature_repo/
# ├── feature_store.yaml # Configuration
# ├── features.py # Feature definitions
# └── data/ # Sample data (dev only)
feature_store.yamlを設定する:
# feature_store.yaml
project: customer_analytics
registry: data/registry.db # SQLite for dev, use S3/GCS for prod
provider: local
# Offline store for training data
offline_store:
type: postgres
# ... (see EXAMPLES.md for complete implementation)
クラウドバックエンドによる本番設定:
# feature_store.prod.yaml
project: customer_analytics
registry: s3://feast-registry/prod/registry.db
provider: aws
offline_store:
type: bigquery
project_id: my-gcp-project
# ... (see EXAMPLES.md for complete implementation)
期待結果: Feast リポジトリが設定ファイルとともに初期化され、サンプル特徴量定義が作成され、オフラインおよびオンラインストアが設定され、レジストリパスがアクセス可能。
失敗時: データベース/Redisの資格情報を確認する(psql -U feast_user -h localhost)、接続文字列のフォーマットを確認する、データベースが存在することを確認する(CREATE DATABASE feature_store)、S3/BigQuery/DynamoDBのクラウド権限を確認する、ストレージバックエンドへの接続をテストする、Feastバージョンとバックエンドの互換性を確認する(feast version)。
ステップ2: エンティティとデータソースの定義
エンティティ定義を作成し、生データソースに接続する。
# entities.py
from feast import Entity, ValueType
# Define entities (primary keys for features)
customer = Entity(
name="customer",
description="Customer entity",
value_type=ValueType.INT64,
# ... (see EXAMPLES.md for complete implementation)
データソースを定義する:
# data_sources.py
from feast import FileSource, BigQuerySource, RedshiftSource
from feast.data_format import ParquetFormat
from datetime import timedelta
# Development: File-based source
customer_transactions_source = FileSource(
path="data/customer_transactions.parquet",
# ... (see EXAMPLES.md for complete implementation)
期待結果: エンティティ定義が正しいIDカラムを参照し、データソースが生データに正常に接続し、event_timestamp_columnがソースデータに存在し、created_timestamp_columnがポイントインタイムクエリを可能にする。
失敗時: ソースデータファイルが存在し読み取り可能であることを確認する、BigQuery/Redshiftの資格情報とテーブルアクセスを確認する、タイムスタンプカラムが正しいフォーマット(Unixタイムスタンプまたは ISO8601)であることを確認する、Kafkaの接続性とトピックの存在を確認する、ソースとエンティティ間のスキーマ互換性を確認する。
ステップ3: 変換付き特徴量ビューの定義
生データをML対応の特徴量にする特徴量ビューを作成する。
# feature_views.py
from feast import FeatureView, Field
from feast.types import Float32, Int64, String, Bool
from datetime import timedelta
from entities import customer, product
from data_sources import customer_features_source
# Simple feature view without transformations
# ... (see EXAMPLES.md for complete implementation)
期待結果: 特徴量ビューが正常に登録され、スキーマがソースデータと一致し、変換がエラーなく実行され、TTL値がユースケースに適切で、オンデマンドビューがバッチとリクエスト特徴量を結合する。
失敗時: フィールド名がソースカラムと正確に一致することを確認する、dtype互換性を確認する(Int64 vs Int32)、エンティティ参照が存在することを確認する、サンプルデータで変換ロジックを検証する、計算でのゼロ除算を確認する、リクエストソーススキーマが推論ペイロードと一致することを確認する。
ステップ4: 特徴量定義の適用と特徴量のマテリアライズ
特徴量定義をレジストリにデプロイし、オンラインストアにマテリアライズする。
# Apply feature definitions to registry
feast apply
# Expected output:
# Created entity customer
# Created feature view customer_stats
# Created on demand feature view customer_segments
# ... (see EXAMPLES.md for complete implementation)
プログラマティックなマテリアライゼーション:
# materialize_features.py
from feast import FeatureStore
from datetime import datetime, timedelta
# Initialize feature store
fs = FeatureStore(repo_path=".")
# Materialize all feature views
# ... (see EXAMPLES.md for complete implementation)
期待結果: 特徴量定義が競合なくレジストリに適用され、マテリアライゼーションジョブが正常に完了し、オンラインストアに特徴量が格納され、特徴量の鮮度が設定されたTTL内。
失敗時: オフラインストアクエリが成功することを確認する(feast feature-views describe customer_stats)、時間範囲にデータがあることを確認する、オンラインストアが書き込み可能であることを確認する(Redis/DynamoDB権限)、ビュー間で重複する特徴量名がないか確認する、ソースデータにエンティティキーが存在することを確認する、マテリアライゼーションジョブログでエラーを監視する、ローカルストアのディスク容量を確認する。
ステップ5: 学習用特徴量の取得
モデル学習用のポイントインタイム正確な履歴特徴量を取得する。
# get_training_data.py
from feast import FeatureStore
import pandas as pd
from datetime import datetime
# Initialize feature store
fs = FeatureStore(repo_path=".")
# ... (see EXAMPLES.md for complete implementation)
ポイントインタイム正確性の検証:
# validate_pit_correctness.py
import pandas as pd
from datetime import datetime, timedelta
def validate_point_in_time_correctness(training_df, entity_df):
"""
Ensure features don't leak future information.
"""
# ... (see EXAMPLES.md for complete implementation)
期待結果: 履歴特徴量が正常に取得され、entity_dfのタイムスタンプが保存され、マテリアライズされた特徴量にNaN値がなく、ポイントインタイム正確性が保証され(将来のデータリーケージなし)、特徴量サービスが特徴量を論理的にグループ化する。
失敗時: entity_dfに必要なカラム(エンティティ名 + event_timestamp)があることを確認する、特徴量ビュー名がレジストリと一致することを確認する、オフラインストアにリクエストされた時間範囲のデータがあることを確認する、タイムゾーンの不一致を確認する(UTCを使用)、ソースデータにエンティティIDが存在することを確認する、SQLクエリエラーについてログを検査する、特徴量ビューのTTLがリクエストされた時間範囲をカバーしていることを確認する。
ステップ6: リアルタイム推論用特徴量のサービング
モデルサービング用にオンラインストアから低レイテンシ特徴量を取得する。
# serve_features.py
from feast import FeatureStore
import time
# Initialize feature store
fs = FeatureStore(repo_path=".")
def get_inference_features(customer_ids: list, request_data: dict = None):
# ... (see EXAMPLES.md for complete implementation)
FastAPI統合:
# api.py
from fastapi import FastAPI
from pydantic import BaseModel
from feast import FeatureStore
import mlflow
app = FastAPI()
fs = FeatureStore(repo_path=".")
# ... (see EXAMPLES.md for complete implementation)
期待結果: 単一エンティティのオンライン特徴量が<10msで取得され、バッチ取得が効率的にスケールし、オンデマンド変換が正しく実行され、リクエスト時特徴量がバッチ特徴量とマージされ、APIが迅速に応答する(<50msエンドツーエンド)。
失敗時: オンラインストアが格納されていることを確認する(空の場合materializeを実行)、Redis/DynamoDBの接続性とレイテンシを確認する、オンラインストアにエンティティキーが存在することを確認する、コールドスタートの問題を確認する(キャッシュのウォームアップ)、オンデマンド変換ロジックを確認する、オンラインストアのメモリ/CPU使用量を監視する、サービスとオンラインストア間のネットワークレイテンシを確認する。
バリデーション
- Feastリポジトリが初期化され設定されている
- オフラインおよびオンラインストアが正常に接続されている
- エンティティ定義がソースデータと一致する
- 特徴量ビューがレジストリに登録されている
- オンデマンド変換が正しく実行される
- マテリアライゼーションがエラーなく完了する
- ポイントインタイム正確性で履歴特徴量が取得される
- オンライン特徴量が低レイテンシ(<10ms)で提供される
- 特徴量の鮮度が設定されたTTL内
- 学習-サービング一貫性が検証されている
- 検出のための特徴量カタログがアクセス可能
よくある落とし穴
- 特徴量リーケージ: 履歴特徴量で将来のデータを使用する - 常にポイントインタイム正確性を検証し、created_timestampカラムを使用する
- 一貫性のない変換: 学習とサービングで異なるロジック - 一貫性のためにFeastオンデマンドビューを使用する
- 古い特徴量: オンラインストアが定期的にマテリアライズされていない - スケジュールされたマテリアライゼーションジョブ(cron/Airflow)をセットアップする
- 欠落するエンティティキー: 学習セットのエンティティがオンラインストアにない - 包括的なマテリアライゼーションを確保し、欠落キーを適切に処理する
- 型の不一致: スキーマの型がソースデータと一致しない - 適用前にdtypeを検証し、明示的なField定義を使用する
- 遅いオンライン取得: ネットワークレイテンシまたは過負荷のオンラインストア - 特徴量ストアを推論サービスと同じ場所に配置し、コネクションプーリングを使用する
- 大きな特徴量ビュー: 数百万のエンティティのマテリアライズは遅い - 日付でパーティション化し、増分マテリアライゼーションを使用し、オフラインクエリを最適化する
- 特徴量のバージョニングなし: 破壊的変更が本番モデルに影響 - 特徴量ビューをバージョニングし、後方互換性を維持する
- タイムゾーンの混乱: タイムゾーンの混在が不正な結合を引き起こす - タイムスタンプには常にUTCを使用する
- TTLの無視: 期限切れの特徴量を提供する - 適切なTTL値を設定し、特徴量の鮮度を監視する
関連スキル
track-ml-experiments-- MLflow実験で特徴量メタデータを記録するorchestrate-ml-pipeline-- 特徴量マテリアライゼーションジョブをスケジュールするversion-ml-data-- 特徴量エンジニアリング用の生データソースをバージョニングするdeploy-ml-model-serving-- 特徴量ストアをモデルサービングと統合するserialize-data-formats-- 特徴量に効率的なストレージフォーマットを選択するdesign-serialization-schema-- 特徴量ソースのスキーマを設計する
GitHub 저장소
연관 스킬
content-collections
메타이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.
polymarket
메타이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.
creating-opencode-plugins
메타이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.
sglang
메타SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.
