בדף הזה מפורטים מדדי ה-GPU שנתמכים ב-Dataflow. אפשר להשתמש במדדים האלה כדי לעקוב אחרי התקינות והשימוש ב-GPU. רוב המדדים נתמכים בכל משימות Dataflow, אבל חלק מהמדדים דורשים הגדרה נוספת עבור הרבה דגמי GPU.
דרישות מוקדמות
מדדי GPU נאספים רק על ידי משימות Dataflow שביקשו במפורש להשתמש ב-GPU. מידע נוסף מופיע במאמר בנושא תמיכה ב-GPU.
סקירה כללית
דוחות Dataflow כוללים מדדים רבים של GPU, אבל המדדים העיקריים הם זיכרון כולל וזיכרון בשימוש, ששווים למדדי RAM, ופעילות של מעבד מרובה ליבות (SM) ושימוש במעבד מרובה ליבות (SM), שהם המדדים הכי דומים למדדי CPU ב-Dataflow. מדדים נוספים מפורטים במאמרים בנושא מדדים נפוצים ומדדים של GPM.
כברירת מחדל, המערכת מדווחת על הזיכרון הכולל והזיכרון שבשימוש של כל מכשיר GPU במשימה. בממשק המעקב של Dataflow, הנתונים האלה מופיעים בקטע Basic GPU utilization (שימוש בסיסי ב-GPU). המדדים האלה שונים מהמדד 'אחוז הגישה לזיכרון', שמופיע גם הוא בקטע 'מדדי GPU בסיסיים', אבל הוא מציג את אחוז הזמן שבו הייתה גישה לזיכרון של מכשיר ה-GPU.
המדדים 'פעילות של מנהל התנועה' ו'תפוסה של מנהל התנועה' הם מדדים של GPM. אין תמיכה במדדים האלה במכשירי P4, ויש תמיכה בהם כברירת מחדל במכשירי H100 ומעלה. בכל המכשירים האחרים, כמו מכשירי T4 ו-L4, נדרשת הגדרה נוספת. במאמר GPM collection מוסבר איך להפעיל אותם. אם המדדים האלה נאספים במהלך העבודה, הם מופיעים בקטע 'GPU GPM utilization' (ניצול GPU GPM) בממשק המעקב של Dataflow.
מידע בסיסי על מדדי GPU ב-Dataflow
כל מדדי ה-GPU נשלחים על ידי עובדי Dataflow אל Cloud Monitoring. מדדים לכל מכשיר אפשר למצוא בקטע
dataflow.googleapis.com/worker/accelerator/gpu. כל המדדים האלה מקובצים בקטגוריות כלליות, כמו שימוש או טמפרטורה, ולכולם יש את התוויות הבאות:
- device_uuid: מזהה באופן ייחודי את מכשיר ה-GPU, ללא קשר לעובד או לצינור.
- device_number: המספר שמוקצה למכשיר בתהליך העבודה בטווח [0, N), כאשר N הוא מספר מכשירי ה-GPU בתהליך העבודה.
- device_model: הדגם של ה-GPU, כמו Tesla T4.
הערכים של device_uuid ושל device_model לא תלויים בעובד ותמיד זהים עבור אותו מכשיר פיזי. ה-device_number קשור לאופן שבו הוא מזוהה בעובד הזה.
מדדי GPU נפוצים ל-Dataflow
כל משימת Dataflow עם מעבדי GPU מדווחת על מדדים נפוצים. בכלי המעקב, כולם משתמשים בפורמט הבא:
dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME
בטבלה הבאה מפורטים כל מדד, הקטגוריה, השם, היחידה והמטרה שלו.
| מדד | קטגוריה | שם | יחידה | תיאור |
|---|---|---|---|---|
| אחוז הליבה הפעילה | ניצול | device_kernel_runtime | ערכים באחוזים | אחוז הזמן שבו לפחות ליבת GPU אחת פעלה. הנתון הזה רק מראה שה-GPU היה בשימוש, ולא אם משאבי העיבוד שלו נמצאים בשימוש יעיל. |
| אחוז הגישה לזיכרון | ניצול | device_memory_access | ערכים באחוזים | אחוז הזמן שבו הזיכרון של המכשיר היה בשימוש לקריאה או לכתיבה. הנתון הזה מראה רק שהייתה גישה לזיכרון, ולא את אחוז הזיכרון שבשימוש. |
| מגבלת זיכרון | זיכרון | device_limit | MiB | נפח הזיכרון שזמין ב-GPU. |
| שימוש בזיכרון | זיכרון | device_usage | MiB | נפח הזיכרון שנמצא בשימוש על ידי ה-GPU. הנתון הזה כולל גם את הזיכרון שמשמש את עבודת Dataflow וגם את הזיכרון ששמור לקושחה, ולכן צפוי שימוש מסוים גם אם עדיין לא הועבר זיכרון ל-GPU. |
| שגיאות ECC זמניות שניתנות לתיקון | זיכרון/ecc/זיכרון נדיף | device_correctable_total | ספירה | מספר שגיאות ה-ECC (תיקון שגיאות) שניתנות לתיקון (שגיאות של ביט אחד) מאז הטעינה האחרונה של מנהל ההתקן. ב-Dataflow, טעינת מנהל ההתקן מתרחשת רק בהפעלה של העובד, ולכן היא שוות ערך לשגיאות במהלך משך החיים של העובד. |
| שגיאות ECC לא יציבות שלא ניתן לתקן | זיכרון/ecc/זיכרון נדיף | device_uncorrectable_total | ספירה | מספר שגיאות ה-ECC שלא ניתן לתקן (שגיאות של שני ביטים) מאז הטעינה האחרונה של מנהל ההתקן. ב-Dataflow, טעינת מנהל ההתקן מתרחשת רק בהפעלה של העובד, ולכן היא שוות ערך לשגיאות במהלך משך החיים של העובד. |
| מגבלת הספק | כוח | device_limit | ואט | הספק מקסימלי שהמכשיר מוגדר להשתמש בו. Dataflow לא משנה את ברירת המחדל הזו. |
| צריכת חשמל | כוח | device_usage | ואט | כמות החשמל שהמכשיר צורך. |
| הטמפרטורה הנוכחית | טמפרטורה | device_current | צלזיוס | הטמפרטורה הנוכחית של ה-GPU. |
| טמפרטורת הפעלה מקסימלית | טמפרטורה | device_max_op | צלזיוס | הטמפרטורה שמתחתיה ה-GPU צריך להישאר. אם הטמפרטורה הנוכחית גבוהה מהטמפרטורה הזו, מנהלי ההתקנים של ה-GPU ינסו לקרר את ה-GPU עד שהטמפרטורה תהיה נמוכה מהטמפרטורה הזו. Dataflow לא שולט בזה. |
| טמפרטורה להאטה | טמפרטורה | device_slowdown | צלזיוס | הטמפרטורה שבה יתחיל ויסות המהירות של ה-GPU. אם הטמפרטורה הנוכחית גבוהה יותר, צפו לירידה בביצועים עד שהמכשיר יתקרר. אין ל-Dataflow שליטה בזה. |
| טמפרטורת כיבוי | טמפרטורה | device_shutdown | צלזיוס | הטמפרטורה שבה ה-GPU יכבה. אם הטמפרטורה הנוכחית גבוהה מהטמפרטורה הזו, המכשיר לא יהיה זמין. Dataflow לא שולט בטמפרטורה הזו, והוא גם לא מנסה באופן פעיל לשחזר יחידות GPU שהושבתו בגלל טמפרטורה גבוהה מדי. |
| השעון הנוכחי של SM | שעון | device_sm_current | מגה-הרץ | המהירות הנוכחית של שעון ה-SM. אם הטמפרטורה חורגת מסף ההאטה, יכול להיות שהמהירות תרד כחלק מהגבלת מהירות שקשורה לקירור. |
| מהירות שעון מקסימלית של SM | שעון | device_sm_max | מגה-הרץ | המהירות המקסימלית של שעון ה-SM. |
| השעון הנוכחי של הזיכרון | שעון | device_memory_current | מגה-הרץ | המהירות הנוכחית של שעון הזיכרון. אם הטמפרטורה חורגת מסף ההאטה, יכול להיות שהמהירות תרד כחלק מהגבלת מהירות שקשורה לקירור. |
| מהירות שעון מקסימלית של הזיכרון | שעון | device_memory_max | MHz | המהירות המקסימלית של שעון הזיכרון. |
מדדי GPM ל-Dataflow
Dataflow מציע תמיכה מסוימת במדדים של GPM. רמת התמיכה תלויה בדגם של ה-GPU ובהגדרות של המאיץ. כברירת מחדל, רוב משימות ה-Dataflow עם מעבדי GPU ידרשו הגדרה נוספת.
מדדי GPM כפופים לאותם עקרונות בסיסיים כמו מדדים נפוצים.
מדדים נתמכים
בדומה למדדים נפוצים, נתיבי מדדים של GPM הם בפורמט הבא:
dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME
חלק מהמדדים האלה נמצאים באותה קטגוריה כמו מדדים נפוצים.
| מדד | קטגוריה | שם | יחידה | תיאור |
|---|---|---|---|---|
| פעילות SM | ניצול | device_sm_activity | ערכים באחוזים | אחוז הזמן שבו עיוות היה פעיל ב-SM, בממוצע בכל ה-SM במכשיר. המדד הזה דומה לאחוז הפעילות של ליבת המערכת, אבל הוא מספק תמונה מפורטת יותר שמראה בצורה טובה יותר אם משאבי ה-GPU מנוצלים ביעילות. חברת NVIDIA מגדירה שימוש יעיל כשימוש של 80% ומעלה, ושימוש לא יעיל כשימוש של 50% ומטה. |
| SM Occupancy | ניצול | device_sm_occupancy | ערכים באחוזים | אחוז העיוותים הפעילים במכשיר ביחס למקסימום. משימות שמוגבלות על ידי הזיכרון צריכות להיות בעלות שיעור תפוסה גבוה יותר ממשימות שמוגבלות על ידי המחשוב, והמדד Memory Access Percentage יכול לספק תובנות לגבי זה. פרטים נוספים זמינים במסמכי התיעוד של NVIDIA בנושא תפוסה שהושגה. |
| Tensor Pipe Activity | ניצול | device_tensor_pipe_activity | ערכים באחוזים | אחוז הזמן שבו נעשה שימוש בצינור Tensor Core. ערכים גבוהים יותר מציינים שימוש רב יותר ב-Tensor Cores של ה-GPU, שחשובים לפעולות מטריצה. |
| FP64 Pipe Activity | ניצול | device_fp64_pipe_activity | ערכים באחוזים | אחוז הזמן שבו נעשה שימוש בצינור FP64 Core. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP64 של ה-GPU, שמטפלות בפעולות סקלריות של ערכים בנקודה צפה של 64 ביט. |
| FP32 Pipe Activity | ניצול | device_fp32_pipe_activity | ערכים באחוזים | אחוז הזמן שבו נעשה שימוש בצינור FP32 Core. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP32 של ה-GPU, שמטפלות בפעולות סקלריות של ערכי נקודה צפה של 32 ביט. |
| פעילות בצינור FP16 | ניצול | device_fp16_pipe_activity | ערכים באחוזים | אחוז הזמן שבו נעשה שימוש בצינור FP16. בניגוד ל-FP64 ול-FP32, שמשויכים לליבות CUDA של 64 ביט ו-32 ביט בהתאמה, FP16 משויך לניצול היכולות של ליבות Tensor עם דיוק חצי. |
| קריאת PCIe | pcie | device_read | מבי-בייט לשנייה | קצב קריאת הנתונים על ידי ה-GPU ממכונת ה-VM המארחת דרך PCIe. |
| העברה באמצעות PCIe | pcie | device_transfer | מבי-בייט לשנייה | קצב העברת הנתונים מה-GPU למכונה הווירטואלית המארחת דרך PCIe. |
| NVLink Read | nvlink | device_read | מבי-בייט לשנייה | שיעור קריאת הנתונים על ידי ה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין מעבדים גרפיים, זה לא רלוונטי אם לכל עובד יש רק מעבד גרפי אחד. |
| העברה ב-NVLink | nvlink | device_transfer | מבי-בייט לשנייה | קצב העברת הנתונים מה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין מעבדים גרפיים, זה לא רלוונטי אם לכל עובד יש רק מעבד גרפי אחד. |
איסוף מדדים של Google Play Music
כל עבודת Dataflow עם מעבדי GPU שמשתמשים בארכיטקטורת Hopper או בגרסה מתקדמת יותר (למשל H100, H100 Mega) אוספת מדדי GPM כברירת מחדל, כך שלא נדרשת הגדרה נוספת. עם זאת, במשימות שמשתמשות בארכיטקטורת Pascal או בארכיטקטורה מוקדמת יותר (כמו P4), אין תמיכה במדדים האלה.
בכל שאר המודלים, כדי לאסוף את המדדים האלה צריך להוסיף את install-gke-dcgm-exporter להגדרת התצורה של מאיץ העובדים. לדוגמה:
--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"
הדגל הזה מתקין ב-GKE גרסה מקבילה מנוהלת של NVIDIA DCGM-exporter. האפשרות הזו נתמכת בסוגים הבאים:
- nvidia-l4
- nvidia-tesla-a100
- nvidia-a100-80gb
- nvidia-tesla-t4 (יצא משימוש)
- nvidia-tesla-v100
אם מספקים סוג אחר, שירות Dataflow מחזיר שגיאה ביצירת העבודה. הבדיקה הזו עוזרת לכם להימנע מהפעלת הקונטיינר בעבודות שבהן הוא לא עוזר באיסוף מדדים.
מדדים מדור קודם
ב-Monitoring, יכול להיות שיוצגו שני מדדים בשמות dataflow.googleapis.com/job/gpu_utilization ו-dataflow.googleapis.com/job/gpu_memory_utilization. המדדים האלה דומים לKernel Running Percentage ול-Memory Access Percentage בהתאמה, אבל העובדים מדווחים עליהם על ידי חישוב ממוצע של מעבדי ה-GPU בעובד. מומלץ להשתמש במקבילות לכל מכשיר, במיוחד אם העובדים מוגדרים עם יותר מ-GPU אחד.
ממשק המשתמש של Dataflow
אם למשימת Dataflow יש מעבדי GPU שמצורפים לעובדים שלה, המדדים אמורים להופיע בכרטיסייה Job Metrics (מדדי המשימה) בדף המשימה, בקטגוריה Dataflow ML (למידת מכונה של Dataflow). הקטגוריה הזו לא מופיעה במשימות ללא יחידות GPU, והטעינה שלה אורכת כמה שניות, כי קודם המערכת מוודאת שהמדדים רלוונטיים למשימה.
תת-הקטגוריות הבאות מופיעות בקטע 'Dataflow ML':
| קטגוריית משנה | מדדים | תנאים |
|---|---|---|
| ניצול GPU בסיסי | אחוז הפעילות של ליבת המערכת אחוז הגישה לזיכרון זיכרון כולל/בשימוש |
כל המשימות של GPU |
| ביצועי ה-GPU | צריכת חשמל/מגבלה קריאת טמפרטורה/מגבלות שעון SM נוכחי/מקסימלי שעון זיכרון נוכחי/מקסימלי שגיאות ECC זמניות שניתנות לתיקון/שגיאות ECC זמניות שלא ניתן לתקן |
כל המשימות של GPU |
| ניצול GPU GPM | פעילות SM תפוסה של SM פעילות של צינור CUDA/Tensor |
המדדים של GPM הופעלו |
| GPU GPM I/O | קריאה/העברה של PCIe קריאה/העברה של NVLink |
המדדים של GPM הופעלו |
| שימוש ב-GPU בגרסה קודמת | מדדים מדור קודם | כל המשימות של GPU |
כשמציגים מדדים שאינם מדדים מדור קודם, אפשר לסנן את התרשימים לפי שם עובד ספציפי ומספר מכשיר GPU. שם העובד זהה לשם המכונה הווירטואלית אם צופים בו ב-Compute Engine. מספר מכשיר ה-GPU זהה למספר שמופיע בתוויות המדדים. אפשר להשתמש בסינון הזה כדי לבדוק מדדים במכשיר GPU ספציפי, למשל כדי לראות כמה קרוב השימוש בחשמל שלו למגבלה:
