Migliora l'efficienza del workload utilizzando NCCL Fast Socket

Questa pagina mostra come utilizzare il plug-in Fast Socket della libreria di comunicazione collettiva NVIDIA (NCCL) per eseguire carichi di lavoro più efficienti sui cluster Google Kubernetes Engine (GKE).

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il gcloud components update comando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

Limitazioni

Requisiti

GKE Autopilot:

  • I cluster GKE Autopilot devono eseguire la versione 1.30.2-gke.1023000 o successive.

Per maggiori dettagli, vedi Creazione di un cluster Autopilot.

GKE Standard:

  • I node pool devono avere gVNIC abilitato per utilizzare NCCL Fast Socket.
  • I nodi GKE devono utilizzare un'immagine del nodo Container-Optimized OS .
  • I cluster devono eseguire GKE versione 1.25.2-gke.1700 o successive.

Per maggiori dettagli, vedi Creazione di un cluster regionale.

Abilitare NCCL Fast Socket nei cluster standard

Questa sezione mostra come abilitare il plug-in NCCL Fast Socket nei node pool GKE Standard. Se utilizzi cluster GKE Autopilot, GKE abilita automaticamente il plug-in quando richiedi NCCL Fast Socket nei tuoi carichi di lavoro. Per istruzioni, consulta la sezione NCCL Fast Socket in Autopilot.

Per i cluster standard, crea un pool di nodi che utilizzi il plug-in NCCL Fast Socket. Puoi anche aggiornare un pool di nodi esistente utilizzando 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

Sostituisci quanto segue:

  • NODEPOOL_NAME: il nome del nuovo pool di nodi.
  • CLUSTER_NAME: il nome del cluster.
  • ACCELERATOR_TYPE: il tipo di acceleratore GPU che utilizzi. Ad esempio, nvidia-tesla-t4.
  • ACCELERATOR_COUNT: il numero di GPU per nodo.
  • MACHINE_TYPE: il tipo di macchina che vuoi utilizzare. NCCL Fast Socket non è supportato sui tipi di macchine ottimizzate per la memoria.

Installare i driver di dispositivo GPU NVIDIA

In Autopilot, i driver di dispositivo GPU vengono installati automaticamente.

Per i cluster standard, segui le istruzioni riportate in Installare i driver di dispositivo GPU NVIDIA per installare i driver di dispositivo NVIDIA richiesti sui nodi.

NCCL Fast Socket in Autopilot

Nei cluster Autopilot, puoi richiedere NCCL Fast Socket nei tuoi carichi di lavoro utilizzando il selettore di nodi cloud.google.com/gke-nccl-fastsocket. Quando richiedi NCCL Fast Socket in un carico di lavoro, GKE abilita gVNIC e NCCL Fast Socket sui nodi che GKE esegue il provisioning per il carico di lavoro. Puoi utilizzare NCCL Fast Socket con qualsiasi tipo di GPU supportato da Autopilot.

Il seguente pod richiede 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

Sostituisci quanto segue:

  • GPU_TYPE: il tipo di hardware GPU. I valori consentiti sono i seguenti:
    • nvidia-gb200: NVIDIA GB200 (anteprima)
    • nvidia-b200: NVIDIA B200 (180GB)
    • nvidia-h200-141gb: NVIDIA H200 (141GB)
    • nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB)
    • nvidia-h100-80gb: NVIDIA H100 (80GB)
    • nvidia-a100-80gb: NVIDIA A100 (80GB)
    • nvidia-tesla-a100: NVIDIA A100 (40GB)
    • nvidia-rtx-pro-6000: NVIDIA RTX PRO 6000 (ad eccezione dei tipi di macchine G4 con meno di una GPU, vedi le limitazioni)
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4
  • GPU_QUANTITY: il numero di GPU da allocare al container.

Verificare che NCCL Fast Socket sia abilitato

Per verificare che NCCL Fast Socket sia abilitato, visualizza i pod kube-system:

kubectl get pods -n kube-system

L'output è simile al seguente:

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

In questo output, il numero di pod deve essere uguale al numero di nodi nel pool di nodi.

Disabilitare NCCL Fast Socket

Nei cluster GKE Autopilot, il plug-in NCCL Fast Socket è disabilitato per impostazione predefinita. Per disabilitare il plug-in su un carico di lavoro esistente, riesegui il deployment del carico di lavoro senza il selettore di nodi NCCL Fast Socket.

Per disabilitare NCCL Fast Socket per un pool di nodi nei cluster standard, esegui il seguente comando:

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

Questo comando ricrea i nodi nel pool di nodi senza il plug-in NCCL Fast Socket. Questa procedura potrebbe interrompere l'esecuzione dei carichi di lavoro.

Risoluzione dei problemi

Per risolvere i problemi relativi a gVNIC, consulta Risoluzione dei problemi relativi a Google Virtual NIC.

Passaggi successivi