创建 AI 优化型 Google Kubernetes Engine (GKE) 集群后,您可以启用节点运行状况预测。 如果您计划使用拓扑感知调度 (TAS) 和 Kueue 调度工作负载, 那么启用节点运行状况预测后,集群的调度器可以执行以下操作:
识别可能会在未来 5 小时内降级的节点。
避免在这些节点上调度新工作负载。
这种方法有助于最大限度地减少对关键工作负载和对中断敏感的工作负载(例如大规模训练工作负载)的中断。
本文档介绍了如何在 GKE 集群中启用节点运行状况预测,该集群使用 A4X Max、A4X、A4 或 A3 Ultra 节点。如需了解如何在 Cloud Monitoring 信息中心内使用节点运行状况预测指标(例如,当您想要对 Slurm 集群中的性能问题进行问题排查时),请改为参阅监控 Compute Engine 实例和 Slurm 集群。
限制
在 GKE 集群中启用节点运行状况预测之前,请考虑以下限制:
节点必须使用 A4X Max、A4X、A4 或 A3 Ultra 机器类型。
节点必须使用 受预留约束的预配模型。
了解节点运行状况预测
在 GKE 集群中启用节点运行状况预测后,CronJob 会将 gke.google.com/recommended-to-run-large-training-workload 标签应用于集群中的每个节点。CronJob 会将标签值设置为节点 GPU 运行状况可能会降级的可能性,并每 10 分钟更新一次这些值。如果标签值为 true,则表示节点运行状况良好。否则,如果标签值为 false,则表示节点可能会在未来 5 小时内降级。标签值可能会随时间变化,具体取决于节点的 GPU 运行状况。
如果您看到某个节点可能会降级,则可以执行以下一项或两项操作:
避免在该节点上调度工作负载 。您可以将 Kueue 配置为避免在显示值
false的节点上调度工作负载,如本文档中所述。将该节点报告为有故障 。如果节点遇到 GPU 温度过高或性能缓慢等问题,您可以将该节点报告为有故障。 此操作会为该节点启动主机维护事件,使其在维护完成后再次可用于运行工作负载。如需了解相关说明,请参阅 通过 GKE 报告故障主机。
准备工作
在开始之前,请确保您已完成以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,
安装并
初始化
gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行
gcloud components update命令来获取最新 版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
如需连接到集群,请运行以下命令:
gcloud container clusters get-credentials CLUSTER_NAME将
CLUSTER_NAME替换为您的集群名称。
启用节点运行状况预测
准备好使用 TAS 在 GKE 集群上调度工作负载后,您可以按照以下步骤启用节点运行状况预测:
部署自动节点标记
如需在 GKE 集群中部署自动节点标记以进行节点运行状况预测,请完成以下步骤:
克隆 GKE 中的硬件加速器 Git 代码库:
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git转到
topology-scheduler目录:cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler创建包含 Python 脚本(
schedule-daemon.py和label-nodes-daemon.py,用于查询运行状况得分)的 Kubernetes ConfigMap:kubectl create configmap predictor-scheduler-scripts \ --namespace=kube-system \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.py应用服务帐号配置,以向 CronJob 授予必要的权限(读取 Monitoring 指标和修补节点对象):
kubectl apply -f service-account.yaml部署用于调度节点标记作业的 DaemonSet:
kubectl apply -f label-nodes-daemon.yaml
更新作业配置
如需在使用 Kueue 时启用节点运行状况预测,您必须更新作业配置,以在启动工作负载之前检查运行状况预测值和(如果支持)拓扑要求。
如需更新作业配置并启用节点运行状况预测,请在 spec 字段中添加以下字段:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gke.google.com/recommended-to-run-large-training-workload
operator: NotIn
values:
- "False"
...
验证节点标记
CronJob 首次运行(大约在部署后 10 分钟)后,验证它是否已将 gke.google.com/recommended-to-run-large-training-workload 标签应用于您的节点。
查看已应用 gke.google.com/recommended-to-run-large-training-workload 标签的节点列表:
kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload
标签值可以是以下值之一:
true:预测节点在未来 5 小时内运行状况良好。false:节点可能会在未来 5 小时内降级。如果您按照本文档中的说明配置了作业配置,则 Kueue 会避免在该节点上调度新工作负载。
后续步骤
如需了解如何管理与 GKE 集群和 AI 工作负载相关的常见事件,请参阅 管理 AI 优化型 GKE 集群。
如需详细了解如何使用 Kueue 在 GKE 上调度作业,请参阅 使用 Kueue 部署批处理系统。