将工作负载调度到特定的 GPU 节点
在定义 Hardware Profile 时,您通常需要确保 AI 推理工作负载会严格调度到具有特定类型 GPU(例如 NVIDIA A100 或 H100)的节点上,并且该工作负载能够容忍这些专用节点上的 taint,从而避免普通 CPU 工作负载占用 GPU 节点。
本指南演示了如何在 Hardware Profile 中配置这些约束,以便您的 Data Scientists 无需手动进行配置。
使用 Node Selector
Node Selector 可让您根据节点标签将 pod 引导到特定节点。
- 找出集群中 GPU 节点的准确 Kubernetes 标签。例如:
accelerator: nvidia-a100nvidia.com/gpu.present: "true"
- 编辑或创建您的 Hardware Profile。
- 在 Node Selectors 部分,添加与该标签对应的键值对:
- Key:
accelerator - Value:
nvidia-a100
- Key:
保存后,任何尝试使用此 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。
- 在 Hardware Profile 的 Tolerations 部分,添加一个新的 toleration。
- 将其配置为与 GPU 节点上的 taint 匹配:
- Key:
nvidia.com/gpu - Operator:
Exists(这表示容忍nvidia.com/gpu这个键的任意值。或者,也可以使用Equal并显式设置 Value。) - Effect:
NoSchedule(与 taint 的限制性效果相匹配)。
- Key:
通过在 Hardware Profile 中添加此 toleration,部署的 Inference Service 将被明确授予调度到专用 GPU 节点上的“权限”。
组合配置
通过同时组合 Node Selector(用于指示调度器 去哪里)和 Toleration(用于允许调度器将其 放置在那里),您的 Hardware Profile 实际上就成为了异构节点架构的可靠蓝图。