בדף הזה מוסבר איך לבקש יחידות GPU כדי להאיץ משימות בעומסי עבודה של Autopilot ב-Google Kubernetes Engine (GKE). בנוסף, בדף הזה מוסבר איך GPUs פועלים ב-Autopilot, איך מודל התמחור משתנה בהתאם לגרסת GKE, איך מגדירים בקשות למשאבי Pod ומגבלות, ואיך עוקבים אחרי עומסי עבודה של GPU.
הדף הזה מיועד לאדמינים ולמפעילים של הפלטפורמה, ולמומחים בתחום הנתונים וה-AI שרוצים לבקש מעבדי GPU לעומסי עבודה שמריצים משימות כמו אימון או הסקת מסקנות של למידת מכונה (ML). כדי לקרוא מידע נוסף על התפקידים הנפוצים, האחריות ומשימות לדוגמה שאנחנו מתייחסים אליהם ב Google Cloud תוכן, אפשר לעיין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE.
לפני שממשיכים, חשוב לוודא שאתם מכירים את המושגים הבאים:
בחירת מאיצים ב-Pods
Autopilot משתמש במחלקת המחשוב המיוחדת Accelerator כדי להריץ תרמילי GPU. במכונות וירטואליות (VM) מסוג GPU, GKE ממקם את ה-Pods בצמתי GPU, וכך מאפשר ל-Pods גישה ליכולות מתקדמות. כדי להשתמש במחלקה הזו בעומס עבודה של GPU, מבצעים אחת מהפעולות הבאות בהתאם לגרסת GKE:
- Version 1.29.4-gke.1427000 ואילך: בקשת יחידות GPU במניפסט של עומס העבודה. אפשר גם להשתמש ביכולות שיתוף של GPU, כמו שיתוף זמן. GKE לא משנה את מניפסטים של עומסי העבודה כדי להוסיף בורר צמתים או הערה עבור מחלקת המאיץ.
- Version 1.29 up to, but not including, version 1.29.4-gke.142700: Specify
the
cloud.google.com/compute-class: Acceleratornode selector in your Pod manifest and request GPUs. אם מציינים את בורר הצמתים הזה, אפשר גם להשתמש ביכולות שיתוף של GPU, כמו שיתוף זמן. - Version 1.28.9-gke.1069000 up to, but not including, version 1.29: Specify
the
cloud.google.com/compute-class: Acceleratornode selector in your Pod manifest alongside the GPU selectors. אם מציינים את בורר הצמתים הזה, אפשר גם להשתמש ביכולות שיתוף של GPU, כמו שיתוף זמן.
מחלקת המחשוב Accelerator לא נתמכת בגרסאות קודמות ל-1.28.9-gke.1069000. במקום זאת, ב-GKE, יחידות GPU Pod בגרסאות האלה מטופלות באופן דומה ליחידות Autopilot Pod אחרות, ותחויבו על בקשות המשאבים. פרטים נוספים מופיעים במאמר בנושא תמחור.
תאימות של מאיצים ליכולות של GKE
בטבלה הבאה מוצגות היכולות התואמות של GKE לכל שיטה לבחירת מאיצים ב-GKE Autopilot:
נבחרה מחלקת מחשוב אחת (Accelerator) |
תאימות ליכולות של GKE |
|---|---|
|
|
|
תמחור
בטבלה הבאה מוסבר איך מודל החיוב שבו משתמש GKE תלוי בגרסת GKE של האשכול. תיאור של מודלים לחיוב ב-GKE Autopilot מופיע במאמר תמחור של Autopilot.
| גרסת GKE | תמחור |
|---|---|
| 1.29.4-gke.1427000 ואילך | מודל חיוב מבוסס-צמתים. כל ה-GPU Pods משתמשים במחלקת המחשוב Accelerator. תחויבו על החומרה של Compute Engine שמריצה את עומסי העבודה של ה-GPU, וגם על Autopilot Premium לניהול צמתים ולשינוי גודל. פרטים נוספים זמינים במאמר בנושא תמחור במצב אוטומטי. |
| מגרסה 1.29 עד גרסה 1.29.4-gke.1427000, לא כולל | מודל החיוב תלוי בבוררי הצמתים שאתם מציינים, באופן הבא:
אפשר להשתמש בתכונות כמו GPU עם כמה מופעים במקביל או שיתוף זמן רק אם מציינים באופן מפורש את בורר הצמתים פרטים נוספים מופיעים בקטע 'Pods with specific hardware requirements' במאמר בנושא תמחור של Kubernetes Engine. |
| מגרסה 1.28.6-gke.1095000 עד גרסה 1.29, לא כולל | מודל חיוב מבוסס-צומת, בלי קשר לשאלה אם מציינים את מחלקת המחשוב של המאיץ במניפסטים של ה-Pod. אפשר להשתמש בתכונות כמו GPU עם כמה מופעים במקביל או שיתוף זמן רק אם מציינים באופן מפורש את בורר הצמתים פרטים נוספים מופיעים בקטע 'Pods with specific hardware requirements' במאמר בנושא תמחור של Kubernetes Engine. |
| גרסאות קודמות ל-1.28.6-gke.1095000 | מודל חיוב מבוסס-Pod. החיוב מתבצע על סמך בקשות המשאבים של GPU Pod. פרטים נוספים מופיעים בקטע 'Pods with specific hardware requirements' במאמר בנושא תמחור של Kubernetes Engine. |
חשוב לשים לב לשיקולים הבאים בנוגע לתמחור של יחידות GPU ב-Autopilot:
כל צמתי ה-GPU מסוג A100 (80GB) משתמשים ב-SSD מקומיים לדיסקים של אתחול הצומת בגדלים קבועים על סמך מספר יחידות ה-GPU. אתם מחויבים בנפרד על כונני ה-SSD המקומיים המצורפים. התמחור הזה לא רלוונטי למעבדי GPU מדגם A100 (40GB).
התמחור של GKE Sandbox זהה לתמחור של Autopilot שמוגדר כברירת מחדל. מידע נוסף על הרצת עומסי עבודה של Accelerator בארגז חול זמין במאמרים GKE Sandbox ותחילת העבודה עם GKE Sandbox.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
כדי להשתמש במעבדי ה-GPU או בתכונות הבאות, צריך לוודא שיש לכם אשכול GKE Autopilot שפועל באחת מהגרסאות הבאות:
- מעבדי GPU NVIDIA B200 (180GB): גרסה 1.32.2-gke.1422000 ואילך
- מעבדי GPU NVIDIA H200 (141GB): גרסה 1.31.4-gke.1183000 ואילך
- מעבדי GPU NVIDIA H100 Mega (80GB): גרסה 1.28.9-gke.1250000 ואילך, וגרסה 1.29.4-gke.1542000 ואילך
- מעבדי GPU NVIDIA H100 (80GB): גרסה 1.28.6-gke.1369000 ואילך, וגרסה 1.29.1-gke.1575000 ואילך
- מעבדי GPU NVIDIA RTX PRO 6000: 1.34.1-gke.1829001 ואילך
- Multiple GPU Pods per VM: 1.29.2-gke.1355000 or later
- מעבדי GPU אחרים: כל הגרסאות הנתמכות
- מוודאים שיש מספיק מכסות של GPU בפרויקט. צריכה להיות לכם מספיק מכסת GPU ב-Compute Engine לדגמי ה-GPU שאתם רוצים ליצור בכל אזור. אם אתם צריכים מכסת GPU נוספת, אתם יכולים לשלוח בקשה לשינוי המכסות.
מגבלות
- Time-sharing GPUs ו-multi-instance GPUs זמינים ב-Autopilot בגרסה 1.29.3-gke.1093000 של GKE ואילך.
- הזמינות של ה-GPU תלויה באזור של אשכול Autopilot ובמכסת ה-GPU. Google Cloud כדי למצוא מודל GPU לפי אזור או אזור זמינות, אפשר לעיין במאמר זמינות של GPU לפי אזורים ואזורי זמינות.
- במקרים של GPU מסוג NVIDIA A100 (80GB), אתם מחויבים במחיר קבוע על כונני ה-SSD המקומיים שמצורפים לצמתים, גם אם ה-Pods שלכם לא משתמשים בקיבולת הזו.
- בגרסאות GKE שקודמות ל-1.29.2-gke.1355000, אם מבקשים במפורש צומת GPU קיים ספציפי בשביל ה-Pod, ה-Pod חייב לצרוך את כל משאבי ה-GPU בצומת. לדוגמה, אם בצומת הקיים יש 8 יחידות GPU והקונטיינרים של ה-Pod מבקשים בסך הכול 4 יחידות GPU, מצב Autopilot דוחה את ה-Pod.
- ב-GKE גרסה 1.29.2-gke.1355000 ואילך, אם רוצים שכמה פודים של GPU יתאימו לצומת יחיד, סכום בקשות ה-GPU של הפודים האלה צריך להיות קטן או שווה למספר משאבי ה-GPU שמצורפים לצומת הזה. לדוגמה, בצומת עם
gke-accelerator-countשל 4 אפשר להציב עד ארבעה Pods שמבקשים כל אחד GPU אחד.
הצבת כמה תרמילי Pod בצומת GPU יחיד שימושית במצבים כמו הבאים:
- יש לכם הזמנות של קיבולת לסוגי מכונות גדולות עם מאיץ, ואתם מריצים עומסי עבודה של GPU יחיד, כך שפריסת Pod אחד לכל צומת תבזבז את שאר ה-GPU במכונה הזו
- יש לכם עומסי עבודה של GPU שצריכים לפעול באותו מארח
במקרים כאלה, מומלץ להשתמש בכל יחידות ה-GPU בצומת. כדי לעשות זאת, צריך לוודא שסכום בקשות המשאבים של ה-GPU של ה-Pod בצומת שווה למספר יחידות ה-GPU שמחוברות לצומת.
בקשת יחידות GPU במאגרי התמונות שלכם
כדי לבקש משאבי GPU עבור הקונטיינרים, מוסיפים את השדות הבאים למפרט ה-Pod.
בהתאם לדרישות של עומס העבודה, אפשר להשמיט את בורר cloud.google.com/gke-accelerator-count.
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
nodeSelector:
cloud.google.com/gke-accelerator: GPU_TYPE
cloud.google.com/gke-accelerator-count: "GPU_COUNT"
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
-
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_COUNT: המספר הכולל של המעבדים הגרפיים שאפשר לצרף לצומת. הערך חייב להיות גדול מ-GPU_QUANTITYאו שווה לו, וגם כמות ה-GPU הנתמכת עבור סוג ה-GPU שבחרתם. אם לא מציינים את nodeSelector, Autopilot מציב Pod אחד בכל צומת GPU.
GPU_QUANTITY: מספר המעבדים הגרפיים להקצאה לקונטיינר. הערך חייב להיות קטן מ-GPU_COUNTאו שווה לו, וגם קטן מ-מספר ה-GPU הנתמך עבור סוג ה-GPU שנבחר.אופציונלי
runtimeClassname: gvisor: ההגדרה שמאפשרת להריץ את ה-Pod הזה ב-GKE Sandbox. כדי להשתמש, מבטלים את ההערה בשורה הזו. מידע נוסף זמין במאמר GKE Sandbox.
פרטים על החיוב על השימוש במאיץ במצב אוטומטי זמינים בקטע תמחור.
צריך לציין את סוג ה-GPU ואת כמות ה-GPU במפרט של ה-Pod. אם משמיטים אחד מהערכים האלה, Autopilot דוחה את ה-Pod.
כשפורסים את המניפסט הזה, Autopilot מתקין אוטומטית את מנהלי ההתקנים (דרייברים) של NVIDIA שמוגדרים כברירת מחדל לגרסת הצומת של GKE. בגרסה 1.29.2-gke.1108000 ואילך, אפשר לבחור להתקין את הגרסה האחרונה של מנהל ההתקן עבור גרסת GKE הזו על ידי הוספת בורר הצמתים הבא למניפסט:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
מחליפים את DRIVER_VERSION באחד מהערכים הבאים:
-
default– מנהל ההתקן היציב שמוגדר כברירת מחדל לגרסת GKE של הצומת. אם לא מציינים את nodeSelector במניפסט, זו אפשרות ברירת המחדל. -
latest– הגרסה האחרונה של מנהל ההתקן שזמינה לגרסת GKE של הצומת.
בקשת מעבד (CPU) וזיכרון ל-Pods של GPU ב-Autopilot
כשמגדירים את ה-Pods של ה-GPU, צריך גם לבקש משאבי מעבד וזיכרון כדי שהקונטיינרים יפעלו כמצופה. במצב Autopilot, יש מינימום, מקסימום וערכי ברירת מחדל ספציפיים ל-CPU ולזיכרון, בהתאם לסוג ולכמות של ה-GPU. אם מריצים כמה GPU Pods בצומת יחיד, צריך לציין את ה-CPU והזיכרון, אחרת ברירת המחדל היא הקיבולת המלאה של הצומת. פרטים נוספים זמינים במאמר בנושא בקשות למשאבים ב-Autopilot.
מפרט ה-Pod שלכם צריך להיות דומה לדוגמה הבאה, שבה מוגשת בקשה לארבעה מעבדי GPU מסוג T4:
apiVersion: v1
kind: Pod
metadata:
name: t4-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
nodeSelector:
cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
containers:
- name: t4-container-1
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: 3
cpu: "54"
memory: "54Gi"
requests:
cpu: "54"
memory: "54Gi"
- name: t4-container-2
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: 1
cpu: "18"
memory: "18Gi"
requests:
cpu: "18"
memory: "18Gi"
- אופציונלי
runtimeClassname: gvisor: ההגדרה שמאפשרת להריץ את ה-Pod הזה ב-GKE Sandbox. כדי להשתמש, מבטלים את ההערה בשורה הזו. מידע נוסף זמין במאמר GKE Sandbox.
בקובץ המניפסט הזה מוגדרים limits למשאבי מעבד וזיכרון. אם משמיטים את limits עבור CPU או זיכרון ב-GKE בגרסה 1.29.2-gke.1060000 ואילך, GKE מקצה ל-Pods את מחלקת QoS Burstable ומאפשר ל-Pods להשתמש במשאבים לא מנוצלים מתוך סכום בקשות המשאבים בצומת. מידע נוסף זמין במאמר בנושא הגדרת Pod bursting ב-GKE.
בקשת אחסון זמני ל-Pods של GPU ב-Autopilot
אפשר גם לבקש אחסון זמני ב-Pods שזקוקים לאחסון לזמן קצר. נפח האחסון הזמני המקסימלי הזמין וסוג חומרת האחסון שבה נעשה שימוש תלויים בסוג ובכמות של יחידות ה-GPU שה-Pod מבקש. אפשר להשתמש ב-SSD מקומי לאחסון זמני עם ההגדרות הבאות:
- משתמשים במעבדי NVIDIA RTX PRO 6000 GPU ובסוג המחשוב Accelerator, ומריצים את גרסת התיקון GKE 1.34.1-gke.1829001 ואילך.
- משתמשים ב-GPU מסוג NVIDIA L4 ובסוג המחשוב Accelerator, ומריצים את גרסת התיקון GKE 1.28.6-gke.1369000 ואילך, או 1.29.1-gke.1575000 ואילך.
כדי להשתמש ב-SSD מקומי לאחסון זמני, מוסיפים את
nodeSelector cloud.google.com/gke-ephemeral-storage-local-ssd: "true" למניפסט של עומס העבודה. אפשר לראות דוגמה לקובץ מניפסט במאמר שימוש באחסון זמני מקומי שמגובה על ידי SSD עם אשכולות Autopilot.
כרטיסי ה-GPU NVIDIA H100 (80GB) ו-NVIDIA A100 (80GB) תמיד משתמשים בכונני SSD מקומיים לאחסון זמני, ואי אפשר לציין את בורר הצמתים הזה עבור כרטיסי ה-GPU האלה.
בקשה של סוגי מכונות ספציפיים באמצעות ComputeClasses בהתאמה אישית
במקרים מסוימים, יכול להיות שתצטרכו להריץ את עומס העבודה של ה-GPU על סוג מכונה ספציפי, למשל אם סוג המכונה שאתם רוצים לא מוגדר כברירת מחדל באשכולות של Autopilot. אפשר לבקש במפורש מכונה ספציפית באמצעות ComputeClasses בהתאמה אישית, שמאפשרות להגדיר פרופיל להעלאת הגדרות אישיות של קונפיגורציית צומת שמציין את סוג המכונה ואת ה-GPU.
מידע כללי על ComputeClasses זמין במאמר מידע על ComputeClasses בהתאמה אישית.
כדי לבקש סוג מכונה ספציפי לעומס העבודה של ה-GPU, מבצעים את השלבים הבאים:
יוצרים קובץ מניפסט בשביל ComputeClass בהתאמה אישית. בדוגמה הזו, שומרים את הקובץ הבא בשם
a3-computeclass.yaml:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: a3-edge-gpu spec: priorities: - machineType: a3-edgegpu-8g-nolssd gpu: count: 8 type: nvidia-h100-80gb nodePoolAutoCreation: enabled: trueבמניפסט הזה:
-
metadata.nameהוא השם של ComputeClass המותאם אישית, שאליו תתייחסו במפרט של ה-Pod. -
machineTypeהיא המכונה הספציפית שצריך להקצות לה הרשאות. - השדות
gpuמציינים את הסוג והמספר של מעבדי ה-GPU שמצורפים למכונה. הערכים בשדות האלה צריכים להתאים ליכולות שלmachineTypeשצוין.
-
מריצים את הפקודה הבאה כדי להחיל את המניפסט:
kubectl apply -f a3-computeclass.yamlבמניפסט של ה-Pod, מבקשים את ComputeClass באמצעות בורר הצמתים
cloud.google.com/compute-class:apiVersion: v1 kind: Pod metadata: name: gpu-cc-pod spec: nodeSelector: cloud.google.com/compute-class: a3-edge-gpu containers: - name: my-gpu-container image: nvidia/cuda:latest command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1GKE מקצה צומת חדש שתואם להגדרה ב-
a3-edge-gpuComputeClass כדי להריץ את ה-Pod.
אימות ההקצאה של מעבדי GPU שנפרסו
כדי לוודא שעומס עבודה של GPU שנפרס כולל את יחידות ה-GPU המבוקשות, מריצים את הפקודה הבאה:
kubectl describe node NODE_NAME
מחליפים את NODE_NAME בשם הצומת שבו ה-Pod תוכנן.
הפלט אמור להיראות כך:
apiVersion: v1
kind: Node
metadata:
...
labels:
...
cloud.google.com/gke-accelerator: nvidia-tesla-t4
cloud.google.com/gke-accelerator-count: "1"
cloud.google.com/machine-family: custom-48
...
...
בדיקת גרסת הדרייבר של ה-GPU
באשכולות Autopilot, GKE מתקין אוטומטית מנהלי התקנים (דרייברים) של NVIDIA בכל צמתי ה-GPU. כדי למצוא את גרסת מנהל ההתקן ש-GKE התקין באשכול, מריצים את הפקודה הבאה:
kubectl logs --selector=k8s-app=nvidia-gpu-device-plugin \
--container="nvidia-gpu-device-plugin" \
--tail=-1 \
--namespace=kube-system | grep Driver
הפלט אמור להיראות כך:
I1206 18:37:08.251742 5851 metrics.go:144] nvml initialized successfully. Driver version: 535.104.12
איך מתבצעת הקצאת GPU ב-Autopilot
אחרי שמבקשים סוג וכמות של GPU עבור הקונטיינרים ב-Pod ומבצעים פריסה של ה-Pod, קורה הדבר הבא:
- אם לא קיים צומת GPU שניתן להקצאה, Autopilot יקצה צומת GPU חדש כדי לתזמן את ה-Pod. Autopilot מתקין באופן אוטומטי את מנהלי ההתקנים (דרייברים) של NVIDIA כדי להקל על השימוש בחומרה.
- מצב Autopilot מוסיף node taints לצומת ה-GPU ומוסיף את ה-tolerations המתאימים ל-Pod. כך נמנע מ-GKE לתזמן Pods אחרים בצומת ה-GPU.
במצב Autopilot, מערכת GKE ממקמת בדיוק פוד אחד של GPU בכל צומת GPU, וגם עומסי עבודה שמנוהלים על ידי GKE שפועלים בכל הצמתים, וגם DaemonSets שהגדרתם כך שיפעלו בכל הצמתים.
הרצת DaemonSets בכל צומת
יכול להיות שתרצו להריץ DaemonSets בכל צומת, גם בצמתים עם taints שהוחלו. לדוגמה, סוכני רישום ביומן ומעקב מסוימים צריכים לפעול בכל צומת באשכול. אפשר להגדיר את ה-DaemonSets כך שיתעלמו מהכתמים של הצמתים, כדי ש-GKE יציב את עומסי העבודה האלה בכל צומת.
כדי להפעיל DaemonSets בכל צומת באשכול, כולל צומתי ה-GPU, מוסיפים את הטולרנטיות הבאה למפרט:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
מחליפים את IMAGE_PATH בנתיב לקובץ אימג' של קונטיינר.
כדי להריץ DaemonSets בצמתי GPU ספציפיים באשכול, מוסיפים את השורות הבאות למפרט:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
nodeSelector:
cloud.google.com/gke-accelerator: "GPU_TYPE"
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
מחליפים את 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
-
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 במצב Autopilot
אתם יכולים להקצות GPU לקונטיינרים ב-Autopilot Pods כדי להקל על עומסי עבודה כמו:
- הסקת מסקנות (inference) בלמידת מכונה (ML)
- הדרכה בנושא למידת מכונה
- עיבוד
כמויות נתמכות של GPU
כשמבקשים יחידות GPU במפרט של ה-Pod, צריך להשתמש בכמויות הבאות בהתאם לסוג ה-GPU:
| כמויות GPU | |
|---|---|
NVIDIA B200 (180GB)nvidia-b200 |
8 |
NVIDIA H200 (141GB)nvidia-h200-141gb |
8 |
NVIDIA H100 Mega (80GB)nvidia-h100-mega-80gb |
8 |
NVIDIA H100 (80GB)nvidia-h100-80gb |
1, 2, 4, 8 |
NVIDIA A100 (80GB)nvidia-a100-80gb |
1, 2, 4, 8 |
NVIDIA A100 (40GB)nvidia-tesla-a100 |
1, 2, 4, 8, 16 |
NVIDIA RTX PRO 6000nvidia-rtx-pro-6000 |
1, 2, 4, 8 |
NVIDIA L4nvidia-l4 |
1, 2, 4, 8 |
NVIDIA T4nvidia-tesla-t4 |
1, 2, 4 |
מעקב אחר ביצועי עומס העבודה של צומת ה-GPU
אם הפעלתם מדדים של המערכת באשכול GKE, המדדים הבאים יהיו זמינים ב-Cloud Monitoring כדי לעקוב אחרי ביצועי עומס העבודה של ה-GPU:
-
מחזור פעילות (
container/accelerator/duty_cycle): אחוז הזמן במהלך תקופת הדגימה האחרונה (10 שניות) שבה המאיץ עיבד באופן פעיל. בין 1 ל-100. -
השימוש בזיכרון (
container/accelerator/memory_used): כמות הזיכרון של המאיץ שהוקצתה בבייטים. -
נפח הזיכרון (
container/accelerator/memory_total): סך כל זיכרון המאיץ בבייטים.
המדדים האלה חלים ברמת הקונטיינר (container/accelerator) ולא נאספים עבור קונטיינרים שמתוזמנים ב-GPU שמשתמש בשיתוף זמן GPU או ב-NVIDIA MPS.
אתם יכולים להשתמש במרכזי בקרה מוגדרים מראש כדי לעקוב אחרי האשכולות עם צמתי GPU. מידע נוסף מופיע במאמר הצגת מדדי יכולת הצפייה. מידע כללי על מעקב אחרי האשכולות והמשאבים שלהם זמין במאמר יכולת צפייה ב-GKE.
הצגת מדדי השימוש של עומסי עבודה
אפשר לראות את מדדי השימוש ב-GPU של עומסי העבודה בלוח הבקרה Workloads במסוף Google Cloud .
כדי לראות את השימוש ב-GPU בעומס העבודה, מבצעים את השלבים הבאים:
-
נכנסים לדף Workloads במסוף Google Cloud .
כניסה לדף Workloads - בוחרים עומס עבודה.
בלוח הבקרה Workloads מוצגים תרשימים של השימוש בזיכרון ה-GPU והקיבולת שלו, ושל דיוטי סייקל (Duty cycle) ב-GPU.
צפייה במדדים של NVIDIA Data Center GPU Manager (DCGM)
אפשר לאסוף ולהציג חזותית מדדים של NVIDIA DCGM באמצעות השירות המנוהל של Google Cloud ל-Prometheus. באשכולות Autopilot, GKE מתקין את הדרייברים. במקרים של אשכולות Standard, צריך להתקין את הדרייברים של NVIDIA.
הוראות לפריסת חבילת DCGM שמנוהלת על ידי GKE זמינות במאמר איסוף מדדים של NVIDIA Data Center GPU Manager (DCGM) והצגתם.
מדדי בריאות של צמתים ושל JobSet לעומסי עבודה של GPU
בנוסף למדדים של DCGM, אתם יכולים להשתמש במדדים הבאים כדי לעקוב אחרי התקינות והביצועים של עומסי העבודה של ה-GPU, במיוחד כשמריצים אותם כ-JobSets.
מדדים של JobSet
המדדים הבאים חלים על מערכי משימות של GPU ו-TPU שיש להם משימה אחת משוכפלת:
kubernetes.io/jobset/times_between_interruptionskubernetes.io/jobset/times_to_recoverkubernetes.io/jobset/uptime
מידע נוסף על מדדי המערכת האלה זמין במאמר בנושא מדדי Kubernetes.
אפשר גם להשתמש בלוח הבקרה JobSet במסוף Google Cloud כדי להציג באופן חזותי את עומסי העבודה של ה-GPU ולעקוב אחריהם:
מדדי הבריאות של הצומת
המדדים הבאים ברמת הצומת רלוונטיים לכל הצמתים, כולל צמתים עם יחידות GPU:
-
kubernetes.io/node/status_condition: המדד הזה דורש GKE גרסה 1.32.1-gke.1357001 ואילך.
מדדים של הפרעה בצומת והפרעה במאגר צמתים חלים גם על צמתים שאינם TPU.
Kube-state-metrics ל-JobSets
אפשר להשתמש ב-kube-state-metrics ל-JobSets עם יחידות GPU. כדי לאסוף את המדדים האלה, צריך להשתמש ב-GKE בגרסה 1.32.1-gke.1357001 ואילך. מידע נוסף זמין במסמכי התיעוד בנושא מדדי JobSet.
המאמרים הבאים
- מידע נוסף על תמיכה ב-GPU ב-GKE
- מידע נוסף על האופן שבו מחלקות מחשוב ב-Autopilot מותאמות לתרחישי שימוש ספציפיים
- מידע נוסף על פריסת GPU לעומסי עבודה באצווה באמצעות Dynamic Workload Scheduler
- מידע על הרצת עומסי עבודה של GPU בארגז חול (sandboxing) עם GKE Sandbox