Arbeitslasteffizienz mit NCCL Fast Socket verbessern


Auf dieser Seite erfahren Sie, wie Sie mit dem NVIDIA Collective Communication Library (NCCL) Fast Socket-Plug-in effizientere Arbeitslasten in Ihren GKE-Clustern (Google Kubernetes Engine) ausführen können.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Beschränkungen

Voraussetzungen

GKE Autopilot:

  • GKE Autopilot-Cluster müssen die Version 1.30.2-gke.1023000 oder höher ausführen.

Weitere Informationen finden Sie unter Autopilot-Cluster erstellen.

GKE Standard:

  • In Ihren Knotenpools muss gVNIC aktiviert sein, um NCCL Fast Socket zu verwenden.
  • GKE-Knoten müssen ein Knoten-Image für Container-Optimized OS verwenden.
  • Ihre Cluster müssen die GKE-Version 1.25.2-gke.1700 oder höher ausführen.

Weitere Informationen finden Sie unter Regionalen Cluster erstellen.

NCCL Fast Socket in Standardclustern aktivieren

In diesem Abschnitt erfahren Sie, wie Sie das NCCL Fast Socket-Plug-in in GKE-Standardknotenpools aktivieren. Wenn Sie GKE Autopilot-Cluster verwenden, aktiviert GKE das Plug-in automatisch, wenn Sie NCCL Fast Socket in Ihren Arbeitslasten anfordern. Eine Anleitung finden Sie im Abschnitt NCCL Fast Socket in Autopilot.

Erstellen Sie für Standardcluster einen Knotenpool, der das NCCL Fast Socket-Plug-in verwendet. Sie können auch einen vorhandenen Knotenpool mit gcloud container node-pools update aktualisieren.

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

Dabei gilt:

  • NODEPOOL_NAME: der Name des neuen Knotenpools.
  • CLUSTER_NAME ist der Name des Clusters.
  • ACCELERATOR_TYPE: Der Typ des von Ihnen verwendeten GPU-Beschleunigers. Beispiel: nvidia-tesla-t4
  • ACCELERATOR_COUNT ist die Anzahl der GPUs pro Knoten.
  • MACHINE_TYPE ist der Maschinentyp, den Sie verwenden möchten. NCCL Fast Socket wird nicht auf speicheroptimierten Maschinentypen unterstützt.

NVIDIA-GPU-Gerätetreiber installieren

In Autopilot werden GPU-Gerätetreiber automatisch installiert.

Folgen Sie für Standardcluster der Anleitung unter NVIDIA-GPU-Gerätetreiber installieren, um die erforderlichen NVIDIA-Gerätetreiber auf Ihren Knoten zu installieren.

NCCL Fast Socket in Autopilot

In Autopilot-Clustern fordern Sie NCCL Fast Socket in Ihren Arbeitslasten mithilfe der Knotenauswahl cloud.google.com/gke-nccl-fastsocket an. Wenn Sie NCCL Fast Socket in einer Arbeitslast anfordern, aktiviert GKE gVNIC und NCCL Fast Socket auf Knoten, die GKE für die Arbeitslast bereitstellt. Sie können NCCL Fast Socket mit jedem GPU-Typ verwenden, der von Autopilot unterstützt wird.

Der folgende Pod fordert NCCL Fast Socket an:

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

Ersetzen Sie Folgendes:

  • GPU_TYPE: der Typ der GPU-Hardware. Zulässige Werte sind:
    • 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 (80 GB)
    • nvidia-l4; NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4
  • GPU_QUANTITY: die Anzahl der GPUs, die dem Container zugewiesen werden sollen.

Aktivierung von NCCL Fast Socket prüfen

Rufen Sie die Pods "kube-system" auf, um zu prüfen, ob NCCL Fast Socket aktiviert ist:

kubectl get pods -n kube-system

Die Ausgabe sieht in etwa so aus:

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 dieser Ausgabe sollte die Anzahl der Pods der Anzahl der Knoten im Knotenpool entsprechen.

NCCL Fast Socket deaktivieren

In GKE Autopilot-Clustern ist das NCCL Fast Socket-Plug-in standardmäßig deaktiviert. Wenn Sie das Plug-in für eine vorhandene Arbeitslast deaktivieren möchten, stellen Sie die Arbeitslast ohne die NCCL Fast Socket-Knotenauswahl neu bereit.

Führen Sie den folgenden Befehl aus, um NCCL Fast Socket für einen Knotenpool in Standardclustern zu deaktivieren:

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

Auf vorhandenen Knoten ist das Plug-in noch installiert. Sie müssen die Größe des Knotenpools manuell anpassen, um Arbeitslasten auf neue Knoten zu migrieren.

Fehlerbehebung

Informationen zur Fehlerbehebung für gVNIC finden Sie unter Fehlerbehebung bei Google Virtual NIC.

Nächste Schritte