将工作负载调度到特定的 GPU 节点

在定义 Hardware Profile 时,您通常需要确保 AI 推理工作负载会严格调度到具有特定类型 GPU(例如 NVIDIA A100 或 H100)的节点上,并且该工作负载能够容忍这些专用节点上的 taint,从而避免普通 CPU 工作负载占用 GPU 节点。

本指南演示了如何在 Hardware Profile 中配置这些约束,以便您的 Data Scientists 无需手动进行配置。

使用 Node Selector

Node Selector 可让您根据节点标签将 pod 引导到特定节点。

  1. 找出集群中 GPU 节点的准确 Kubernetes 标签。例如:
    • accelerator: nvidia-a100
    • nvidia.com/gpu.present: "true"
  2. 编辑或创建您的 Hardware Profile。
  3. Node Selectors 部分,添加与该标签对应的键值对:
    • Key: accelerator
    • Value: nvidia-a100

保存后,任何尝试使用此 Hardware Profile 的 Inference Service 都会自动获得此 Node Selector,从而确保它只会调度到配备 A100 GPU 的节点上。

使用 Taint 和 Toleration

集群管理员通常会对 GPU 节点添加 taint,以便标准 pod(例如 Web 服务器或通用数据库)不会被调度到这些节点上,从而为 AI 工作负载保留 GPU 计算能力。

如果您的 GPU 节点具有类似 nvidia.com/gpu:NoSchedule 的 taint,则 Hardware Profile 必须包含相应的 toleration。

  1. 在 Hardware Profile 的 Tolerations 部分,添加一个新的 toleration。
  2. 将其配置为与 GPU 节点上的 taint 匹配:
    • Key: nvidia.com/gpu
    • Operator: Exists(这表示容忍 nvidia.com/gpu 这个键的任意值。或者,也可以使用 Equal 并显式设置 Value。)
    • Effect: NoSchedule(与 taint 的限制性效果相匹配)。

通过在 Hardware Profile 中添加此 toleration,部署的 Inference Service 将被明确授予调度到专用 GPU 节点上的“权限”。

组合配置

通过同时组合 Node Selector(用于指示调度器 去哪里)和 Toleration(用于允许调度器将其 放置在那里),您的 Hardware Profile 实际上就成为了异构节点架构的可靠蓝图。