Feature store nedir? Training-serving skew problemini nasıl çözer?
Cevap
Feature store, ML özelliklerinin tanımlandığı, hesaplandığı, saklandığı ve hem eğitimde hem inference'ta aynı tanımla sunulduğu merkezi bir veri katmanıdır.
Training-serving skew
Modelin eğitimde gördüğü özellik değerleriyle production'da gördükleri arasındaki farktır. Model offline'da iyi, online'da kötü performans gösterir. Tipik sebepler:
- Özellik eğitimde Python/SQL ile, serving'de başka bir dilde (Java servis) yeniden yazılmıştır ve mantık ufak farklar içerir.
- Eğitimde gelecekteki veriler kullanılmıştır (zamansal leakage).
- Eksik değer yönetimi, birim veya zaman dilimi farkları.
- Serving'deki özellik verisi gecikmeli güncellenir.
Feature store bileşenleri
| Bileşen | Görev |
|---|---|
| Feature registry | Özellik tanımları, sahiplik, dokümantasyon, yeniden kullanım |
| Offline store | Geçmiş değerler (data warehouse / lake). Eğitim seti üretimi |
| Online store | En güncel değerler, düşük gecikmeli erişim (Redis, DynamoDB) |
| Materialization | Offline'dan online'a düzenli veri aktarımı, streaming özellikler |
Point-in-time correctness
Eğitim seti oluşturulurken her etiket için, o olayın gerçekleştiği andan önce bilinen özellik değerleri alınmalıdır. Feature store'lar bunu point-in-time join ile otomatik yapar ve leakage'ı önler.
from feast import FeatureStore
store = FeatureStore(repo_path=".")
# Eğitim: her satırın event_timestamp anındaki değerler
train_df = store.get_historical_features(
entity_df=labels_df, # customer_id, event_timestamp, label
features=["customer_stats:txn_count_7d", "customer_stats:avg_amount_30d"],
).to_df()
# Serving: aynı özellikler, en güncel değer
online = store.get_online_features(
features=["customer_stats:txn_count_7d", "customer_stats:avg_amount_30d"],
entity_rows=[{"customer_id": 42}],
).to_dict()Ne zaman gerekir?
Birden çok modelin ortak özellikleri kullandığı, online serving'in olduğu ve birden çok ekibin çalıştığı ortamlarda değerlidir. Tek bir batch modeli olan küçük bir ekip için gereksiz karmaşıklık olabilir. Araçlar: Feast (açık kaynak), Tecton, Databricks ve SageMaker feature store'ları.
İlgili MLOps soruları
- ML sistemleri için CI/CD nasıl kurulur? Klasik yazılım CI/CD'sinden farkı nedir?
- GPU'da model inference'ını nasıl optimize edersiniz? Throughput ve latency arasındaki trade-off'u açıklayın.
- Yeni bir modeli production'a güvenli şekilde nasıl çıkarırsınız? Shadow deployment, canary ve A/B testi karşılaştırın.
- Bir ML modelini tekrarlanabilir (reproducible) hale getirmek ve versiyonlamak için neler yaparsınız?
- Experiment tracking neden önemlidir? MLflow ile neleri takip edersiniz?
- Data drift ve concept drift arasındaki fark nedir? Production'da nasıl tespit edersiniz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.