使用 NCCL Fast Socket 提升工作負載效率


本頁面說明如何使用 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,取得最新版本。

限制

需求條件

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 快速插槽」一節。

如果是 Standard 叢集,請建立使用 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 會在為工作負載佈建的節點上啟用 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-b200:NVIDIA B200 (180 GB)
    • nvidia-h200-141gb:NVIDIA H200 (141 GB)
    • nvidia-h100-mega-80gb:NVIDIA H100 Mega (80 GB)
    • nvidia-h100-80gb:NVIDIA H100 (80 GB)
    • nvidia-a100-80gb:NVIDIA A100 (80 GB)
    • nvidia-tesla-a100:NVIDIA A100 (40GB)
    • nvidia-l4:NVIDIA L4
    • nvidia-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 快速通訊端

在 GKE Autopilot 叢集中,NCCL Fast Socket 外掛程式預設為停用。如要在現有工作負載上停用外掛程式,請重新部署工作負載,但不要使用 NCCL Fast Socket 節點選取器。

如要為標準叢集中的節點集區停用 NCCL Fast Socket,請執行下列指令:

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-fast-socket

現有節點仍會安裝外掛程式。您必須手動調整節點集區大小,才能將工作負載遷移至新節點。

疑難排解

如要排解 gVNIC 問題,請參閱「排解 Google Virtual NIC 問題」。

後續步驟