Migliora l'efficienza del carico di lavoro utilizzando NCCL Fast Socket


Questa pagina mostra come utilizzare il plug-in Fast Socket di NVIDIA Collective Communication Library (NCCL) per eseguire carichi di lavoro più efficienti sui tuoi cluster Google Kubernetes Engine (GKE).

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo gcloud components update.

Limitazioni

Requisiti

GKE Autopilot:

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

Per maggiori dettagli, consulta Creazione di un cluster Autopilot.

GKE Standard:

  • Per utilizzare NCCL Fast Socket, gVNIC deve essere abilitato nei pool di nodi.
  • I nodi GKE devono utilizzare un Container-Optimized OS immagine del nodo.
  • I cluster devono eseguire la versione GKE 1.25.2-gke.1700 o versioni successive.

Per maggiori dettagli, vedi Creare un cluster regionale.

Abilita Fast Socket NCCL nei cluster Standard

Questa sezione mostra come attivare il plug-in NCCL Fast Socket in nei pool di nodi GKE Standard. Se utilizzi i cluster GKE Autopilot, GKE attiva automaticamente il plug-in quando richiedi NCCL Fast Socket nei tuoi carichi di lavoro. Per istruzioni, vedi Presa rapida NCCL in Autopilot.

Per i cluster standard, crea un pool di nodi che utilizza il plug-in Fast Socket NCCL. Puoi anche aggiorna 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: tipo di macchina che vuoi utilizzare. NCCL Fast Socket non è supportato su tipi di macchine ottimizzate per la memoria.

Installa i driver di dispositivo GPU NVIDIA

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

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

Presa NCCL Fast in Autopilot

Nei cluster Autopilot, richiedi il socket veloce NCCL 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 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:
    • 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 (40 GB)
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4
  • GPU_QUANTITY: il numero di GPU da allocare al contenitore.

Verifica che la presa rapida NCCL sia abilitata

Per verificare che la porta NCCL Fast Socket sia abilitata, 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.

Disattiva la porta 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, esegui nuovamente il deployment del carico di lavoro senza il selettore di nodi Fast Socket NCCL.

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

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

Nei nodi esistenti il plug-in è ancora installato. Devi eseguire manualmente ridimensiona il pool di nodi per migrare i carichi di lavoro in nuovi nodi.

Risoluzione dei problemi

Per risolvere i problemi relativi a gVNIC, vedi Risoluzione dei problemi relativi al NIC virtuale di Google.

Passaggi successivi