7.1.1 · блок 7
Паттерны inference
Паттерны inference
Зачем это нужно
«Задеплоить модель» — не одна операция. Inference может быть синхронным REST, асинхронной очередью, batch job, edge on-device, streaming. Паттерн inference определяет latency, стоимость, сложность ops и выбор runtime (MLServer, Triton, vLLM — модули 7.2–7.6).
Начинающий MLE должен уметь сопоставить продуктовое требование («ответ за 100 ms») с архитектурой — до выбора Helm chart.
Основные идеи
Online (real-time) inference.
- Клиент ждёт ответ в том же HTTP/gRPC запросе.
- SLA: p95 latency, RPS, availability.
- Runtime: MLServer, Triton, vLLM за KServe/Seldon.
- Features: online store, in-request payload, или hybrid.
Batch inference.
- Scoring миллионов строк по расписанию или ad hoc.
- Latency: минуты–часы OK.
- Spark, Argo Workflow + Python job, SQL UDF.
- Output: table, Parquet, Kafka topic.
Async inference.
- Request в очередь (Kafka, SQS), worker обрабатывает, результат polling/webhook.
- Буфер пиков; сложнее UX и SLA.
Streaming inference.
- Events in → model per event/micro-batch → events out.
- Flink, Kafka Streams, Spark Streaming + embedded model (реже).
Edge / on-device.
- Модель на телефоне, браузере (ONNX Runtime Web, TFLite).
- MLOps: export pipeline, version compatibility — другой контур.
Multi-model и routing.
- One gateway → route by model name/version/header.
- A/B test: 90% v44, 10% v45 (canary — модуль 7.3 Seldon, 7.5 KServe).
Preprocessing placement.
| Вариант | Плюсы | Минусы |
|---------|-------|--------|
| In runtime (MLServer code) | Один контейнер | Coupling DS code |
| Sidecar transformer | Separation | Extra latency hop |
| Upstream feature service | Reuse | Network call |
| Embedded in client | Lowest latency | Version drift |
Cold start vs warm pool.
- Serverless scale-to-zero → cold start 10–60s (LLM — минуты).
- Prod online: min replicas > 0, preload model at startup, readiness after load.
Sync pattern diagram (типичный MDP):
Client → Ingress/Istio → KServe InferenceService → MLServer/Triton Pod
↑
Feature lookup (Feast/Redis) optional in same Pod or sidecar
Как это выглядит на практике
Churn scoring (online). REST POST /v1/models/churn:predict, JSON features or entity_id only. p95 200 ms → MLServer + preloaded LightGBM, 2 replicas, HPA on CPU/RPS.
Recommendation refresh (batch). Nightly Spark: 10M users × 500 candidates → top-20 list to Redis. Mobile app reads cache — не ML inference per request.
LLM chatbot (online). OpenAI-compatible API, vLLM, GPU node pool, p95 2s acceptable, streaming tokens to client (SSE).
Выбор паттерна — checklist:
1. User waits for response? → online vs batch.
2. Peak RPS и burst factor?
3. Model size / GPU need?
4. Input size (text length, image MB)?
5. Regulatory logging of each prediction?
Что сделать после занятия
- [ ] Классифицируйте 3 сценария (из курса или жизни): online / batch / async.
- [ ] Для online case выпишите целевой p95 и RPS.
- [ ] Нарисуйте sync diagram для вашего capstone.