בדף הזה מוסבר איך להשתמש בפלאגין 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 לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
מגבלות
- חלות מגבלות של Compute Engine.
- חלות מגבלות על gVNIC.
- התמיכה ב-NCCL Fast Socket מוגבלת למאגרי צמתים שמופעלים בהם מאיצי חומרה.
דרישות
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
מחליפים את מה שכתוב בשדות הבאים:
-
NODEPOOL_NAME: השם של מאגר הצמתים החדש. -
CLUSTER_NAME: שם האשכול. -
ACCELERATOR_TYPE: סוג ה-GPU לשיפור המהירות שבו אתם משתמשים. לדוגמה,nvidia-tesla-t4. -
ACCELERATOR_COUNT: מספר יחידות ה-GPU לכל צומת. -
MACHINE_TYPE: סוג המכונה שרוצים להשתמש בה. אין תמיכה ב-NCCL Fast Socket בסוגי מכונות שעברו אופטימיזציה לזיכרון.
התקנה של דרייברים של מכשירי 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.
המאמרים הבאים
- אפשר להשתמש ברישום ביומן של מדיניות הרשת כדי לתעד מתי החיבורים ל-Pods מותרים או נדחים על ידי מדיניות הרשת של האשכול.