שיפור היעילות של עומסי עבודה באמצעות NCCL Fast Socket

בדף הזה מוסבר איך להשתמש בפלאגין NVIDIA Collective Communication Library (NCCL) Fast Socket כדי להריץ עומסי עבודה יעילים יותר באשכולות Google Kubernetes Engine ‏ (GKE).

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

מגבלות

דרישות

‫GKE Autopilot:

  • אשכולות GKE Autopilot צריכים לפעול בגרסה 1.30.2-gke.1023000 ואילך.

פרטים נוספים זמינים במאמר יצירת אשכול Autopilot.

GKE Standard:

  • כדי להשתמש ב-NCCL Fast Socket, צריך להפעיל gVNIC במאגרי הצמתים.
  • הצמתים של GKE חייבים להשתמש בתמונת צומת של מערכת הפעלה שמותאמת לקונטיינרים.
  • האשכולות צריכים לפעול ב-GKE בגרסה 1.25.2-gke.1700 ומעלה.

פרטים נוספים זמינים במאמר בנושא יצירת אשכול אזורי.

הפעלת NCCL Fast Socket באשכולות רגילים

בקטע הזה מוסבר איך להפעיל את הפלאגין NCCL Fast Socket במאגרי צמתים רגילים של GKE. אם אתם משתמשים באשכולות GKE Autopilot, ‏ GKE מפעיל אוטומטית את הפלאגין כשאתם מבקשים NCCL Fast Socket בעומסי העבודה. הוראות מפורטות מופיעות בקטע NCCL Fast Socket ב-Autopilot.

במקרה של אשכולות רגילים, יוצרים מאגר צמתים שמשתמש בפלאגין 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

מחליפים את מה שכתוב בשדות הבאים:

התקנה של דרייברים של מכשירי NVIDIA GPU

ב-Autopilot, מנהלי ההתקנים של מכשירי ה-GPU מותקנים באופן אוטומטי.

במקרה של אשכולות רגילים, צריך לפעול לפי ההוראות שבמאמר התקנת מנהלי התקנים (דרייברים) של מכשירי NVIDIA GPU כדי להתקין את מנהלי ההתקנים הנדרשים של מכשירי NVIDIA בצמתים.

NCCL Fast Socket in Autopilot

ב-Autopilot clusters, כדי לבקש NCCL Fast Socket בעומסי העבודה, משתמשים ב-cloud.google.com/gke-nccl-fastsocket node selector. כשמבקשים NCCL Fast Socket בעומס עבודה, ‏ GKE מפעיל gVNIC ו-NCCL Fast Socket בצמתים ש-GKE מקצה לעומס העבודה. אפשר להשתמש ב-NCCL Fast Socket עם כל סוג GPU שנתמך ב-Autopilot.

הבקשות הבאות של ה-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-gb200: NVIDIA GB200 (תצוגה מקדימה)
    • 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
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4
  • GPU_QUANTITY: מספר יחידות ה-GPU להקצאה לקונטיינר.

מוודאים שהאפשרות NCCL Fast Socket מופעלת

כדי לוודא שהאפשרות NCCL Fast Socket מופעלת, צופים בפודים של kube-system:

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

בפלט הזה, מספר ה-Pods צריך להיות שווה למספר הצמתים במאגר הצמתים.

השבתת NCCL Fast Socket

באשכולות 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

הפקודה הזו יוצרת מחדש את הצמתים במאגר הצמתים בלי הפלאגין NCCL Fast Socket. התהליך הזה עלול לשבש עומסי עבודה פעילים.

פתרון בעיות

מידע על פתרון בעיות ב-gVNIC זמין במאמר בנושא פתרון בעיות ב-Google Virtual NIC.

המאמרים הבאים