בדף הזה מוסבר איך להריץ ולבצע אופטימיזציה של עומסי עבודה (workload) שדורשים הרבה משאבי מחשוב, כמו בינה מלאכותית (AI) ועיבוד גרפי, על ידי צירוף של מאיצי חומרה של מעבדים גרפיים (GPU) של NVIDIA® ושימוש בהם בצמתים של אשכולות רגילים של Google Kubernetes Engine (GKE). אם אתם משתמשים ב-Autopilot Pods, כדאי לעיין במאמר בנושא פריסת עומסי עבודה של GPU ב-Autopilot.
אם רוצים לפרוס אשכולות עם מעבדי GPU של NVIDIA B300, NVIDIA B200 או NVIDIA H200 בנפח 141GB, כדאי לעיין במשאבים הבאים:
- כדי ליצור אשכולות GKE, אפשר לעיין במאמר יצירת אשכול Google Kubernetes Engine שעבר אופטימיזציה ל-AI עם הגדרת ברירת מחדל.
- כדי ליצור אשכולות Slurm, אפשר לעיין במאמרים הבאים:
סקירה כללית
באמצעות GKE, אפשר ליצור מאגרי צמתים שמצוידים במעבדי GPU. מעבדי GPU מספקים כוח מחשוב לביצוע משימות של למידה עמוקה, כמו זיהוי תמונות, עיבוד שפה טבעי�� (NLP) ומשימות אחרות שדורשות הרבה כוח מחשוב, כמו המרת קוד של סרטונים ועיבוד תמונות. במצב GKE Standard, אפשר לצרף חומרת GPU לצמתים באשכולות, ואז להקצות משאבי GPU לעומסי עבודה מבוססי-קונטיינרים שפועלים בצמתים האלה.
מידע נוסף על תרחישי שימוש ביחידות GPU זמין בדף יחידות GPU של Google Cloud. מידע נוסף על מעבדי GPU ב-GKE ועל ההבדלים בין מצב Standard למצב Autopilot זמין במאמר בנושא מעבדי GPU ב-GKE.
אפשר גם להשתמש במעבדי GPU עם מכונות וירטואליות מסוג Spot אם עומסי העבודה יכולים לעמוד בהפרעות תכופות בצמתים. שימוש במכונות וירטואליות מסוג Spot מפחית את העלות של הפעלת מעבדי GPU. מידע נוסף זמין במאמר שימוש במכונות וירטואליות מסוג Spot עם מאגרי צמתים של GPU.
החל מגרסה 1.29.2-gke.1108000, אפשר ליצור מאגרי צמתים של GPU ב-GKE Sandbox. מידע נוסף זמין במאמרים GKE Sandbox וGKE Sandbox Configuration.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
דרישות לשימוש ביחידות GPU ב-GKE
הדרישות לשימוש ביחידות GPU ב-GKE הן:
מכסת GPU: כדי ליצור צמתי GPU, צריך לוודא שיש לכם מכסת GPU ב-Compute Engine באזור שבחרתם. כדי לוודא שיש לכם מספיק מכסת GPU בפרויקט, אפשר לעיין במכסות במסוף Google Cloud .
אם אתם צריכים מכסת GPU נוספת, אתם צריכים לבקש מכסת GPU במסוף Google Cloud . אם יש לכם חשבון לחיוב פעיל, הפרויקט יקבל מכסה באופן אוטומטי אחרי שתשלחו את בקשת המכסה.
כברירת מחדל, חשבונות בתקופת ניסיון בחינם לא מקבלים מכסת GPU.
דרייברים של NVIDIA GPU: כשיוצרים אשכול או מאגר צמתים, אפשר להגדיר ל-GKE להתקין באופן אוטומטי גרסת דרייבר על סמך גרסת GKE. אם לא תגדירו ל-GKE להתקין באופן אוטומטי את מנהלי ההתקנים של ה-GPU, תצטרכו להתקין את מנהלי ההתקנים באופן ידני.
סדרת המכונות: סוג ה-GPU שבו אפשר להשתמש תלוי בסדרת המכונות, באופן הבא:
- סדרת מכונות A4X Max: מעבדים גרפיים GB300.
- סדרת מכונות A4X: יחידות GPU מדגם GB200.
- סדרת מכונות A4: יחידות GPU מדגם B200.
- סדרת מכונות A3: יחידות GPU מדגם H200 (A3 Ultra) ויחידות GPU מדגם H100 (A3 Mega, High, Edge).
- סדרת מכונות A2: מעבדי GPU מסוג A100.
- סדרת מכונות G4: יחידות GPU מסוג RTX PRO 6000.
- סדרת מכונות 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:
L4 GPUs ו-H100 GPUs: דרייבר NVIDIA בגרסה 535 ואילך
מעבדי H200 GPU: דרייבר NVIDIA בגרסה 550 ואילך
מעבדי B200 GPU: דרייבר NVIDIA בגרסה 570 ואילך
מעבדים גרפיים (GPU) מסוג RTX PRO 6000: דרייבר NVIDIA בגרסה 580 ואילך. התאימות של הגרסה הזו לא כוללת מכונות מסוג G4 עם פחות ממעבד גרפי אחד, ��י הן לא תומכות בתמונות של צומתי 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 שבו אפשר להשתמש תלוי בסדרת המכונות, באופן הבא:
- סדרת מכונות A4X Max: מעבדים גרפיים GB300.
- סדרת מכונות A4X: יחידות GPU מדגם GB200.
- סדרת מכונות A4: יחידות GPU מדגם B200.
- סדרת מכונות A3: יחידות GPU מדגם H200 (A3 Ultra) ויחידות GPU מדגם H100 (A3 Mega, High, Edge).
- סדרת מכונות A2: מעבדים גרפיים מסוג A100.
- סדרת מכונות G4: יחידות GPU מסוג RTX PRO 6000.
- סדרת מכונות G2: מעבדי GPU מסוג L4.
- סדרת מכונות N1: מעבדי GPU מסוג NVIDIA T4, NVIDIA V100, NVIDIA P100 או NVIDIA P4.
צריך לוודא שיש לכם מספיק מכסה בפרויקט לסדרת המכונות שמתאימה לסוג ולכמות ה-GPU שבחרתם.
אין תמיכה ב-GPU במאגרי צמתים של Windows Server.
אשכולות GKE Standard שפועלים בגרסאות מוקדמות יותר מ-1.34.1-gke.1279000 לא תומכים בהקצאה אוטומטית של צמתים ליצירת מאגרי צמתים עם GPUs מסוג RTX PRO 6000. עם זאת, באשכולות שמופעלות בהם גרסאות קודמות יש תמיכה בשינוי הגודל של מאגרי צמתים קיימים באמצעות התאמה אוטומטית של גודל האשכול.
אשכולות GKE Standard שמריצים גרסה 1.28.2-gke.1098000 או גרסה מוקדמת יותר לא תומכים בהקצאה אוטומטית של צמתים ליצירת מאגרי צמתים עם GPUs ברמה 4. עם זאת, באשכולות שפועלות בהם גרסאות קודמות יש תמיכה בשינוי גודל של מאגרי צמתים קיימים באמצעות התאמת גודל האשכול באופן אוטומטי.
לסוגי מכונות G4 עם פחות מ-GPU אחד יש את המגבלות הנוספות הבאות:
- אי אפשר להשתמש בתמונות של צומת Ubuntu.
- צריך להכין את עומסי העבודה להפעלה בסוגי המכונות האלה באשכולות שמופעלות בהם גרסאות GKE מוקדמות יותר מגרסה 1.36.
- אי אפשר להשתמש ב-GPU עם כמה מופעים במקביל, ב-NVIDIA MPS או ב-GPU עם שיתוף זמן.
זמינות של מעבדי GPU לפי אזורים ואזורים
מעבדי GPU זמינים באזורים ותחומים ספציפיים. כשמבקשים מכסת GPU, חשוב לקחת בחשבון את האזורים שבהם מתכוונים להפעיל את האשכולות.
רשימה מ��אה של האזורים והתחומים הרלוונטיים מופיעה במאמר בנושא מעבדי GPU ב-Compute Engine.
אפשר גם לראות את יחידות ה-GPU שזמינות באזור באמצעות Google Cloud CLI. כדי לראות רשימה של כל סוגי מאיצי ה-GPU שנתמכים בכל אזור, מריצים את הפקודה הבאה:
gcloud compute accelerator-types list
תמחור
למידע על תמחור של יחידות GPU, אפשר לעיין בטבלת התמחור בדף של Google Cloud יחידות GPU.
לוודא שיש מספיק מכסת GPU
מכסת ה-GPU היא המספר הכולל של יחידות GPU שאפשר להפעיל בGoogle Cloud פרויקט. כדי ליצור אשכולות עם יחידות GPU, בפרויקט שלכם צריכה להיות מכסת GPU מספקת.
המכסה של ה-GPU צריך להיות שווה לפחות למספר הכולל של יחידות ה-GPU שאתם מתכוונים להפעיל באשכול. אם מפעילים התאמה אוטומטית לעומס באשכול, צריך לבקש הקצאת GPU לפחות במספר ששווה למספר מעבדי ה-GPU לכל צומת כפול המספר המקסימלי של הצמתים באשכול.
לדוגמה, אם יוצרים אשכול עם שלושה צמתים שמריצים שני GPU לכל צומת, הפרויקט צריך לפחות מכסת שימוש של שישה GPU.
בקשת מכסת 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 (מגבלת מכסה חדשה) לכל בקשה להגדלת מכסה.
בשדה תיאור הבקשה כותבים את פרטי הבקשה.
לוחצים על הבא.
בתיבת הדו-שיח Override confirmation, לוחצים על Confirm.
במס�� פרטים ליצירת קשר, מזינים את השם ומספר הטלפון שבעלי ההרשאות יכולים להשתמש בהם כדי לאשר את הבקשה לשינוי המכסה.
לוחצים על Submit request.
תקבלו הודעת אישור באימייל כדי לעקוב אחרי השינוי במכסת הנפח.
הפעלת יחידות GPU באשכולות GKE Standard
כדי להריץ GPU באשכולות GKE Standard, צריך ליצור מאגר צמתים עם GPU מצורף.
כדי לשפר את היעילות בעלויות, את האמינות ואת הזמינות של מעבדי GPU ב-GKE, מבצעים את הפעולות הבאות:
- יוצרים מאגרי צמתים נפרדים של GPU. לכל מאגר צמתים, מגבילים את מיקום הצומת לאזורים שבהם כרטיסי ה-GPU שרוצים להשתמש בהם זמינים.
- מפעילים את שינוי הגודל האוטומטי בכל מאגר צמתים.
- כדי לשפר את הזמינות, אפשר להשתמש באשכולות אזוריים כדי לשכפל את רמת הבקרה של Kubernetes באזורים שונים באזור.
- מגדירים את GKE כך שיותקנו אוטומטית מאגרי הצמתים מנהלי ההתקנים של ה-GPU שמוגדרים כברירת מחדל או הגרסה העדכנית ביותר שלהם, כדי שלא תצטרכו להתקין ולנהל ידנית את גרסאות מנהלי ההתקנים.
כפי שמתואר בקטעים הבאים, GKE משתמש ב-node taints וב-tolerations כדי לוודא ש-Pods לא מתוזמנים לצמתים לא מתאימים.
הוספת כתם למאגר צמתים של GPU כדי למנוע תזמון לא מתאים
הטלת כתם על צומת מאפשרת לסמן צומת כך שהמתזמן יימנע משימוש בו עבור פודים מסוימים או ימנע את השימוש בו. על סמך התרחישים הבאים, GKE מוסיף אוטומטית את ה-taint nvidia.com/gpu=present:NoSchedule, או שאתם יכולים להוסיף אותו באופן ידני:
כשמוסיפים מאגר צמתים עם GPU לאשכול קיים שכבר מופעל בו מאגר צמתים ללא GPU, GKE מסמן באופן אוטומטי את צמתי ה-GPU באמצעות הסימון הבא של הצומת:
- מקרא:
nvidia.com/gpu - ערך:
present - אפקט:
NoSchedule
GKE מוסיף את הכתם הזה רק אם יש לפחות מאגר צמתים אחד ללא GPU באשכול.
- מקרא:
כשמוסיפים מאגר צמתים של GPU לאשכול שיש בו רק מאגרי צמתים של GPU, או כשיוצרים אשכול חדש שבו מאגר צמתי ברירת המחדל כולל GPU מצורף, אפשר להגדיר ידנית את ה-taints למאגר הצמתים החדש עם הערכים הבאים:
- מקרא:
nvidia.com/gpu - ערך:
present - אפקט:
NoSchedule
- מקרא:
אם בעתיד תוסיפו מאגר צמתים ללא GPU לאשכול, GKE לא יחיל את ההגדרה הזו רטרואקטיבית על צמתי GPU קיימים. צריך להגדיר ידנית את ה-taints למאגר הצמתים החדש.
הגבלת התזמון באופן אוטומטי באמצעות טולרנטיות
התכונה Tolerations מאפשרת לכם להגדיר פודים שאפשר להשתמש בהם בצמתים מסוג Tainted. GKE מחיל אוטומטית טולרנטיות, כ�� שרק פודים שמבקשים GPU מתוזמנים בצמתי 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
כדי ליצור מאגר צמתים עם יחידות GPU באשכול, מריצים את הפקודה הבאה:
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(GPU אחד)
בנוסף, באשכולות שמריצים גרסאות GKE מוקדמות יותר מ-1.36, חשוב לפעול לפי ההוראות להכנת עומסי עבודה לסוגי מכונות G4 עם פחות מ-GPU אחד.
-
DRIVER_VERSION: גרסת הדרייבר של NVIDIA להתקנה. יכול להיות אחד מהערכים הבאים:-
default: התקנת גרסת ברירת המחדל של מנהל ההתקן עבור גרסת GKE של הצומת. ב-GKE בגרסה 1.30.1-gke.1156000 ואילך, אם לא מציינים את הדגלgpu-driver-version, זוהי ברירת המחדל. בגרסאות קודמות, GKE לא מתקין מנהל התקן אם לא מציינים את הדגל הזה. -
latest: התקנת הגרסה האחרונה של מנהל ההתקן שזמינה לגרסת GKE שלכם. האפשרות הזו זמינה רק לצמתים שמשתמשים במערכת הפעלה שמותאמת לקונטיינרים. -
disabled: דילוג על התקנה אוטומטית של מנהל התקן. חובה להתקין מנהל התקן באופן ידני אחרי שיוצרים את מאגר הצמתים. בגרסאות GKE קודמות לגרסה 1.30.1-gke.1156000, זו האפשרות שמוגדרת כברירת המחדל.
האפשרות
gpu-driver-versionזמינה רק ב-GKE מגרסה 1.27.2-gke.1200 ואילך. בגרסאות קודמות, משמיטים את הדגל הזה ומתקינים מנהל התקן באופן ידני אחרי שיוצרים את מאגר הצמתים. אם משדרגים אשכול קיים או מאגר צמתים לגרסה הזו או לגרסה מאוחרת יותר, מערכת GKE מתקינה באופן אוטומטי את גרסת ברירת המחדל של מנהל ההתקן שתואמת לגרסת GKE, אלא אם מציינים אחרת כשמתחילים את השדרוג.-
MACHINE_TYPE: סוג המכונה ב-Compute Engine עבור הצמתים. נדרש לסוגי ה-GPU הבאים:- מעבדי NVIDIA B200 GPU (שמתאימים לסוג המאיץ
nvidia-b200ולסדרת המכונות A4) - מעבדי GPU NVIDIA H200 בנפח 141 GB (שמתאימים לסוג המאיץ
nvidia-h200-141gbולסוג המכונה A3 Ultra), או מעבדי GPU NVIDIA H100 בנפח 80 GB (שמתאימים לסוג המאיץnvidia-h100-80gbולסוג המכונה A3 High), או מעבדי GPU NVIDIA H100 בנפח 80GB Mega (שמתאימים לסוג המאיץnvidia-h100-mega-80gbולסוג המכונה A3 Mega). מידע נוסף זמין במאמר סדרת מכונות A3 במסמכי התיעוד של Compute Engine. - מעבדי GPU NVIDIA A100 40 GB (שמתאימים לסוג המאיץ
nvidia-tesla-a100ולסוג המכונה A2 Standard), או מעבדי GPU NVIDIA A100 80GB (שמתאימים לסוג המאיץnvidia-a100-80gbולסוג המכונה A2 Ultra). מידע נוסף זמין במאמר סדרת מכונות A2 במסמכי התיעוד של Compute Engine. - מעבדי NVIDIA L4 GPU (שמתאימים לסוג המאיץ
nvidia-l4ולסדרת המכונות G2). - GPU מסוג NVIDIA RTX PRO 6000 (שמתאים ל
nvidia-rtx-pro-6000סוג המאיץ ולסדרת המכונות G4).
לכל שאר המעבדים הגרפיים, הדגל הזה הוא אופציונלי.
- מעבדי 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 מהזמנה ספציפית. מידע נוסף זמין במאמר בנושא שימוש בהזמנה ספציפית לפרויקט יחיד.
לדוגמה, הפקודה הבאה יוצרת מאגר צמתים עם קנה מידה אוטומטי וזמינות גבוהה, p100, עם שני כרטיסי P100 GPU לכל צומת, באשכול האזורי p100-cluster.
GKE מתקין אוטומטית את מנהלי ההתקנים שמוגדרים כברירת מחדל בצמתים האלה.
gcloud container node-pools create p100 \
--accelerator type=nvidia-tesla-p100,count=2,gpu-driver-version=default \
--cluster p100-cluster \
--location us-central1 \
--node-locations us-central1-c \
--min-nodes 0 --max-nodes 5 --enable-autoscaling
אפשר גם לעדכן מאגר צמתים קיים. לדוגמה, יכול להיות שתרצו לעדכן את הדרייבר של ה-GPU כדי לעבור לדרייבר הזמין העדכני ביותר:
gcloud container node-pools update p100 \
--accelerator type=nvidia-tesla-p100,count=2,gpu-driver-version=latest \
--cluster p100-cluster \
--location us-central1
המסוף
כדי ליצור מאגר צמתים עם יחידות GPU:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על הכרטיסייה Nodes.
לוחצים על add_box Create user-managed node pool (יצירת מאגר צמתים בניהול המשתמש).
אופציונלי: בדף Node pool details (פרטי מאגר הצמתים), מסמנים את התיבה Enable autoscaling (הפעלת שינוי גודל אוטומטי).
מגדירים את מאגר הצמתים לפי הצורך.
בחלונית הניווט, בוחרים באפשרות Nodes (צמתים).
בקטע Machine configuration (הגדרת המכונה), לוחצים על GPU (מעבד גרפי).
בוחרים סוג GPU ומספר יחידות GPU להפעלה בכל צומת.
קוראים את האזהרה ולוחצים על ההגבלות ברורות לי.
בקטע GPU Driver installation (התקנת מנהל התקן של GPU), בוחרים באחת מהשיטות הבאות:
- בניהול Google: GKE מתקין מנהל התקן באופן אוטומטי.
אם בוחרים באפשרות הזו, בוחרים אחת מהאפשרויות הבאות בתפריט הנפתח Version:
- Default (ברירת מחדל): התקנת גרסת ברירת המחדל של מנהל ההתקן.
- העדכנית ביותר: התקנת הגרסה העדכנית ביותר של מנהל ההתקן.
- בניהול הלקוח: לא מותקן מנהל התקן ב-GKE. חובה להתקין ידנית דרייבר תואם באמצעות ההוראות שבמאמר התקנת דרייברים של מכשירי GPU של NVIDIA.
- בניהול 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 שהגדרתם. מידע נוסף זמין במאמר זמינות של GPU לפי אזורים ותחומים. -
GPU_TYPE: הסוג של מאיץ GPU שבו אתם משתמשים. לדוגמה,nvidia-tesla-t4.
DRIVER_VERSION: גרסת מנהל ההתקן של GPU ש-GKE מתקין באופן אוטומטי. השדה הזה הוא אופציונלי. יש תמיכה בערכים הבאים:-
INSTALLATION_DISABLED: השבתה של התקנה אוטומטית של מנהל התקן של GPU. חובה להתקין ידנית מנהלי התקנים כדי להפעיל את מעבדי ה-GPU. בגרסאות GKE קודמות ל-1.30.1-gke.1156000, זו האפשרות שמוגדרת כברירת מחדל אם לא מציינים את השדה הזה. -
DEFAULT: התקנה אוטומטית של גרסת ברירת המחדל של מנהל ההתקן עבור גרסת מערכת ההפעלה של הצומת. ב-GKE בגרסה 1.30.1-gke.1156000 ואילך, אם משמיטים את השדה הזה, זו האפשרות שמוגדרת כברירת מחדל. בגרסאות קודמות, אם לא מציינים את השדה הזה, GKE לא מתקין מנהל התקן. -
LATEST: התקנה אוטומטית של הגרסה האחרונה של מנהל ההתקן שזמינה לגרסת ה-OS של הצומת. האפשרות זמינה רק לצמתים שמשתמשים במערכת הפעלה שמותאמת לקונטיינרים.
אם משמיטים את השדה הזה, GKE לא מתקין מנהל התקן באופן אוטומטי. השדה הזה לא נתמך במאגרי צמתים שמשתמשים בהקצאה אוטומטית של צמתים. כדי להתקין דרייבר באופן ידני, אפשר לעיין במאמר התקנה ידנית של דרייברים של NVIDIA GPU.
-
MACHINE_TYPE: סוג המכונה ב-Compute Engine עבור הצמתים. נדרש לסוגי ה-GPU הבאים:- מעבדי NVIDIA B200 GPU (שמתאימים לסוג המאיץ
nvidia-b200ולסדרת המכונות A4) - מעבדי GPU NVIDIA H200 בנפח 141 GB (שמתאימים לסוג המאיץ
nvidia-h200-141gbולסוג המכונה A3 Ultra), או מעבדי GPU NVIDIA H100 בנפח 80 GB (שמתאימים לסוג המאיץnvidia-h100-80gbולסוג המכונה A3 High), או מעבדי GPU NVIDIA H100 בנפח 80GB Mega (שמתאימים לסוג המאיץnvidia-h100-mega-80gbולסוג המכונה A3 Mega). מידע נוסף זמין במאמר סדרת מכונות A3 במסמכי התיעוד של Compute Engine. - מעבדי GPU NVIDIA A100 40 GB (שמתאימים לסוג המאיץ
nvidia-tesla-a100ולסוג המכונה A2 Standard), או מעבדי GPU NVIDIA A100 80GB (שמתאימים לסוג המאיץnvidia-a100-80gbולסוג המכונה A2 Ultra). מידע נוסף זמין במאמר סדרת מכונות A2 במסמכי התיעוד של Compute Engine. - מעבדי NVIDIA L4 GPU (שמתאימים לסוג המאיץ
nvidia-l4ולסדרת המכונות G2). - GPU מסוג NVIDIA RTX PRO 6000 (שמתאים ל
nvidia-rtx-pro-6000סוג המאיץ ולסדרת המכונות G4).
לכל שאר המעבדים הגרפיים, הדגל הזה הוא אופציונלי.
- מעבדי NVIDIA B200 GPU (שמתאימים לסוג המאיץ
מוסיפים את הבלוק הבא להגדרות של 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 בקשה ל-APIs כדי ליצור אשכול חדש עם מאגר צמתים שמשתמשים ב-GPU. Google Cloud במאגר הצמתים יש בהתחלה שלושה צמתים, והסקלביליות האוטומטית מופעלת. מידע נוסף על 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 כשיוצרים את אשכול Standard. אם השתמשתם ב-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
ההתקנה נמשכת כמה שניות. אחרי שההתקנה מסתיימת, הפלאגין של מכשיר NVIDIA GPU משתמש ב-Kubernetes API כדי להפוך את הקיבולת של NVIDIA GPU לזמינה.
לכל גרסה של מערכת הפעלה שמותאמת לקונטיינרים יש לפחות גרסה אחת נתמכת של מנהל התקן של NVIDIA GPU. כדי לקבל מידע נוסף על מיפוי הגרסה של מנהל ההתקן של ה-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 GPU, מריצים את הפקודה הבאה:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yamlעבור יחידות GPU מסוג NVIDIA H200, מתקינים את הדרייבר
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.
- בוחרים את אבן הדרך של גרסת קובץ האימג' של הצומת של מערכת ההפעלה שמותאמת לקונטיינרים בהערות הגרסה של מערכת ההפעלה שמותאמת לקונטיינרים. לדוגמה, בוחרים באבן דרך 121 עבור cos-121-18867-90-4.
- בדף הערות הגרסה של אבן הדרך הספציפית, מחפשים את הערת הגרסה שמת��ימה לגרסה הספציפית של תמונת הצומת של מערכת ההפעלה שמותאמת לקונטיינרים. לדוגמה, בהערות מוצר של מערכת הפעלה שמותאמת לקונטיינרים: אבן דרך 121, אפשר לראות את cos-121-18867-90-4. בטבלה בעמודה GPU Drivers, לוחצים על See List כדי לראות את פרטי הגרסה של מנהל ההתקן של ה-GPU.
התקנת דרייברים באמצעות הקצאת צמתים אוטומטית (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 ואילך.
ב-GKE בגרסה 1.29.2-gke.1108000 ואילך, אפשר לבחור גרסה של מנהל התקן של GPU כדי ש-GKE יתקין אותה באופן אוטומטי בצמתים של GPU שהוקצו אוטומטית. מוסיפים את השדה הבא למניפסט:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
מחליפים את DRIVER_VERSION באחד מהערכים הבאים:
-
default: מנהל ההתקן היציב שמוגדר כברירת מחדל לגרסת GKE של הצומת. -
latest: הגרסה האחרונה של מנהל ההתקן שזמינה לגרסת GKE של הצומת. -
disabled: השבתה של התקנה אוטומטית של מנהל התקן של GPU. אם בוחרים את הערך הזה, צריך להתקין ידנית מנהלי התקנים כדי להריץ את המעבדים הגרפיים. בגרסאות GKE מוקדמות יותר מ-1.32.2-gke.1297000, זוהי אפשרות ברירת המחדל אם לא מציינים את סלקטור הצמתים.
מידע נוסף על הקצאת משאבים אוטומטית של צמתים
הגדרת Pods לשימוש ב-GPU
משתמשים במגבלת משאבים כדי להגדיר את השימוש ב-GPU ב-Pods. מגדירים מגבלת משאבים במפרט של 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 מצרף node selector ייחודי לצמתי 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, כולל מאגרי צמתים. אפשר גם לשדרג באופן ידני מאגרי צמתים אם רוצים שהצמתים יהיו בגרסה מאוחרת יותר מוקדם יותר. כדי לשלוט באופן השדרוגים באשכול, אפשר להשתמש בערוצי הפצה, בחלונות זמן ותקופות השבתה לתחזוקה וברצף השדרוגים.
אפשר גם להגדיר אסטרטגיית שדרוג של צומת למאגר הצמתים, כמו שדרוגים מצטברים, שדרוגים מסוג blue-green או שדרוגים לזמן קצר. אם תגדירו את האסטרטגיות האלה, תוכלו לוודא שהשדרוג של מאגרי הצמתים יתבצע בצורה שתשיג את האיזון האופטימלי בין מהירות לשיבוש בסביבה שלכם. במאגרי צמתים של פרוסות TPU עם כמה מארחים, במקום להשתמש באסטרטגיית שדרוג הצמתים שהוגדרה, מערכת GKE יוצרת מחדש את כל מאגר הצמתים בפעולה אחת. מידע נוסף זמין בהגדרה של אטומיות בטרמינולוגיה שקשורה ל-TPU ב-GKE.
שימוש באסטרטגיה לשדרוג צמתים מחייב את GKE להקצות משאבים נוספים באופן זמני, בהתאם להגדרה. אם ל- Google Cloudיש קיבולת מוגבלת למשאבים של מאגר הצמתים – לדוגמה, אם מופיעות שגיאות של זמינות משאבים כשמנסים ליצור עוד צמתים עם GPU או TPU – כדאי לעיין במאמר בנושא שדרוג בסביבה עם מגבלות על משאבים.
מידע על ספריות 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. -
השימוש בזיכרון (
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.
הכנת עומסי עבודה לסוגי מכונות G4 עם פחות מ-GPU אחד
כדי להריץ עומסי עבודה עם CUDA בסוגי מכונות G4 שיש להן פחות מ-GPU אחד עם אשכולות שמריצים גרסאות GKE מוקדמות יותר מ-1.36, צריך לפרוס את ה-NRI device injector בתור DaemonSet ולהוסיף הערות למאגרי הנתונים הדיגיטליים. בשלבים הבאים מוסבר איך לפרוס את DaemonSet ולהגדיר את ה-Pods:
יוצרים את 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 עבור GPU ו-TPU.
המאמרים הבאים
- מידע נוסף על מאגרי צמתים
- איך משתמשים בפלטפורמת CPU מינימלית לצמתים
- איך יוצרים ומגדירים קונטיינר מקומי ללמידה עמוקה באמצעות Docker
- איך משתמשים ב-Confidential GKE Nodes במאגרי צומתי GPU (גרסת Preview)
- מידע על שימוש בארגז חול (Sandbox) לעומסי עבודה של GPU עם GKE Sandbox