本页面介绍如何使用 NVIDIA Collective Communication Library (NCCL) Fast Socket 插件在 Google Kubernetes Engine (GKE) 集群上运行更高效的工作负载。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
限制
- 需遵循 Compute Engine 限制。
- 须遵循 gVNIC 限制。
- 只有启用了硬件加速器的节点池才支持 NCCL Fast Socket。
要求
GKE Autopilot:
- GKE Autopilot 集群必须运行 1.30.2-gke.1023000 或更高版本。
如需了解详情,请参阅创建 Autopilot 集群。
GKE Standard:
- 您的节点池必须启用 gVNIC 才能使用 NCCL Fast Socket。
- GKE 节点必须使用 Container-Optimized OS 节点映像。
- 您的集群必须运行 GKE 1.25.2-gke.1700 或更高版本。
如需了解详情,请参阅创建区域性集群。
在标准集群中启用 NCCL Fast Socket
本部分介绍如何在 GKE Standard 节点池中启用 NCCL Fast Socket 插件。如果您使用 GKE Autopilot 集群,当您在工作负载中请求 NCCL Fast Socket 时,GKE 会自动启用该插件。如需了解相关说明,请参阅 Autopilot 中的 NCCL Fast Socket 部分。
对于标准集群,请创建一个使用 NCCL Fast Socket 插件的节点池。您还可以使用 gcloud container node-pools update
更新现有节点池。
gcloud container node-pools create NODEPOOL_NAME \
--accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
--machine-type=MACHINE_TYPE \
--cluster=CLUSTER_NAME \
--enable-fast-socket \
--enable-gvnic
请替换以下内容:
NODEPOOL_NAME
:新节点池的名称。CLUSTER_NAME
:集群的名称。ACCELERATOR_TYPE
:您使用的 GPU 加速器的类型。例如nvidia-tesla-t4
。ACCELERATOR_COUNT
:每个节点的 GPU 数量。MACHINE_TYPE
:要使用的机器类型。内存优化机器类型不支持 NCCL Fast Socket。
安装 NVIDIA GPU 设备驱动程序
在 Autopilot 中,GPU 设备驱动程序会自动安装。
对于标准集群,请按照安装 NVIDIA GPU 设备驱动程序中的说明在节点上安装所需的 NVIDIA 设备驱动程序。
Autopilot 中的 NCCL Fast Socket
在 Autopilot 集群中,您可以使用 cloud.google.com/gke-nccl-fastsocket
节点选择器在工作负载中请求 NCCL Fast Socket。当您在工作负载中请求 NCCL Fast Socket 时,GKE 会在 GKE 为工作负载预配的节点上启用 gVNIC 和 NCCL Fast Socket。您可以将 NCCL Fast Socket 与 Autopilot 支持的任何 GPU 类型搭配使用。
以下 Pod 请求 NCCL Fast Socket:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
nodeSelector:
cloud.google.com/gke-accelerator: GPU_TYPE
cloud.google.com/gke-nccl-fastsocket: "true"
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: GPU_QUANTITY
替换以下内容:
GPU_TYPE
:GPU 硬件的类型。允许的值包括:nvidia-h100-80gb
:NVIDIA H100 (80GB)(仅适用于加速器计算类)nvidia-a100-80gb
:NVIDIA A100 (80GB)nvidia-tesla-a100
:NVIDIA A100 (40GB)nvidia-l4
:NVIDIA L4nvidia-tesla-t4
:NVIDIA T4
GPU_QUANTITY
:要分配给容器的 GPU 数量。
验证 NCCL Fast Socket 已启用
如需验证已启用 NCCL Fast Socket,请查看 kube-system Pod:
kubectl get pods -n kube-system
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE
nccl-fastsocket-installer-qvfdw 2/2 Running 0 10m
nccl-fastsocket-installer-rtjs4 2/2 Running 0 10m
nccl-fastsocket-installer-tm294 2/2 Running 0 10m
在此输出中,Pod 的数量应等于节点池中的节点数。
停用 NCCL Fast Socket
在 GKE Autopilot 集群中,NCCL Fast Socket 插件默认处于停用状态。如需停用现有工作负载上的插件,请在不使用 NCCL Fast Socket 节点选择器的情况下重新部署工作负载。
如需为 Standard 集群中的节点池停用 NCCL Fast Socket,请运行以下命令:
gcloud container node-pools update NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--no-enable-fast-socket
现有节点仍安装有该插件。您必须手动调整节点池的大小以将工作负载迁移到新节点。
问题排查
如需排查 gVNIC 问题,请参阅排查 Google 虚拟 NIC 问题。