Production AI systems are built from a set of reusable components. Understanding each component's role, technology options, and design considerations is essential.
A centralized repository for features shared across training and serving. Eliminates the training-serving skew caused by inconsistent feature computation.
# Feature store usage
# Training: query historical features
features = feature_store.get_historical_features(
entity_ids=user_ids, feature_names=["avg_purchase_7d", "session_count"],
timestamp_column="event_time"
)
# Inference: query latest features
features = feature_store.get_online_features(
entity_ids={"user_id": 42}, feature_names=["avg_purchase_7d"]
)
Orchestrates data loading, preprocessing, training, evaluation, and model registration.
Versioned catalog of trained models with metadata: metrics, hyperparameters, training dataset ID, deployment status (staging, production, archived).
Exposes models for inference. Key considerations:
| Tool | Best For | Key Feature |
|---|---|---|
| NVIDIA Triton | GPU-accelerated serving | Multi-framework, dynamic batching |
| vLLM | LLM inference | PagedAttention, continuous batching |
| TorchServe | PyTorch models | Model versioning, A/B testing |
| BentoML | Python model serving | Unified API, containerization |
| ONNX Runtime | Cross-framework serving | Optimized execution, quantization |
Captures explicit (ratings, corrections) and implicit (clicks, conversions) feedback. Stores it in a feedback data store, timestamped, for future retraining cycles and drift analysis.