בדף הזה מוסבר איך להריץ ולבצע אופטימיזציה של עומסי עבודה שדורשים הרבה משאבי מחשוב, כמו בינה מלאכותית (AI) ועיבוד גרפי, על ידי צירוף של מאיצי חומרה של מעבדים גרפיים (GPU) של NVIDIA® ושימוש בהם בצמתים של אשכולות Standard ב-Google Kubernetes Engine (GKE). אם אתם משתמשים ב-Autopilot Pods, כדאי לעיין במאמר פריסת עומסי עבודה של GPU ב-Autopilot.
אם רוצים לפרוס אשכולות עם מעבדי GPU של NVIDIA B200 או NVIDIA H200 בנפח 141GB, אפשר לעיין במשאבים הבאים:
- כדי ליצור אשכולות GKE, אפשר לעיין במאמר יצירת אשכול Google Kubernetes Engine שעבר אופטימיזציה ל-AI עם הגדרת ברירת מחדל.
- כדי ליצור אשכולות Slurm, אפשר לעיין במאמר בנושא יצירת אשכול Slurm שעבר אופטימיזציה ל-AI.
סקירה כללית
באמצעות GKE, אפשר ליצור מאגרי צמתים שמצוידים ביחידות GPU. מעבדי GPU מספקים כוח מחשוב להפעלת משימות של למידה עמוקה, כמו זיהוי תמונות, עיבוד שפה טבעית (NLP) ומשימות אחרות שדורשות כוח מחשוב רב, כמו קידוד מחדש של סרטונים ועיבוד תמונות. במצב GKE Standard, אפשר לצרף חומרת GPU לצמתים באשכולות, ואז להקצות משאבי GPU לעומסי עבודה מבוססי-קונטיינרים שפועלים בצמתים האלה.
מידע נוסף על תרחישי שימוש ביחידות GPU זמין בדף יחידות GPU של Google Cloud. מידע נוסף על מעבדי GPU ב-GKE ועל ההבדלים בין מצב רגיל למצב 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 (GKE גרסה 1.34.0-gke.1662000 ואילך).
- סדרת מכונות G2: מעבדי GPU מסוג L4.
- סדרת מכונות N1: מעבדי GPU מסוג NVIDIA T4, NVIDIA V100, NVIDIA P100 או NVIDIA P4.
צריך לוודא שיש לכם מספיק מכסה בפרויקט לסדרת המכונות שמתאימה לסוג ולכמות ה-GPU שבחרתם.
יחידות GPU בצמתי Ubuntu: אם אתם משתמשים ביחידות GPU עם צמתי Ubuntu, חלות הדרישות הבאות:
תאימות לדרייבר:
L4 GPUs ו-H100 GPUs: דרייבר NVIDIA בגרסה 535 ואילך
H200 GPUs: NVIDIA driver version 550 or later
מעבדי B200 GPU: דרייבר NVIDIA בגרסה 570 ואילך
יחידות GPU מסוג RTX PRO 6000: דרייבר NVIDIA בגרסה 580 ואילך
אם גרסת דרייבר נדרשת או גרסה מאוחרת יותר לא מוגדרת כגרסת ברירת המחדל בגרסת GKE שלכם, אתם צריכים להתקין באופן ידני דרייבר נתמך בצמתים.
תאימות גרסאות:
כשמשתמשים בסדרת מכונות 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: מעבדי GPU מסוג 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. עם זאת, באשכולות שפועלות בהם גרסאות קודמות יש תמיכה בשינוי גודל של מאגרי צמתים קיימים באמצעות המידרוג האוטומטי של האשכול.
זמינות של מעבדי 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 מוסיף את ה-taint הזה רק אם יש לפחות מאגר צמתים אחד ללא GPU באשכול.
- מקרא:
כשמוסיפים מאגר צמתים של GPU לאשכול שיש בו רק מאגרי צמתים של GPU, או אם יוצרים אשכול חדש שבו מאגר הצמתים שמוגדר כברירת מחדל כולל GPU, אפשר להגדיר ידנית את ה-taints למאגר הצמתים החדש עם הערכים הבאים:
- מקרא:
nvidia.com/gpu - ערך:
present - השפעה:
NoSchedule
- מקרא:
אם בעתיד תוסיפו לאשכול מאגר צמתים ללא GPU, GKE לא יחיל את ה-taint הזה באופן רטרואקטיבי על צמתי GPU קיימים. צריך להגדיר ידנית את ה-taints למאגר הצמתים החדש.
הגבלת התזמון באופן אוטומטי באמצעות סבילות
התכונה Tolerations מאפשרת להגדיר פודים שאפשר להשתמש בהם בצמתים מסוג tainted. GKE מחיל באופן אוטומטי טולרנטיות, כך שרק פודים שמבקשים GPU מתוזמנים בצמתי GPU. ההגדרה הזו מאפשרת התאמה אוטומטית יעילה יותר לעומס, כי הצמתים של ה-GPU יכולים להצטמצם במהירות אם אין מספיק יחידות Pod שמבקשות 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 לצירוף לצמתים במאגר הצמתים.
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 GPUs (מתאים לסוג המאיץ
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 .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על add_box הוספת מאגר צמתים.
אופציונלי: בדף פרטי מאגר הצמתים, מסמנים את תיבת הסימון הפעלת התאמה אוטומטית לעומס.
מגדירים את מאגר הצמתים לפי הצורך.
בחלונית הניווט, בוחרים באפשרות צמתים.
בקטע Machine configuration (הגדרת המכונה), לוחצים על GPU (מעבד גרפי).
בוחרים סוג GPU ומספר GPU להפעלה בכל צומת.
קוראים את האזהרה ולוחצים על ברור לי מהן המגבלות.
בקטע GPU Driver installation, בוחרים באחת מהשיטות הבאות:
- בניהול 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 הבאים:- GPU מסוג NVIDIA B200 (מתאים לסוג המאיץ
nvidia-b200ולסדרת המכונות A4) - מעבדי GPU NVIDIA H200 בנפח 141GB (שמתאימים לסוג המאיץ
nvidia-h200-141gbולסוג המכונה A3 Ultra), או מעבדי GPU NVIDIA H100 בנפח 80GB (שמתאימים לסוג המאיץ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 GPUs (מתאים לסוג המאיץ
nvidia-l4ולסדרת המכונות G2). - מעבדי GPU מסוג NVIDIA RTX PRO 6000 (שמתאימים ל
nvidia-rtx-pro-6000סוג המאיץ ולסדרת המכונות G4).
לכל שאר המעבדים הגרפיים, הדגל הזה הוא אופציונלי.
- 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 בקשה ל-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
ההתקנה נמשכת כמה שניות. אחרי שההתקנה מסתיימת, הפלאגין של מכשיר ה-GPU של NVIDIA משתמש ב-Kubernetes API כדי להפוך את הקיבולת של ה-GPU של NVIDIA לזמינה.
לכל גרסה של מערכת הפעלה שמותאמת לקונטיינרים יש לפחות גרסה אחת נתמכת של מנהל התקן של 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, מריצים את הפקודה הבאה:
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
משתמשים במגבלת משאבים כדי להגדיר ל-Pods צריכת GPU. מגדירים מגבלת משאבים במפרט של 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, כולל מאגרי צמתים. אפשר גם לשדרג באופן ידני מאגרי צמתים אם רוצים שהצמתים יהיו בגרסה מאוחרת יותר מוקדם יותר. כדי לשלוט באופן שבו השדרוגים מתבצעים באשכול, אפשר להשתמש בערוצי הפצה, בחלונות זמן לתחזוקה ובחריגות וברצף השקה.
אפשר גם להגדיר אסטרטגיית שדרוג של צומת למאגר הצמתים, כמו שדרוגים של צמתים זמניים, שדרוגים של צמתים זמניים עם החלפה או שדרוגים של צמתים זמניים לזמן קצר. אם תגדירו את האסטרטגיות האלה, תוכלו לוודא שמאגרי הצמתים ישודרגו באופן שישיג את האיזון האופטימלי בין מהירות לשיבוש בסביבה שלכם. במאגרי צמתים של פרוסות 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.
הגדרה של סיום תקין של צמתי GPU
באשכולות GKE עם מישור הבקרה בגרסה 1.29.1-gke.1425000 ואילך, צמתי GPU תומכים באותות SIGTERM שמזהירים את הצומת מפני כיבוי קרוב. אפשר להגדיר את ההתראה על כיבוי קרוב של צמתים של GPU עד 60 דקות מראש.
כדי להגדיר את GKE כך שיסיים את עומסי העבודה בצורה מסודרת במסגרת הזמן של ההתראה הזו, פועלים לפי השלבים במאמר ניהול שיבושים בצמתי GKE עבור GPU ו-TPU.
המאמרים הבאים
- מידע נוסף על מאגרי צמתים
- איך משתמשים בפלטפורמת CPU מינימלית לצמתים
- איך יוצרים ומגדירים קונטיינר מקומי של למידה עמוקה באמצעות Docker
- איך משתמשים ב-Confidential GKE Nodes במאגרי הצמתים של יחידות ה-GPU (גרסת Preview)
- מידע על הרצת עומסי עבודה של GPU בארגז חול (sandboxing) עם GKE Sandbox