我正在使用 Argo 和 KFServing 和 Amazon EKS (Kubernetes) 设置 InferenceService。重要的是要知道我们的团队每个环境都有一个 EKS 集群,这意味着我们的集群中可能有多个我们无法控制的应用程序。
这是我们到目前为止的设置
argo
提交在 #1 中开始培训的工作流程。将 argo 安装到我们的 kubernetes 集群时,我们注意到它的组件有时会分配给 GPU 节点。 我们对#2 和#3(上图)的当前设置似乎禁止了 KFServing 缩小到零的能力。我们担心在 GPU 中使用这些组件将不允许 GPU 缩小。
哪些 Pod 需要分配给我们的 GPU 节点?
(选项 1)我们是否只需要分配我们的 argo 工作流 Pod 而排斥其余的?
- 或者 -
(选项 2)GPU 节点中是否需要其他 kfserving 组件才能正常工作?
最佳答案
tl;博士
您可以使用 taints .
Which pods need to be assigned to our GPU nodes?
需要 GPU 的作业的 pod。
如果您的 培训作业需要 GPU,您需要使用
nodeSelector
分配它和 tolerations
在你的训练/部署部署的规范中,看到一个很好的例子 here .如果您的模型是 CV/NLP(许多矩阵乘法),您可能需要 推理服务在 GPU 中也是如此,在这种情况下,您需要按照 here 所述在其规范中请求它.
Do we only need our argo workflow pod to be assigned and repel the rest?
是的,如果您的推理服务不需要 GPU。
Are there other kfserving components needed within the GPU node to work right?
不,唯一的 kfserving 组件是
kfserving-controller
并且不需要 GPU,因为它只是为您的推理服务编排 istio&knative 资源的创建。如果在您的 gpu 节点组中运行推理服务而未在规范中请求 GPU,则意味着该节点组未配置为具有污点效果
NoSchedule
.确保 eksctl 配置中的 GPU 节点组具有 doc 中所述的污点。 .
关于kubernetes - 我们如何正确分配 Pod 以便 KFServing 可以将 GPU 实例缩小到零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66388294/