בדף הזה מוסבר איך להריץ ולשפר את עומסי העבודה שדורשים משאבי מחשוב רבים, כמו בינה מלאכותית (AI) ועיבוד גרפי, על ידי צירוף מאיצי חומרה של יחידות עיבוד גרפי (GPU) של NVIDIA® לצמתים של אשכולות Standard ב-Google Kubernetes Engine (GKE) ושימוש בהם. אם אתם משתמשים ב-Autopilot Pods, קראו את המאמר פריסת עומסי עבודה של GPU ב-Autopilot.
אם אתם רוצים לפרוס אשכולות עם מעבדי GPU מסוג NVIDIA B300, NVIDIA B200 או NVIDIA H200 141GB, אתם יכולים להיעזר במקורות המידע הבאים:
- כדי ליצור אשכולות GKE, קראו את המאמר יצירת אשכול Google Kubernetes Engine שעבר אופטימיזציה ל-AI באמצעות Cluster Toolkit.
- כדי ליצור אשכולות Slurm, עיינו במאמרים הבאים:
סקירה כללית
ב-GKE, אתם יכולים ליצור מאגרי צמתים שמצוידים ב-GPU. מעבדי GPU מספקים כוח מחשוב כדי להפעיל משימות של למידה עמוקה, כמו זיהוי תמונות ועיבוד שפה טבעית, וגם משימות אחרות שדורשות מחשוב אינטנסיבי, כמו המרת קידוד של וידאו ועיבוד תמונות. במצב GKE Standard, אתם יכולים לצרף חומרת GPU לצמתים באשכולות, ואז להקצות משאבי GPU לעומסי עבודה בקונטיינרים שפועלים בצמתים האלה.
מידע נוסף על תרחישים לדוגמה של שימוש ב-GPU זמין בדף GPUs של Google Cloud. למידע נוסף על מעבדי GPU ב-GKE ועל ההבדלים בין מצב Standard למצב Autopilot, קראו את המאמר מידע על מעבדי GPU ב-GKE.
אם עומסי העבודה שלכם יכולים לסבול שיבושים תכופים בצמתים, אתם יכולים להשתמש במעבדי GPU גם עם VM במודל Spot. שימוש ב-VM במודל Spot מפחית את מחיר ההפעלה של יחידות GPU. מידע נוסף זמין במאמר שימוש ב-VM במודל Spot עם מאגרי צמתים של GPU.
החל מגרסה 1.29.2-gke.1108000, אפשר ליצור מאגרי צמתים של GPU ב-GKE Sandbox. מידע נוסף זמין במאמרים GKE Sandbox והגדרת GKE Sandbox.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי להוריד את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
הדרישות לשימוש במעבדים גרפיים ב-GKE
אלה הדרישות לשימוש במעבדים גרפיים ב-GKE:
מכסת GPU: כדי ליצור צומתי GPU, צריך שתהיה לכם מכסת GPU ב-Compute Engine באזור שבחרתם. כדי לוודא שיש לכם מספיק מכסת GPU בפרויקט, עיינו בקטע Quotas במסוף Google Cloud .
אם אתם צריכים מכסה נוספת של GPU, אתם צריכים לבקש מכסה של GPU במסוף Google Cloud . אם יש לכם חשבון לחיוב קיים, הפרויקט יקבל מכסה באופן אוטומטי אחרי שתשלחו את הבקשה למכסה.
כברירת מחדל, חשבונות בתקופת ניסיון בחינם לא מקבלים מכסת GPU.
מנהלי התקנים של NVIDIA GPU: כשיוצרים אשכול או מאגר צמתים, אפשר להורות ל-GKE להתקין באופן אוטומטי גרסה של מנהל התקן על סמך גרסת ה-GKE. אם לא תגדירו ל-GKE להתקין באופן אוטומטי מנהלי התקנים של GPU, תצטרכו להתקין את מנהלי ההתקנים באופן ידני.
סדרת מכונות: סוג ה-GPU שאפשר להשתמש בו תלוי בסדרת המכונות, באופן הבא:
- סדרת המכונות A5X: מעבדי GPU מסוג Vera Rubin NVL72 (מכונות Bare Metal בלבד).
- סדרת המכונות A4X Max: מעבדי GPU מדגם GB300.
- סדרת המכונות A4X: מעבדי GPU מדגם GB200.
- סדרת המכונות A4: מעבדי GPU מדגם B200.
- סדרת מכונות A3: מעבדי GPU מדגם H200 (A3 Ultra) ומעבדי GPU מדגם H100 (A3 Mega, High, Edge).
- סדרת מכונות A2: מעבדי GPU מדגם A100.
- סדרת מכונות G4: מעבדי RTX PRO 6000 GPU.
- סדרת המכונות G2: מעבדי GPU מסוג L4.
- סדרת מכונות N1: מעבדי GPU מסוג NVIDIA T4, NVIDIA V100, NVIDIA P100 (התמיכה בהם תסתיים בקרוב) או NVIDIA P4.
חשוב לוודא שיש לכם מספיק מכסה בפרויקט לסדרת המכונות שתואמת לסוג ולכמות של ה-GPU שבחרתם.
גרסאות GKE: צריך להשתמש בגרסאות GKE ספציפיות לסדרות ולתצורות מסוימות של מכונות:
- סדרה A עם אופטימיזציה למאיצים: דרישות הגרסה מפורטות במדריכים ליצירת אשכולות.
סדרת מכונות G4 במצב רגיל:
- סוגי מכונות עם GPU אחד או יותר: גרסה 1.34.0-gke.1662000 ואילך
סוגי מכונות עם פחות מ-GPU אחד: צריך להשתמש באחת מגרסאות התיקון הבאות או בגרסה מאוחרת יותר, בהתאם לגרסה המשנית של GKE:
- 1.34: 1.34.5-gke.1153000
- 1.35 ואילך: 1.35.3-gke.1389000
מעבדי GPU בצומתי Ubuntu: אם אתם משתמשים במעבדי GPU עם צומתי Ubuntu, חלות הדרישות הבאות:
תאימות מנהלי התקנים של Ubuntu:
מעבדי GPU מסוג L4 ומעבדי GPU מסוג H100: מנהל התקן של NVIDIA בגרסה 535 ואילך
H200 GPUs: גרסה 550 ומעלה של מנהל ההתקן של NVIDIA
B200 GPU: דרייבר של NVIDIA בגרסה 570 ואילך
RTX PRO 6000 GPUs: גרסת מנהל ההתקן של NVIDIA 580 ואילך. התאימות לגרסה הזו לא כוללת סוגי מכונות G4 עם פחות מ-GPU אחד, כי הם לא תומכים בתמונות של צומתי Ubuntu.
אם גרסת הדרייבר הנדרשת או גרסה מאוחרת יותר היא לא גרסת ברירת המחדל בגרסת GKE שלכם, תצטרכו להתקין ידנית דרייבר נתמך בצמתים.
תאימות לגרסאות של Ubuntu:
כשמשתמשים בסדרת המכונות A4 במאגרי צמתים של Ubuntu, צריך להשתמש בגרסת GKE שכוללת את קובץ האימג'
ubuntu-gke-2404-1-32-amd64-v20250730או בגרסה מאוחרת יותר של קובץ האימג' של הצומת. אלה הגרסאות המינימליות של GKE:- 1.32.7-gke.1067000 ואילך ל-GKE בגרסה 1.32
- 1.33.3-gke.1247000 ואילך ל-GKE בגרסה 1.33
שימוש במערכת הפעלה שמותאמת לקונטיינרים לצומתי GPU. מערכת ההפעלה שמותאמת לקונטיינרים כוללת את מנהלי ההתקנים הנדרשים כדי לתמוך בגרסה הספציפית של GKE לצומתי GPU.
מגבלות על השימוש ב-GPU ב-GKE
לפני שמשתמשים במעבדי GPU ב-GKE, חשוב לזכור את המגבלות הבאות:
- אי אפשר להוסיף GPU למאגרי צמתים קיימים.
- אי אפשר לבצע מיגרציה פעילה של צומתי GPU במהלך אירועי תחזוקה.
סדרת מכונות: סוג ה-GPU שאפשר להשתמש בו תלוי בסדרת המכונות, באופן הבא:
- סדרת המכונות A5X: מעבדי GPU מסוג Vera Rubin NVL72 (מכונות Bare Metal בלבד).
- סדרת המכונות A4X Max: מעבדי GPU מדגם GB300.
- סדרת המכונות A4X: מעבדי GPU מדגם GB200.
- סדרת המכונות A4: מעבדי GPU מדגם B200.
- סדרת מכונות A3: מעבדי GPU מדגם H200 (A3 Ultra) ומעבדי GPU מדגם H100 (A3 Mega, High, Edge).
- סדרת מכונות A2: מעבדי GPU מדגם A100.
- סדרת מכונות G4: מעבדי RTX PRO 6000 GPU.
- סדרת המכונות G2: מעבדי GPU מסוג L4.
- סדרת מכונות N1: מעבדי GPU מסוג NVIDIA T4, NVIDIA V100, NVIDIA P100 (התמיכה בהם תסתיים בקרוב) או NVIDIA P4.
חשוב לוודא שיש לכם מספיק מכסה בפרויקט לסדרת המכונות שתואמת לסוג ולכמות של ה-GPU שבחרתם.
אין תמיכה במעבדים גרפיים במאגרי צמתים של Windows Server.
אשכולות GKE Standard שפועלים בגרסאות שקודמות ל-1.34.1-gke.1279000 לא תומכים בהקצאת צמתים אוטומטית שיוצרת מאגרי צמתים עם מעבדי RTX PRO 6000 GPU. עם זאת, אשכולות שפועלים בגרסאות קודמות תומכים בהתאמה לעומס (autoscaling) של אשכולות במאגרי צמתים קיימים.
אשכולות GKE Standard שפועלים בגרסה 1.28.2-gke.1098000 או בגרסאות קודמות לא תומכים בהקצאת צמתים אוטומטית שיוצרת מאגרי צמתים עם מעבדי GPU מסוג L4. עם זאת, אשכולות שפועלים בגרסאות קודמות תומכים בהתאמה לעומס (autoscaling) באשכול של מאגרי צמתים קיימים.
לסוגי מכונות G4 עם פחות מ-GPU אחד יש את המגבלות הנוספות הבאות:
- אי אפשר להשתמש בתמונות של צומתי Ubuntu.
- אתם צריכים להכין את עומסי העבודה להרצה בסוגי המכונות האלה באשכולות שפועלות בהם גרסאות GKE שקודמות ל-1.36.
- אי אפשר להשתמש במעבדי GPU עם כמה מופעים במקביל, ב-NVIDIA MPS או בשיתוף זמן של GPU.
זמינות של GPUs לפי אזורים ו-zones
מעבדי GPU זמינים באזורים ובתחומים ספציפיים. כשאתם מבקשים מכסה ל-GPU, חשוב שתביאו בחשבון את האזורים שבהם אתם מתכוונים להריץ את האשכולות.
לרשימה מלאה של אזורים ותחומים רלוונטיים, עיינו ב-GPUs ב-Compute Engine.
אפשר גם לראות את יחידות ה-GPU שזמינות באזור שלכם באמצעות Google Cloud CLI. כדי לראות רשימה של כל סוגי מאיצי ה-GPU שנתמכים בכל אזור, מריצים את הפקודה הבאה:
gcloud compute accelerator-types list
תמחור
למידע על מחירי GPU, עיינו בטבלת המחירים בדף Google Cloud GPU.
מוודאים שיש מספיק מכסה ל-GPU
מכסת ה-GPU היא המספר הכולל של מעבדי GPU שיכולים לפעול בפרויקט ב-Google Cloud . כדי ליצור אשכולות עם GPUs, לפרויקט צריכה להיות מכסת GPU מספיקה.
מכסת ה-GPU צריכה להיות שווה לפחות למספר הכולל של יחידות ה-GPU שאתם מתכוונים להפעיל באשכול. אם מפעילים התאמה אוטומטית לעומס באשכול, צריך לבקש מכסת GPU ששווה לפחות למספר ה-GPU לכל צומת, כפול המספר המקסימלי של צמתים באשכול.
לדוגמה, אם יוצרים אשכול עם שלושה צמתים שפועלים בו שני GPUs לכל צומת, הפרויקט דורש מכסה של לפחות שישה GPUs.
בקשת מכסת GPU
כדי לבקש מכסת GPU, צריך להשתמש במסוף Google Cloud . למידע נוסף על בקשת מכסות, קראו את המאמר מכסות GPU במרכז העזרה של Compute Engine.
כדי לחפש מכסת GPU ולשלוח בקשה להגדלת המכסה, משתמשים במסוף Google Cloud :
נכנסים לדף Quotas בקטע IAM & Admin במסוף Google Cloud .
בתיבה Filter:
- בוחרים את המאפיין Quota, מזינים את השם של מודל ה-GPU ולוחצים על Enter.
- (אופציונלי) כדי להחיל מסננים מתקדמים יותר לצמצום התוצאות, בוחרים במאפיין Dimensions (לדוגמה, מיקומים), מוסיפים את שם האזור או התחום שבהם אתם משתמשים ולוחצים על Enter.
ברשימת המכסות של ה-GPU, בוחרים את המכסה שרוצים לשנות.
לוחצים על Edit quotas. ייפתח טופס בקשה.
ממלאים את השדה New quota limit לכל בקשה להגדלת מכסה.
ממלאים את השדה Request description בפרטים על הבקשה.
לוחצים על הבא.
בתיבת הדו-שיח אישור שינוי, לוחצים על אישור.
במסך פרטים ליצירת קשר, מזינים את השם ומספר הטלפון שדרכו הגורמים המאשרים יוכלו ליצור איתכם קשר כדי להשלים את הבקשה לשינוי המכסה.
לוחצים על Submit request.
תקבלו הודעת אישור באימייל כדי לעקוב אחרי השינוי במכסה.
הפעלת GPUs באשכולות GKE Standard
כדי להריץ מעבדי GPU באשכולות GKE Standard, צריך ליצור מאגר צמתים עם מעבדי GPU מצורפים.
כדי לשפר את היעילות מבחינת עלות, את האמינות ואת הזמינות של מעבדי GPU ב-GKE, בצעו את הפעולות הבאות:
- ליצור מאגרי צמתים נפרדים של GPU. בכל מאגר צמתים, מגבילים את מיקום הצומת לאזורים שבהם ה-GPU הרצויים זמינים.
- מפעילים את ההתאמה האוטומטית לעומס בכל מאגר צמתים.
- כדי לשפר את הזמינות, אפשר להשתמש באשכולות אזוריים שמשכפלים את מישור הבקרה של Kubernetes באזורים השונים.
- מגדירים את GKE כך שיתקין באופן אוטומטי את מנהלי ההתקנים של ה-GPU שמוגדרים כברירת מחדל או את הגרסה האחרונה שלהם במאגרי הצמתים, כדי שלא תצטרכו להתקין ולנהל באופן ידני את הגרסאות של מנהלי ההתקנים.
כפי שמתואר בקטעים הבאים, GKE משתמש ב-taints וב-tolerations של צמתים כדי להבטיח ש-Pods לא יתוזמנו לצמתים לא מתאימים.
הוספת טיינט למאגר צומתי GPU כדי למנוע תזמון לא מתאים
הכתמת צומת מאפשרת לסמן צומת כדי שהמתזמן יימנע משימוש בו או ימנע שימוש בו לפודים מסוימים. בהתאם לתרחישים הבאים, GKE מוסיף את ה-taint nvidia.com/gpu=present:NoSchedule באופן אוטומטי, או שאתם יכולים להוסיף אותו באופן ידני:
כשמוסיפים מאגר צמתים של GPU לאשכול קיים שכבר פועל בו מאגר צמתים ללא GPU, GKE מכתים באופן אוטומטי את צומתי ה-GPU בכתם הצומת הבא:
- מפתח:
nvidia.com/gpu - ערך:
present - השפעה:
NoSchedule
GKE מוסיף את הכתם הזה רק אם יש באשכול לפחות מאגר צמתים אחד של non-GPU.
- מפתח:
כשמוסיפים מאגר של צומתי GPU לאשכול שיש בו רק מאגרים של צומתי GPU, או כשיוצרים אשכול חדש שבו למאגר הצמתים שמוגדר כברירת מחדל מצורפים רכיבי GPU, אפשר להגדיר באופן ידני taints למאגר הצמתים החדש עם הערכים הבאים:
- מפתח:
nvidia.com/gpu - ערך:
present - השפעה:
NoSchedule
- מפתח:
אם תוסיפו בעתיד מאגר צמתים שאינם GPU לאשכול, GKE לא יחיל את ה-taint הזה רטרואקטיבית על צומתי GPU קיימים. צריך להגדיר באופן ידני את ה-taints למאגר הצמתים החדש.
הגבלה אוטומטית של תזמון עם סובלנות
בעזרת Tolerations אפשר להגדיר פודים שאפשר להשתמש בהם בצמתים "פגומים". GKE מחיל באופן אוטומטי toleration, כך שרק Pods שמבקשים GPUs מתוזמנים בצומתי GPU. כך אפשר לבצע התאמה אוטומטית לעומס בצורה יעילה יותר, כי צומתי ה-GPU יכולים להצטמצם במהירות אם אין מספיק Pods שמבקשים GPU. כדי לעשות את זה, GKE מריץ את בקרת אישור הבקשות ExtendedResourceToleration.
יצירת מאגר צמתים של GPU
כדי ליצור מאגר צמתים נפרד של GPU באשכול קיים, אתם יכולים להשתמש במסוףGoogle Cloud או ב-Google Cloud CLI. אתם יכולים להשתמש ב-Terraform גם כדי להקצות את אשכולות ה-GKE ואת מאגר הצמתים של ה-GPU.
ב-GKE אפשר להתקין באופן אוטומטי מנהלי התקנים של NVIDIA בתרחישים הבאים:
- באשכולות GKE עם גרסת מישור בקרה 1.32.2-gke.1297000 ואילך, GKE מתקין באופן אוטומטי את גרסת ברירת המחדל של מנהל ההתקן של NVIDIA לכל צומתי ה-GPU, כולל אלה שנוצרו באמצעות הקצאת צמתים אוטומטית.
- באשכולות GKE עם גרסת מישור בקרה מ-1.30.1-gke.1156000 עד 1.32.2-gke.1297000, GKE מתקין באופן אוטומטי את גרסת ברירת המחדל של מנהל ההתקן של NVIDIA לצמתים שלא נוצרו באמצעות הקצאת צמתים אוטומטית.
- אפשר לבחור את גרסת הדרייבר העדכנית ביותר או להשבית באופן מפורש את ההתקנה האוטומטית של הדרייבר. בגרסאות שקודמות ל-1.30.1-gke.1156000, GKE לא מתקין מנהל התקן כברירת מחדל אם לא מציינים גרסת מנהל התקן כשיוצרים או מעדכנים את מאגר הצמתים.
gcloud
כדי ליצור מאגר צמתים עם GPUs באשכול, מריצים את הפקודה הבאה:
gcloud container node-pools create POOL_NAME \
--accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
--machine-type MACHINE_TYPE \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1[,COMPUTE_ZONE2] \
[--sandbox=type=gvisor]
[--enable-autoscaling \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES] \
[--scopes=SCOPES] \
[--service-account=SERVICE_ACCOUNT] \
[--reservation-affinity=specific --reservation=RESERVATION_NAME]
מחליפים את מה שכתוב בשדות הבאים:
-
POOL_NAME: השם שבחרתם למאגר הצמתים. -
GPU_TYPE: סוג מאיץ ה-GPU שבו אתם משתמשים. לדוגמה,nvidia-tesla-t4.
AMOUNT: מספר ה-GPU שצריך לצרף לצמתים במאגר הצמתים. המספר הזה צריך להיות זהה למספר ה-GPU של סוג המכונה. לדוגמה, אם מגדירים אתMACHINE_TYPEלערךg4-standard-384, צריך להגדיר אתAMOUNTלערך8, שהוא מספר יחידות ה-GPU שמחוברות לסוג המכונה הזה. עם זאת, אם משתמשים במכונה מסוג G4 עם פחות מ-GPU אחד, צריך להגדיר אתAMOUNTלערך1. ההגדרה הזו נדרשת כשמגדירים אתGPU_TYPEלערךnvidia-rtx-pro-6000ואתMACHINE_TYPEלאחד מהערכים הבאים:-
g4-standard-6(שמינית GPU) -
g4-standard-12(רבע GPU) -
g4-standard-24(חצי GPU) g4-standard-48(מעבד גרפי אחד)
בנוסף, באשכולות שבהם פועלות גרסאות GKE שקודמות ל-1.36, חשוב לפעול לפי ההוראות להכנת עומסי עבודה לסוגי מכונות G4 עם פחות מ-GPU אחד.
-
DRIVER_VERSION: גרסת הדרייבר של NVIDIA שרוצים להתקין. יכול להיות אחת מהאפשרויות הבאות:-
default: התקנת גרסת ברירת המחדל של מנהל ההתקן לגרסת GKE של הצומת. בגרסה 1.30.1-gke.1156000 של GKE ואילך, אם משמיטים את הדגלgpu-driver-version, זו אפשרות ברירת המחדל. בגרסאות קודמות, GKE לא מתקין מנהל התקן אם משמיטים את הדגל הזה. -
latest: התקנת הגרסה העדכנית ביותר של מנהל ההתקן שזמינה לגרסת GKE שלכם. זמין רק לצמתים שמשתמשים במערכת הפעלה שמותאמת לקונטיינרים. -
disabled: דילוג על התקנה אוטומטית של מנהל ההתקן. חובה להתקין מנהל התקן באופן ידני אחרי שיוצרים את מאגר הצמתים. בגרסאות GKE שקודמות ל-1.30.1-gke.1156000, זו אפשרות ברירת המחדל.
האפשרות
gpu-driver-versionזמינה רק בגרסה 1.27.2-gke.1200 של GKE ואילך. בגרסאות קודמות, צריך להשמיט את הדגל הזה ולהתקין מנהל התקן באופן ידני אחרי שיוצרים את מאגר הצמתים. אם משדרגים אשכול או מאגר צמתים קיימים לגרסה הזו או לגרסה מאוחרת יותר, GKE מתקין באופן אוטומטי את גרסת ברירת המחדל של מנהל ההתקן שתואמת לגרסת GKE, אלא אם מציינים אחרת כשמתחילים את השדרוג.-
MACHINE_TYPE: סוג המכונה של Compute Engine לצמתים. נדרש לסוגי ה-GPU הבאים:- מעבדי NVIDIA B200 GPU (תואמים לסוג המאיץ
nvidia-b200ולסדרת המכונות A4) - מעבדי NVIDIA H200 141GB GPU (תואמים לסוג המאיץ
nvidia-h200-141gbולסוג המכונה A3 Ultra), מעבדי NVIDIA H100 80GB GPU (תואמים לסוג המאיץnvidia-h100-80gbולסוג המכונה A3 High) או מעבדי NVIDIA H100 80GB Mega GPU (תואמים לסוג המאיץnvidia-h100-mega-80gbולסוג המכונה A3 Mega). למידע נוסף, קראו על סדרת המכונות A3 במאמרי העזרה של Compute Engine. - מעבדי NVIDIA A100 40GB GPU (תואמים לסוג המאיץ
nvidia-tesla-a100ולסוג המכונה A2 Standard), או מעבדי NVIDIA A100 80GB GPU (תואמים לסוג המאיץnvidia-a100-80gbולסוג המכונה A2 Ultra). למידע נוסף, קראו את המאמר סדרת המכונות A2 במאמרי העזרה של Compute Engine. - מעבדי GPU מסוג NVIDIA L4 (תואמים לסוג המאיץ
nvidia-l4ולסדרת המכונות G2). - מעבדי GPU מסוג NVIDIA RTX PRO 6000 (שתואמים לסוג המאיץ
nvidia-rtx-pro-6000ולסדרת המכונות G4).
לכל שאר ה-GPU, הדגל הזה הוא אופציונלי.
- מעבדי NVIDIA B200 GPU (תואמים לסוג המאיץ
CLUSTER_NAME: שם האשכול שבו רוצים ליצור את מאגר הצמתים.
CONTROL_PLANE_LOCATION: המיקום ב-Compute Engine של מישור הבקרה של האשכול. מציינים אזור לאשכולות אזוריים, או תחום לאשכולות של תחומים.
COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: האזורים הספציפיים שבהם GKE יוצר את צומתי ה-GPU. האזורים צריכים להיות באותו אזור של האשכול, שצוין בדגל--location. סוגי ה-GPU שאתם מגדירים חייבים להיות זמינים בכל אזור שנבחר. אם אתם משתמשים בהזמנה, אתם צריכים לציין את האזורים שבהם יש לה קיבולת. מומלץ תמיד להשתמש בדגל--node-locationsכשיוצרים את מאגר הצמתים, כדי לציין את האזור או האזורים שמכילים את יחידות ה-GPU המבוקשות.אפשר גם ליצור מאגרי צמתים כדי להריץ עומסי עבודה בארגז חול באמצעות gVisor. למידע נוסף, קראו את המאמר GKE Sandbox.
MIN_NODES: המספר המינימלי של צמתים בכל אזור במאגר הצמתים בכל זמן נתון. הערך הזה רלוונטי רק אם משתמשים בדגל--enable-autoscaling.
MAX_NODES: המספר המקסימלי של צמתים בכל אזור במאגר הצמתים בכל זמן נתון. הערך הזה רלוונטי רק אם משתמשים בדגל--enable-autoscaling.אם רוצים, אפשר ליצור את מאגר הצמתים של ה-GPU באמצעות חשבון שירות בהתאמה אישית, על ידי הוספת הדגלים הבאים. אם לא מציינים חשבון שירות, מאגר הצמתים משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:
-
SERVICE_ACCOUNT: השם של חשבון השירות ב-IAM שבו משתמשים הצמתים. -
SCOPES: רשימה מופרדת בפסיקים של היקפי הגישה שרוצים לתת. מוודאים שאחד מההיקפים הואstorage-roאוhttps://www.googleapis.com/auth/devstorage.read_only. מידע נוסף על היקפים זמין במאמר הגדרת היקפי גישה. אם לא תציינו את הדגל scope, יצירת מאגר הצמתים של ה-GPU תיכשל עם שגיאת AccessDenied failed to download gpu_driver_versions.bin from GCS bucket.
-
RESERVATION_NAME: השם של הקצאת ה-GPU שבה רוצים להשתמש. מציינים את הדגל--reservationעם--reservation-affinity=specificכדי להשתמש בקיבולת ה-GPU מהזמנה ספציפית. מידע נוסף זמין במאמר שימוש במקום שמור לפרויקט יחיד ספציפי.
לדוגמה, הפקודה הבאה יוצרת מאגר צמתים עם זמינות גבוהה והתאמה אוטומטית לעומס, t4, עם שני מעבדי T4 GPU לכל צומת, באשכול האזורי t4-cluster.
GKE מתקין באופן אוטומטי את מנהלי ההתקנים שמוגדרים כברירת מחדל בצמתים האלה.
gcloud container node-pools create t4 \
--accelerator type=nvidia-tesla-t4,count=2,gpu-driver-version=default \
--cluster t4-cluster \
--location us-central1 \
--node-locations us-central1-c \
--min-nodes 0 --max-nodes 5 --enable-autoscaling
אפשר גם לעדכן מאגר צמתים קיים. לדוגמה, אם רוצים לעדכן את מנהל ההתקן של ה-GPU כדי לעבור לגרסה העדכנית ביותר:
gcloud container node-pools update t4 \
--accelerator type=nvidia-tesla-t4,count=2,gpu-driver-version=latest \
--cluster t4-cluster \
--location us-central1
המסוף
כדי ליצור מאגר צמתים עם GPUs:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על הכרטיסייה Nodes.
לוחצים על add_box Create user-managed node pool.
אם רוצים, בדף פרטי מאגר הצמתים מסמנים את התיבה הפעלת התאמה אוטומטית לעומס.
מגדירים את מאגר הצמתים לפי הצורך.
בחלונית הניווט, בוחרים באפשרות Nodes.
בקטע Machine configuration, לוחצים על GPU.
בוחרים סוג GPU ומספר GPUs להפעלה בכל צומת.
קוראים את האזהרה ולוחצים על ההגבלות ברורות לי.
בקטע GPU Driver installation, בוחרים אחת מהשיטות הבאות:
- בניהול Google: GKE מתקין את הדרייבר באופן אוטומטי.
אם בוחרים באפשרות הזו, צריך לבחור אחת מהאפשרויות הבאות בתפריט הנפתח Version:
- ברירת מחדל: התקנה של גרסת ברירת המחדל של מנהל ההתקן.
- הגרסה האחרונה: התקנת הגרסה האחרונה של מנהל ההתקן.
- בניהול הלקוח: GKE לא מתקין מנהל התקן. חובה להתקין באופן ידני מנהל התקן תואם, לפי ההוראות במאמר התקנת מנהלי התקנים של NVIDIA GPU.
- בניהול Google: GKE מתקין את הדרייבר באופן אוטומטי.
אם בוחרים באפשרות הזו, צריך לבחור אחת מהאפשרויות הבאות בתפריט הנפתח Version:
לוחצים על יצירה.
Terraform
אתם יכולים ליצור אשכול אזורי עם Terraform עם מעבדי GPU באמצעות מודול Terraform.
מגדירים את המשתנים של Terraform על ידי הוספת הבלוק הבא לקובץ
variables.tf:variable "project_id" { default = PROJECT_ID description = "the gcp_name_short project where GKE creates the cluster" } variable "region" { default = CLUSTER_REGION description = "the gcp_name_short region where GKE creates the cluster" } variable "zone" { default = "COMPUTE_ZONE" description = "the GPU nodes zone" } variable "cluster_name" { default = "CLUSTER_NAME" description = "the name of the cluster" } variable "gpu_type" { default = "GPU_TYPE" description = "the GPU accelerator type" } variable "gpu_driver_version" { default = "DRIVER_VERSION" description = "the NVIDIA driver version to install" } variable "machine_type" { default = "MACHINE_TYPE" description = "The Compute Engine machine type for the VM" }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
CLUSTER_NAME: השם של אשכול GKE. -
CLUSTER_REGION: אזור המחשוב של האשכול. -
COMPUTE_ZONE: האזור הספציפי שבו GKE יוצר את צומתי ה-GPU. האזור חייב להיות באותו אזור שצוין במשתנהregion. באזורים האלה צריכים להיות זמינים סוגי ה-GPU שהגדרתם. מידע נוסף מופיע במאמר זמינות של GPUs לפי אזורים ותחומים. -
GPU_TYPE: סוג מאיץ ה-GPU שבו אתם משתמשים. לדוגמה,nvidia-tesla-t4.
DRIVER_VERSION: גרסת מנהל ההתקן של ה-GPU ש-GKE יתקין באופן אוטומטי. השדה הזה הוא אופציונלי. אלה הערכים הנתמכים:-
INSTALLATION_DISABLED: השבתת ההתקנה האוטומטית של מנהל ההתקן של ה-GPU. חובה להתקין ידנית מנהלי התקנים כדי להפעיל את ה-GPU. בגרסאות GKE שקודמות ל-1.30.1-gke.1156000, זו אפשרות ברירת המחדל אם משמיטים את השדה הזה. -
DEFAULT: התקנה אוטומטית של גרסת ברירת המחדל של מנהל ההתקן, בהתאם לגרסת מערכת ההפעלה של הצומת. בגרסה 1.30.1-gke.1156000 ואילך של GKE, אם משמיטים את השדה הזה, זו אפשרות ברירת המחדל. בגרסאות קודמות, אם משמיטים את השדה הזה, GKE לא מתקין מנהל התקן. -
LATEST: התקנה אוטומטית של גרסת הדרייבר העדכנית ביותר שזמינה לגרסת מערכת ההפעלה של הצומת. זמין רק לצמתים שמשתמשים במערכת הפעלה שמותאמת לקונטיינרים.
אם משמיטים את השדה הזה, GKE לא מתקין מנהל התקן באופן אוטומטי. השדה הזה לא נתמך במאגרי צמתים שמשתמשים בהקצאת צמתים אוטומטית. כדי להתקין מנהל התקן באופן ידני, קראו את הקטע התקנה ידנית של מנהלי התקנים של NVIDIA GPU במאמר הזה.
-
MACHINE_TYPE: סוג המכונה של Compute Engine לצמתים. נדרש לסוגי ה-GPU הבאים:- מעבדי GPU מסוג NVIDIA B200 (תואמים לסוג המאיץ
nvidia-b200ולסדרת המכונות A4) - מעבדי NVIDIA H200 141GB GPU (תואמים לסוג המאיץ
nvidia-h200-141gbולסוג המכונה A3 Ultra), מעבדי NVIDIA H100 80GB GPU (תואמים לסוג המאיץnvidia-h100-80gbולסוג המכונה A3 High) או מעבדי NVIDIA H100 80GB Mega GPU (תואמים לסוג המאיץnvidia-h100-mega-80gbולסוג המכונה A3 Mega). למידע נוסף, קראו על סדרת המכונות A3 במאמרי העזרה של Compute Engine. - מעבדי NVIDIA A100 40GB GPU (תואמים לסוג המאיץ
nvidia-tesla-a100ולסוג המכונה A2 Standard), או מעבדי NVIDIA A100 80GB GPU (תואמים לסוג המאיץnvidia-a100-80gbולסוג המכונה A2 Ultra). למידע נוסף, קראו את המאמר סדרת המכונות A2 במאמרי העזרה של Compute Engine. - מעבדי GPU מסוג NVIDIA L4 (תואמים לסוג המאיץ
nvidia-l4ולסדרת המכונות G2). - מעבדי GPU מסוג NVIDIA RTX PRO 6000 (שתואמים לסוג המאיץ
nvidia-rtx-pro-6000ולסדרת המכונות G4).
לכל שאר ה-GPU, הדגל הזה הוא אופציונלי.
- מעבדי GPU מסוג NVIDIA B200 (תואמים לסוג המאיץ
מוסיפים את הבלוק הבא להגדרות ב-Terraform:
provider "google" { project = var.project_id region = var.region } resource "google_container_cluster" "ml_cluster" { name = var.cluster_name location = var.region initial_node_count = 1 } resource "google_container_node_pool" "gpu_pool" { name = google_container_cluster.ml_cluster.name location = var.region node_locations = [var.zones] cluster = google_container_cluster.ml_cluster.name node_count = 3 autoscaling { total_min_node_count = "1" total_max_node_count = "5" } management { auto_repair = "true" auto_upgrade = "true" } node_config { oauth_scopes = [ "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/trace.append", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", ] labels = { env = var.project_id } guest_accelerator { type = var.gpu_type count = 1 gpu_driver_installation_config { gpu_driver_version = var.gpu_driver_version } } image_type = "cos_containerd" machine_type = var.machine_type tags = ["gke-node", "${var.project_id}-gke"] disk_size_gb = "30" disk_type = "pd-standard" metadata = { disable-legacy-endpoints = "true" } } }
תישלח מ-Terraform בקשה ל- Google Cloud APIs ליצירת אשכול חדש עם מאגר צמתים שמשתמש ב-GPUs. במאגר הצמתים יש בהתחלה שלושה צמתים, וההתאמה האוטומטית לעומס מופעלת. למידע נוסף על Terraform, קראו את מפרט המשאבים של google_container_node_pool באתר terraform.io.
כדי להימנע מעלויות נוספות, צריך להסיר את כל המשאבים שהוגדרו בקובץ התצורה באמצעות הפקודה terraform destroy.
שיטה מומלצת: אתם יכולים גם ליצור אשכול חדש עם מעבדי GPU ולציין אזורים באמצעות הדגל --node-locations. עם זאת, מומלץ ליצור מאגר צמתים נפרד של GPU באשכול קיים, כמו שמוצג בקטע הזה.
התקנה ידנית של מנהלי התקנים של NVIDIA GPU
כדי להתקין באופן ידני מנהלי התקנים של NVIDIA GPU בצמתים, אפשר לפרוס DaemonSet של התקנה בצמתים האלה. כדאי להשתמש בהתקנה ידנית במקרים הבאים:
- בחרתם להשבית את ההתקנה האוטומטית של מנהלי ההתקנים כשאתם יוצרים מאגר צומתי GPU.
- אתם משתמשים בגרסת GKE שמוקדמת מהגרסה המינימלית שנתמכת להתקנה אוטומטית.
- עומס העבודה שלכם דורש גרסה ספציפית של מנהל התקן של NVIDIA שלא זמינה כמנהל ההתקן שמוגדר כברירת מחדל או כמנהל ההתקן העדכני ביותר עם התקנה אוטומטית. לדוגמה, שימוש ב-GPU עם Confidential GKE Nodes.
השתמשו בהתקנה אוטומטית של מנהלי התקנים כשאפשר.
כדי לעשות את זה, מציינים את האפשרות gpu-driver-version בדגל --accelerator כשיוצרים את האשכול הרגיל. אם השתמשתם ב-DaemonSet להתקנה ידנית של מנהלי התקנים של GPU ב-25 בינואר 2023 או לפני כן, יכול להיות שתצטרכו להחיל מחדש את ה-DaemonSet כדי לקבל גרסה שמתעלמת מצמתים שמשתמשים בהתקנה אוטומטית של מנהלי התקנים.
כדי להריץ את DaemonSet להתקנה, מאגר הצמתים של ה-GPU דורש את ההיקף https://www.googleapis.com/auth/devstorage.read_only לתקשורת עם Cloud Storage.
בלי ההיקף הזה, ההורדה של מניפסט DaemonSet להתקנה תיכשל.
ההיקף הזה הוא אחד מהיקפי ההרשאות שמוגדרים כברירת מחדל, ובדרך כלל הוא מתווסף כשיוצרים את האשכול.
בהוראות הבאות מוסבר איך להתקין את הדרייברים בצומתי מערכת הפעלה שמותאמת לקונטיינרים (COS) ו-Ubuntu, ואיך להשתמש ב-Terraform.
COS
כדי לפרוס את ההתקנה של DaemonSet ולהתקין את גרסת ברירת המחדל של מנהל ההתקן של ה-GPU, מריצים את הפקודה הבאה:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yamlכדי להתקין גרסה חדשה יותר של מנהל התקן GPU מטבלת גרסאות מנהלי ההתקנים שבקטע הזה, מריצים את הפקודה הבאה:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded-latest.yamlכדי להתקין גרסה של מנהל התקן GPU שתומכת בהפעלה של עומסי עבודה ב-GPU בצומתי GKE חסויים, מריצים את הפקודה הבאה:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nvidia-driver-installer/cos/daemonset-confidential.yaml
ההתקנה נמשכת כמה שניות. בסיום ההתקנה, הפלאגין של מכשיר ה-GPU של NVIDIA משתמש ב-Kubernetes API כדי להפוך את הקיבולת של ה-GPU של NVIDIA לזמינה.
לכל גרסה של מערכת הפעלה שמותאמת לקונטיינרים יש לפחות גרסה אחת נתמכת של מנהל התקן ל-GPU של NVIDIA. כדי לקבל מידע נוסף על מיפוי גרסת מנהל ההתקן של ה-GPU לגרסת GKE, אתם יכולים:
- מיפוי גרסת GKE וגרסת קובץ האימג' של צומת מערכת ההפעלה שמותאמת לקונטיינרים לגרסת מנהל ההתקן של ה-GPU.
- בטבלה הבאה מפורטות הגרסאות הזמינות של מנהלי ההתקנים של ה-GPU בכל גרסה של GKE:
| גרסאות הדרייברים של NVIDIA ב-GKE | |
|---|---|
| 1.33 | R535 (ברירת מחדל), R570, R575 או R580 |
| 1.32 | R535 (ברירת מחדל), R570, R575 או R580 |
| 1.31 | R535 (ברירת מחדל), R570, R575 או R580 |
| 1.30 | R535 (ברירת מחדל) או R550 |
| 1.29 | R535 (ברירת מחדל) או R550 |
| 1.28 | R535 (ברירת מחדל) או R550 |
| 1.27 | R470 (ברירת מחדל), R525, R535 או R550 |
| 1.26 | R470 (ברירת מחדל), R525, R535 או R550 |
Ubuntu
ה-DaemonSet להתקנה שפורסים תלוי בסוג ה-GPU ובגרסת הצומת ב-GKE, באופן הבא:
לכל ה-GPU חוץ מ-NVIDIA H200, מריצים את הפקודה הבאה:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yamlלמעבדי NVIDIA H200 GPU, מתקינים את הדרייבר
R550:kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R550.yaml
ההתקנה נמשכת כמה שניות. אחרי ההתקנה, הפלאגין של מכשיר ה-GPU של NVIDIA משתמש ב-Kubernetes API כדי להפוך את הקיבולת של ה-GPU של NVIDIA לזמינה.
בטבלה הבאה מפורטות גרסאות הדרייבר שזמינות בכל גרסה של GKE:
| מנהלי התקנים של GPU ב-Ubuntu וגרסאות GKE | ||
|---|---|---|
| 1.33 | R535 (ברירת מחדל) | |
| 1.32 | R535 (ברירת מחדל) | |
| 1.31 | R535 (ברירת מחדל) | |
| 1.30 | R470 או R535 | |
| 1.29 | R470 או R535 | |
| 1.28 | R470 או R535 | |
| 1.27 | R470 או R535 | |
| 1.26 | R470 או R535 | |
Terraform
אתם יכולים להשתמש ב-Terraform כדי להתקין את גרסת ברירת המחדל של מנהל ההתקן של ה-GPU, בהתאם לסוג הצמתים. בשני המקרים, צריך להגדיר את סוג המשאב kubectl_manifest של Terraform.
כדי להתקין את DaemonSet ב-COS, מוסיפים את הבלוק הבא להגדרות ב-Terraform:
data "http" "nvidia_driver_installer_manifest" { url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml" } resource "kubectl_manifest" "nvidia_driver_installer" { yaml_body = data.http.nvidia_driver_installer_manifest.body }כדי להתקין את DaemonSet ב-Ubuntu, מוסיפים את הבלוק הבא להגדרות ב-Terraform:
data "http" "nvidia_driver_installer_manifest" { url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml" } resource "kubectl_manifest" "nvidia_driver_installer" { yaml_body = data.http.nvidia_driver_installer_manifest.body }
מיפוי גרסת GKE וגרסת תמונת הצומת של מערכת ההפעלה שמותאמת לקונטיינרים לגרסת מנהל ההתקן של ה-GPU
כדי למצוא את גרסאות מנהלי ההתקנים של ה-GPU שממופות לגרסאות GKE ולגרסאות של קובצי אימג' של צומתי מערכת הפעלה שמותאמת לקונטיינרים, מבצעים את הפעולות הבאות:- ממפים את גרסאות קובצי האימג' של צומת מערכת ההפעלה שמותאמת לקונטיינרים לגרסאות התיקונים של GKE, בהתאם לגרסת ה-GKE הספציפית שבה רוצים למצוא את גרסת מנהל ההתקן של ה-GPU. לדוגמה, בגרסה 1.33.0-gke.1552000 נעשה שימוש ב-cos-121-18867-90-4.
- בוחרים את אבן הדרך של גרסת קובץ האימג' של הצומת של מערכת ההפעלה שמותאמת לקונטיינרים בנתוני הגרסה של מערכת ההפעלה שמותאמת לקונטיינרים. לדוגמה, בוחרים בגרסה Milestone 121 עבור cos-121-18867-90-4.
- בדף של נתוני הגרסה של אבן הדרך הספציפית, מחפשים את נתוני הגרסה שתואמים לגרסה הספציפית של קובץ האימג' של הצומת של מערכת ההפעלה שמותאמת לקונטיינרים. לדוגמה, בנתוני הגרסה של מערכת הפעלה שמותאמת לקונטיינרים: אבן דרך 121, ראו cos-121-18867-90-4. בטבלה, בעמודה מנהלי התקנים של GPU, לוחצים על הצגת הרשימה כדי לראות את פרטי הגרסה של מנהל ההתקן של ה-GPU.
בגרסה 1.36.0-gke.3302004 ואילך של GKE, גרסת מנהל ההתקן של NVIDIA שמותקנת מתפרסמת באופן אוטומטי כהערות בצומתי GPU שפועלים. כדי להציג את ההערות של גרסת מנהל ההתקן בצומת GPU, מריצים את הפקודה הבאה:
kubectl get node GPU_NODE_NAME -o jsonpath='{.metadata.annotations}'
מחליפים את GPU_NODE_NAME בשם של צומת ה-GPU.
הפלט כולל הערות דומות לאלה:
{
"cloud.google.com/cuda.driver-version.full": "580.126.20",
"cloud.google.com/cuda.driver-version.major": "580",
"cloud.google.com/cuda.driver-version.minor": "126",
"cloud.google.com/cuda.driver-version.revision": "20"
}
התקנת מנהלי התקנים באמצעות הקצאת צמתים אוטומטית (NAP) עם מעבדי GPU
כשמשתמשים בהקצאת צמתים אוטומטית עם יחידות GPU, כברירת מחדל למאגרי הצמתים שהוקצו באופן אוטומטי אין מספיק היקפי הרשאות כדי להתקין את מנהלי ההתקנים. כדי להעניק את ההיקפים הנדרשים, משנים את היקפי ברירת המחדל להקצאת צמתים אוטומטית ומוסיפים את logging.write, monitoring, devstorage.read_only ו-compute, כמו בדוגמה הבאה.
gcloud container clusters update CLUSTER_NAME --enable-autoprovisioning \
--min-cpu=1 --max-cpu=10 --min-memory=1 --max-memory=32 \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/compute
באשכולות שבהם פועלת גרסת GKE 1.32.2-gke.1297000 ואילך, GKE מתקין באופן אוטומטי את גרסת ברירת המחדל של מנהל ההתקן של NVIDIA לכל צומתי ה-GPU, כולל אלה שנוצרו באמצעות הקצאת צמתים אוטומטית. אתם יכולים לדלג על ההוראות הבאות באשכולות שבהם פועלת גרסת GKE 1.32.2-gke.1297000 ואילך.
בגרסה 1.29.2-gke.1108000 של GKE ואילך, אתם יכולים לבחור גרסה של מנהל התקן GPU ש-GKE יתקין באופן אוטומטי בצומתי GPU עם הקצאת משאבים אוטומטית. מוסיפים את השדה הבא למניפסט:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
מחליפים את DRIVER_VERSION באחד מהערכים הבאים:
-
default: מנהל ההתקן היציב שמוגדר כברירת מחדל לגרסת GKE של הצומת. -
latest: גרסת הדרייבר העדכנית ביותר שזמינה לגרסת ה-GKE של הצומת. -
disabled: השבתת ההתקנה האוטומטית של מנהל ההתקן של ה-GPU. אם בוחרים בערך הזה, צריך להתקין באופן ידני מנהלי התקנים כדי להריץ את ה-GPU. בגרסאות GKE שקודמות ל-1.32.2-gke.1297000, זו אפשרות ברירת המחדל אם משמיטים את בורר הצמתים.
איך משתמשים בהקצאת צמתים אוטומטית (NAP)
הגדרת Pods לצריכת GPU
כדי להגדיר Pods לצריכת GPUs, משתמשים במגבלת משאבים. מגדירים מגבלת משאבים במפרט Pod באמצעות צמד המפתח/ערך הבא:
- מפתח:
nvidia.com/gpu - ערך: מספר יחידות ה-GPU שרוצים להשתמש בהן
אי אפשר להשתמש ב-alpha.kubernetes.io/nvidia-gpu כשם של משאב ב-GKE. במקום זאת, צריך להשתמש ב-nvidia.com/gpu בתור שם המשאב.
המניפסט הבא הוא דוגמה למפרט של Pod שמשתמש במעבדי GPU:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
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: 2
שימוש בכמה סוגי GPU
אם רוצים להשתמש בכמה סוגים של מאיצי GPU לכל אשכול, צריך ליצור כמה מאגרי צמתים, שלכל אחד מהם יש סוג מאיץ משלו. GKE מצרף בורר צמתים ייחודי לצומתי GPU כדי לעזור למקם עומסי עבודה של GPU בצמתים עם סוגי GPU ספציפיים:
- מפתח:
cloud.google.com/gke-accelerator - ערך: סוג מאיץ ה-GPU שבו אתם משתמשים.
לדוגמה,
nvidia-tesla-t4.
כדי לטרגט סוגים מסוימים של GPU, אפשר להוסיף את בורר הצמתים הזה למפרט ה-Pod של עומס העבודה. לדוגמה:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
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: 2
nodeSelector:
cloud.google.com/gke-accelerator: nvidia-tesla-t4
שדרוג מאגרי צמתים באמצעות מאיצים (GPU ו-TPU)
GKE משדרג באופן אוטומטי אשכולות Standard, כולל מאגרי צמתים. אם אתם רוצים שהצמתים יפעלו בגרסה מאוחרת יותר, אתם יכולים גם לשדרג ידנית את מאגרי הצמתים. כדי לשלוט באופן השדרוג של האשכול, אתם יכולים להשתמש בערוצי הפצה, בחלונות זמן לתחזוקה והחרגות וברצף השקות.
אתם יכולים גם להגדיר אסטרטגיית שדרוג צמתים למאגר הצמתים, כמו שדרוגי מתח, שדרוגים כחולים-ירוקים או שדרוגים קצרי-מועד. הגדרת האסטרטגיות האלה מאפשרת לשדרג את מאגרי הצמתים באופן שמאזן בצורה אופטימלית בין המהירות לבין ההפרעה לסביבה. במאגרי צמתים של פרוסות TPU עם כמה מארחים, במקום להשתמש באסטרטגיית השדרוג שהוגדרה לצמתים, GKE יוצר מחדש באופן אטומי את כל מאגר הצמתים בשלב אחד. למידע נוסף, קראו את ההגדרה של אטומיות במאמר טרמינולוגיה שקשורה ל-TPU ב-GKE.
כשמשתמשים באסטרטגיית שדרוג של צומת, GKE צריך להקצות באופן זמני משאבים נוספים, בהתאם להגדרות האישיות. אם הקיבולת של Google Cloudלמשאבים של מאגר הצמתים מוגבלת – לדוגמה, אם מופיעות שגיאות של זמינות משאבים כשמנסים ליצור עוד צמתים עם GPUs או TPUs – קראו את המאמר שדרוג בסביבה עם משאבים מוגבלים.
מידע על ספריות NVIDIA CUDA-X
CUDA היא פלטפורמת המחשוב המקבילי ומודל התכנות של NVIDIA למעבדי GPU. כדי להשתמש באפליקציות CUDA, צריך להשתמש בתמונה שכוללת את הספריות. כדי להוסיף את הספריות של NVIDIA CUDA-X, אתם יכולים ליצור קובץ אימג' משלכם ולהשתמש בו. לשם כך, צריך לכלול את הערכים הבאים במשתנה הסביבה LD_LIBRARY_PATH במפרט של הקונטיינר:
-
/usr/local/nvidia/lib64: המיקום של מנהלי ההתקנים של NVIDIA. -
/usr/local/cuda-CUDA_VERSION/lib64: המיקום של ספריות NVIDIA CUDA-X בצומת.מחליפים את
CUDA_VERSIONבגרסת האימג' של CUDA-X שבה השתמשתם. בחלק מהגרסאות יש גם כלי ניפוי באגים ב-/usr/local/nvidia/bin. פרטים נוספים זמינים בתמונת NVIDIA CUDA ב-DockerHub.כדי לבדוק מהי הגרסה המינימלית של מנהל ההתקן של ה-GPU שנדרשת לגרסת ה-CUDA שלכם, עיינו במאמר CUDA Toolkit and Compatible Driver Versions.
מעקב אחרי הביצועים של עומס העבודה בצומת GPU
אם באשכול GKE מופעלים מדדי מערכת, המדדים הבאים זמינים ב-Cloud Monitoring כדי לעקוב אחרי הביצועים של עומסי העבודה ב-GPU:
-
מחזור פעילות (
container/accelerator/duty_cycle): אחוז הזמן בתקופת הדגימה האחרונה (10 שניות) שבה המאיץ עיבד באופן פעיל. בין 1 ל-100. -
Memory Usage (
container/accelerator/memory_used): כמות הזיכרון של המאיץ שהוקצתה, בבייטים. -
Memory Capacity (
container/accelerator/memory_total): נפח הזיכרון הכולל של המאיץ, בבייטים.
המדדים האלה חלים ברמת הקונטיינר (container/accelerator) ולא נאספים בקונטיינרים שתוזמנו ב-GPU שמשתמש בשיתוף זמן של GPU או ב-NVIDIA MPS.
אתם יכולים להשתמש במרכזי בקרה מוגדרים מראש כדי לעקוב אחרי האשכולות עם צומתי GPU. מידע נוסף מופיע במאמר צפייה במדדי ניראות. למידע כללי על מעקב אחרי האשכולות והמשאבים שלהם, קראו את המאמר ניטור GKE.
הצגת מדדי השימוש של עומסי עבודה
אתם יכולים לראות את מדדי השימוש ב-GPU של עומס העבודה במרכז הבקרה Workloads במסוף Google Cloud .
כדי לראות את השימוש ב-GPU של עומס העבודה:
-
נכנסים לדף Workloads במסוף Google Cloud .
כניסה לדף Workloads - בוחרים עומס עבודה.
בלוח הבקרה Workloads מוצגים תרשימים של השימוש בזיכרון ה-GPU, הקיבולת של זיכרון ה-GPU ומחזור העבודה של ה-GPU.
הצגת מדדים של NVIDIA Data Center GPU Manager (DCGM)
אתם יכולים לאסוף מדדי NVIDIA DCGM ולהציג אותם באמצעות השירות המנוהל של Google Cloud ל-Prometheus. באשכולות Autopilot, GKE מתקין את מנהלי ההתקנים. באשכולות רגילים, צריך להתקין את מנהלי ההתקנים של NVIDIA.
הוראות לפריסת חבילת DCGM שמנוהלת על ידי GKE מפורטות במאמר איסוף והצגה של מדדי NVIDIA Data Center GPU Manager (DCGM).
מדדי תקינות של JobSet וצמתים לעומסי עבודה ב-GPU
בנוסף למדדי DCGM, אתם יכולים להשתמש במדדים הבאים כדי לעקוב אחרי התקינות והביצועים של עומסי העבודה ב-GPU, במיוחד כשמריצים אותם כ-JobSets.
מדדי JobSet
המדדים הבאים רלוונטיים גם ל-JobSets של GPU וגם ל-JobSets של TPU עם Job משוכפל אחד:
kubernetes.io/jobset/times_between_interruptionskubernetes.io/jobset/times_to_recoverkubernetes.io/jobset/uptime
למידע נוסף על מדדי המערכת האלה, ראו מדדי Kubernetes.
אפשר גם להשתמש בלוח הבקרה של JobSet במסוף Google Cloud כדי להציג ולנטר את עומסי העבודה ב-GPU:
מדדי תקינות של צמתים
המדדים הבאים ברמת הצומת רלוונטיים לכל הצמתים, כולל אלה עם מעבדים גרפיים:
-
kubernetes.io/node/status_condition: המדד הזה דורש את גרסה 1.32.1-gke.1357001 ומעלה של GKE.
המדדים של הפסקות בצמתים ובמאגרי צמתים חלים גם על צמתים שהם לא TPU.
Kube-state-metrics ל-JobSets
אפשר להשתמש ב-kube-state-metrics של JobSets עם GPUs. כדי לאסוף את המדדים האלה, צריך להשתמש ב-GKE מגרסה 1.32.1-gke.1357001 ואילך. מידע נוסף זמין במאמרי העזרה בנושא מדדי JobSet.
הכנת עומסי עבודה לסוגי מכונות G4 עם פחות מ-GPU אחד
כדי להריץ עומסי עבודה עם CUDA במכונות מסוג G4 עם פחות מ-GPU אחד, באשכולות שבהם פועלות גרסאות GKE שקודמות ל-1.36, צריך לפרוס את מזרק המכשירים של NRI בתור DaemonSet ולהוסיף הערות למאגרים. כך פורסים את ה-DaemonSet ומגדירים את הפודים:
יוצרים את ה-DaemonSet:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nri_device_injector/nri-device-injector.yamlמוסיפים את ההערה הבאה למפרט של ה-Pod:
devices.gke.io/container.CONTAINER_NAME: - path: /dev/nvidia-caps/nvidia-cap1 - path: /dev/nvidia-caps/nvidia-cap2 - path: /dev/nvidia-caps/nvidia-cap3 - path: /dev/nvidia-caps/nvidia-cap4מחליפים את
CONTAINER_NAMEבשם של הקונטיינר של ה-Pod.
הגדרת סגירה מבוקרת של צומתי GPU
באשכולות GKE שבהם מישור הבקרה מריץ את גרסה 1.29.1-gke.1425000 ואילך, צומתי GPU תומכים באותות SIGTERM שמתריעים לצומת על השבתה קרובה. בצומתי GPU, אפשר להגדיר את ההתראה על השבתה קרובה עד 60 דקות.
כדי להגדיר את GKE כך שיסיים את עומסי העבודה בצורה תקינה במסגרת הזמן של ההתראה, פועלים לפי השלבים שמפורטים במאמר ניהול השיבושים בצומתי GKE עבור GPUs ו-TPUs.
המאמרים הבאים
- מידע נוסף על מאגרי צמתים
- איך משתמשים בפלטפורמת CPU מינימלית לצמתים
- איך יוצרים ומגדירים קונטיינר מקומי של למידה עמוקה באמצעות Docker
- איך משתמשים ב-Confidential GKE Nodes במאגרי צמתים של GPU (גרסת טרום-השקה (Preview)).
- מידע על הרצה בארגז חול (Sandbox) של עומסי עבודה ב-GPU באמצעות GKE Sandbox