图部署选项¶
在 Seldon core 中不同模式范围的不同容器化模型和 Seldon core 组件的推理图有着不同的能力。
推理图的每个节点都是 Kubernetes 集群中的一个容器。推理图节点可以封装在
单个或者多个 kubernetes pods中。Seldon core 的外部组件是那些包含一个或多个组件并且
定义在推理图 spec.componentSpecs.graph 中构建的多个预估器。
模式一: 单 pod 部署¶
以下示例是 Seldon core 推理图仅有 一个预估。
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
name: linear-pipeline-single-pod
spec:
name: linear-pipeline
predictors:
- componentSpecs:
- spec:
containers:
- image: seldonio/mock_classifier:1.0
name: node-one
- image: seldonio/mock_classifier:1.0
name: node-two
- image: seldonio/mock_classifier:1.0
name: node-three
graph:
name: node-one
type: MODEL
children:
- name: node-two
type: MODEL
children:
- name: node-three
type: MODEL
children: []
name: example
所有图部署的节点都是在一个单独的pod:
kubectl get pods
NAME READY STATUS RESTARTS AGE
seldon-c71cc2d950d44db1bc6afbeb0194c1da-5d8dddb8cb-xx4gv 5/5 Running 0 6m59s
模式二: 单独的pod部署¶
另一种部署方式是在单独的预测器中实现推理图的每个节点,这将导致每个推理图节点都 有单独的 pod。
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
name: linear-pipeline-separate-pods
spec:
name: linear-pipeline
annotations:
seldon.io/engine-separate-pod: "true"
predictors:
- componentSpecs:
- spec:
containers:
- image: seldonio/mock_classifier:1.0
name: node-one
imagePullPolicy: Always
- spec:
containers:
- image: seldonio/mock_classifier:1.0
name: node-two
imagePullPolicy: Always
- spec:
containers:
- image: seldonio/mock_classifier:1.0
name: node-three
imagePullPolicy: Always
graph:
name: node-one
type: MODEL
children:
- name: node-two
type: MODEL
children:
- name: node-three
type: MODEL
children: []
name: example
这一次它将导致每个容器都有单独的 pod。
kubectl get pods
NAME READY STATUS RESTARTS AGE
linear-pipeline-separate-pods-example-0-node-one-6954fbbd5m7pcp 1/1 Running 0 4m33s
linear-pipeline-separate-pods-example-1-node-two-c4f55f689gxkkr 1/1 Running 0 4m33s
linear-pipeline-separate-pods-example-2-node-three-99667dcmg9kg 1/1 Running 0 4m33s
linear-pipeline-separate-pods-example-svc-orch-656c6bdf59-6m6nc 1/1 Running 0 4m33s
Kubernetes 中最基本的单元是 Pod。该模型将支持模型界别的缩放。换言之,你可以 您可以单独缩放每个模型,而另一方面将它们放在一个 pod 中会改变缩放到整个图的粒度。然而, 另一方面,单个 pod 部署将只需要一个边车 istio 容器 它需要更少的来自 sidecar 容器的资源请求。另一个潜在的区别是单 pod 模式下的通信开销更少,因为它们总是 被调度在同一个 Kubernetes 节点上。