【问题标题】:How do we assign pods properly so that KFServing can scale down GPU Instances to zero?我们如何正确分配 pod,以便 KFServing 可以将 GPU 实例缩减到零?
【发布时间】:2021-05-28 23:31:47
【问题描述】:

我正在使用 Argo 和 KFServing 以及 Amazon EKS (Kubernetes) 设置 InferenceService。重要的是要知道我们的团队每个环境都有一个 EKS 集群,这意味着我们的集群中可能有多个我们无法控制的应用程序。

这是我们目前的设置

  1. 我们将 Docker 映像推送到 Amazon ECR,其中包含我们训练和部署模型的逻辑
  2. 我们使用argo 提交工作流,在#1 中开始训练。将 argo 安装到我们的 Kubernetes 集群时,我们注意到它的组件有时会分配给 GPU 节点。
  3. 我们也在使用KFServing。 KFServing 允许我们向上和向下自动缩放 GPU,特别是在不使用时缩放为零。在将 KFServing 中的组件应用到我们的集群时,它们也会被分配给 GPU 节点。

我们为#2 和#3(上图)设置的当前设置似乎阻止了 KFServing 缩小到零的能力。让我们担心的是,在 GPU 中拥有这些组件不会让 GPU 缩小。

哪些 pod 需要分配给我们的 GPU 节点?

(选项 1)我们是否只需要分配我们的 argo 工作流 pod 并排斥其余部分?

-- 或者--

(选项 2)GPU 节点内是否需要其他 kfserving 组件才能正常工作?

  • 选项 1:除 argo 工作流 pod 之外,我们如何阻止所有 pod 进入我们的 GPU 节点? 提醒一下,我们还有其他无法控制的应用程序,因此添加节点关联因为每个 pod 似乎都不现实。

  • 选项 2:当这些 GPU 节点中有 kfserving 组件时,GPU 节点如何缩放到零? 我的印象是缩小意味着节点中没有 pod。 p>

【问题讨论】:

    标签: kubernetes gpu amazon-eks kubeflow argo-workflows


    【解决方案1】:

    tl;博士 你可以使用taints。

    哪些 pod 需要分配给我们的 GPU 节点?

    需要 GPU 的作业的 pod。

    如果您的训练工作需要 GPU,您需要在训练/部署部署规范中使用 nodeSelector 和 tolerations 分配它,请参阅一个很好的示例 here。

    如果您的模型是 CV/NLP(许多矩阵乘法),您可能希望在 GPU 中也有 inferenceservice,在这种情况下,您需要按照说明在其规范中请求它here.

    我们是否只需要分配我们的 argo 工作流 pod 并排斥 休息吗?

    是的,如果您的推理服务不需要 GPU。

    GPU 节点中是否需要其他 kfserving 组件才能正常工作?

    不,唯一的 kfserving 组件是 kfserving-controller 并且不需要 gpu,因为它只是为您的推理服务编排 istio 和 knative 资源的创建。

    如果在您的 gpu 节点组中运行推理服务而没有在规范中请求 GPU,则意味着该节点组未配置为具有污染效果 NoSchedule。确保 eksctl 配置中的 gpu 节点组具有doc 中所述的污点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多