MLOps Path

7.3.2 · блок 7

Seldon и разные runtimes

Seldon и разные runtimes

Зачем это нужно

Этот урок разбирает legacy Seldon Core 1: runtime внутри graph выполняет inference. Один graph может комбинировать sklearn preprocessor (MLServer), ONNX model (ONNX Runtime server), TensorFlow SavedModel. SeldonDeployment и implementation ниже нужны для миграции/поддержки Core 1; для нового production выбирайте Seldon Core 2 или KServe как golden path.

Урок дополняет 7.3.1 практикой multi-runtime и migration path к KServe.

Основные идеи

Pre-packaged Seldon Core 1 servers (historical names).

| implementation | Backend | Typical model |

|----------------|---------|---------------|

| SKLEARN_SERVER | MLServer/sklearn | joblib |

| XGBOOST_SERVER | MLServer | xgboost |

| MLFLOW_SERVER | MLflow flavor | pyfunc |

| TENSORFLOW_SERVER | TF Serving | SavedModel |

| ONNX_SERVER | ONNX Runtime | .onnx |

| TRITON_SERVER | NVIDIA Triton | multiple formats |

Exact names evolve; check Seldon version docs. Trend: MLServer and Triton as primary.

modelUri schemes.

Custom runtime. implementation: CUSTOM + your Docker image implementing Seldon API or V2 protocol. Use when pre-packaged insufficient.

Multi-container predictor. componentSpecs — per-node resource limits, env, affinity (GPU node for Triton child, CPU for transformer).

Example: ONNX classifier after Python transformer


predictors:
  - graph:
      name: preprocess
      type: TRANSFORMER
      implementation: CUSTOM
      modelUri: "s3://ml-models/churn/preprocess/"
      envSecretRefName: minio-credentials
      children:
        - name: onnx-clf
          type: MODEL
          implementation: ONNX_SERVER
          modelUri: "s3://ml-models/churn/v44/model.onnx"
    componentSpecs:
      - spec:
          containers:
            - name: onnx-clf
              resources:
                limits:
                  nvidia.com/gpu: "0"  # CPU ONNX OK

Triton under Seldon. Triton excels GPU batching, multi-model on one GPU. Seldon graph node → Triton container; ops team manages CUDA drivers (module 5.1.3 GPU metrics).

MLServer under Seldon vs KServe MLServer. Functionally similar container; KServe adds InferenceService abstraction (canary, scale-to-zero, storage initializer). Greenfield MDP capstone → prefer KServe (7.5).

Version skew. Preprocessor v2 + model v44 trained on v1 features → silent quality drop. Version together in one Git MR.

Inference graph testing.

Как это выглядит на практике

Migration story: legacy Seldon Core 1 → KServe

1. Phase 1: export all models to ONNX + MLServer settings.

2. Phase 2: parallel deploy KServe InferenceService, mirror traffic Istio mirror.

3. Phase 3: cutover, deprecate SeldonDeployment.

Operational checklist per runtime.

| Runtime | Watch |

|---------|-------|

| MLServer | Model load time, worker count |

| Triton | GPU util, queue time, model instances |

| TF Serving | Graph def version, batching config |

| Custom | Your metrics, log stack traces |

Resource planning. Two-node graph = two containers possibly on same Pod (Seldon executor model) or separate — depends on Seldon architecture version. Read resource sum for HPA.

Что сделать после занятия

Официальные материалы

Открыть интерактивную версию