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

בדף הזה מוסבר איך משתמשים בפלאגין Fast Socket של NVIDIA Collective Communication Library (NCCL) כדי להריץ עומסי עבודה יעילים יותר באשכולות של 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 באשכולות Standard

בקטע הזה מוסבר איך להפעיל את התוסף 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

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

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

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

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

NCCL Fast Socket בטייס אוטומטי

ב-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.

הפודים הבאים מבקשים 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.

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