בדף הזה מפורטים מדדי ה-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.
פעילות SM ותפוסה של SM הם מדדים של GPM. המדדים האלה לא נתמכים במכשירי P4 ו-P100, והם נתמכים כברירת מחדל במכשירי 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 | מגה-הרץ | המהירות המקסימלית של שעון הזיכרון. |
מדדי 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. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP64 של ה-GPU, שמטפלות בפעולות סקלריות של ערכים בנקודה צפה של 64 ביט. |
| FP32 Pipe Activity | ניצול | device_fp32_pipe_activity | ערכים באחוזים | אחוז הזמן שבו נעשה שימוש בצינור ה-FP32 Core. ערכים גבוהים יותר מציינים שימוש רב יותר בליבות FP32 של ה-GPU, שמטפלות בפעולות סקלריות של ערכים בנקודה צפה של 32 ביט. |
| FP16 Pipe Activity | ניצול | 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 | nvlink | device_read | מבי-בייט לשנייה | שיעור קריאת הנתונים על ידי ה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין GPU ל-GPU, זה לא רלוונטי אם לכל עובד יש רק GPU אחד. |
| העברה של NVLink | nvlink | device_transfer | מבי-בייט לשנייה | קצב העברת הנתונים מה-GPU דרך NVLink. מכיוון ש-NVLink מכסה רק תקשורת בין GPU ל-GPU, זה לא רלוונטי אם לכל עובד יש רק GPU אחד. |
איסוף מדדים של GPM
כל עבודת Dataflow עם מעבדי GPU שמשתמשים בארכיטקטורת Hopper או בגרסה מתקדמת יותר (למשל H100, H100 Mega) אוספת מדדי GPM כברירת מחדל, כך שלא נדרשת הגדרה נוספת. עם זאת, במשימות שמשתמשות בארכיטקטורת Pascal או בגרסאות קודמות (כמו P4 ו-P100) אין תמיכה במדדים האלה.
בכל שאר המודלים, כדי לאסוף את המדדים האלה צריך להוסיף את install-gke-dcgm-exporter להגדרת התצורה של האצת העובד. לדוגמה:
--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"
הדגל הזה מתקין ב-GKE רכיב מקביל ל-NVIDIA DCGM-exporter שמנוהל על ידי GKE. האפשרות הזו נתמכת בסוגים הבאים:
- 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 ספציפי, למשל כדי לראות כמה קרוב השימוש בחשמל שלו למגבלה:
